From c581fe155192c9c66a7a78a4de7d33e46c316261 Mon Sep 17 00:00:00 2001 From: FlightControl Date: Sat, 25 Jun 2016 08:53:19 +0200 Subject: [PATCH] Implemented DETECTION and FAC first classes --- Moose Development/Moose/Detection.lua | 157 +- Moose Development/Moose/FAC.lua | 70 +- Moose Development/Moose/Moose.lua | 1 - .../l10n/DEFAULT/Moose.lua | 23820 +++++++++++++++- Moose Mission Setup/Moose.lua | 23820 +++++++++++++++- Moose Mission Setup/Moose_Create.bat | 5 +- .../Moose_Test_AIBALANCER.miz | Bin 27658 -> 169610 bytes .../Moose_Test_AIRBASEPOLICE.miz | Bin 43197 -> 185149 bytes .../Moose_Test_AIRBLANCER_with_Moose.miz | Bin 20684 -> 162602 bytes .../Moose_Test_AIRBLANCER_without_Moose.miz | Bin 19949 -> 161867 bytes .../Moose_Test_BASE/Moose_Test_BASE.miz | Bin 19315 -> 161233 bytes .../Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz | Bin 99762 -> 241680 bytes .../Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz | Bin 35139 -> 177057 bytes .../Moose_Test_DETECTION.lua | 2 +- .../Moose_Test_DETECTION.miz | Bin 27183 -> 169111 bytes .../Moose_Test_DETECTION_Laser.miz | Bin 21969 -> 163887 bytes .../Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz | Bin 59829 -> 201747 bytes .../Moose_Test_FAC/Moose_Test_FAC.miz | Bin 45357 -> 192434 bytes .../Moose_Test_MISSILETRAINER.miz | Bin 126393 -> 268311 bytes .../MOOSE_Test_PATROLZONE.miz | Bin 19227 -> 161145 bytes .../Moose_Test_SEAD/MOOSE_Test_SEAD.miz | Bin 25751 -> 167669 bytes .../Moose_Test_SET_AIRBASE.miz | Bin 17959 -> 159877 bytes .../Moose_Test_SET_CLIENT.miz | Bin 19604 -> 161522 bytes .../Moose_Test_SET_GROUP.miz | Bin 41262 -> 183180 bytes .../Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz | Bin 53400 -> 195318 bytes .../MOOSE_Test_SPAWN_Repeat.miz | Bin 26319 -> 168237 bytes .../MOOSE_Test_TASK_Pickup_and_Deploy.miz | Bin 33344 -> 175296 bytes .../Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz | Bin 40878 -> 182830 bytes .../Moose_Test_ZONE/Moose_Test_ZONE.miz | Bin 20861 -> 162813 bytes .../Moose_Test_ZONE_POLYGON.miz | Bin 27446 -> 169398 bytes .../Moose_Test_ZONE_RADIUS.miz | Bin 21045 -> 162963 bytes .../Moose_Test_ZONE_UNIT.miz | Bin 20919 -> 162837 bytes Moose Training/Documentation/AIBalancer.html | 6 + Moose Training/Documentation/Airbase.html | 27 +- .../Documentation/AirbasePolice.html | 6 + Moose Training/Documentation/Base.html | 6 + Moose Training/Documentation/CARGO.html | 6 + Moose Training/Documentation/CleanUp.html | 6 + Moose Training/Documentation/Client.html | 6 + .../Documentation/Controllable.html | 3108 ++ Moose Training/Documentation/DCSAirbase.html | 6 + .../Documentation/DCSCoalitionObject.html | 6 + Moose Training/Documentation/DCSCommand.html | 6 + .../Documentation/DCSController.html | 6 + Moose Training/Documentation/DCSGroup.html | 6 + Moose Training/Documentation/DCSObject.html | 6 + Moose Training/Documentation/DCSTask.html | 6 + Moose Training/Documentation/DCSTypes.html | 6 + Moose Training/Documentation/DCSUnit.html | 6 + Moose Training/Documentation/DCSWorld.html | 6 + Moose Training/Documentation/DCStimer.html | 6 + Moose Training/Documentation/DEPLOYTASK.html | 6 + .../Documentation/DESTROYBASETASK.html | 6 + .../Documentation/DESTROYGROUPSTASK.html | 6 + .../Documentation/DESTROYRADARSTASK.html | 6 + .../Documentation/DESTROYUNITTYPESTASK.html | 6 + Moose Training/Documentation/Database.html | 6 + Moose Training/Documentation/Detection.html | 1313 + Moose Training/Documentation/Escort.html | 6 + Moose Training/Documentation/Event.html | 6 + Moose Training/Documentation/Fac.html | 691 + Moose Training/Documentation/GOHOMETASK.html | 6 + Moose Training/Documentation/Group.html | 2756 +- .../Documentation/Identifiable.html | 466 + Moose Training/Documentation/MISSION.html | 6 + Moose Training/Documentation/MOVEMENT.html | 6 + Moose Training/Documentation/Menu.html | 6 + Moose Training/Documentation/Message.html | 6 + .../Documentation/MissileTrainer.html | 6 + Moose Training/Documentation/NOTASK.html | 6 + Moose Training/Documentation/Object.html | 523 + Moose Training/Documentation/PICKUPTASK.html | 6 + Moose Training/Documentation/PatrolZone.html | 6 + Moose Training/Documentation/Point.html | 6 + .../Documentation/Positionable.html | 518 + Moose Training/Documentation/ROUTETASK.html | 6 + Moose Training/Documentation/STAGE.html | 6 + Moose Training/Documentation/Scheduler.html | 6 + Moose Training/Documentation/Scoring.html | 6 + Moose Training/Documentation/Sead.html | 6 + Moose Training/Documentation/Set.html | 67 +- Moose Training/Documentation/Spawn.html | 6 + Moose Training/Documentation/Static.html | 8 +- .../Documentation/StaticObject.html | 6 + Moose Training/Documentation/TASK.html | 6 + Moose Training/Documentation/Unit.html | 586 +- Moose Training/Documentation/Zone.html | 6 + Moose Training/Documentation/env.html | 6 + Moose Training/Documentation/index.html | 42 + Moose Training/Documentation/land.html | 6 + Moose Training/Documentation/routines.html | 6 + 91 files changed, 54825 insertions(+), 3437 deletions(-) create mode 100644 Moose Training/Documentation/Controllable.html create mode 100644 Moose Training/Documentation/Detection.html create mode 100644 Moose Training/Documentation/Fac.html create mode 100644 Moose Training/Documentation/Identifiable.html create mode 100644 Moose Training/Documentation/Object.html create mode 100644 Moose Training/Documentation/Positionable.html diff --git a/Moose Development/Moose/Detection.lua b/Moose Development/Moose/Detection.lua index 83a119a77..b4b9a4ba3 100644 --- a/Moose Development/Moose/Detection.lua +++ b/Moose Development/Moose/Detection.lua @@ -5,37 +5,60 @@ -- 1) @{Detection#DETECTION_BASE} class, extends @{Base#BASE} -- ========================================================== -- The @{Detection#DETECTION_BASE} class defines the core functions to administer detected objects. --- Detected objects are grouped in SETS of UNITS. -- --- 1.1) DETECTION_BASE constructor: --- -------------------------------- --- * @{Detection#DETECTION.New}(): Create a new DETECTION object. +-- 1.1) DETECTION_BASE constructor +-- ------------------------------- +-- Construct a new DETECTION_BASE instance using the @{Detection#DETECTION.New}() method. -- --- 1.2) DETECTION_BASE initialization: --- ----------------------------------- --- By default, detection will return detected objects with all the methods available. +-- 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. -- You can specify to apply multiple detection methods. +-- -- Use the following functions to report the objects it detected using the methods Visual, Optical, Radar, IRST, RWR, DLINK: -- --- * @{Detection#DETECTION.InitDetectVisual}(): Detected using Visual. --- * @{Detection#DETECTION.InitDetectOptical}(): Detected using Optical. --- * @{Detection#DETECTION.InitDetectRadar}(): Detected using Radar. --- * @{Detection#DETECTION.InitDetectIRST}(): Detected using IRST. --- * @{Detection#DETECTION.InitDetectRWR}(): Detected using RWR. --- * @{Detection#DETECTION.InitDetectDLINK}(): Detected using 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. -- --- 1.3) Obtain objects detected by DETECTION_BASE: --- ----------------------------------------------- +-- 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. -- +-- === +-- -- 2) @{Detection#DETECTION_UNITGROUPS} class, extends @{Detection#DETECTION_BASE} -- =============================================================================== -- The @{Detection#DETECTION_UNITGROUPS} class will detect units within the battle zone for a FAC group, -- 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_UNITGROUPS}. +-- +-- 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. +-- +-- 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 +-- ---------------------------------- +-- Use the methods @{Detection#DETECTION_UNITGROUPS.FlareDetectedUnits}() or @{Detection#DETECTION_UNITGROUPS.SmokeDetectedUnits}() to flare or smoke the detected units when a new detection has taken place. +-- +-- 1.5) Flare or Smoke detected zones +-- ---------------------------------- +-- Use the methods @{Detection#DETECTION_UNITGROUPS.FlareDetectedZones}() or @{Detection#DETECTION_UNITGROUPS.SmokeDetectedZones}() to flare or smoke the detected zones when a new detection has taken place. -- -- === -- @@ -49,9 +72,7 @@ -- @type DETECTION_BASE -- @field Group#GROUP FACGroup The GROUP in the Forward Air Controller role. -- @field DCSTypes#Distance DetectionRange The range till which targets are accepted to be detected. --- @field DCSTypes#Distance DetectionZoneRange The range till which targets are grouped upon the first detected target. --- @field #DETECTION_BASE.DetectedSets DetectedSets A list of @{Set#SET_BASE}s containing the objects in each set that were detected within a DetectedZoneRange. --- @field #DETECTION_BASE.DetectedZones DetectedZones A list of @{Zone#ZONE_BASE}s containing the zones of the reference detected objects. +-- @field #DETECTION_BASE.DetectedSets DetectedSets A list of @{Set#SET_BASE}s containing the objects in each set that were detected. The base class will not build the detected sets, but will leave that to the derived classes. -- @extends Base#BASE DETECTION_BASE = { ClassName = "DETECTION_BASE", @@ -59,7 +80,6 @@ DETECTION_BASE = { DetectedObjects = {}, FACGroup = nil, DetectionRange = nil, - DetectionZoneRange = nil, } --- @type DETECTION_BASE.DetectedSets @@ -74,16 +94,14 @@ DETECTION_BASE = { -- @param #DETECTION_BASE self -- @param Group#GROUP FACGroup The GROUP in the Forward Air Controller role. -- @param DCSTypes#Distance DetectionRange The range till which targets are accepted to be detected. --- @param DCSTypes#Distance DetectionZoneRange The range till which targets are grouped upon the first detected target. -- @return #DETECTION_BASE self -function DETECTION_BASE:New( FACGroup, DetectionRange, DetectionZoneRange ) +function DETECTION_BASE:New( FACGroup, DetectionRange ) -- Inherits from BASE local self = BASE:Inherit( self, BASE:New() ) self.FACGroup = FACGroup self.DetectionRange = DetectionRange - self.DetectionZoneRange = DetectionZoneRange self:InitDetectVisual( false ) self:InitDetectOptical( false ) @@ -166,7 +184,7 @@ end --- Get the detected @{Set#SET_BASE}s. -- @param #DETECTION_BASE self -- @return #DETECTION_BASE.DetectedSets DetectedSets -function DETECTION_BASE:GetDetectionSets() +function DETECTION_BASE:GetDetectedSets() local DetectionSets = self.DetectedSets return DetectionSets @@ -175,7 +193,7 @@ end --- Get the amount of SETs with detected objects. -- @param #DETECTION_BASE self -- @return #number Count -function DETECTION_BASE:GetDetectionSetCount() +function DETECTION_BASE:GetDetectedSetCount() local DetectionSetCount = #self.DetectedSets return DetectionSetCount @@ -185,7 +203,7 @@ end -- @param #DETECTION_BASE self -- @param #number Index -- @return Set#SET_BASE -function DETECTION_BASE:GetDetectionSet( Index ) +function DETECTION_BASE:GetDetectedSet( Index ) local DetectionSet = self.DetectedSets[Index] if DetectionSet then @@ -195,6 +213,7 @@ function DETECTION_BASE:GetDetectionSet( Index ) return nil end + --- Make a DetectionSet table. This function will be overridden in the derived clsses. -- @param #DETECTION_BASE self -- @return #DETECTION_BASE self @@ -308,7 +327,8 @@ end --- DETECTION_UNITGROUPS class -- @type DETECTION_UNITGROUPS --- @field #DETECTION_UNITGROUPS.DetectedSets DetectedSets A list of @{Set#SET_UNIT}s containing the units in each set that were detected within a DetectedZoneRange. +-- @param DCSTypes#Distance DetectionZoneRange The range till which targets are grouped upon the first detected target. +-- @field #DETECTION_UNITGROUPS.DetectedSets DetectedSets A list of @{Set#SET_UNIT}s containing the units in each set that were detected within a DetectionZoneRange. -- @field #DETECTION_UNITGROUPS.DetectedZones DetectedZones A list of @{Zone#ZONE_UNIT}s containing the zones of the reference detected units. -- @extends Detection#DETECTION_BASE DETECTION_UNITGROUPS = { @@ -327,13 +347,82 @@ DETECTION_UNITGROUPS = { function DETECTION_UNITGROUPS:New( FACGroup, DetectionRange, DetectionZoneRange ) -- Inherits from DETECTION_BASE - local self = BASE:Inherit( self, DETECTION_BASE:New( FACGroup, DetectionRange, DetectionZoneRange ) ) + local self = BASE:Inherit( self, DETECTION_BASE:New( FACGroup, DetectionRange ) ) + self.DetectionZoneRange = DetectionZoneRange self:Schedule( 10, 30 ) return self end +--- Get the detected @{Zone#ZONE_UNIT}s. +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS.DetectedZones DetectedZones +function DETECTION_UNITGROUPS:GetDetectedZones() + + local DetectedZones = self.DetectedZones + return DetectedZones +end + +--- Get the amount of @{Zone#ZONE_UNIT}s with detected units. +-- @param #DETECTION_UNITGROUPS self +-- @return #number Count +function DETECTION_UNITGROUPS:GetDetectedZoneCount() + + local DetectedZoneCount = #self.DetectedZones + return DetectedZoneCount +end + +--- Get a SET of detected objects using a given numeric index. +-- @param #DETECTION_UNITGROUPS self +-- @param #number Index +-- @return Zone#ZONE_UNIT +function DETECTION_UNITGROUPS:GetDetectedZone( Index ) + + local DetectedZone = self.DetectedZones[Index] + if DetectedZone then + return DetectedZone + end + + return nil +end + +--- Smoke the detected units +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:SmokeDetectedUnits() + self:F2() + + self._SmokeDetectedUnits = true +end + +--- Flare the detected units +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:SmokeDetectedUnits() + self:F2() + + self._FlareDetectedUnits = true +end + +--- Smoke the detected zones +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:SmokeDetectedZones() + self:F2() + + self._SmokeDetectedZones = true +end + +--- Flare the detected zones +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:FlareDetectedZones() + self:F2() + + self._FlareDetectedZones = true +end + --- Make a DetectionSet table. This function will be overridden in the derived clsses. -- @param #DETECTION_UNITGROUPS self @@ -385,10 +474,20 @@ function DETECTION_UNITGROUPS:CreateDetectionSets() --- @param Unit#UNIT DetectedUnit function( DetectedUnit ) self:T( DetectedUnit:GetName() ) - DetectedUnit:FlareRed() + if self._FlareDetectedUnits then + DetectedUnit:FlareRed() + end + if self._SmokeDetectedUnits then + DetectedUnit:SmokeRed() + end end ) - DetectedZone:FlareZone( POINT_VEC3.SmokeColor.White, 30, math.random( 0,90 ) ) + if self._FlareDetectedZones then + DetectedZone:FlareZone( POINT_VEC3.SmokeColor.White, 30, math.random( 0,90 ) ) + end + if self._SmokeDetectedZones then + DetectedZone:SmokeZone( POINT_VEC3.SmokeColor.White, 30 ) + end end end diff --git a/Moose Development/Moose/FAC.lua b/Moose Development/Moose/FAC.lua index 27578c3f7..554888549 100644 --- a/Moose Development/Moose/FAC.lua +++ b/Moose Development/Moose/FAC.lua @@ -4,12 +4,8 @@ -- -- 1) @{Fac#FAC_BASE} class, extends @{Base#BASE} -- ============================================== --- The @{Fac#FAC_BASE} class defines the core functions to report detected objects to: --- --- * CLIENTS --- * COALITIONS --- --- Detected objects are grouped in SETS of UNITS. +-- The @{Fac#FAC_BASE} class defines the core functions to report detected objects to clients. +-- Reportings can be done in several manners, and it is up to the derived classes if FAC_BASE to model the reporting behaviour. -- -- 1.1) FAC_BASE constructor: -- ---------------------------- @@ -18,10 +14,16 @@ -- 1.2) FAC_BASE reporting: -- ------------------------ -- Derived FAC_BASE classes will reports detected units using the method @{Fac#FAC_BASE.ReportDetected}(). This method implements polymorphic behaviour. +-- -- The time interval in seconds of the reporting can be changed using the methods @{Fac#FAC_BASE.SetReportInterval}(). +-- To control how long a reporting message is displayed, use @{Fac#FAC_BASE.SetReportDisplayTime}(). +-- Derived classes need to implement the method @{Fac#FAC_BASE.GetReportDisplayTime}() to use the correct display time for displayed messages during a report. +-- -- Reporting can be started and stopped using the methods @{Fac#FAC_BASE.StartReporting}() and @{Fac#FAC_BASE.StopReporting}() respectively. -- If an ad-hoc report is requested, use the method @{Fac#FAC_BASE#ReportNow}(). -- +-- The default reporting interval is every 60 seconds. The reporting messages are displayed 15 seconds. +-- -- === -- -- 2) @{Fac#FAC_REPORTING} class, extends @{Fac#FAC_BASE} @@ -30,7 +32,7 @@ -- -- 2.1) FAC_REPORTING constructor: -- ------------------------------- --- * @{Fac#FAC_REPORTING.New}(): Create a new FAC_REPORTING instance. +-- The @{Fac#FAC_REPORTING.New}() method creates a new FAC_REPORTING instance. -- -- === -- @@ -59,16 +61,47 @@ FAC_BASE = { function FAC_BASE:New( ClientSet, Detection ) -- Inherits from BASE - local self = BASE:Inherit( self, BASE:New() ) + local self = BASE:Inherit( self, BASE:New() ) -- Fac#FAC_BASE self.ClientSet = ClientSet self.Detection = Detection - - self.FacScheduler = SCHEDULER:New(self, self._FacScheduler, { self, "Fac" }, 5, 15 ) + self:SetReportInterval( 60 ) + self:SetReportDisplayTime( 15 ) + return self end +--- Set the reporting time interval. +-- @param #FAC_BASE self +-- @param #number ReportInterval The interval in seconds when a report needs to be done. +-- @return #FAC_BASE self +function FAC_BASE:SetReportInterval( ReportInterval ) + self:F2() + + self._ReportInterval = ReportInterval +end + + +--- Set the reporting message display time. +-- @param #FAC_BASE self +-- @param #number ReportDisplayTime The display time in seconds when a report needs to be done. +-- @return #FAC_BASE self +function FAC_BASE:SetReportDisplayTime( ReportDisplayTime ) + self:F2() + + self._ReportDisplayTime = ReportDisplayTime +end + +--- Get the reporting message display time. +-- @param #FAC_BASE self +-- @return #number ReportDisplayTime The display time in seconds when a report needs to be done. +function FAC_BASE:GetReportDisplayTime() + self:F2() + + return self._ReportDisplayTime +end + --- Reports the detected items to the @{Set#SET_CLIENT}. -- @param #FAC_BASE self -- @param Set#SET_BASE DetectedSets The detected Sets created by the @{Detection#DETECTION_BASE} object. @@ -83,15 +116,16 @@ end --- Schedule the FAC reporting. -- @param #FAC_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. +-- @param #number ReportInterval The repeat interval in seconds for the reporting to happen repeatedly. -- @return #FAC_BASE self -function FAC_BASE:Schedule( DelayTime, RepeatInterval ) +function FAC_BASE:Schedule( DelayTime, ReportInterval ) self:F2() - self.ScheduleDelayTime = DelayTime - self.ScheduleRepeatInterval = RepeatInterval + self._ScheduleDelayTime = DelayTime - self.FacScheduler = SCHEDULER:New(self, self._FacScheduler, { self, "Fac" }, DelayTime, RepeatInterval ) + self:SetReportInterval( ReportInterval ) + + self.FacScheduler = SCHEDULER:New(self, self._FacScheduler, { self, "Fac" }, self._ScheduleDelayTime, self._ReportInterval ) return self end @@ -104,7 +138,7 @@ function FAC_BASE:_FacScheduler( SchedulerName ) --- @param Client#CLIENT Client function( Client ) if Client:IsAlive() then - local DetectedSets = self.Detection:GetDetectionSets() + local DetectedSets = self.Detection:GetDetectedSets() return self:ReportDetected( Client, DetectedSets ) end end @@ -135,7 +169,7 @@ function FAC_REPORTING:New( ClientSet, Detection ) -- Inherits from FAC_BASE local self = BASE:Inherit( self, FAC_BASE:New( ClientSet, Detection ) ) -- #FAC_REPORTING - self:Schedule( 5, 15 ) + self:Schedule( 5, 60 ) return self end @@ -169,7 +203,7 @@ function FAC_REPORTING:ReportDetected( Client, DetectedSets ) DetectedMsg[#DetectedMsg+1] = " - Group #" .. DetectedUnitSetID .. ": " .. MessageText end local FACGroup = self.Detection:GetFACGroup() - FACGroup:MessageToClient( "Reporting detected target groups:\n" .. table.concat( DetectedMsg, "\n" ), 12, Client ) + FACGroup:MessageToClient( "Reporting detected target groups:\n" .. table.concat( DetectedMsg, "\n" ), self:GetReportDisplayTime(), Client ) return true end diff --git a/Moose Development/Moose/Moose.lua b/Moose Development/Moose/Moose.lua index 9f81e35ae..1c2f3ffe6 100644 --- a/Moose Development/Moose/Moose.lua +++ b/Moose Development/Moose/Moose.lua @@ -9,7 +9,6 @@ Include.File( "Controllable" ) Include.File( "Scheduler" ) Include.File( "Event" ) Include.File( "Menu" ) -Include.File( "Controllable" ) Include.File( "Group" ) Include.File( "Unit" ) Include.File( "Zone" ) 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 518c25c8a..0a431f203 100644 --- a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua +++ b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua @@ -1,45 +1,23809 @@ -env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20160624_1231' ) - +env.info( '*** MOOSE STATIC INCLUDE START *** ' ) +env.info( 'Moose Generation Timestamp: 20160625_0851' ) local base = _G Include = {} - -Include.Path = function() - local str = debug.getinfo(2, "S").source - return str:match("(.*/)"):sub(1,-2):gsub("\\","/") +Include.Files = {} +Include.File = function( IncludeFile ) end -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 - env.info( "Include:" .. IncludeFile .. " from " .. Include.MissionPath ) - local f = assert( base.loadfile( Include.MissionPath .. IncludeFile .. ".lua" ) ) - if f == nil then - error ("Could not load MOOSE file " .. IncludeFile .. ".lua" ) - else - env.info( "Include:" .. IncludeFile .. " loaded from " .. Include.MissionPath ) - return f() +--- Various routines +-- @module routines +-- @author Flightcontrol + +env.setErrorMessageBoxEnabled(false) + +--- Extract of MIST functions. +-- @author Grimes + +routines = {} + + +-- don't change these +routines.majorVersion = 3 +routines.minorVersion = 3 +routines.build = 22 + +----------------------------------------------------------------------------------------------------------------- + +---------------------------------------------------------------------------------------------- +-- Utils- conversion, Lua utils, etc. +routines.utils = {} + +--from http://lua-users.org/wiki/CopyTable +routines.utils.deepCopy = function(object) + local lookup_table = {} + local function _copy(object) + if type(object) ~= "table" then + return object + elseif lookup_table[object] then + return lookup_table[object] + end + local new_table = {} + lookup_table[object] = new_table + for index, value in pairs(object) do + new_table[_copy(index)] = _copy(value) + end + return setmetatable(new_table, getmetatable(object)) + end + local objectreturn = _copy(object) + return objectreturn +end + + +-- porting in Slmod's serialize_slmod2 +routines.utils.oneLineSerialize = function(tbl) -- serialization of a table all on a single line, no comments, made to replace old get_table_string function + + lookup_table = {} + + local function _Serialize( tbl ) + + if type(tbl) == 'table' then --function only works for tables! + + if lookup_table[tbl] then + return lookup_table[object] end + + local tbl_str = {} + + lookup_table[tbl] = tbl_str + + tbl_str[#tbl_str + 1] = '{' + + for ind,val in pairs(tbl) do -- serialize its fields + local ind_str = {} + if type(ind) == "number" then + ind_str[#ind_str + 1] = '[' + ind_str[#ind_str + 1] = tostring(ind) + ind_str[#ind_str + 1] = ']=' + else --must be a string + ind_str[#ind_str + 1] = '[' + ind_str[#ind_str + 1] = routines.utils.basicSerialize(ind) + ind_str[#ind_str + 1] = ']=' + end + + local val_str = {} + if ((type(val) == 'number') or (type(val) == 'boolean')) then + val_str[#val_str + 1] = tostring(val) + val_str[#val_str + 1] = ',' + tbl_str[#tbl_str + 1] = table.concat(ind_str) + tbl_str[#tbl_str + 1] = table.concat(val_str) + elseif type(val) == 'string' then + val_str[#val_str + 1] = routines.utils.basicSerialize(val) + val_str[#val_str + 1] = ',' + tbl_str[#tbl_str + 1] = table.concat(ind_str) + tbl_str[#tbl_str + 1] = table.concat(val_str) + elseif type(val) == 'nil' then -- won't ever happen, right? + val_str[#val_str + 1] = 'nil,' + tbl_str[#tbl_str + 1] = table.concat(ind_str) + tbl_str[#tbl_str + 1] = table.concat(val_str) + elseif type(val) == 'table' then + if ind == "__index" then + -- tbl_str[#tbl_str + 1] = "__index" + -- tbl_str[#tbl_str + 1] = ',' --I think this is right, I just added it + else + + val_str[#val_str + 1] = _Serialize(val) + val_str[#val_str + 1] = ',' --I think this is right, I just added it + tbl_str[#tbl_str + 1] = table.concat(ind_str) + tbl_str[#tbl_str + 1] = table.concat(val_str) + end + elseif type(val) == 'function' then + -- tbl_str[#tbl_str + 1] = "function " .. tostring(ind) + -- tbl_str[#tbl_str + 1] = ',' --I think this is right, I just added it + else +-- env.info('unable to serialize value type ' .. routines.utils.basicSerialize(type(val)) .. ' at index ' .. tostring(ind)) +-- env.info( debug.traceback() ) + end + + end + tbl_str[#tbl_str + 1] = '}' + return table.concat(tbl_str) else - env.info( "Include:" .. IncludeFile .. " loaded from " .. Include.ProgramPath ) - return f() + return tostring(tbl) + end + end + + local objectreturn = _Serialize(tbl) + return objectreturn +end + +--porting in Slmod's "safestring" basic serialize +routines.utils.basicSerialize = function(s) + if s == nil then + return "\"\"" + else + if ((type(s) == 'number') or (type(s) == 'boolean') or (type(s) == 'function') or (type(s) == 'table') or (type(s) == 'userdata') ) then + return tostring(s) + elseif type(s) == 'string' then + s = string.format('%q', s) + return s end end end -Include.ProgramPath = "Scripts/Moose/" -Include.MissionPath = Include.Path() -env.info( "Include.ProgramPath = " .. Include.ProgramPath) -env.info( "Include.MissionPath = " .. Include.MissionPath) +routines.utils.toDegree = function(angle) + return angle*180/math.pi +end -Include.Files = {} +routines.utils.toRadian = function(angle) + return angle*math.pi/180 +end +routines.utils.metersToNM = function(meters) + return meters/1852 +end + +routines.utils.metersToFeet = function(meters) + return meters/0.3048 +end + +routines.utils.NMToMeters = function(NM) + return NM*1852 +end + +routines.utils.feetToMeters = function(feet) + return feet*0.3048 +end + +routines.utils.mpsToKnots = function(mps) + return mps*3600/1852 +end + +routines.utils.mpsToKmph = function(mps) + return mps*3.6 +end + +routines.utils.knotsToMps = function(knots) + return knots*1852/3600 +end + +routines.utils.kmphToMps = function(kmph) + return kmph/3.6 +end + +function routines.utils.makeVec2(Vec3) + if Vec3.z then + return {x = Vec3.x, y = Vec3.z} + else + return {x = Vec3.x, y = Vec3.y} -- it was actually already vec2. + end +end + +function routines.utils.makeVec3(Vec2, y) + if not Vec2.z then + if not y then + y = 0 + end + return {x = Vec2.x, y = y, z = Vec2.y} + else + return {x = Vec2.x, y = Vec2.y, z = Vec2.z} -- it was already Vec3, actually. + end +end + +function routines.utils.makeVec3GL(Vec2, offset) + local adj = offset or 0 + + if not Vec2.z then + return {x = Vec2.x, y = (land.getHeight(Vec2) + adj), z = Vec2.y} + else + return {x = Vec2.x, y = (land.getHeight({x = Vec2.x, y = Vec2.z}) + adj), z = Vec2.z} + end +end + +routines.utils.zoneToVec3 = function(zone) + local new = {} + if type(zone) == 'table' and zone.point then + new.x = zone.point.x + new.y = zone.point.y + new.z = zone.point.z + return new + elseif type(zone) == 'string' then + zone = trigger.misc.getZone(zone) + if zone then + new.x = zone.point.x + new.y = zone.point.y + new.z = zone.point.z + return new + end + end +end + +-- gets heading-error corrected direction from point along vector vec. +function routines.utils.getDir(vec, point) + local dir = math.atan2(vec.z, vec.x) + dir = dir + routines.getNorthCorrection(point) + if dir < 0 then + dir = dir + 2*math.pi -- put dir in range of 0 to 2*pi + end + return dir +end + +-- gets distance in meters between two points (2 dimensional) +function routines.utils.get2DDist(point1, point2) + point1 = routines.utils.makeVec3(point1) + point2 = routines.utils.makeVec3(point2) + return routines.vec.mag({x = point1.x - point2.x, y = 0, z = point1.z - point2.z}) +end + +-- gets distance in meters between two points (3 dimensional) +function routines.utils.get3DDist(point1, point2) + return routines.vec.mag({x = point1.x - point2.x, y = point1.y - point2.y, z = point1.z - point2.z}) +end + + + +-- From http://lua-users.org/wiki/SimpleRound +-- use negative idp for rounding ahead of decimal place, positive for rounding after decimal place +routines.utils.round = function(num, idp) + local mult = 10^(idp or 0) + return math.floor(num * mult + 0.5) / mult +end + +-- porting in Slmod's dostring +routines.utils.dostring = function(s) + local f, err = loadstring(s) + if f then + return true, f() + else + return false, err + end +end + + +--3D Vector manipulation +routines.vec = {} + +routines.vec.add = function(vec1, vec2) + return {x = vec1.x + vec2.x, y = vec1.y + vec2.y, z = vec1.z + vec2.z} +end + +routines.vec.sub = function(vec1, vec2) + return {x = vec1.x - vec2.x, y = vec1.y - vec2.y, z = vec1.z - vec2.z} +end + +routines.vec.scalarMult = function(vec, mult) + return {x = vec.x*mult, y = vec.y*mult, z = vec.z*mult} +end + +routines.vec.scalar_mult = routines.vec.scalarMult + +routines.vec.dp = function(vec1, vec2) + return vec1.x*vec2.x + vec1.y*vec2.y + vec1.z*vec2.z +end + +routines.vec.cp = function(vec1, vec2) + return { x = vec1.y*vec2.z - vec1.z*vec2.y, y = vec1.z*vec2.x - vec1.x*vec2.z, z = vec1.x*vec2.y - vec1.y*vec2.x} +end + +routines.vec.mag = function(vec) + return (vec.x^2 + vec.y^2 + vec.z^2)^0.5 +end + +routines.vec.getUnitVec = function(vec) + local mag = routines.vec.mag(vec) + return { x = vec.x/mag, y = vec.y/mag, z = vec.z/mag } +end + +routines.vec.rotateVec2 = function(vec2, theta) + return { x = vec2.x*math.cos(theta) - vec2.y*math.sin(theta), y = vec2.x*math.sin(theta) + vec2.y*math.cos(theta)} +end +--------------------------------------------------------------------------------------------------------------------------- + + + + +-- acc- the accuracy of each easting/northing. 0, 1, 2, 3, 4, or 5. +routines.tostringMGRS = function(MGRS, acc) + if acc == 0 then + return MGRS.UTMZone .. ' ' .. MGRS.MGRSDigraph + else + return MGRS.UTMZone .. ' ' .. MGRS.MGRSDigraph .. ' ' .. string.format('%0' .. acc .. 'd', routines.utils.round(MGRS.Easting/(10^(5-acc)), 0)) + .. ' ' .. string.format('%0' .. acc .. 'd', routines.utils.round(MGRS.Northing/(10^(5-acc)), 0)) + end +end + +--[[acc: +in DM: decimal point of minutes. +In DMS: decimal point of seconds. +position after the decimal of the least significant digit: +So: +42.32 - acc of 2. +]] +routines.tostringLL = function(lat, lon, acc, DMS) + + local latHemi, lonHemi + if lat > 0 then + latHemi = 'N' + else + latHemi = 'S' + end + + if lon > 0 then + lonHemi = 'E' + else + lonHemi = 'W' + end + + lat = math.abs(lat) + lon = math.abs(lon) + + local latDeg = math.floor(lat) + local latMin = (lat - latDeg)*60 + + local lonDeg = math.floor(lon) + local lonMin = (lon - lonDeg)*60 + + if DMS then -- degrees, minutes, and seconds. + local oldLatMin = latMin + latMin = math.floor(latMin) + local latSec = routines.utils.round((oldLatMin - latMin)*60, acc) + + local oldLonMin = lonMin + lonMin = math.floor(lonMin) + local lonSec = routines.utils.round((oldLonMin - lonMin)*60, acc) + + if latSec == 60 then + latSec = 0 + latMin = latMin + 1 + end + + if lonSec == 60 then + lonSec = 0 + lonMin = lonMin + 1 + end + + local secFrmtStr -- create the formatting string for the seconds place + if acc <= 0 then -- no decimal place. + secFrmtStr = '%02d' + else + local width = 3 + acc -- 01.310 - that's a width of 6, for example. + secFrmtStr = '%0' .. width .. '.' .. acc .. 'f' + end + + return string.format('%02d', latDeg) .. ' ' .. string.format('%02d', latMin) .. '\' ' .. string.format(secFrmtStr, latSec) .. '"' .. latHemi .. ' ' + .. string.format('%02d', lonDeg) .. ' ' .. string.format('%02d', lonMin) .. '\' ' .. string.format(secFrmtStr, lonSec) .. '"' .. lonHemi + + else -- degrees, decimal minutes. + latMin = routines.utils.round(latMin, acc) + lonMin = routines.utils.round(lonMin, acc) + + if latMin == 60 then + latMin = 0 + latDeg = latDeg + 1 + end + + if lonMin == 60 then + lonMin = 0 + lonDeg = lonDeg + 1 + end + + local minFrmtStr -- create the formatting string for the minutes place + if acc <= 0 then -- no decimal place. + minFrmtStr = '%02d' + else + local width = 3 + acc -- 01.310 - that's a width of 6, for example. + minFrmtStr = '%0' .. width .. '.' .. acc .. 'f' + end + + return string.format('%02d', latDeg) .. ' ' .. string.format(minFrmtStr, latMin) .. '\'' .. latHemi .. ' ' + .. string.format('%02d', lonDeg) .. ' ' .. string.format(minFrmtStr, lonMin) .. '\'' .. lonHemi + + end +end + +--[[ required: az - radian + required: dist - meters + optional: alt - meters (set to false or nil if you don't want to use it). + optional: metric - set true to get dist and alt in km and m. + precision will always be nearest degree and NM or km.]] +routines.tostringBR = function(az, dist, alt, metric) + az = routines.utils.round(routines.utils.toDegree(az), 0) + + if metric then + dist = routines.utils.round(dist/1000, 2) + else + dist = routines.utils.round(routines.utils.metersToNM(dist), 2) + end + + local s = string.format('%03d', az) .. ' for ' .. dist + + if alt then + if metric then + s = s .. ' at ' .. routines.utils.round(alt, 0) + else + s = s .. ' at ' .. routines.utils.round(routines.utils.metersToFeet(alt), 0) + end + end + return s +end + +routines.getNorthCorrection = function(point) --gets the correction needed for true north + if not point.z then --Vec2; convert to Vec3 + point.z = point.y + point.y = 0 + end + local lat, lon = coord.LOtoLL(point) + local north_posit = coord.LLtoLO(lat + 1, lon) + return math.atan2(north_posit.z - point.z, north_posit.x - point.x) +end + + +-- the main area +do + -- THE MAIN FUNCTION -- Accessed 100 times/sec. + routines.main = function() + timer.scheduleFunction(routines.main, {}, timer.getTime() + 2) --reschedule first in case of Lua error + ---------------------------------------------------------------------------------------------------------- + --area to add new stuff in + + routines.do_scheduled_functions() + end -- end of routines.main + + timer.scheduleFunction(routines.main, {}, timer.getTime() + 2) + +end + + +do + local idNum = 0 + + --Simplified event handler + routines.addEventHandler = function(f) --id is optional! + local handler = {} + idNum = idNum + 1 + handler.id = idNum + handler.f = f + handler.onEvent = function(self, event) + self.f(event) + end + world.addEventHandler(handler) + end + + routines.removeEventHandler = function(id) + for key, handler in pairs(world.eventHandlers) do + if handler.id and handler.id == id then + world.eventHandlers[key] = nil + return true + end + end + return false + end +end + +-- need to return a Vec3 or Vec2? +function routines.getRandPointInCircle(point, radius, innerRadius) + local theta = 2*math.pi*math.random() + local rad = math.random() + math.random() + if rad > 1 then + rad = 2 - rad + end + + local radMult + if innerRadius and innerRadius <= radius then + radMult = (radius - innerRadius)*rad + innerRadius + else + radMult = radius*rad + end + + if not point.z then --might as well work with vec2/3 + point.z = point.y + end + + local rndCoord + if radius > 0 then + rndCoord = {x = math.cos(theta)*radMult + point.x, y = math.sin(theta)*radMult + point.z} + else + rndCoord = {x = point.x, y = point.z} + end + return rndCoord +end + +routines.goRoute = function(group, path) + local misTask = { + id = 'Mission', + params = { + route = { + points = routines.utils.deepCopy(path), + }, + }, + } + if type(group) == 'string' then + group = Group.getByName(group) + end + local groupCon = group:getController() + if groupCon then + groupCon:setTask(misTask) + return true + end + + Controller.setTask(groupCon, misTask) + return false +end + + +-- Useful atomic functions from mist, ported. + +routines.ground = {} +routines.fixedWing = {} +routines.heli = {} + +routines.ground.buildWP = function(point, overRideForm, overRideSpeed) + + local wp = {} + wp.x = point.x + + if point.z then + wp.y = point.z + else + wp.y = point.y + end + local form, speed + + if point.speed and not overRideSpeed then + wp.speed = point.speed + elseif type(overRideSpeed) == 'number' then + wp.speed = overRideSpeed + else + wp.speed = routines.utils.kmphToMps(20) + end + + if point.form and not overRideForm then + form = point.form + else + form = overRideForm + end + + if not form then + wp.action = 'Cone' + else + form = string.lower(form) + if form == 'off_road' or form == 'off road' then + wp.action = 'Off Road' + elseif form == 'on_road' or form == 'on road' then + wp.action = 'On Road' + elseif form == 'rank' or form == 'line_abrest' or form == 'line abrest' or form == 'lineabrest'then + wp.action = 'Rank' + elseif form == 'cone' then + wp.action = 'Cone' + elseif form == 'diamond' then + wp.action = 'Diamond' + elseif form == 'vee' then + wp.action = 'Vee' + elseif form == 'echelon_left' or form == 'echelon left' or form == 'echelonl' then + wp.action = 'EchelonL' + elseif form == 'echelon_right' or form == 'echelon right' or form == 'echelonr' then + wp.action = 'EchelonR' + else + wp.action = 'Cone' -- if nothing matched + end + end + + wp.type = 'Turning Point' + + return wp + +end + +routines.fixedWing.buildWP = function(point, WPtype, speed, alt, altType) + + local wp = {} + wp.x = point.x + + if point.z then + wp.y = point.z + else + wp.y = point.y + end + + if alt and type(alt) == 'number' then + wp.alt = alt + else + wp.alt = 2000 + end + + if altType then + altType = string.lower(altType) + if altType == 'radio' or 'agl' then + wp.alt_type = 'RADIO' + elseif altType == 'baro' or 'asl' then + wp.alt_type = 'BARO' + end + else + wp.alt_type = 'RADIO' + end + + if point.speed then + speed = point.speed + end + + if point.type then + WPtype = point.type + end + + if not speed then + wp.speed = routines.utils.kmphToMps(500) + else + wp.speed = speed + end + + if not WPtype then + wp.action = 'Turning Point' + else + WPtype = string.lower(WPtype) + if WPtype == 'flyover' or WPtype == 'fly over' or WPtype == 'fly_over' then + wp.action = 'Fly Over Point' + elseif WPtype == 'turningpoint' or WPtype == 'turning point' or WPtype == 'turning_point' then + wp.action = 'Turning Point' + else + wp.action = 'Turning Point' + end + end + + wp.type = 'Turning Point' + return wp +end + +routines.heli.buildWP = function(point, WPtype, speed, alt, altType) + + local wp = {} + wp.x = point.x + + if point.z then + wp.y = point.z + else + wp.y = point.y + end + + if alt and type(alt) == 'number' then + wp.alt = alt + else + wp.alt = 500 + end + + if altType then + altType = string.lower(altType) + if altType == 'radio' or 'agl' then + wp.alt_type = 'RADIO' + elseif altType == 'baro' or 'asl' then + wp.alt_type = 'BARO' + end + else + wp.alt_type = 'RADIO' + end + + if point.speed then + speed = point.speed + end + + if point.type then + WPtype = point.type + end + + if not speed then + wp.speed = routines.utils.kmphToMps(200) + else + wp.speed = speed + end + + if not WPtype then + wp.action = 'Turning Point' + else + WPtype = string.lower(WPtype) + if WPtype == 'flyover' or WPtype == 'fly over' or WPtype == 'fly_over' then + wp.action = 'Fly Over Point' + elseif WPtype == 'turningpoint' or WPtype == 'turning point' or WPtype == 'turning_point' then + wp.action = 'Turning Point' + else + wp.action = 'Turning Point' + end + end + + wp.type = 'Turning Point' + return wp +end + +routines.groupToRandomPoint = function(vars) + local group = vars.group --Required + local point = vars.point --required + local radius = vars.radius or 0 + local innerRadius = vars.innerRadius + local form = vars.form or 'Cone' + local heading = vars.heading or math.random()*2*math.pi + local headingDegrees = vars.headingDegrees + local speed = vars.speed or routines.utils.kmphToMps(20) + + + local useRoads + if not vars.disableRoads then + useRoads = true + else + useRoads = false + end + + local path = {} + + if headingDegrees then + heading = headingDegrees*math.pi/180 + end + + if heading >= 2*math.pi then + heading = heading - 2*math.pi + end + + local rndCoord = routines.getRandPointInCircle(point, radius, innerRadius) + + local offset = {} + local posStart = routines.getLeadPos(group) + + offset.x = routines.utils.round(math.sin(heading - (math.pi/2)) * 50 + rndCoord.x, 3) + offset.z = routines.utils.round(math.cos(heading + (math.pi/2)) * 50 + rndCoord.y, 3) + path[#path + 1] = routines.ground.buildWP(posStart, form, speed) + + + if useRoads == true and ((point.x - posStart.x)^2 + (point.z - posStart.z)^2)^0.5 > radius * 1.3 then + path[#path + 1] = routines.ground.buildWP({['x'] = posStart.x + 11, ['z'] = posStart.z + 11}, 'off_road', speed) + path[#path + 1] = routines.ground.buildWP(posStart, 'on_road', speed) + path[#path + 1] = routines.ground.buildWP(offset, 'on_road', speed) + else + path[#path + 1] = routines.ground.buildWP({['x'] = posStart.x + 25, ['z'] = posStart.z + 25}, form, speed) + end + + path[#path + 1] = routines.ground.buildWP(offset, form, speed) + path[#path + 1] = routines.ground.buildWP(rndCoord, form, speed) + + routines.goRoute(group, path) + + return +end + +routines.groupRandomDistSelf = function(gpData, dist, form, heading, speed) + local pos = routines.getLeadPos(gpData) + local fakeZone = {} + fakeZone.radius = dist or math.random(300, 1000) + fakeZone.point = {x = pos.x, y, pos.y, z = pos.z} + routines.groupToRandomZone(gpData, fakeZone, form, heading, speed) + + return +end + +routines.groupToRandomZone = function(gpData, zone, form, heading, speed) + if type(gpData) == 'string' then + gpData = Group.getByName(gpData) + end + + if type(zone) == 'string' then + zone = trigger.misc.getZone(zone) + elseif type(zone) == 'table' and not zone.radius then + zone = trigger.misc.getZone(zone[math.random(1, #zone)]) + end + + if speed then + speed = routines.utils.kmphToMps(speed) + end + + local vars = {} + vars.group = gpData + vars.radius = zone.radius + vars.form = form + vars.headingDegrees = heading + vars.speed = speed + vars.point = routines.utils.zoneToVec3(zone) + + routines.groupToRandomPoint(vars) + + return +end + +routines.isTerrainValid = function(coord, terrainTypes) -- vec2/3 and enum or table of acceptable terrain types + if coord.z then + coord.y = coord.z + end + local typeConverted = {} + + if type(terrainTypes) == 'string' then -- if its a string it does this check + for constId, constData in pairs(land.SurfaceType) do + if string.lower(constId) == string.lower(terrainTypes) or string.lower(constData) == string.lower(terrainTypes) then + table.insert(typeConverted, constId) + end + end + elseif type(terrainTypes) == 'table' then -- if its a table it does this check + for typeId, typeData in pairs(terrainTypes) do + for constId, constData in pairs(land.SurfaceType) do + if string.lower(constId) == string.lower(typeData) or string.lower(constData) == string.lower(typeId) then + table.insert(typeConverted, constId) + end + end + end + end + for validIndex, validData in pairs(typeConverted) do + if land.getSurfaceType(coord) == land.SurfaceType[validData] then + return true + end + end + return false +end + +routines.groupToPoint = function(gpData, point, form, heading, speed, useRoads) + if type(point) == 'string' then + point = trigger.misc.getZone(point) + end + if speed then + speed = routines.utils.kmphToMps(speed) + end + + local vars = {} + vars.group = gpData + vars.form = form + vars.headingDegrees = heading + vars.speed = speed + vars.disableRoads = useRoads + vars.point = routines.utils.zoneToVec3(point) + routines.groupToRandomPoint(vars) + + return +end + + +routines.getLeadPos = function(group) + if type(group) == 'string' then -- group name + group = Group.getByName(group) + end + + local units = group:getUnits() + + local leader = units[1] + if not leader then -- SHOULD be good, but if there is a bug, this code future-proofs it then. + local lowestInd = math.huge + for ind, unit in pairs(units) do + if ind < lowestInd then + lowestInd = ind + leader = unit + end + end + end + if leader and Unit.isExist(leader) then -- maybe a little too paranoid now... + return leader:getPosition().p + end +end + +--[[ vars for routines.getMGRSString: +vars.units - table of unit names (NOT unitNameTable- maybe this should change). +vars.acc - integer between 0 and 5, inclusive +]] +routines.getMGRSString = function(vars) + local units = vars.units + local acc = vars.acc or 5 + local avgPos = routines.getAvgPos(units) + if avgPos then + return routines.tostringMGRS(coord.LLtoMGRS(coord.LOtoLL(avgPos)), acc) + end +end + +--[[ vars for routines.getLLString +vars.units - table of unit names (NOT unitNameTable- maybe this should change). +vars.acc - integer, number of numbers after decimal place +vars.DMS - if true, output in degrees, minutes, seconds. Otherwise, output in degrees, minutes. + + +]] +routines.getLLString = function(vars) + local units = vars.units + local acc = vars.acc or 3 + local DMS = vars.DMS + local avgPos = routines.getAvgPos(units) + if avgPos then + local lat, lon = coord.LOtoLL(avgPos) + return routines.tostringLL(lat, lon, acc, DMS) + end +end + +--[[ +vars.zone - table of a zone name. +vars.ref - vec3 ref point, maybe overload for vec2 as well? +vars.alt - boolean, if used, includes altitude in string +vars.metric - boolean, gives distance in km instead of NM. +]] +routines.getBRStringZone = function(vars) + local zone = trigger.misc.getZone( vars.zone ) + local ref = routines.utils.makeVec3(vars.ref, 0) -- turn it into Vec3 if it is not already. + local alt = vars.alt + local metric = vars.metric + if zone then + local vec = {x = zone.point.x - ref.x, y = zone.point.y - ref.y, z = zone.point.z - ref.z} + local dir = routines.utils.getDir(vec, ref) + local dist = routines.utils.get2DDist(zone.point, ref) + if alt then + alt = zone.y + end + return routines.tostringBR(dir, dist, alt, metric) + else + env.info( 'routines.getBRStringZone: error: zone is nil' ) + end +end + +--[[ +vars.units- table of unit names (NOT unitNameTable- maybe this should change). +vars.ref - vec3 ref point, maybe overload for vec2 as well? +vars.alt - boolean, if used, includes altitude in string +vars.metric - boolean, gives distance in km instead of NM. +]] +routines.getBRString = function(vars) + local units = vars.units + local ref = routines.utils.makeVec3(vars.ref, 0) -- turn it into Vec3 if it is not already. + local alt = vars.alt + local metric = vars.metric + local avgPos = routines.getAvgPos(units) + if avgPos then + local vec = {x = avgPos.x - ref.x, y = avgPos.y - ref.y, z = avgPos.z - ref.z} + local dir = routines.utils.getDir(vec, ref) + local dist = routines.utils.get2DDist(avgPos, ref) + if alt then + alt = avgPos.y + end + return routines.tostringBR(dir, dist, alt, metric) + end +end + + +-- Returns the Vec3 coordinates of the average position of the concentration of units most in the heading direction. +--[[ vars for routines.getLeadingPos: +vars.units - table of unit names +vars.heading - direction +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees +]] +routines.getLeadingPos = function(vars) + local units = vars.units + local heading = vars.heading + local radius = vars.radius + if vars.headingDegrees then + heading = routines.utils.toRadian(vars.headingDegrees) + end + + local unitPosTbl = {} + for i = 1, #units do + local unit = Unit.getByName(units[i]) + if unit and unit:isExist() then + unitPosTbl[#unitPosTbl + 1] = unit:getPosition().p + end + end + if #unitPosTbl > 0 then -- one more more units found. + -- first, find the unit most in the heading direction + local maxPos = -math.huge + + local maxPosInd -- maxPos - the furthest in direction defined by heading; maxPosInd = + for i = 1, #unitPosTbl do + local rotatedVec2 = routines.vec.rotateVec2(routines.utils.makeVec2(unitPosTbl[i]), heading) + if (not maxPos) or maxPos < rotatedVec2.x then + maxPos = rotatedVec2.x + maxPosInd = i + end + end + + --now, get all the units around this unit... + local avgPos + if radius then + local maxUnitPos = unitPosTbl[maxPosInd] + local avgx, avgy, avgz, totNum = 0, 0, 0, 0 + for i = 1, #unitPosTbl do + if routines.utils.get2DDist(maxUnitPos, unitPosTbl[i]) <= radius then + avgx = avgx + unitPosTbl[i].x + avgy = avgy + unitPosTbl[i].y + avgz = avgz + unitPosTbl[i].z + totNum = totNum + 1 + end + end + avgPos = { x = avgx/totNum, y = avgy/totNum, z = avgz/totNum} + else + avgPos = unitPosTbl[maxPosInd] + end + + return avgPos + end +end + + +--[[ vars for routines.getLeadingMGRSString: +vars.units - table of unit names +vars.heading - direction +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees +vars.acc - number, 0 to 5. +]] +routines.getLeadingMGRSString = function(vars) + local pos = routines.getLeadingPos(vars) + if pos then + local acc = vars.acc or 5 + return routines.tostringMGRS(coord.LLtoMGRS(coord.LOtoLL(pos)), acc) + end +end + +--[[ vars for routines.getLeadingLLString: +vars.units - table of unit names +vars.heading - direction, number +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees +vars.acc - number of digits after decimal point (can be negative) +vars.DMS - boolean, true if you want DMS. +]] +routines.getLeadingLLString = function(vars) + local pos = routines.getLeadingPos(vars) + if pos then + local acc = vars.acc or 3 + local DMS = vars.DMS + local lat, lon = coord.LOtoLL(pos) + return routines.tostringLL(lat, lon, acc, DMS) + end +end + + + +--[[ vars for routines.getLeadingBRString: +vars.units - table of unit names +vars.heading - direction, number +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees +vars.metric - boolean, if true, use km instead of NM. +vars.alt - boolean, if true, include altitude. +vars.ref - vec3/vec2 reference point. +]] +routines.getLeadingBRString = function(vars) + local pos = routines.getLeadingPos(vars) + if pos then + local ref = vars.ref + local alt = vars.alt + local metric = vars.metric + + local vec = {x = pos.x - ref.x, y = pos.y - ref.y, z = pos.z - ref.z} + local dir = routines.utils.getDir(vec, ref) + local dist = routines.utils.get2DDist(pos, ref) + if alt then + alt = pos.y + end + return routines.tostringBR(dir, dist, alt, metric) + end +end + +--[[ vars for routines.message.add + vars.text = 'Hello World' + vars.displayTime = 20 + vars.msgFor = {coa = {'red'}, countries = {'Ukraine', 'Georgia'}, unitTypes = {'A-10C'}} + +]] + +--[[ vars for routines.msgMGRS +vars.units - table of unit names (NOT unitNameTable- maybe this should change). +vars.acc - integer between 0 and 5, inclusive +vars.text - text in the message +vars.displayTime - self explanatory +vars.msgFor - scope +]] +routines.msgMGRS = function(vars) + local units = vars.units + local acc = vars.acc + local text = vars.text + local displayTime = vars.displayTime + local msgFor = vars.msgFor + + local s = routines.getMGRSString{units = units, acc = acc} + local newText + if string.find(text, '%%s') then -- look for %s + newText = string.format(text, s) -- insert the coordinates into the message + else -- else, just append to the end. + newText = text .. s + end + + routines.message.add{ + text = newText, + displayTime = displayTime, + msgFor = msgFor + } +end + +--[[ vars for routines.msgLL +vars.units - table of unit names (NOT unitNameTable- maybe this should change) (Yes). +vars.acc - integer, number of numbers after decimal place +vars.DMS - if true, output in degrees, minutes, seconds. Otherwise, output in degrees, minutes. +vars.text - text in the message +vars.displayTime - self explanatory +vars.msgFor - scope +]] +routines.msgLL = function(vars) + local units = vars.units -- technically, I don't really need to do this, but it helps readability. + local acc = vars.acc + local DMS = vars.DMS + local text = vars.text + local displayTime = vars.displayTime + local msgFor = vars.msgFor + + local s = routines.getLLString{units = units, acc = acc, DMS = DMS} + local newText + if string.find(text, '%%s') then -- look for %s + newText = string.format(text, s) -- insert the coordinates into the message + else -- else, just append to the end. + newText = text .. s + end + + routines.message.add{ + text = newText, + displayTime = displayTime, + msgFor = msgFor + } + +end + + +--[[ +vars.units- table of unit names (NOT unitNameTable- maybe this should change). +vars.ref - vec3 ref point, maybe overload for vec2 as well? +vars.alt - boolean, if used, includes altitude in string +vars.metric - boolean, gives distance in km instead of NM. +vars.text - text of the message +vars.displayTime +vars.msgFor - scope +]] +routines.msgBR = function(vars) + local units = vars.units -- technically, I don't really need to do this, but it helps readability. + local ref = vars.ref -- vec2/vec3 will be handled in routines.getBRString + local alt = vars.alt + local metric = vars.metric + local text = vars.text + local displayTime = vars.displayTime + local msgFor = vars.msgFor + + local s = routines.getBRString{units = units, ref = ref, alt = alt, metric = metric} + local newText + if string.find(text, '%%s') then -- look for %s + newText = string.format(text, s) -- insert the coordinates into the message + else -- else, just append to the end. + newText = text .. s + end + + routines.message.add{ + text = newText, + displayTime = displayTime, + msgFor = msgFor + } + +end + + +-------------------------------------------------------------------------------------------- +-- basically, just sub-types of routines.msgBR... saves folks the work of getting the ref point. +--[[ +vars.units- table of unit names (NOT unitNameTable- maybe this should change). +vars.ref - string red, blue +vars.alt - boolean, if used, includes altitude in string +vars.metric - boolean, gives distance in km instead of NM. +vars.text - text of the message +vars.displayTime +vars.msgFor - scope +]] +routines.msgBullseye = function(vars) + if string.lower(vars.ref) == 'red' then + vars.ref = routines.DBs.missionData.bullseye.red + routines.msgBR(vars) + elseif string.lower(vars.ref) == 'blue' then + vars.ref = routines.DBs.missionData.bullseye.blue + routines.msgBR(vars) + end +end + +--[[ +vars.units- table of unit names (NOT unitNameTable- maybe this should change). +vars.ref - unit name of reference point +vars.alt - boolean, if used, includes altitude in string +vars.metric - boolean, gives distance in km instead of NM. +vars.text - text of the message +vars.displayTime +vars.msgFor - scope +]] + +routines.msgBRA = function(vars) + if Unit.getByName(vars.ref) then + vars.ref = Unit.getByName(vars.ref):getPosition().p + if not vars.alt then + vars.alt = true + end + routines.msgBR(vars) + end +end +-------------------------------------------------------------------------------------------- + +--[[ vars for routines.msgLeadingMGRS: +vars.units - table of unit names +vars.heading - direction +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees (optional) +vars.acc - number, 0 to 5. +vars.text - text of the message +vars.displayTime +vars.msgFor - scope +]] +routines.msgLeadingMGRS = function(vars) + local units = vars.units -- technically, I don't really need to do this, but it helps readability. + local heading = vars.heading + local radius = vars.radius + local headingDegrees = vars.headingDegrees + local acc = vars.acc + local text = vars.text + local displayTime = vars.displayTime + local msgFor = vars.msgFor + + local s = routines.getLeadingMGRSString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, acc = acc} + local newText + if string.find(text, '%%s') then -- look for %s + newText = string.format(text, s) -- insert the coordinates into the message + else -- else, just append to the end. + newText = text .. s + end + + routines.message.add{ + text = newText, + displayTime = displayTime, + msgFor = msgFor + } + + +end +--[[ vars for routines.msgLeadingLL: +vars.units - table of unit names +vars.heading - direction, number +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees (optional) +vars.acc - number of digits after decimal point (can be negative) +vars.DMS - boolean, true if you want DMS. (optional) +vars.text - text of the message +vars.displayTime +vars.msgFor - scope +]] +routines.msgLeadingLL = function(vars) + local units = vars.units -- technically, I don't really need to do this, but it helps readability. + local heading = vars.heading + local radius = vars.radius + local headingDegrees = vars.headingDegrees + local acc = vars.acc + local DMS = vars.DMS + local text = vars.text + local displayTime = vars.displayTime + local msgFor = vars.msgFor + + local s = routines.getLeadingLLString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, acc = acc, DMS = DMS} + local newText + if string.find(text, '%%s') then -- look for %s + newText = string.format(text, s) -- insert the coordinates into the message + else -- else, just append to the end. + newText = text .. s + end + + routines.message.add{ + text = newText, + displayTime = displayTime, + msgFor = msgFor + } + +end + +--[[ +vars.units - table of unit names +vars.heading - direction, number +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees (optional) +vars.metric - boolean, if true, use km instead of NM. (optional) +vars.alt - boolean, if true, include altitude. (optional) +vars.ref - vec3/vec2 reference point. +vars.text - text of the message +vars.displayTime +vars.msgFor - scope +]] +routines.msgLeadingBR = function(vars) + local units = vars.units -- technically, I don't really need to do this, but it helps readability. + local heading = vars.heading + local radius = vars.radius + local headingDegrees = vars.headingDegrees + local metric = vars.metric + local alt = vars.alt + local ref = vars.ref -- vec2/vec3 will be handled in routines.getBRString + local text = vars.text + local displayTime = vars.displayTime + local msgFor = vars.msgFor + + local s = routines.getLeadingBRString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, metric = metric, alt = alt, ref = ref} + local newText + if string.find(text, '%%s') then -- look for %s + newText = string.format(text, s) -- insert the coordinates into the message + else -- else, just append to the end. + newText = text .. s + end + + routines.message.add{ + text = newText, + displayTime = displayTime, + msgFor = msgFor + } +end + + +function spairs(t, order) + -- collect the keys + local keys = {} + for k in pairs(t) do keys[#keys+1] = k end + + -- if order function given, sort by it by passing the table and keys a, b, + -- otherwise just sort the keys + if order then + table.sort(keys, function(a,b) return order(t, a, b) end) + else + table.sort(keys) + end + + -- return the iterator function + local i = 0 + return function() + i = i + 1 + if keys[i] then + return keys[i], t[keys[i]] + end + end +end + + +function routines.IsPartOfGroupInZones( CargoGroup, LandingZones ) +--trace.f() + + local CurrentZoneID = nil + + if CargoGroup then + local CargoUnits = CargoGroup:getUnits() + for CargoUnitID, CargoUnit in pairs( CargoUnits ) do + if CargoUnit and CargoUnit:getLife() >= 1.0 then + CurrentZoneID = routines.IsUnitInZones( CargoUnit, LandingZones ) + if CurrentZoneID then + break + end + end + end + end + +--trace.r( "", "", { CurrentZoneID } ) + return CurrentZoneID +end + + + +function routines.IsUnitInZones( TransportUnit, LandingZones ) +--trace.f("", "routines.IsUnitInZones" ) + + local TransportZoneResult = nil + local TransportZonePos = nil + local TransportZone = nil + + -- fill-up some local variables to support further calculations to determine location of units within the zone. + if TransportUnit then + local TransportUnitPos = TransportUnit:getPosition().p + if type( LandingZones ) == "table" then + for LandingZoneID, LandingZoneName in pairs( LandingZones ) do + TransportZone = trigger.misc.getZone( LandingZoneName ) + if TransportZone then + TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} + if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then + TransportZoneResult = LandingZoneID + break + end + end + end + else + TransportZone = trigger.misc.getZone( LandingZones ) + TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} + if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then + TransportZoneResult = 1 + end + end + if TransportZoneResult then + --trace.i( "routines", "TransportZone:" .. TransportZoneResult ) + else + --trace.i( "routines", "TransportZone:nil logic" ) + end + return TransportZoneResult + else + --trace.i( "routines", "TransportZone:nil hard" ) + return nil + end +end + +function routines.IsUnitNearZonesRadius( TransportUnit, LandingZones, ZoneRadius ) +--trace.f("", "routines.IsUnitInZones" ) + + local TransportZoneResult = nil + local TransportZonePos = nil + local TransportZone = nil + + -- fill-up some local variables to support further calculations to determine location of units within the zone. + if TransportUnit then + local TransportUnitPos = TransportUnit:getPosition().p + if type( LandingZones ) == "table" then + for LandingZoneID, LandingZoneName in pairs( LandingZones ) do + TransportZone = trigger.misc.getZone( LandingZoneName ) + if TransportZone then + TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} + if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= ZoneRadius ) then + TransportZoneResult = LandingZoneID + break + end + end + end + else + TransportZone = trigger.misc.getZone( LandingZones ) + TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} + if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= ZoneRadius ) then + TransportZoneResult = 1 + end + end + if TransportZoneResult then + --trace.i( "routines", "TransportZone:" .. TransportZoneResult ) + else + --trace.i( "routines", "TransportZone:nil logic" ) + end + return TransportZoneResult + else + --trace.i( "routines", "TransportZone:nil hard" ) + return nil + end +end + + +function routines.IsStaticInZones( TransportStatic, LandingZones ) +--trace.f() + + local TransportZoneResult = nil + local TransportZonePos = nil + local TransportZone = nil + + -- fill-up some local variables to support further calculations to determine location of units within the zone. + local TransportStaticPos = TransportStatic:getPosition().p + if type( LandingZones ) == "table" then + for LandingZoneID, LandingZoneName in pairs( LandingZones ) do + TransportZone = trigger.misc.getZone( LandingZoneName ) + if TransportZone then + TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} + if ((( TransportStaticPos.x - TransportZonePos.x)^2 + (TransportStaticPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then + TransportZoneResult = LandingZoneID + break + end + end + end + else + TransportZone = trigger.misc.getZone( LandingZones ) + TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} + if ((( TransportStaticPos.x - TransportZonePos.x)^2 + (TransportStaticPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then + TransportZoneResult = 1 + end + end + +--trace.r( "", "", { TransportZoneResult } ) + return TransportZoneResult +end + + +function routines.IsUnitInRadius( CargoUnit, ReferencePosition, Radius ) +--trace.f() + + local Valid = true + + -- fill-up some local variables to support further calculations to determine location of units within the zone. + local CargoPos = CargoUnit:getPosition().p + local ReferenceP = ReferencePosition.p + + if (((CargoPos.x - ReferenceP.x)^2 + (CargoPos.z - ReferenceP.z)^2)^0.5 <= Radius) then + else + Valid = false + end + + return Valid +end + +function routines.IsPartOfGroupInRadius( CargoGroup, ReferencePosition, Radius ) +--trace.f() + + local Valid = true + + Valid = routines.ValidateGroup( CargoGroup, "CargoGroup", Valid ) + + -- fill-up some local variables to support further calculations to determine location of units within the zone + local CargoUnits = CargoGroup:getUnits() + for CargoUnitId, CargoUnit in pairs( CargoUnits ) do + local CargoUnitPos = CargoUnit:getPosition().p +-- env.info( 'routines.IsPartOfGroupInRadius: CargoUnitPos.x = ' .. CargoUnitPos.x .. ' CargoUnitPos.z = ' .. CargoUnitPos.z ) + local ReferenceP = ReferencePosition.p +-- env.info( 'routines.IsPartOfGroupInRadius: ReferenceGroupPos.x = ' .. ReferenceGroupPos.x .. ' ReferenceGroupPos.z = ' .. ReferenceGroupPos.z ) + + if ((( CargoUnitPos.x - ReferenceP.x)^2 + (CargoUnitPos.z - ReferenceP.z)^2)^0.5 <= Radius) then + else + Valid = false + break + end + end + + return Valid +end + + +function routines.ValidateString( Variable, VariableName, Valid ) +--trace.f() + + if type( Variable ) == "string" then + if Variable == "" then + error( "routines.ValidateString: error: " .. VariableName .. " must be filled out!" ) + Valid = false + end + else + error( "routines.ValidateString: error: " .. VariableName .. " is not a string." ) + Valid = false + end + +--trace.r( "", "", { Valid } ) + return Valid +end + +function routines.ValidateNumber( Variable, VariableName, Valid ) +--trace.f() + + if type( Variable ) == "number" then + else + error( "routines.ValidateNumber: error: " .. VariableName .. " is not a number." ) + Valid = false + end + +--trace.r( "", "", { Valid } ) + return Valid + +end + +function routines.ValidateGroup( Variable, VariableName, Valid ) +--trace.f() + + if Variable == nil then + error( "routines.ValidateGroup: error: " .. VariableName .. " is a nil value!" ) + Valid = false + end + +--trace.r( "", "", { Valid } ) + return Valid +end + +function routines.ValidateZone( LandingZones, VariableName, Valid ) +--trace.f() + + if LandingZones == nil then + error( "routines.ValidateGroup: error: " .. VariableName .. " is a nil value!" ) + Valid = false + end + + if type( LandingZones ) == "table" then + for LandingZoneID, LandingZoneName in pairs( LandingZones ) do + if trigger.misc.getZone( LandingZoneName ) == nil then + error( "routines.ValidateGroup: error: Zone " .. LandingZoneName .. " does not exist!" ) + Valid = false + break + end + end + else + if trigger.misc.getZone( LandingZones ) == nil then + error( "routines.ValidateGroup: error: Zone " .. LandingZones .. " does not exist!" ) + Valid = false + end + end + +--trace.r( "", "", { Valid } ) + return Valid +end + +function routines.ValidateEnumeration( Variable, VariableName, Enum, Valid ) +--trace.f() + + local ValidVariable = false + + for EnumId, EnumData in pairs( Enum ) do + if Variable == EnumData then + ValidVariable = true + break + end + end + + if ValidVariable then + else + error( 'TransportValidateEnum: " .. VariableName .. " is not a valid type.' .. Variable ) + Valid = false + end + +--trace.r( "", "", { Valid } ) + return Valid +end + +function routines.getGroupRoute(groupIdent, task) -- same as getGroupPoints but returns speed and formation type along with vec2 of point} + -- refactor to search by groupId and allow groupId and groupName as inputs + local gpId = groupIdent + if type(groupIdent) == 'string' and not tonumber(groupIdent) then + gpId = _DATABASE.Templates.Groups[groupIdent].groupId + end + + for coa_name, coa_data in pairs(env.mission.coalition) do + if (coa_name == 'red' or coa_name == 'blue') and type(coa_data) == 'table' then + if coa_data.country then --there is a country table + for cntry_id, cntry_data in pairs(coa_data.country) do + for obj_type_name, obj_type_data in pairs(cntry_data) do + if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" then -- only these types have points + if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then --there's a group! + for group_num, group_data in pairs(obj_type_data.group) do + if group_data and group_data.groupId == gpId then -- this is the group we are looking for + if group_data.route and group_data.route.points and #group_data.route.points > 0 then + local points = {} + + for point_num, point in pairs(group_data.route.points) do + local routeData = {} + if not point.point then + routeData.x = point.x + routeData.y = point.y + else + routeData.point = point.point --it's possible that the ME could move to the point = Vec2 notation. + end + routeData.form = point.action + routeData.speed = point.speed + routeData.alt = point.alt + routeData.alt_type = point.alt_type + routeData.airdromeId = point.airdromeId + routeData.helipadId = point.helipadId + routeData.type = point.type + routeData.action = point.action + if task then + routeData.task = point.task + end + points[point_num] = routeData + end + + return points + end + return + end --if group_data and group_data.name and group_data.name == 'groupname' + end --for group_num, group_data in pairs(obj_type_data.group) do + end --if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then + end --if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then + end --for obj_type_name, obj_type_data in pairs(cntry_data) do + end --for cntry_id, cntry_data in pairs(coa_data.country) do + end --if coa_data.country then --there is a country table + end --if coa_name == 'red' or coa_name == 'blue' and type(coa_data) == 'table' then + end --for coa_name, coa_data in pairs(mission.coalition) do +end + +routines.ground.patrolRoute = function(vars) + + + local tempRoute = {} + local useRoute = {} + local gpData = vars.gpData + if type(gpData) == 'string' then + gpData = Group.getByName(gpData) + end + + local useGroupRoute + if not vars.useGroupRoute then + useGroupRoute = vars.gpData + else + useGroupRoute = vars.useGroupRoute + end + local routeProvided = false + if not vars.route then + if useGroupRoute then + tempRoute = routines.getGroupRoute(useGroupRoute) + end + else + useRoute = vars.route + local posStart = routines.getLeadPos(gpData) + useRoute[1] = routines.ground.buildWP(posStart, useRoute[1].action, useRoute[1].speed) + routeProvided = true + end + + + local overRideSpeed = vars.speed or 'default' + local pType = vars.pType + local offRoadForm = vars.offRoadForm or 'default' + local onRoadForm = vars.onRoadForm or 'default' + + if routeProvided == false and #tempRoute > 0 then + local posStart = routines.getLeadPos(gpData) + + + useRoute[#useRoute + 1] = routines.ground.buildWP(posStart, offRoadForm, overRideSpeed) + for i = 1, #tempRoute do + local tempForm = tempRoute[i].action + local tempSpeed = tempRoute[i].speed + + if offRoadForm == 'default' then + tempForm = tempRoute[i].action + end + if onRoadForm == 'default' then + onRoadForm = 'On Road' + end + if (string.lower(tempRoute[i].action) == 'on road' or string.lower(tempRoute[i].action) == 'onroad' or string.lower(tempRoute[i].action) == 'on_road') then + tempForm = onRoadForm + else + tempForm = offRoadForm + end + + if type(overRideSpeed) == 'number' then + tempSpeed = overRideSpeed + end + + + useRoute[#useRoute + 1] = routines.ground.buildWP(tempRoute[i], tempForm, tempSpeed) + end + + if pType and string.lower(pType) == 'doubleback' then + local curRoute = routines.utils.deepCopy(useRoute) + for i = #curRoute, 2, -1 do + useRoute[#useRoute + 1] = routines.ground.buildWP(curRoute[i], curRoute[i].action, curRoute[i].speed) + end + end + + useRoute[1].action = useRoute[#useRoute].action -- make it so the first WP matches the last WP + end + + local cTask3 = {} + local newPatrol = {} + newPatrol.route = useRoute + newPatrol.gpData = gpData:getName() + cTask3[#cTask3 + 1] = 'routines.ground.patrolRoute(' + cTask3[#cTask3 + 1] = routines.utils.oneLineSerialize(newPatrol) + cTask3[#cTask3 + 1] = ')' + cTask3 = table.concat(cTask3) + local tempTask = { + id = 'WrappedAction', + params = { + action = { + id = 'Script', + params = { + command = cTask3, + + }, + }, + }, + } + + + useRoute[#useRoute].task = tempTask + routines.goRoute(gpData, useRoute) + + return +end + +routines.ground.patrol = function(gpData, pType, form, speed) + local vars = {} + + if type(gpData) == 'table' and gpData:getName() then + gpData = gpData:getName() + end + + vars.useGroupRoute = gpData + vars.gpData = gpData + vars.pType = pType + vars.offRoadForm = form + vars.speed = speed + + routines.ground.patrolRoute(vars) + + return +end + +function routines.GetUnitHeight( CheckUnit ) +--trace.f( "routines" ) + + local UnitPoint = CheckUnit:getPoint() + local UnitPosition = { x = UnitPoint.x, y = UnitPoint.z } + local UnitHeight = UnitPoint.y + + local LandHeight = land.getHeight( UnitPosition ) + + --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) + + --trace.f( "routines", "Unit Height = " .. UnitHeight - LandHeight ) + + return UnitHeight - LandHeight + +end + + + +Su34Status = { status = {} } +boardMsgRed = { statusMsg = "" } +boardMsgAll = { timeMsg = "" } +SpawnSettings = {} +Su34MenuPath = {} +Su34Menus = 0 + + +function Su34AttackCarlVinson(groupName) +--trace.menu("", "Su34AttackCarlVinson") + local groupSu34 = Group.getByName( groupName ) + local controllerSu34 = groupSu34.getController(groupSu34) + local groupCarlVinson = Group.getByName("US Carl Vinson #001") + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) + if groupCarlVinson ~= nil then + controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupCarlVinson:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) + end + Su34Status.status[groupName] = 1 + MessageToRed( string.format('%s: ',groupName) .. 'Attacking carrier Carl Vinson. ', 10, 'RedStatus' .. groupName ) +end + +function Su34AttackWest(groupName) +--trace.f("","Su34AttackWest") + local groupSu34 = Group.getByName( groupName ) + local controllerSu34 = groupSu34.getController(groupSu34) + local groupShipWest1 = Group.getByName("US Ship West #001") + local groupShipWest2 = Group.getByName("US Ship West #002") + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) + if groupShipWest1 ~= nil then + controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipWest1:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) + end + if groupShipWest2 ~= nil then + controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipWest2:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) + end + Su34Status.status[groupName] = 2 + MessageToRed( string.format('%s: ',groupName) .. 'Attacking invading ships in the west. ', 10, 'RedStatus' .. groupName ) +end + +function Su34AttackNorth(groupName) +--trace.menu("","Su34AttackNorth") + local groupSu34 = Group.getByName( groupName ) + local controllerSu34 = groupSu34.getController(groupSu34) + local groupShipNorth1 = Group.getByName("US Ship North #001") + local groupShipNorth2 = Group.getByName("US Ship North #002") + local groupShipNorth3 = Group.getByName("US Ship North #003") + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) + if groupShipNorth1 ~= nil then + controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth1:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) + end + if groupShipNorth2 ~= nil then + controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth2:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) + end + if groupShipNorth3 ~= nil then + controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth3:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) + end + Su34Status.status[groupName] = 3 + MessageToRed( string.format('%s: ',groupName) .. 'Attacking invading ships in the north. ', 10, 'RedStatus' .. groupName ) +end + +function Su34Orbit(groupName) +--trace.menu("","Su34Orbit") + local groupSu34 = Group.getByName( groupName ) + local controllerSu34 = groupSu34:getController() + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) + controllerSu34:pushTask( {id = 'ControlledTask', params = { task = { id = 'Orbit', params = { pattern = AI.Task.OrbitPattern.RACE_TRACK } }, stopCondition = { duration = 600 } } } ) + Su34Status.status[groupName] = 4 + MessageToRed( string.format('%s: ',groupName) .. 'In orbit and awaiting further instructions. ', 10, 'RedStatus' .. groupName ) +end + +function Su34TakeOff(groupName) +--trace.menu("","Su34TakeOff") + local groupSu34 = Group.getByName( groupName ) + local controllerSu34 = groupSu34:getController() + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) + Su34Status.status[groupName] = 8 + MessageToRed( string.format('%s: ',groupName) .. 'Take-Off. ', 10, 'RedStatus' .. groupName ) +end + +function Su34Hold(groupName) +--trace.menu("","Su34Hold") + local groupSu34 = Group.getByName( groupName ) + local controllerSu34 = groupSu34:getController() + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) + Su34Status.status[groupName] = 5 + MessageToRed( string.format('%s: ',groupName) .. 'Holding Weapons. ', 10, 'RedStatus' .. groupName ) +end + +function Su34RTB(groupName) +--trace.menu("","Su34RTB") + Su34Status.status[groupName] = 6 + MessageToRed( string.format('%s: ',groupName) .. 'Return to Krasnodar. ', 10, 'RedStatus' .. groupName ) +end + +function Su34Destroyed(groupName) +--trace.menu("","Su34Destroyed") + Su34Status.status[groupName] = 7 + MessageToRed( string.format('%s: ',groupName) .. 'Destroyed. ', 30, 'RedStatus' .. groupName ) +end + +function GroupAlive( groupName ) +--trace.menu("","GroupAlive") + local groupTest = Group.getByName( groupName ) + + local groupExists = false + + if groupTest then + groupExists = groupTest:isExist() + end + + --trace.r( "", "", { groupExists } ) + return groupExists +end + +function Su34IsDead() +--trace.f() + +end + +function Su34OverviewStatus() +--trace.menu("","Su34OverviewStatus") + local msg = "" + local currentStatus = 0 + local Exists = false + + for groupName, currentStatus in pairs(Su34Status.status) do + + env.info(('Su34 Overview Status: GroupName = ' .. groupName )) + Alive = GroupAlive( groupName ) + + if Alive then + if currentStatus == 1 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Attacking carrier Carl Vinson. " + elseif currentStatus == 2 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Attacking supporting ships in the west. " + elseif currentStatus == 3 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Attacking invading ships in the north. " + elseif currentStatus == 4 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "In orbit and awaiting further instructions. " + elseif currentStatus == 5 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Holding Weapons. " + elseif currentStatus == 6 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Return to Krasnodar. " + elseif currentStatus == 7 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Destroyed. " + elseif currentStatus == 8 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Take-Off. " + end + else + if currentStatus == 7 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Destroyed. " + else + Su34Destroyed(groupName) + end + end + end + + boardMsgRed.statusMsg = msg +end + + +function UpdateBoardMsg() +--trace.f() + Su34OverviewStatus() + MessageToRed( boardMsgRed.statusMsg, 15, 'RedStatus' ) +end + +function MusicReset( flg ) +--trace.f() + trigger.action.setUserFlag(95,flg) +end + +function PlaneActivate(groupNameFormat, flg) +--trace.f() + local groupName = groupNameFormat .. string.format("#%03d", trigger.misc.getUserFlag(flg)) + --trigger.action.outText(groupName,10) + trigger.action.activateGroup(Group.getByName(groupName)) +end + +function Su34Menu(groupName) +--trace.f() + + --env.info(( 'Su34Menu(' .. groupName .. ')' )) + local groupSu34 = Group.getByName( groupName ) + + if Su34Status.status[groupName] == 1 or + Su34Status.status[groupName] == 2 or + Su34Status.status[groupName] == 3 or + Su34Status.status[groupName] == 4 or + Su34Status.status[groupName] == 5 then + if Su34MenuPath[groupName] == nil then + if planeMenuPath == nil then + planeMenuPath = missionCommands.addSubMenuForCoalition( + coalition.side.RED, + "SU-34 anti-ship flights", + nil + ) + end + Su34MenuPath[groupName] = missionCommands.addSubMenuForCoalition( + coalition.side.RED, + "Flight " .. groupName, + planeMenuPath + ) + + missionCommands.addCommandForCoalition( + coalition.side.RED, + "Attack carrier Carl Vinson", + Su34MenuPath[groupName], + Su34AttackCarlVinson, + groupName + ) + + missionCommands.addCommandForCoalition( + coalition.side.RED, + "Attack ships in the west", + Su34MenuPath[groupName], + Su34AttackWest, + groupName + ) + + missionCommands.addCommandForCoalition( + coalition.side.RED, + "Attack ships in the north", + Su34MenuPath[groupName], + Su34AttackNorth, + groupName + ) + + missionCommands.addCommandForCoalition( + coalition.side.RED, + "Hold position and await instructions", + Su34MenuPath[groupName], + Su34Orbit, + groupName + ) + + missionCommands.addCommandForCoalition( + coalition.side.RED, + "Report status", + Su34MenuPath[groupName], + Su34OverviewStatus + ) + end + else + if Su34MenuPath[groupName] then + missionCommands.removeItemForCoalition(coalition.side.RED, Su34MenuPath[groupName]) + end + end +end + +--- Obsolete function, but kept to rework in framework. + +function ChooseInfantry ( TeleportPrefixTable, TeleportMax ) +--trace.f("Spawn") + --env.info(( 'ChooseInfantry: ' )) + + TeleportPrefixTableCount = #TeleportPrefixTable + TeleportPrefixTableIndex = math.random( 1, TeleportPrefixTableCount ) + + --env.info(( 'ChooseInfantry: TeleportPrefixTableIndex = ' .. TeleportPrefixTableIndex .. ' TeleportPrefixTableCount = ' .. TeleportPrefixTableCount .. ' TeleportMax = ' .. TeleportMax )) + + local TeleportFound = false + local TeleportLoop = true + local Index = TeleportPrefixTableIndex + local TeleportPrefix = '' + + while TeleportLoop do + TeleportPrefix = TeleportPrefixTable[Index] + if SpawnSettings[TeleportPrefix] then + if SpawnSettings[TeleportPrefix]['SpawnCount'] - 1 < TeleportMax then + SpawnSettings[TeleportPrefix]['SpawnCount'] = SpawnSettings[TeleportPrefix]['SpawnCount'] + 1 + TeleportFound = true + else + TeleportFound = false + end + else + SpawnSettings[TeleportPrefix] = {} + SpawnSettings[TeleportPrefix]['SpawnCount'] = 0 + TeleportFound = true + end + if TeleportFound then + TeleportLoop = false + else + if Index < TeleportPrefixTableCount then + Index = Index + 1 + else + TeleportLoop = false + end + end + --env.info(( 'ChooseInfantry: Loop 1 - TeleportPrefix = ' .. TeleportPrefix .. ' Index = ' .. Index )) + end + + if TeleportFound == false then + TeleportLoop = true + Index = 1 + while TeleportLoop do + TeleportPrefix = TeleportPrefixTable[Index] + if SpawnSettings[TeleportPrefix] then + if SpawnSettings[TeleportPrefix]['SpawnCount'] - 1 < TeleportMax then + SpawnSettings[TeleportPrefix]['SpawnCount'] = SpawnSettings[TeleportPrefix]['SpawnCount'] + 1 + TeleportFound = true + else + TeleportFound = false + end + else + SpawnSettings[TeleportPrefix] = {} + SpawnSettings[TeleportPrefix]['SpawnCount'] = 0 + TeleportFound = true + end + if TeleportFound then + TeleportLoop = false + else + if Index < TeleportPrefixTableIndex then + Index = Index + 1 + else + TeleportLoop = false + end + end + --env.info(( 'ChooseInfantry: Loop 2 - TeleportPrefix = ' .. TeleportPrefix .. ' Index = ' .. Index )) + end + end + + local TeleportGroupName = '' + if TeleportFound == true then + TeleportGroupName = TeleportPrefix .. string.format("#%03d", SpawnSettings[TeleportPrefix]['SpawnCount'] ) + else + TeleportGroupName = '' + end + + --env.info(('ChooseInfantry: TeleportGroupName = ' .. TeleportGroupName )) + --env.info(('ChooseInfantry: return')) + + return TeleportGroupName +end + +SpawnedInfantry = 0 + +function LandCarrier ( CarrierGroup, LandingZonePrefix ) +--trace.f() + --env.info(( 'LandCarrier: ' )) + --env.info(( 'LandCarrier: CarrierGroup = ' .. CarrierGroup:getName() )) + --env.info(( 'LandCarrier: LandingZone = ' .. LandingZonePrefix )) + + local controllerGroup = CarrierGroup:getController() + + local LandingZone = trigger.misc.getZone(LandingZonePrefix) + local LandingZonePos = {} + LandingZonePos.x = LandingZone.point.x + math.random(LandingZone.radius * -1, LandingZone.radius) + LandingZonePos.y = LandingZone.point.z + math.random(LandingZone.radius * -1, LandingZone.radius) + + controllerGroup:pushTask( { id = 'Land', params = { point = LandingZonePos, durationFlag = true, duration = 10 } } ) + + --env.info(( 'LandCarrier: end' )) +end + +EscortCount = 0 +function EscortCarrier ( CarrierGroup, EscortPrefix, EscortLastWayPoint, EscortEngagementDistanceMax, EscortTargetTypes ) +--trace.f() + --env.info(( 'EscortCarrier: ' )) + --env.info(( 'EscortCarrier: CarrierGroup = ' .. CarrierGroup:getName() )) + --env.info(( 'EscortCarrier: EscortPrefix = ' .. EscortPrefix )) + + local CarrierName = CarrierGroup:getName() + + local EscortMission = {} + local CarrierMission = {} + + local EscortMission = SpawnMissionGroup( EscortPrefix ) + local CarrierMission = SpawnMissionGroup( CarrierGroup:getName() ) + + if EscortMission ~= nil and CarrierMission ~= nil then + + EscortCount = EscortCount + 1 + EscortMissionName = string.format( EscortPrefix .. '#Escort %s', CarrierName ) + EscortMission.name = EscortMissionName + EscortMission.groupId = nil + EscortMission.lateActivation = false + EscortMission.taskSelected = false + + local EscortUnits = #EscortMission.units + for u = 1, EscortUnits do + EscortMission.units[u].name = string.format( EscortPrefix .. '#Escort %s %02d', CarrierName, u ) + EscortMission.units[u].unitId = nil + end + + + EscortMission.route.points[1].task = { id = "ComboTask", + params = + { + tasks = + { + [1] = + { + enabled = true, + auto = false, + id = "Escort", + number = 1, + params = + { + lastWptIndexFlagChangedManually = false, + groupId = CarrierGroup:getID(), + lastWptIndex = nil, + lastWptIndexFlag = false, + engagementDistMax = EscortEngagementDistanceMax, + targetTypes = EscortTargetTypes, + pos = + { + y = 20, + x = 20, + z = 0, + } -- end of ["pos"] + } -- end of ["params"] + } -- end of [1] + } -- end of ["tasks"] + } -- end of ["params"] + } -- end of ["task"] + + SpawnGroupAdd( EscortPrefix, EscortMission ) + + end +end + +function SendMessageToCarrier( CarrierGroup, CarrierMessage ) +--trace.f() + + if CarrierGroup ~= nil then + MessageToGroup( CarrierGroup, CarrierMessage, 30, 'Carrier/' .. CarrierGroup:getName() ) + end + +end + +function MessageToGroup( MsgGroup, MsgText, MsgTime, MsgName ) +--trace.f() + + if type(MsgGroup) == 'string' then + --env.info( 'MessageToGroup: Converted MsgGroup string "' .. MsgGroup .. '" into a Group structure.' ) + MsgGroup = Group.getByName( MsgGroup ) + end + + if MsgGroup ~= nil then + local MsgTable = {} + MsgTable.text = MsgText + MsgTable.displayTime = MsgTime + MsgTable.msgFor = { units = { MsgGroup:getUnits()[1]:getName() } } + MsgTable.name = MsgName + --routines.message.add( MsgTable ) + --env.info(('MessageToGroup: Message sent to ' .. MsgGroup:getUnits()[1]:getName() .. ' -> ' .. MsgText )) + end +end + +function MessageToUnit( UnitName, MsgText, MsgTime, MsgName ) +--trace.f() + + if UnitName ~= nil then + local MsgTable = {} + MsgTable.text = MsgText + MsgTable.displayTime = MsgTime + MsgTable.msgFor = { units = { UnitName } } + MsgTable.name = MsgName + --routines.message.add( MsgTable ) + end +end + +function MessageToAll( MsgText, MsgTime, MsgName ) +--trace.f() + + MESSAGE:New( MsgText, MsgTime, "Message" ):ToCoalition( coalition.side.RED ):ToCoalition( coalition.side.BLUE ) +end + +function MessageToRed( MsgText, MsgTime, MsgName ) +--trace.f() + + MESSAGE:New( MsgText, MsgTime, "To Red Coalition" ):ToCoalition( coalition.side.RED ) +end + +function MessageToBlue( MsgText, MsgTime, MsgName ) +--trace.f() + + MESSAGE:New( MsgText, MsgTime, "To Blue Coalition" ):ToCoalition( coalition.side.RED ) +end + +function getCarrierHeight( CarrierGroup ) +--trace.f() + + if CarrierGroup ~= nil then + if table.getn(CarrierGroup:getUnits()) == 1 then + local CarrierUnit = CarrierGroup:getUnits()[1] + local CurrentPoint = CarrierUnit:getPoint() + + local CurrentPosition = { x = CurrentPoint.x, y = CurrentPoint.z } + local CarrierHeight = CurrentPoint.y + + local LandHeight = land.getHeight( CurrentPosition ) + + --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) + + return CarrierHeight - LandHeight + else + return 999999 + end + else + return 999999 + end + +end + +function GetUnitHeight( CheckUnit ) +--trace.f() + + local UnitPoint = CheckUnit:getPoint() + local UnitPosition = { x = CurrentPoint.x, y = CurrentPoint.z } + local UnitHeight = CurrentPoint.y + + local LandHeight = land.getHeight( CurrentPosition ) + + --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) + + return UnitHeight - LandHeight + +end + + +_MusicTable = {} +_MusicTable.Files = {} +_MusicTable.Queue = {} +_MusicTable.FileCnt = 0 + + +function MusicRegister( SndRef, SndFile, SndTime ) +--trace.f() + + env.info(( 'MusicRegister: SndRef = ' .. SndRef )) + env.info(( 'MusicRegister: SndFile = ' .. SndFile )) + env.info(( 'MusicRegister: SndTime = ' .. SndTime )) + + + _MusicTable.FileCnt = _MusicTable.FileCnt + 1 + + _MusicTable.Files[_MusicTable.FileCnt] = {} + _MusicTable.Files[_MusicTable.FileCnt].Ref = SndRef + _MusicTable.Files[_MusicTable.FileCnt].File = SndFile + _MusicTable.Files[_MusicTable.FileCnt].Time = SndTime + + if not _MusicTable.Function then + _MusicTable.Function = routines.scheduleFunction( MusicScheduler, { }, timer.getTime() + 10, 10) + end + +end + +function MusicToPlayer( SndRef, PlayerName, SndContinue ) +--trace.f() + + --env.info(( 'MusicToPlayer: SndRef = ' .. SndRef )) + + local PlayerUnits = AlivePlayerUnits() + for PlayerUnitIdx, PlayerUnit in pairs(PlayerUnits) do + local PlayerUnitName = PlayerUnit:getPlayerName() + --env.info(( 'MusicToPlayer: PlayerUnitName = ' .. PlayerUnitName )) + if PlayerName == PlayerUnitName then + PlayerGroup = PlayerUnit:getGroup() + if PlayerGroup then + --env.info(( 'MusicToPlayer: PlayerGroup = ' .. PlayerGroup:getName() )) + MusicToGroup( SndRef, PlayerGroup, SndContinue ) + end + break + end + end + + --env.info(( 'MusicToPlayer: end' )) + +end + +function MusicToGroup( SndRef, SndGroup, SndContinue ) +--trace.f() + + --env.info(( 'MusicToGroup: SndRef = ' .. SndRef )) + + if SndGroup ~= nil then + if _MusicTable and _MusicTable.FileCnt > 0 then + if SndGroup:isExist() then + if MusicCanStart(SndGroup:getUnit(1):getPlayerName()) then + --env.info(( 'MusicToGroup: OK for Sound.' )) + local SndIdx = 0 + if SndRef == '' then + --env.info(( 'MusicToGroup: SndRef as empty. Queueing at random.' )) + SndIdx = math.random( 1, _MusicTable.FileCnt ) + else + for SndIdx = 1, _MusicTable.FileCnt do + if _MusicTable.Files[SndIdx].Ref == SndRef then + break + end + end + end + --env.info(( 'MusicToGroup: SndIdx = ' .. SndIdx )) + --env.info(( 'MusicToGroup: Queueing Music ' .. _MusicTable.Files[SndIdx].File .. ' for Group ' .. SndGroup:getID() )) + trigger.action.outSoundForGroup( SndGroup:getID(), _MusicTable.Files[SndIdx].File ) + MessageToGroup( SndGroup, 'Playing ' .. _MusicTable.Files[SndIdx].File, 15, 'Music-' .. SndGroup:getUnit(1):getPlayerName() ) + + local SndQueueRef = SndGroup:getUnit(1):getPlayerName() + if _MusicTable.Queue[SndQueueRef] == nil then + _MusicTable.Queue[SndQueueRef] = {} + end + _MusicTable.Queue[SndQueueRef].Start = timer.getTime() + _MusicTable.Queue[SndQueueRef].PlayerName = SndGroup:getUnit(1):getPlayerName() + _MusicTable.Queue[SndQueueRef].Group = SndGroup + _MusicTable.Queue[SndQueueRef].ID = SndGroup:getID() + _MusicTable.Queue[SndQueueRef].Ref = SndIdx + _MusicTable.Queue[SndQueueRef].Continue = SndContinue + _MusicTable.Queue[SndQueueRef].Type = Group + end + end + end + end +end + +function MusicCanStart(PlayerName) +--trace.f() + + --env.info(( 'MusicCanStart:' )) + + local MusicOut = false + + if _MusicTable['Queue'] ~= nil and _MusicTable.FileCnt > 0 then + --env.info(( 'MusicCanStart: PlayerName = ' .. PlayerName )) + local PlayerFound = false + local MusicStart = 0 + local MusicTime = 0 + for SndQueueIdx, SndQueue in pairs( _MusicTable.Queue ) do + if SndQueue.PlayerName == PlayerName then + PlayerFound = true + MusicStart = SndQueue.Start + MusicTime = _MusicTable.Files[SndQueue.Ref].Time + break + end + end + if PlayerFound then + --env.info(( 'MusicCanStart: MusicStart = ' .. MusicStart )) + --env.info(( 'MusicCanStart: MusicTime = ' .. MusicTime )) + --env.info(( 'MusicCanStart: timer.getTime() = ' .. timer.getTime() )) + + if MusicStart + MusicTime <= timer.getTime() then + MusicOut = true + end + else + MusicOut = true + end + end + + if MusicOut then + --env.info(( 'MusicCanStart: true' )) + else + --env.info(( 'MusicCanStart: false' )) + end + + return MusicOut +end + +function MusicScheduler() +--trace.scheduled("", "MusicScheduler") + + --env.info(( 'MusicScheduler:' )) + if _MusicTable['Queue'] ~= nil and _MusicTable.FileCnt > 0 then + --env.info(( 'MusicScheduler: Walking Sound Queue.')) + for SndQueueIdx, SndQueue in pairs( _MusicTable.Queue ) do + if SndQueue.Continue then + if MusicCanStart(SndQueue.PlayerName) then + --env.info(('MusicScheduler: MusicToGroup')) + MusicToPlayer( '', SndQueue.PlayerName, true ) + end + end + end + end + +end + + +env.info(( 'Init: Scripts Loaded v1.1' )) + +--- This module contains the BASE class. +-- +-- 1) @{#BASE} class +-- ================= +-- The @{#BASE} class is the super class for all the classes defined within MOOSE. +-- +-- It handles: +-- +-- * The construction and inheritance of child classes. +-- * The tracing of objects during mission execution within the **DCS.log** file, under the **"Saved Games\DCS\Logs"** folder. +-- +-- Note: Normally you would not use the BASE class unless you are extending the MOOSE framework with new classes. +-- +-- 1.1) BASE constructor +-- --------------------- +-- Any class derived from BASE, must use the @{Base#BASE.New) constructor within the @{Base#BASE.Inherit) method. +-- See an example at the @{Base#BASE.New} method how this is done. +-- +-- 1.2) BASE Trace functionality +-- ----------------------------- +-- The BASE class contains trace methods to trace progress within a mission execution of a certain object. +-- Note that these trace methods are inherited by each MOOSE class interiting BASE. +-- As such, each object created from derived class from BASE can use the tracing functions to trace its execution. +-- +-- 1.2.1) Tracing functions +-- ------------------------ +-- There are basically 3 types of tracing methods available within BASE: +-- +-- * @{#BASE.F}: Trace the beginning of a function and its given parameters. An F is indicated at column 44 in the DCS.log file. +-- * @{#BASE.T}: Trace further logic within a function giving optional variables or parameters. A T is indicated at column 44 in the DCS.log file. +-- * @{#BASE.E}: Trace an exception within a function giving optional variables or parameters. An E is indicated at column 44 in the DCS.log file. An exception will always be traced. +-- +-- 1.2.2) Tracing levels +-- --------------------- +-- There are 3 tracing levels within MOOSE. +-- These tracing levels were defined to avoid bulks of tracing to be generated by lots of objects. +-- +-- As such, the F and T methods have additional variants to trace level 2 and 3 respectively: +-- +-- * @{#BASE.F2}: Trace the beginning of a function and its given parameters with tracing level 2. +-- * @{#BASE.F3}: Trace the beginning of a function and its given parameters with tracing level 3. +-- * @{#BASE.T2}: Trace further logic within a function giving optional variables or parameters with tracing level 2. +-- * @{#BASE.T3}: Trace further logic within a function giving optional variables or parameters with tracing level 3. +-- +-- 1.3) BASE Inheritance support +-- =========================== +-- The following methods are available to support inheritance: +-- +-- * @{#BASE.Inherit}: Inherits from a class. +-- * @{#BASE.Inherited}: Returns the parent class from the class. +-- +-- Future +-- ====== +-- Further methods may be added to BASE whenever there is a need to make "overall" functions available within MOOSE. +-- +-- ==== +-- +-- @module Base +-- @author FlightControl + + + +local _TraceOnOff = true +local _TraceLevel = 1 +local _TraceAll = false +local _TraceClass = {} +local _TraceClassMethod = {} + +local _ClassID = 0 + +--- The BASE Class +-- @type BASE +-- @field ClassName The name of the class. +-- @field ClassID The ID number of the class. +-- @field ClassNameAndID The name of the class concatenated with the ID number of the class. +BASE = { + ClassName = "BASE", + ClassID = 0, + Events = {}, + States = {} +} + +--- The Formation Class +-- @type FORMATION +-- @field Cone A cone formation. +FORMATION = { + Cone = "Cone" +} + + + +--- The base constructor. This is the top top class of all classed defined within the MOOSE. +-- Any new class needs to be derived from this class for proper inheritance. +-- @param #BASE self +-- @return #BASE The new instance of the BASE class. +-- @usage +-- -- This declares the constructor of the class TASK, inheriting from BASE. +-- --- TASK constructor +-- -- @param #TASK self +-- -- @param Parameter The parameter of the New constructor. +-- -- @return #TASK self +-- function TASK:New( Parameter ) +-- +-- local self = BASE:Inherit( self, BASE:New() ) +-- +-- self.Variable = Parameter +-- +-- return self +-- end +-- @todo need to investigate if the deepCopy is really needed... Don't think so. +function BASE:New() + local self = routines.utils.deepCopy( self ) -- Create a new self instance + local MetaTable = {} + setmetatable( self, MetaTable ) + self.__index = self + _ClassID = _ClassID + 1 + self.ClassID = _ClassID + self.ClassNameAndID = string.format( '%s#%09d', self.ClassName, self.ClassID ) + return self +end + +--- This is the worker method to inherit from a parent class. +-- @param #BASE self +-- @param Child is the Child class that inherits. +-- @param #BASE Parent is the Parent class that the Child inherits from. +-- @return #BASE Child +function BASE:Inherit( Child, Parent ) + local Child = routines.utils.deepCopy( Child ) + --local Parent = routines.utils.deepCopy( Parent ) + --local Parent = Parent + if Child ~= nil then + setmetatable( Child, Parent ) + Child.__index = Child + end + --Child.ClassName = Child.ClassName .. '.' .. Child.ClassID + self:T( 'Inherited from ' .. Parent.ClassName ) + return Child +end + +--- This is the worker method to retrieve the Parent class. +-- @param #BASE self +-- @param #BASE Child is the Child class from which the Parent class needs to be retrieved. +-- @return #BASE +function BASE:Inherited( Child ) + local Parent = getmetatable( Child ) +-- env.info('Inherited class of ' .. Child.ClassName .. ' is ' .. Parent.ClassName ) + return Parent +end + +--- Get the ClassName + ClassID of the class instance. +-- The ClassName + ClassID is formatted as '%s#%09d'. +-- @param #BASE self +-- @return #string The ClassName + ClassID of the class instance. +function BASE:GetClassNameAndID() + return self.ClassNameAndID +end + +--- Get the ClassName of the class instance. +-- @param #BASE self +-- @return #string The ClassName of the class instance. +function BASE:GetClassName() + return self.ClassName +end + +--- Get the ClassID of the class instance. +-- @param #BASE self +-- @return #string The ClassID of the class instance. +function BASE:GetClassID() + return self.ClassID +end + +--- Set a new listener for the class. +-- @param self +-- @param DCSTypes#Event Event +-- @param #function EventFunction +-- @return #BASE +function BASE:AddEvent( Event, EventFunction ) + self:F( Event ) + + self.Events[#self.Events+1] = {} + self.Events[#self.Events].Event = Event + self.Events[#self.Events].EventFunction = EventFunction + self.Events[#self.Events].EventEnabled = false + + return self +end + +--- Returns the event dispatcher +-- @param #BASE self +-- @return Event#EVENT +function BASE:Event() + + return _EVENTDISPATCHER +end + + + + + +--- Enable the event listeners for the class. +-- @param #BASE self +-- @return #BASE +function BASE:EnableEvents() + self:F( #self.Events ) + + for EventID, Event in pairs( self.Events ) do + Event.Self = self + Event.EventEnabled = true + end + self.Events.Handler = world.addEventHandler( self ) + + return self +end + + +--- Disable the event listeners for the class. +-- @param #BASE self +-- @return #BASE +function BASE:DisableEvents() + self:F() + + world.removeEventHandler( self ) + for EventID, Event in pairs( self.Events ) do + Event.Self = nil + Event.EventEnabled = false + end + + return self +end + + +local BaseEventCodes = { + "S_EVENT_SHOT", + "S_EVENT_HIT", + "S_EVENT_TAKEOFF", + "S_EVENT_LAND", + "S_EVENT_CRASH", + "S_EVENT_EJECTION", + "S_EVENT_REFUELING", + "S_EVENT_DEAD", + "S_EVENT_PILOT_DEAD", + "S_EVENT_BASE_CAPTURED", + "S_EVENT_MISSION_START", + "S_EVENT_MISSION_END", + "S_EVENT_TOOK_CONTROL", + "S_EVENT_REFUELING_STOP", + "S_EVENT_BIRTH", + "S_EVENT_HUMAN_FAILURE", + "S_EVENT_ENGINE_STARTUP", + "S_EVENT_ENGINE_SHUTDOWN", + "S_EVENT_PLAYER_ENTER_UNIT", + "S_EVENT_PLAYER_LEAVE_UNIT", + "S_EVENT_PLAYER_COMMENT", + "S_EVENT_SHOOTING_START", + "S_EVENT_SHOOTING_END", + "S_EVENT_MAX", +} + +--onEvent( {[1]="S_EVENT_BIRTH",[2]={["subPlace"]=5,["time"]=0,["initiator"]={["id_"]=16884480,},["place"]={["id_"]=5000040,},["id"]=15,["IniUnitName"]="US F-15C@RAMP-Air Support Mountains#001-01",},} +-- Event = { +-- id = enum world.event, +-- time = Time, +-- initiator = Unit, +-- target = Unit, +-- place = Unit, +-- subPlace = enum world.BirthPlace, +-- weapon = Weapon +-- } + +--- Creation of a Birth Event. +-- @param #BASE self +-- @param DCSTypes#Time EventTime The time stamp of the event. +-- @param DCSObject#Object Initiator The initiating object of the event. +-- @param #string IniUnitName The initiating unit name. +-- @param place +-- @param subplace +function BASE:CreateEventBirth( EventTime, Initiator, IniUnitName, place, subplace ) + self:F( { EventTime, Initiator, IniUnitName, place, subplace } ) + + local Event = { + id = world.event.S_EVENT_BIRTH, + time = EventTime, + initiator = Initiator, + IniUnitName = IniUnitName, + place = place, + subplace = subplace + } + + world.onEvent( Event ) +end + +--- Creation of a Crash Event. +-- @param #BASE self +-- @param DCSTypes#Time EventTime The time stamp of the event. +-- @param DCSObject#Object Initiator The initiating object of the event. +function BASE:CreateEventCrash( EventTime, Initiator ) + self:F( { EventTime, Initiator } ) + + local Event = { + id = world.event.S_EVENT_CRASH, + time = EventTime, + initiator = Initiator, + } + + world.onEvent( Event ) +end + +-- TODO: Complete DCSTypes#Event structure. +--- The main event handling function... This function captures all events generated for the class. +-- @param #BASE self +-- @param DCSTypes#Event event +function BASE:onEvent(event) + --self:F( { BaseEventCodes[event.id], event } ) + + if self then + for EventID, EventObject in pairs( self.Events ) do + if EventObject.EventEnabled then + --env.info( 'onEvent Table EventObject.Self = ' .. tostring(EventObject.Self) ) + --env.info( 'onEvent event.id = ' .. tostring(event.id) ) + --env.info( 'onEvent EventObject.Event = ' .. tostring(EventObject.Event) ) + if event.id == EventObject.Event then + if self == EventObject.Self then + if event.initiator and event.initiator:isExist() then + event.IniUnitName = event.initiator:getName() + end + if event.target and event.target:isExist() then + event.TgtUnitName = event.target:getName() + end + --self:T( { BaseEventCodes[event.id], event } ) + --EventObject.EventFunction( self, event ) + end + end + end + end + end +end + +function BASE:SetState( Object, StateName, State ) + + local ClassNameAndID = Object:GetClassNameAndID() + + if not self.States[ClassNameAndID] then + self.States[ClassNameAndID] = {} + end + self.States[ClassNameAndID][StateName] = State + self:F2( { ClassNameAndID, StateName, State } ) + + return self.States[ClassNameAndID][StateName] +end + +function BASE:GetState( Object, StateName ) + + local ClassNameAndID = Object:GetClassNameAndID() + + if self.States[ClassNameAndID] then + local State = self.States[ClassNameAndID][StateName] + self:F2( { ClassNameAndID, StateName, State } ) + return State + end + + return nil +end + +function BASE:ClearState( Object, StateName ) + + local ClassNameAndID = Object:GetClassNameAndID() + if self.States[ClassNameAndID] then + self.States[ClassNameAndID][StateName] = nil + end +end + +-- Trace section + +-- Log a trace (only shown when trace is on) +-- TODO: Make trace function using variable parameters. + +--- Set trace on or off +-- Note that when trace is off, no debug statement is performed, increasing performance! +-- When Moose is loaded statically, (as one file), tracing is switched off by default. +-- So tracing must be switched on manually in your mission if you are using Moose statically. +-- When moose is loading dynamically (for moose class development), tracing is switched on by default. +-- @param BASE self +-- @param #boolean TraceOnOff Switch the tracing on or off. +-- @usage +-- -- Switch the tracing On +-- BASE:TraceOn( true ) +-- +-- -- Switch the tracing Off +-- BASE:TraceOn( false ) +function BASE:TraceOnOff( TraceOnOff ) + _TraceOnOff = TraceOnOff +end + +--- Set trace level +-- @param #BASE self +-- @param #number Level +function BASE:TraceLevel( Level ) + _TraceLevel = Level + self:E( "Tracing level " .. Level ) +end + +--- Trace all methods in MOOSE +-- @param #BASE self +-- @param #boolean TraceAll true = trace all methods in MOOSE. +function BASE:TraceAll( TraceAll ) + + _TraceAll = TraceAll + + if _TraceAll then + self:E( "Tracing all methods in MOOSE " ) + else + self:E( "Switched off tracing all methods in MOOSE" ) + end +end + +--- Set tracing for a class +-- @param #BASE self +-- @param #string Class +function BASE:TraceClass( Class ) + _TraceClass[Class] = true + _TraceClassMethod[Class] = {} + self:E( "Tracing class " .. Class ) +end + +--- Set tracing for a specific method of class +-- @param #BASE self +-- @param #string Class +-- @param #string Method +function BASE:TraceClassMethod( Class, Method ) + if not _TraceClassMethod[Class] then + _TraceClassMethod[Class] = {} + _TraceClassMethod[Class].Method = {} + end + _TraceClassMethod[Class].Method[Method] = true + self:E( "Tracing method " .. Method .. " of class " .. Class ) +end + +--- Trace a function call. This function is private. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:_F( Arguments, DebugInfoCurrentParam, DebugInfoFromParam ) + + if ( _TraceAll == true ) or ( _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName] ) then + + local DebugInfoCurrent = DebugInfoCurrentParam and DebugInfoCurrentParam or debug.getinfo( 2, "nl" ) + local DebugInfoFrom = DebugInfoFromParam and DebugInfoFromParam or debug.getinfo( 3, "l" ) + + local Function = "function" + if DebugInfoCurrent.name then + Function = DebugInfoCurrent.name + end + + if _TraceAll == true or _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName].Method[Function] then + local LineCurrent = 0 + if DebugInfoCurrent.currentline then + LineCurrent = DebugInfoCurrent.currentline + end + local LineFrom = 0 + if DebugInfoFrom then + LineFrom = DebugInfoFrom.currentline + end + env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s(%s)" , LineCurrent, LineFrom, "F", self.ClassName, self.ClassID, Function, routines.utils.oneLineSerialize( Arguments ) ) ) + end + end +end + +--- Trace a function call. Must be at the beginning of the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:F( Arguments ) + + if _TraceOnOff then + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + if _TraceLevel >= 1 then + self:_F( Arguments, DebugInfoCurrent, DebugInfoFrom ) + end + end +end + + +--- Trace a function call level 2. Must be at the beginning of the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:F2( Arguments ) + + if _TraceOnOff then + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + if _TraceLevel >= 2 then + self:_F( Arguments, DebugInfoCurrent, DebugInfoFrom ) + end + end +end + +--- Trace a function call level 3. Must be at the beginning of the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:F3( Arguments ) + + if _TraceOnOff then + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + if _TraceLevel >= 3 then + self:_F( Arguments, DebugInfoCurrent, DebugInfoFrom ) + end + end +end + +--- Trace a function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:_T( Arguments, DebugInfoCurrentParam, DebugInfoFromParam ) + + if ( _TraceAll == true ) or ( _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName] ) then + + local DebugInfoCurrent = DebugInfoCurrentParam and DebugInfoCurrentParam or debug.getinfo( 2, "nl" ) + local DebugInfoFrom = DebugInfoFromParam and DebugInfoFromParam or debug.getinfo( 3, "l" ) + + local Function = "function" + if DebugInfoCurrent.name then + Function = DebugInfoCurrent.name + end + + if _TraceAll == true or _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName].Method[Function] then + local LineCurrent = 0 + if DebugInfoCurrent.currentline then + LineCurrent = DebugInfoCurrent.currentline + end + local LineFrom = 0 + if DebugInfoFrom then + LineFrom = DebugInfoFrom.currentline + end + env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s" , LineCurrent, LineFrom, "T", self.ClassName, self.ClassID, routines.utils.oneLineSerialize( Arguments ) ) ) + end + end +end + +--- Trace a function logic level 1. Can be anywhere within the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:T( Arguments ) + + if _TraceOnOff then + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + if _TraceLevel >= 1 then + self:_T( Arguments, DebugInfoCurrent, DebugInfoFrom ) + end + end +end + + +--- Trace a function logic level 2. Can be anywhere within the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:T2( Arguments ) + + if _TraceOnOff then + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + if _TraceLevel >= 2 then + self:_T( Arguments, DebugInfoCurrent, DebugInfoFrom ) + end + end +end + +--- Trace a function logic level 3. Can be anywhere within the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:T3( Arguments ) + + if _TraceOnOff then + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + if _TraceLevel >= 3 then + self:_T( Arguments, DebugInfoCurrent, DebugInfoFrom ) + end + end +end + +--- Log an exception which will be traced always. Can be anywhere within the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:E( Arguments ) + + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + local Function = "function" + if DebugInfoCurrent.name then + Function = DebugInfoCurrent.name + end + + local LineCurrent = DebugInfoCurrent.currentline + local LineFrom = -1 + if DebugInfoFrom then + LineFrom = DebugInfoFrom.currentline + end + + env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s(%s)" , LineCurrent, LineFrom, "E", self.ClassName, self.ClassID, Function, routines.utils.oneLineSerialize( Arguments ) ) ) +end + + + +--- This module contains the OBJECT class. +-- +-- 1) @{Object#OBJECT} class, extends @{Base#BASE} +-- =========================================================== +-- The @{Object#OBJECT} class is a wrapper class to handle the DCS Object objects: +-- +-- * Support all DCS Object APIs. +-- * Enhance with Object specific APIs not in the DCS Object API set. +-- * Manage the "state" of the DCS Object. +-- +-- 1.1) OBJECT constructor: +-- ------------------------------ +-- The OBJECT class provides the following functions to construct a OBJECT instance: +-- +-- * @{Object#OBJECT.New}(): Create a OBJECT instance. +-- +-- 1.2) OBJECT methods: +-- -------------------------- +-- The following methods can be used to identify an Object object: +-- +-- * @{Object#OBJECT.GetID}(): Returns the ID of the Object object. +-- +-- === +-- +-- @module Object +-- @author FlightControl + +--- The OBJECT class +-- @type OBJECT +-- @extends Base#BASE +-- @field #string ObjectName The name of the Object. +OBJECT = { + ClassName = "OBJECT", + ObjectName = "", +} + + +--- A DCSObject +-- @type DCSObject +-- @field id_ The ID of the controllable in DCS + +--- Create a new OBJECT from a DCSObject +-- @param #OBJECT self +-- @param DCSObject#Object ObjectName The Object name +-- @return #OBJECT self +function OBJECT:New( ObjectName ) + local self = BASE:Inherit( self, BASE:New() ) + self:F2( ObjectName ) + self.ObjectName = ObjectName + return self +end + + +--- Returns if the Object is alive. +-- @param Object#OBJECT self +-- @return #boolean true if Object is alive. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:IsAlive() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectIsAlive = DCSObject:isExist() + return ObjectIsAlive + end + + return false +end + + + + +--- Returns DCS Object object name. +-- The function provides access to non-activated objects too. +-- @param Object#OBJECT self +-- @return #string The name of the DCS Object. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:GetName() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectName = self.ObjectName + return ObjectName + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + + +--- Returns the type name of the DCS Object. +-- @param Object#OBJECT self +-- @return #string The type name of the DCS Object. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:GetTypeName() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectTypeName = DCSObject:getTypeName() + self:T3( ObjectTypeName ) + return ObjectTypeName + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + +--- Returns the Object's callsign - the localized string. +-- @param Object#OBJECT self +-- @return #string The Callsign of the Object. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:GetCallSign() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectCallSign = DCSObject:getCallsign() + return ObjectCallSign + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + + +--- Returns the DCS Object category name as defined within the DCS Object Descriptor. +-- @param Object#OBJECT self +-- @return #string The DCS Object Category Name +function OBJECT:GetCategoryName() + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectCategoryName = _CategoryName[ self:GetDesc().category ] + return ObjectCategoryName + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + +--- Returns coalition of the Object. +-- @param Object#OBJECT self +-- @return DCSCoalitionObject#coalition.side The side of the coalition. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:GetCoalition() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectCoalition = DCSObject:getCoalition() + self:T3( ObjectCoalition ) + return ObjectCoalition + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + +--- Returns country of the Object. +-- @param Object#OBJECT self +-- @return DCScountry#country.id The country identifier. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:GetCountry() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectCountry = DCSObject:getCountry() + self:T3( ObjectCountry ) + return ObjectCountry + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + + + +--- Returns Object descriptor. Descriptor type depends on Object category. +-- @param Object#OBJECT self +-- @return DCSObject#Object.Desc The Object descriptor. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:GetDesc() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectDesc = DCSObject:getDesc() + self:T2( ObjectDesc ) + return ObjectDesc + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + + + + + + + + + +--- This module contains the IDENTIFIABLE class. +-- +-- 1) @{Identifiable#IDENTIFIABLE} class, extends @{Object#OBJECT} +-- =============================================================== +-- The @{Identifiable#IDENTIFIABLE} class is a wrapper class to handle the DCS Identifiable objects: +-- +-- * Support all DCS Identifiable APIs. +-- * Enhance with Identifiable specific APIs not in the DCS Identifiable API set. +-- * Manage the "state" of the DCS Identifiable. +-- +-- 1.1) IDENTIFIABLE constructor: +-- ------------------------------ +-- The IDENTIFIABLE class provides the following functions to construct a IDENTIFIABLE instance: +-- +-- * @{Identifiable#IDENTIFIABLE.New}(): Create a IDENTIFIABLE instance. +-- +-- 1.2) IDENTIFIABLE methods: +-- -------------------------- +-- The following methods can be used to identify an identifiable object: +-- +-- * @{Identifiable#IDENTIFIABLE.GetName}(): Returns the name of the Identifiable. +-- * @{Identifiable#IDENTIFIABLE.IsAlive}(): Returns if the Identifiable is alive. +-- * @{Identifiable#IDENTIFIABLE.GetTypeName}(): Returns the type name of the Identifiable. +-- * @{Identifiable#IDENTIFIABLE.GetCoalition}(): Returns the coalition of the Identifiable. +-- * @{Identifiable#IDENTIFIABLE.GetCountry}(): Returns the country of the Identifiable. +-- * @{Identifiable#IDENTIFIABLE.GetDesc}(): Returns the descriptor structure of the Identifiable. +-- +-- +-- === +-- +-- @module Identifiable +-- @author FlightControl + +--- The IDENTIFIABLE class +-- @type IDENTIFIABLE +-- @extends Object#OBJECT +-- @field #string IdentifiableName The name of the identifiable. +IDENTIFIABLE = { + ClassName = "IDENTIFIABLE", + IdentifiableName = "", +} + +local _CategoryName = { + [Unit.Category.AIRPLANE] = "Airplane", + [Unit.Category.HELICOPTER] = "Helicoper", + [Unit.Category.GROUND_UNIT] = "Ground Identifiable", + [Unit.Category.SHIP] = "Ship", + [Unit.Category.STRUCTURE] = "Structure", + } + +--- Create a new IDENTIFIABLE from a DCSIdentifiable +-- @param #IDENTIFIABLE self +-- @param DCSIdentifiable#Identifiable IdentifiableName The DCS Identifiable name +-- @return #IDENTIFIABLE self +function IDENTIFIABLE:New( IdentifiableName ) + local self = BASE:Inherit( self, BASE:New() ) + self:F2( IdentifiableName ) + self.IdentifiableName = IdentifiableName + return self +end + +--- Returns if the Identifiable is alive. +-- @param Identifiable#IDENTIFIABLE self +-- @return #boolean true if Identifiable is alive. +-- @return #nil The DCS Identifiable is not existing or alive. +function IDENTIFIABLE:IsAlive() + self:F2( self.IdentifiableName ) + + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableIsAlive = DCSIdentifiable:isExist() + return IdentifiableIsAlive + end + + return false +end + + + + +--- Returns DCS Identifiable object name. +-- The function provides access to non-activated objects too. +-- @param Identifiable#IDENTIFIABLE self +-- @return #string The name of the DCS Identifiable. +-- @return #nil The DCS Identifiable is not existing or alive. +function IDENTIFIABLE:GetName() + self:F2( self.IdentifiableName ) + + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableName = self.IdentifiableName + return IdentifiableName + end + + self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) + return nil +end + + +--- Returns the type name of the DCS Identifiable. +-- @param Identifiable#IDENTIFIABLE self +-- @return #string The type name of the DCS Identifiable. +-- @return #nil The DCS Identifiable is not existing or alive. +function IDENTIFIABLE:GetTypeName() + self:F2( self.IdentifiableName ) + + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableTypeName = DCSIdentifiable:getTypeName() + self:T3( IdentifiableTypeName ) + return IdentifiableTypeName + end + + self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) + return nil +end + + + + +--- Returns the DCS Identifiable category name as defined within the DCS Identifiable Descriptor. +-- @param Identifiable#IDENTIFIABLE self +-- @return #string The DCS Identifiable Category Name +function IDENTIFIABLE:GetCategoryName() + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableCategoryName = _CategoryName[ self:GetDesc().category ] + return IdentifiableCategoryName + end + + self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) + return nil +end + +--- Returns coalition of the Identifiable. +-- @param Identifiable#IDENTIFIABLE self +-- @return DCSCoalitionObject#coalition.side The side of the coalition. +-- @return #nil The DCS Identifiable is not existing or alive. +function IDENTIFIABLE:GetCoalition() + self:F2( self.IdentifiableName ) + + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableCoalition = DCSIdentifiable:getCoalition() + self:T3( IdentifiableCoalition ) + return IdentifiableCoalition + end + + self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) + return nil +end + +--- Returns country of the Identifiable. +-- @param Identifiable#IDENTIFIABLE self +-- @return DCScountry#country.id The country identifier. +-- @return #nil The DCS Identifiable is not existing or alive. +function IDENTIFIABLE:GetCountry() + self:F2( self.IdentifiableName ) + + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableCountry = DCSIdentifiable:getCountry() + self:T3( IdentifiableCountry ) + return IdentifiableCountry + end + + self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) + return nil +end + + + +--- Returns Identifiable descriptor. Descriptor type depends on Identifiable category. +-- @param Identifiable#IDENTIFIABLE self +-- @return DCSIdentifiable#Identifiable.Desc The Identifiable descriptor. +-- @return #nil The DCS Identifiable is not existing or alive. +function IDENTIFIABLE:GetDesc() + self:F2( self.IdentifiableName ) + + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableDesc = DCSIdentifiable:getDesc() + self:T2( IdentifiableDesc ) + return IdentifiableDesc + end + + self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) + return nil +end + + + + + + + + + +--- This module contains the POSITIONABLE class. +-- +-- 1) @{Positionable#POSITIONABLE} class, extends @{Identifiable#IDENTIFIABLE} +-- =========================================================== +-- The @{Positionable#POSITIONABLE} class is a wrapper class to handle the DCS Positionable objects: +-- +-- * Support all DCS Positionable APIs. +-- * Enhance with Positionable specific APIs not in the DCS Positionable API set. +-- * Manage the "state" of the DCS Positionable. +-- +-- 1.1) POSITIONABLE constructor: +-- ------------------------------ +-- The POSITIONABLE class provides the following functions to construct a POSITIONABLE instance: +-- +-- * @{Positionable#POSITIONABLE.New}(): Create a POSITIONABLE instance. +-- +-- 1.2) POSITIONABLE methods: +-- -------------------------- +-- The following methods can be used to identify an measurable object: +-- +-- * @{Positionable#POSITIONABLE.GetID}(): Returns the ID of the measurable object. +-- * @{Positionable#POSITIONABLE.GetName}(): Returns the name of the measurable object. +-- +-- === +-- +-- @module Positionable +-- @author FlightControl + +--- The POSITIONABLE class +-- @type POSITIONABLE +-- @extends Identifiable#IDENTIFIABLE +-- @field #string PositionableName The name of the measurable. +POSITIONABLE = { + ClassName = "POSITIONABLE", + PositionableName = "", +} + +--- A DCSPositionable +-- @type DCSPositionable +-- @field id_ The ID of the controllable in DCS + +--- Create a new POSITIONABLE from a DCSPositionable +-- @param #POSITIONABLE self +-- @param DCSPositionable#Positionable PositionableName The DCS Positionable name +-- @return #POSITIONABLE self +function POSITIONABLE:New( PositionableName ) + local self = BASE:Inherit( self, IDENTIFIABLE:New( PositionableName ) ) + + return self +end + +--- Returns the @{DCSTypes#Position3} position vectors indicating the point and direction vectors in 3D of the DCS Positionable within the mission. +-- @param Positionable#POSITIONABLE self +-- @return DCSTypes#Position The 3D position vectors of the DCS Positionable. +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:GetPositionVec3() + self:F2( self.PositionableName ) + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + local PositionablePosition = DCSPositionable:getPosition() + self:T3( PositionablePosition ) + return PositionablePosition + end + + return nil +end + +--- Returns the @{DCSTypes#Vec2} vector indicating the point in 2D of the DCS Positionable within the mission. +-- @param Positionable#POSITIONABLE self +-- @return DCSTypes#Vec2 The 2D point vector of the DCS Positionable. +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:GetPointVec2() + self:F2( self.PositionableName ) + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + local PositionablePointVec3 = DCSPositionable:getPosition().p + + local PositionablePointVec2 = {} + PositionablePointVec2.x = PositionablePointVec3.x + PositionablePointVec2.y = PositionablePointVec3.z + + self:T2( PositionablePointVec2 ) + return PositionablePointVec2 + end + + return nil +end + + +--- Returns the @{DCSTypes#Vec3} vector indicating the point in 3D of the DCS Positionable within the mission. +-- @param Positionable#POSITIONABLE self +-- @return DCSTypes#Vec3 The 3D point vector of the DCS Positionable. +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:GetPointVec3() + self:F2( self.PositionableName ) + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + local PositionablePointVec3 = DCSPositionable:getPosition().p + self:T3( PositionablePointVec3 ) + return PositionablePointVec3 + end + + return nil +end + +--- Returns the altitude of the DCS Positionable. +-- @param Positionable#POSITIONABLE self +-- @return DCSTypes#Distance The altitude of the DCS Positionable. +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:GetAltitude() + self:F2() + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + local PositionablePointVec3 = DCSPositionable:getPoint() --DCSTypes#Vec3 + return PositionablePointVec3.y + end + + return nil +end + +--- Returns if the Positionable is located above a runway. +-- @param Positionable#POSITIONABLE self +-- @return #boolean true if Positionable is above a runway. +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:IsAboveRunway() + self:F2( self.PositionableName ) + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + + local PointVec2 = self:GetPointVec2() + local SurfaceType = land.getSurfaceType( PointVec2 ) + local IsAboveRunway = SurfaceType == land.SurfaceType.RUNWAY + + self:T2( IsAboveRunway ) + return IsAboveRunway + end + + return nil +end + + + +--- Returns the DCS Positionable heading. +-- @param Positionable#POSITIONABLE self +-- @return #number The DCS Positionable heading +function POSITIONABLE:GetHeading() + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + + local PositionablePosition = DCSPositionable:getPosition() + if PositionablePosition then + local PositionableHeading = math.atan2( PositionablePosition.x.z, PositionablePosition.x.x ) + if PositionableHeading < 0 then + PositionableHeading = PositionableHeading + 2 * math.pi + end + self:T2( PositionableHeading ) + return PositionableHeading + end + end + + return nil +end + + +--- Returns true if the DCS Positionable is in the air. +-- @param Positionable#POSITIONABLE self +-- @return #boolean true if in the air. +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:InAir() + self:F2( self.PositionableName ) + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + local PositionableInAir = DCSPositionable:inAir() + self:T3( PositionableInAir ) + return PositionableInAir + end + + return nil +end + +--- Returns the DCS Positionable velocity vector. +-- @param Positionable#POSITIONABLE self +-- @return DCSTypes#Vec3 The velocity vector +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:GetVelocity() + self:F2( self.PositionableName ) + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + local PositionableVelocityVec3 = DCSPositionable:getVelocity() + self:T3( PositionableVelocityVec3 ) + return PositionableVelocityVec3 + end + + return nil +end + + + +--- This module contains the CONTROLLABLE class. +-- +-- 1) @{Controllable#CONTROLLABLE} class, extends @{Positionable#POSITIONABLE} +-- =========================================================== +-- The @{Controllable#CONTROLLABLE} class is a wrapper class to handle the DCS Controllable objects: +-- +-- * Support all DCS Controllable APIs. +-- * Enhance with Controllable specific APIs not in the DCS Controllable API set. +-- * Handle local Controllable Controller. +-- * Manage the "state" of the DCS Controllable. +-- +-- 1.1) CONTROLLABLE constructor +-- ----------------------------- +-- The CONTROLLABLE class provides the following functions to construct a CONTROLLABLE instance: +-- +-- * @{#CONTROLLABLE.New}(): Create a CONTROLLABLE instance. +-- +-- 1.2) CONTROLLABLE task methods +-- ------------------------------ +-- Several controllable task methods are available that help you to prepare tasks. +-- These methods return a string consisting of the task description, which can then be given to either a @{Controllable#CONTROLLABLE.PushTask} or @{Controllable#SetTask} method to assign the task to the CONTROLLABLE. +-- Tasks are specific for the category of the CONTROLLABLE, more specific, for AIR, GROUND or AIR and GROUND. +-- Each task description where applicable indicates for which controllable category the task is valid. +-- There are 2 main subdivisions of tasks: Assigned tasks and EnRoute tasks. +-- +-- ### 1.2.1) Assigned task methods +-- +-- Assigned task methods make the controllable execute the task where the location of the (possible) targets of the task are known before being detected. +-- This is different from the EnRoute tasks, where the targets of the task need to be detected before the task can be executed. +-- +-- Find below a list of the **assigned task** methods: +-- +-- * @{#CONTROLLABLE.TaskAttackControllable}: (AIR) Attack a Controllable. +-- * @{#CONTROLLABLE.TaskAttackMapObject}: (AIR) Attacking the map object (building, structure, e.t.c). +-- * @{#CONTROLLABLE.TaskAttackUnit}: (AIR) Attack the Unit. +-- * @{#CONTROLLABLE.TaskBombing}: (AIR) Delivering weapon at the point on the ground. +-- * @{#CONTROLLABLE.TaskBombingRunway}: (AIR) Delivering weapon on the runway. +-- * @{#CONTROLLABLE.TaskEmbarking}: (AIR) Move the controllable to a Vec2 Point, wait for a defined duration and embark a controllable. +-- * @{#CONTROLLABLE.TaskEmbarkToTransport}: (GROUND) Embark to a Transport landed at a location. +-- * @{#CONTROLLABLE.TaskEscort}: (AIR) Escort another airborne controllable. +-- * @{#CONTROLLABLE.TaskFAC_AttackControllable}: (AIR + GROUND) The task makes the controllable/unit a FAC and orders the FAC to control the target (enemy ground controllable) destruction. +-- * @{#CONTROLLABLE.TaskFireAtPoint}: (GROUND) Fire at a VEC2 point until ammunition is finished. +-- * @{#CONTROLLABLE.TaskFollow}: (AIR) Following another airborne controllable. +-- * @{#CONTROLLABLE.TaskHold}: (GROUND) Hold ground controllable from moving. +-- * @{#CONTROLLABLE.TaskHoldPosition}: (AIR) Hold position at the current position of the first unit of the controllable. +-- * @{#CONTROLLABLE.TaskLand}: (AIR HELICOPTER) Landing at the ground. For helicopters only. +-- * @{#CONTROLLABLE.TaskLandAtZone}: (AIR) Land the controllable at a @{Zone#ZONE_RADIUS). +-- * @{#CONTROLLABLE.TaskOrbitCircle}: (AIR) Orbit at the current position of the first unit of the controllable at a specified alititude. +-- * @{#CONTROLLABLE.TaskOrbitCircleAtVec2}: (AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed. +-- * @{#CONTROLLABLE.TaskRefueling}: (AIR) Refueling from the nearest tanker. No parameters. +-- * @{#CONTROLLABLE.TaskRoute}: (AIR + GROUND) Return a Misson task to follow a given route defined by Points. +-- * @{#CONTROLLABLE.TaskRouteToVec2}: (AIR + GROUND) Make the Controllable move to a given point. +-- * @{#CONTROLLABLE.TaskRouteToVec3}: (AIR + GROUND) Make the Controllable move to a given point. +-- * @{#CONTROLLABLE.TaskRouteToZone}: (AIR + GROUND) Route the controllable to a given zone. +-- * @{#CONTROLLABLE.TaskReturnToBase}: (AIR) Route the controllable to an airbase. +-- +-- ### 1.2.2) EnRoute task methods +-- +-- EnRoute tasks require the targets of the task need to be detected by the controllable (using its sensors) before the task can be executed: +-- +-- * @{#CONTROLLABLE.EnRouteTaskAWACS}: (AIR) Aircraft will act as an AWACS for friendly units (will provide them with information about contacts). No parameters. +-- * @{#CONTROLLABLE.EnRouteTaskEngageControllable}: (AIR) Engaging a controllable. The task does not assign the target controllable to the unit/controllable to attack now; it just allows the unit/controllable to engage the target controllable as well as other assigned targets. +-- * @{#CONTROLLABLE.EnRouteTaskEngageTargets}: (AIR) Engaging targets of defined types. +-- * @{#CONTROLLABLE.EnRouteTaskEWR}: (AIR) Attack the Unit. +-- * @{#CONTROLLABLE.EnRouteTaskFAC}: (AIR + GROUND) The task makes the controllable/unit a FAC and lets the FAC to choose a targets (enemy ground controllable) around as well as other assigned targets. +-- * @{#CONTROLLABLE.EnRouteTaskFAC_EngageControllable}: (AIR + GROUND) The task makes the controllable/unit a FAC and lets the FAC to choose the target (enemy ground controllable) as well as other assigned targets. +-- * @{#CONTROLLABLE.EnRouteTaskTanker}: (AIR) Aircraft will act as a tanker for friendly units. No parameters. +-- +-- ### 1.2.3) Preparation task methods +-- +-- There are certain task methods that allow to tailor the task behaviour: +-- +-- * @{#CONTROLLABLE.TaskWrappedAction}: Return a WrappedAction Task taking a Command. +-- * @{#CONTROLLABLE.TaskCombo}: Return a Combo Task taking an array of Tasks. +-- * @{#CONTROLLABLE.TaskCondition}: Return a condition section for a controlled task. +-- * @{#CONTROLLABLE.TaskControlled}: Return a Controlled Task taking a Task and a TaskCondition. +-- +-- ### 1.2.4) Obtain the mission from controllable templates +-- +-- Controllable templates contain complete mission descriptions. Sometimes you want to copy a complete mission from a controllable and assign it to another: +-- +-- * @{#CONTROLLABLE.TaskMission}: (AIR + GROUND) Return a mission task from a mission template. +-- +-- 1.3) CONTROLLABLE Command methods +-- -------------------------- +-- Controllable **command methods** prepare the execution of commands using the @{#CONTROLLABLE.SetCommand} method: +-- +-- * @{#CONTROLLABLE.CommandDoScript}: Do Script command. +-- * @{#CONTROLLABLE.CommandSwitchWayPoint}: Perform a switch waypoint command. +-- +-- 1.4) CONTROLLABLE Option methods +-- ------------------------- +-- Controllable **Option methods** change the behaviour of the Controllable while being alive. +-- +-- ### 1.4.1) Rule of Engagement: +-- +-- * @{#CONTROLLABLE.OptionROEWeaponFree} +-- * @{#CONTROLLABLE.OptionROEOpenFire} +-- * @{#CONTROLLABLE.OptionROEReturnFire} +-- * @{#CONTROLLABLE.OptionROEEvadeFire} +-- +-- To check whether an ROE option is valid for a specific controllable, use: +-- +-- * @{#CONTROLLABLE.OptionROEWeaponFreePossible} +-- * @{#CONTROLLABLE.OptionROEOpenFirePossible} +-- * @{#CONTROLLABLE.OptionROEReturnFirePossible} +-- * @{#CONTROLLABLE.OptionROEEvadeFirePossible} +-- +-- ### 1.4.2) Rule on thread: +-- +-- * @{#CONTROLLABLE.OptionROTNoReaction} +-- * @{#CONTROLLABLE.OptionROTPassiveDefense} +-- * @{#CONTROLLABLE.OptionROTEvadeFire} +-- * @{#CONTROLLABLE.OptionROTVertical} +-- +-- To test whether an ROT option is valid for a specific controllable, use: +-- +-- * @{#CONTROLLABLE.OptionROTNoReactionPossible} +-- * @{#CONTROLLABLE.OptionROTPassiveDefensePossible} +-- * @{#CONTROLLABLE.OptionROTEvadeFirePossible} +-- * @{#CONTROLLABLE.OptionROTVerticalPossible} +-- +-- === +-- +-- @module Controllable +-- @author FlightControl + +--- The CONTROLLABLE class +-- @type CONTROLLABLE +-- @extends Positionable#POSITIONABLE +-- @field DCSControllable#Controllable DCSControllable The DCS controllable class. +-- @field #string ControllableName The name of the controllable. +CONTROLLABLE = { + ClassName = "CONTROLLABLE", + ControllableName = "", + WayPointFunctions = {}, +} + +--- Create a new CONTROLLABLE from a DCSControllable +-- @param #CONTROLLABLE self +-- @param DCSControllable#Controllable ControllableName The DCS Controllable name +-- @return #CONTROLLABLE self +function CONTROLLABLE:New( ControllableName ) + local self = BASE:Inherit( self, POSITIONABLE:New( ControllableName ) ) + self:F2( ControllableName ) + self.ControllableName = ControllableName + return self +end + +-- DCS Controllable methods support. + +--- Get the controller for the CONTROLLABLE. +-- @param #CONTROLLABLE self +-- @return DCSController#Controller +function CONTROLLABLE:_GetController() + self:F2( { self.ControllableName } ) + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + local ControllableController = DCSControllable:getController() + self:T3( ControllableController ) + return ControllableController + end + + return nil +end + + + +-- Tasks + +--- Popping current Task from the controllable. +-- @param #CONTROLLABLE self +-- @return Controllable#CONTROLLABLE self +function CONTROLLABLE:PopCurrentTask() + self:F2() + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + local Controller = self:_GetController() + Controller:popTask() + return self + end + + return nil +end + +--- Pushing Task on the queue from the controllable. +-- @param #CONTROLLABLE self +-- @return Controllable#CONTROLLABLE self +function CONTROLLABLE:PushTask( DCSTask, WaitTime ) + self:F2() + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + local Controller = self:_GetController() + + -- When a controllable SPAWNs, it takes about a second to get the controllable in the simulator. Setting tasks to unspawned controllables provides unexpected results. + -- Therefore we schedule the functions to set the mission and options for the Controllable. + -- Controller:pushTask( DCSTask ) + + if WaitTime then + --routines.scheduleFunction( Controller.pushTask, { Controller, DCSTask }, timer.getTime() + WaitTime ) + SCHEDULER:New( Controller, Controller.pushTask, { DCSTask }, WaitTime ) + else + Controller:pushTask( DCSTask ) + end + + return self + end + + return nil +end + +--- Clearing the Task Queue and Setting the Task on the queue from the controllable. +-- @param #CONTROLLABLE self +-- @return Controllable#CONTROLLABLE self +function CONTROLLABLE:SetTask( DCSTask, WaitTime ) + self:F2( { DCSTask } ) + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + + local Controller = self:_GetController() + + -- When a controllable SPAWNs, it takes about a second to get the controllable in the simulator. Setting tasks to unspawned controllables provides unexpected results. + -- Therefore we schedule the functions to set the mission and options for the Controllable. + -- Controller.setTask( Controller, DCSTask ) + + if not WaitTime then + WaitTime = 1 + end + --routines.scheduleFunction( Controller.setTask, { Controller, DCSTask }, timer.getTime() + WaitTime ) + SCHEDULER:New( Controller, Controller.setTask, { DCSTask }, WaitTime ) + + return self + end + + return nil +end + + +--- Return a condition section for a controlled task. +-- @param #CONTROLLABLE self +-- @param DCSTime#Time time +-- @param #string userFlag +-- @param #boolean userFlagValue +-- @param #string condition +-- @param DCSTime#Time duration +-- @param #number lastWayPoint +-- return DCSTask#Task +function CONTROLLABLE:TaskCondition( time, userFlag, userFlagValue, condition, duration, lastWayPoint ) + self:F2( { time, userFlag, userFlagValue, condition, duration, lastWayPoint } ) + + local DCSStopCondition = {} + DCSStopCondition.time = time + DCSStopCondition.userFlag = userFlag + DCSStopCondition.userFlagValue = userFlagValue + DCSStopCondition.condition = condition + DCSStopCondition.duration = duration + DCSStopCondition.lastWayPoint = lastWayPoint + + self:T3( { DCSStopCondition } ) + return DCSStopCondition +end + +--- Return a Controlled Task taking a Task and a TaskCondition. +-- @param #CONTROLLABLE self +-- @param DCSTask#Task DCSTask +-- @param #DCSStopCondition DCSStopCondition +-- @return DCSTask#Task +function CONTROLLABLE:TaskControlled( DCSTask, DCSStopCondition ) + self:F2( { DCSTask, DCSStopCondition } ) + + local DCSTaskControlled + + DCSTaskControlled = { + id = 'ControlledTask', + params = { + task = DCSTask, + stopCondition = DCSStopCondition + } + } + + self:T3( { DCSTaskControlled } ) + return DCSTaskControlled +end + +--- Return a Combo Task taking an array of Tasks. +-- @param #CONTROLLABLE self +-- @param DCSTask#TaskArray DCSTasks Array of @{DCSTask#Task} +-- @return DCSTask#Task +function CONTROLLABLE:TaskCombo( DCSTasks ) + self:F2( { DCSTasks } ) + + local DCSTaskCombo + + DCSTaskCombo = { + id = 'ComboTask', + params = { + tasks = DCSTasks + } + } + + self:T3( { DCSTaskCombo } ) + return DCSTaskCombo +end + +--- Return a WrappedAction Task taking a Command. +-- @param #CONTROLLABLE self +-- @param DCSCommand#Command DCSCommand +-- @return DCSTask#Task +function CONTROLLABLE:TaskWrappedAction( DCSCommand, Index ) + self:F2( { DCSCommand } ) + + local DCSTaskWrappedAction + + DCSTaskWrappedAction = { + id = "WrappedAction", + enabled = true, + number = Index, + auto = false, + params = { + action = DCSCommand, + }, + } + + self:T3( { DCSTaskWrappedAction } ) + return DCSTaskWrappedAction +end + +--- Executes a command action +-- @param #CONTROLLABLE self +-- @param DCSCommand#Command DCSCommand +-- @return #CONTROLLABLE self +function CONTROLLABLE:SetCommand( DCSCommand ) + self:F2( DCSCommand ) + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + local Controller = self:_GetController() + Controller:setCommand( DCSCommand ) + return self + end + + return nil +end + +--- Perform a switch waypoint command +-- @param #CONTROLLABLE self +-- @param #number FromWayPoint +-- @param #number ToWayPoint +-- @return DCSTask#Task +function CONTROLLABLE:CommandSwitchWayPoint( FromWayPoint, ToWayPoint, Index ) + self:F2( { FromWayPoint, ToWayPoint, Index } ) + + local CommandSwitchWayPoint = { + id = 'SwitchWaypoint', + params = { + fromWaypointIndex = FromWayPoint, + goToWaypointIndex = ToWayPoint, + }, + } + + self:T3( { CommandSwitchWayPoint } ) + return CommandSwitchWayPoint +end + +--- Perform stop route command +-- @param #CONTROLLABLE self +-- @param #boolean StopRoute +-- @return DCSTask#Task +function CONTROLLABLE:CommandStopRoute( StopRoute, Index ) + self:F2( { StopRoute, Index } ) + + local CommandStopRoute = { + id = 'StopRoute', + params = { + value = StopRoute, + }, + } + + self:T3( { CommandStopRoute } ) + return CommandStopRoute +end + + +-- TASKS FOR AIR CONTROLLABLES + + +--- (AIR) Attack a Controllable. +-- @param #CONTROLLABLE self +-- @param Controllable#CONTROLLABLE AttackControllable The Controllable to be attacked. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (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. +-- @param DCSTypes#Azimuth Direction (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. +-- @param DCSTypes#Distance Altitude (optional) Desired attack start altitude. Controllable/aircraft will make its attacks from the altitude. If the altitude is too low or too high to use weapon aircraft/controllable will choose closest altitude to the desired attack start altitude. If the desired altitude is defined controllable/aircraft will not attack from safe altitude. +-- @param #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. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskAttackControllable( AttackControllable, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit ) + self:F2( { self.ControllableName, AttackControllable, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit } ) + + -- AttackControllable = { + -- id = 'AttackControllable', + -- params = { + -- controllableId = Controllable.ID, + -- weaponType = number, + -- expend = enum AI.Task.WeaponExpend, + -- attackQty = number, + -- directionEnabled = boolean, + -- direction = Azimuth, + -- altitudeEnabled = boolean, + -- altitude = Distance, + -- attackQtyLimit = boolean, + -- } + -- } + + local DirectionEnabled = nil + if Direction then + DirectionEnabled = true + end + + local AltitudeEnabled = nil + if Altitude then + AltitudeEnabled = true + end + + local DCSTask + DCSTask = { id = 'AttackControllable', + params = { + controllableId = AttackControllable:GetID(), + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + directionEnabled = DirectionEnabled, + direction = Direction, + altitudeEnabled = AltitudeEnabled, + altitude = Altitude, + attackQtyLimit = AttackQtyLimit, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Attack the Unit. +-- @param #CONTROLLABLE self +-- @param Unit#UNIT AttackUnit The unit. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (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. +-- @param DCSTypes#Azimuth Direction (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. +-- @param #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. +-- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskAttackUnit( AttackUnit, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, ControllableAttack ) + self:F2( { self.ControllableName, AttackUnit, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, ControllableAttack } ) + + -- AttackUnit = { + -- id = 'AttackUnit', + -- params = { + -- unitId = Unit.ID, + -- weaponType = number, + -- expend = enum AI.Task.WeaponExpend + -- attackQty = number, + -- direction = Azimuth, + -- attackQtyLimit = boolean, + -- controllableAttack = boolean, + -- } + -- } + + local DCSTask + DCSTask = { id = 'AttackUnit', + params = { + unitId = AttackUnit:GetID(), + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + direction = Direction, + attackQtyLimit = AttackQtyLimit, + controllableAttack = ControllableAttack, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Delivering weapon at the point on the ground. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 PointVec2 2D-coordinates of the point to deliver weapon at. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (optional) Desired quantity of passes. The parameter is not the same in AttackControllable and AttackUnit tasks. +-- @param DCSTypes#Azimuth Direction (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. +-- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskBombing( PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack ) + self:F2( { self.ControllableName, PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack } ) + +-- Bombing = { +-- id = 'Bombing', +-- params = { +-- point = Vec2, +-- weaponType = number, +-- expend = enum AI.Task.WeaponExpend, +-- attackQty = number, +-- direction = Azimuth, +-- controllableAttack = boolean, +-- } +-- } + + local DCSTask + DCSTask = { id = 'Bombing', + params = { + point = PointVec2, + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + direction = Direction, + controllableAttack = ControllableAttack, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + +--- (AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 Point The point to hold the position. +-- @param #number Altitude The altitude to hold the position. +-- @param #number Speed The speed flying when holding the position. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskOrbitCircleAtVec2( Point, Altitude, Speed ) + self:F2( { self.ControllableName, Point, Altitude, Speed } ) + + -- pattern = enum AI.Task.OribtPattern, + -- point = Vec2, + -- point2 = Vec2, + -- speed = Distance, + -- altitude = Distance + + local LandHeight = land.getHeight( Point ) + + self:T3( { LandHeight } ) + + local DCSTask = { id = 'Orbit', + params = { pattern = AI.Task.OrbitPattern.CIRCLE, + point = Point, + speed = Speed, + altitude = Altitude + LandHeight + } + } + + + -- local AITask = { id = 'ControlledTask', + -- params = { task = { id = 'Orbit', + -- params = { pattern = AI.Task.OrbitPattern.CIRCLE, + -- point = Point, + -- speed = Speed, + -- altitude = Altitude + LandHeight + -- } + -- }, + -- stopCondition = { duration = Duration + -- } + -- } + -- } + -- ) + + return DCSTask +end + +--- (AIR) Orbit at the current position of the first unit of the controllable at a specified alititude. +-- @param #CONTROLLABLE self +-- @param #number Altitude The altitude to hold the position. +-- @param #number Speed The speed flying when holding the position. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskOrbitCircle( Altitude, Speed ) + self:F2( { self.ControllableName, Altitude, Speed } ) + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + local ControllablePoint = self:GetPointVec2() + return self:TaskOrbitCircleAtVec2( ControllablePoint, Altitude, Speed ) + end + + return nil +end + + + +--- (AIR) Hold position at the current position of the first unit of the controllable. +-- @param #CONTROLLABLE self +-- @param #number Duration The maximum duration in seconds to hold the position. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskHoldPosition() + self:F2( { self.ControllableName } ) + + return self:TaskOrbitCircle( 30, 10 ) +end + + + + +--- (AIR) Attacking the map object (building, structure, e.t.c). +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 PointVec2 2D-coordinates of the point the map object is closest to. The distance between the point and the map object must not be greater than 2000 meters. Object id is not used here because Mission Editor doesn't support map object identificators. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (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. +-- @param DCSTypes#Azimuth Direction (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. +-- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskAttackMapObject( PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack ) + self:F2( { self.ControllableName, PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack } ) + +-- AttackMapObject = { +-- id = 'AttackMapObject', +-- params = { +-- point = Vec2, +-- weaponType = number, +-- expend = enum AI.Task.WeaponExpend, +-- attackQty = number, +-- direction = Azimuth, +-- controllableAttack = boolean, +-- } +-- } + + local DCSTask + DCSTask = { id = 'AttackMapObject', + params = { + point = PointVec2, + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + direction = Direction, + controllableAttack = ControllableAttack, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Delivering weapon on the runway. +-- @param #CONTROLLABLE self +-- @param Airbase#AIRBASE Airbase Airbase to attack. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (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. +-- @param DCSTypes#Azimuth Direction (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. +-- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskBombingRunway( Airbase, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack ) + self:F2( { self.ControllableName, Airbase, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack } ) + +-- BombingRunway = { +-- id = 'BombingRunway', +-- params = { +-- runwayId = AirdromeId, +-- weaponType = number, +-- expend = enum AI.Task.WeaponExpend, +-- attackQty = number, +-- direction = Azimuth, +-- controllableAttack = boolean, +-- } +-- } + + local DCSTask + DCSTask = { id = 'BombingRunway', + params = { + point = Airbase:GetID(), + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + direction = Direction, + controllableAttack = ControllableAttack, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Refueling from the nearest tanker. No parameters. +-- @param #CONTROLLABLE self +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskRefueling() + self:F2( { self.ControllableName } ) + +-- Refueling = { +-- id = 'Refueling', +-- params = {} +-- } + + local DCSTask + DCSTask = { id = 'Refueling', + params = { + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR HELICOPTER) Landing at the ground. For helicopters only. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 Point The point where to land. +-- @param #number Duration The duration in seconds to stay on the ground. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskLandAtVec2( Point, Duration ) + self:F2( { self.ControllableName, Point, Duration } ) + +-- Land = { +-- id= 'Land', +-- params = { +-- point = Vec2, +-- durationFlag = boolean, +-- duration = Time +-- } +-- } + + local DCSTask + if Duration and Duration > 0 then + DCSTask = { id = 'Land', + params = { + point = Point, + durationFlag = true, + duration = Duration, + }, + } + else + DCSTask = { id = 'Land', + params = { + point = Point, + durationFlag = false, + }, + } + end + + self:T3( DCSTask ) + return DCSTask +end + +--- (AIR) Land the controllable at a @{Zone#ZONE_RADIUS). +-- @param #CONTROLLABLE self +-- @param Zone#ZONE Zone The zone where to land. +-- @param #number Duration The duration in seconds to stay on the ground. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskLandAtZone( Zone, Duration, RandomPoint ) + self:F2( { self.ControllableName, Zone, Duration, RandomPoint } ) + + local Point + if RandomPoint then + Point = Zone:GetRandomVec2() + else + Point = Zone:GetPointVec2() + end + + local DCSTask = self:TaskLandAtVec2( Point, Duration ) + + self:T3( DCSTask ) + return DCSTask +end + + + +--- (AIR) Following another airborne controllable. +-- The unit / controllable will follow lead unit of another controllable, wingmens of both controllables will continue following their leaders. +-- If another controllable is on land the unit / controllable will orbit around. +-- @param #CONTROLLABLE self +-- @param Controllable#CONTROLLABLE FollowControllable The controllable to be followed. +-- @param DCSTypes#Vec3 PointVec3 Position of the unit / lead unit of the controllable relative lead unit of another controllable in frame reference oriented by course of lead unit of another controllable. If another controllable is on land the unit / controllable will orbit around. +-- @param #number LastWaypointIndex Detach waypoint of another controllable. Once reached the unit / controllable Follow task is finished. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskFollow( FollowControllable, PointVec3, LastWaypointIndex ) + self:F2( { self.ControllableName, FollowControllable, PointVec3, LastWaypointIndex } ) + +-- Follow = { +-- id = 'Follow', +-- params = { +-- controllableId = Controllable.ID, +-- pos = Vec3, +-- lastWptIndexFlag = boolean, +-- lastWptIndex = number +-- } +-- } + + local LastWaypointIndexFlag = nil + if LastWaypointIndex then + LastWaypointIndexFlag = true + end + + local DCSTask + DCSTask = { id = 'Follow', + params = { + controllableId = FollowControllable:GetID(), + pos = PointVec3, + lastWptIndexFlag = LastWaypointIndexFlag, + lastWptIndex = LastWaypointIndex, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Escort another airborne controllable. +-- The unit / controllable will follow lead unit of another controllable, wingmens of both controllables will continue following their leaders. +-- The unit / controllable will also protect that controllable from threats of specified types. +-- @param #CONTROLLABLE self +-- @param Controllable#CONTROLLABLE EscortControllable The controllable to be escorted. +-- @param DCSTypes#Vec3 PointVec3 Position of the unit / lead unit of the controllable relative lead unit of another controllable in frame reference oriented by course of lead unit of another controllable. If another controllable is on land the unit / controllable will orbit around. +-- @param #number LastWaypointIndex Detach waypoint of another controllable. Once reached the unit / controllable Follow task is finished. +-- @param #number EngagementDistanceMax Maximal distance from escorted controllable to threat. If the threat is already engaged by escort escort will disengage if the distance becomes greater than 1.5 * engagementDistMax. +-- @param DCSTypes#AttributeNameArray TargetTypes Array of AttributeName that is contains threat categories allowed to engage. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskEscort( FollowControllable, PointVec3, LastWaypointIndex, EngagementDistance, TargetTypes ) + self:F2( { self.ControllableName, FollowControllable, PointVec3, LastWaypointIndex, EngagementDistance, TargetTypes } ) + +-- Escort = { +-- id = 'Escort', +-- params = { +-- controllableId = Controllable.ID, +-- pos = Vec3, +-- lastWptIndexFlag = boolean, +-- lastWptIndex = number, +-- engagementDistMax = Distance, +-- targetTypes = array of AttributeName, +-- } +-- } + + local LastWaypointIndexFlag = nil + if LastWaypointIndex then + LastWaypointIndexFlag = true + end + + local DCSTask + DCSTask = { id = 'Follow', + params = { + controllableId = FollowControllable:GetID(), + pos = PointVec3, + lastWptIndexFlag = LastWaypointIndexFlag, + lastWptIndex = LastWaypointIndex, + engagementDistMax = EngagementDistance, + targetTypes = TargetTypes, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +-- GROUND TASKS + +--- (GROUND) Fire at a VEC2 point until ammunition is finished. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 PointVec2 The point to fire at. +-- @param DCSTypes#Distance Radius The radius of the zone to deploy the fire at. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskFireAtPoint( PointVec2, Radius ) + self:F2( { self.ControllableName, PointVec2, Radius } ) + + -- FireAtPoint = { + -- id = 'FireAtPoint', + -- params = { + -- point = Vec2, + -- radius = Distance, + -- } + -- } + + local DCSTask + DCSTask = { id = 'FireAtPoint', + params = { + point = PointVec2, + radius = Radius, + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + +--- (GROUND) Hold ground controllable from moving. +-- @param #CONTROLLABLE self +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskHold() + self:F2( { self.ControllableName } ) + +-- Hold = { +-- id = 'Hold', +-- params = { +-- } +-- } + + local DCSTask + DCSTask = { id = 'Hold', + params = { + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + +-- TASKS FOR AIRBORNE AND GROUND UNITS/CONTROLLABLES + +--- (AIR + GROUND) The task makes the controllable/unit a FAC and orders the FAC to control the target (enemy ground controllable) destruction. +-- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. +-- If the task is assigned to the controllable lead unit will be a FAC. +-- @param #CONTROLLABLE self +-- @param Controllable#CONTROLLABLE AttackControllable Target CONTROLLABLE. +-- @param #number WeaponType Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.Designation Designation (optional) Designation type. +-- @param #boolean Datalink (optional) Allows to use datalink to send the target information to attack aircraft. Enabled by default. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskFAC_AttackControllable( AttackControllable, WeaponType, Designation, Datalink ) + self:F2( { self.ControllableName, AttackControllable, WeaponType, Designation, Datalink } ) + +-- FAC_AttackControllable = { +-- id = 'FAC_AttackControllable', +-- params = { +-- controllableId = Controllable.ID, +-- weaponType = number, +-- designation = enum AI.Task.Designation, +-- datalink = boolean +-- } +-- } + + local DCSTask + DCSTask = { id = 'FAC_AttackControllable', + params = { + controllableId = AttackControllable:GetID(), + weaponType = WeaponType, + designation = Designation, + datalink = Datalink, + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + +-- EN-ROUTE TASKS FOR AIRBORNE CONTROLLABLES + +--- (AIR) Engaging targets of defined types. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Distance Distance Maximal distance from the target to a route leg. If the target is on a greater distance it will be ignored. +-- @param DCSTypes#AttributeNameArray TargetTypes Array of target categories allowed to engage. +-- @param #number Priority All enroute tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskEngageTargets( Distance, TargetTypes, Priority ) + self:F2( { self.ControllableName, Distance, TargetTypes, Priority } ) + +-- EngageTargets ={ +-- id = 'EngageTargets', +-- params = { +-- maxDist = Distance, +-- targetTypes = array of AttributeName, +-- priority = number +-- } +-- } + + local DCSTask + DCSTask = { id = 'EngageTargets', + params = { + maxDist = Distance, + targetTypes = TargetTypes, + priority = Priority + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + + +--- (AIR) Engaging a targets of defined types at circle-shaped zone. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 PointVec2 2D-coordinates of the zone. +-- @param DCSTypes#Distance Radius Radius of the zone. +-- @param DCSTypes#AttributeNameArray TargetTypes Array of target categories allowed to engage. +-- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskEngageTargets( PointVec2, Radius, TargetTypes, Priority ) + self:F2( { self.ControllableName, PointVec2, Radius, TargetTypes, Priority } ) + +-- EngageTargetsInZone = { +-- id = 'EngageTargetsInZone', +-- params = { +-- point = Vec2, +-- zoneRadius = Distance, +-- targetTypes = array of AttributeName, +-- priority = number +-- } +-- } + + local DCSTask + DCSTask = { id = 'EngageTargetsInZone', + params = { + point = PointVec2, + zoneRadius = Radius, + targetTypes = TargetTypes, + priority = Priority + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Engaging a controllable. The task does not assign the target controllable to the unit/controllable to attack now; it just allows the unit/controllable to engage the target controllable as well as other assigned targets. +-- @param #CONTROLLABLE self +-- @param Controllable#CONTROLLABLE AttackControllable The Controllable to be attacked. +-- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (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. +-- @param DCSTypes#Azimuth Direction (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. +-- @param DCSTypes#Distance Altitude (optional) Desired attack start altitude. Controllable/aircraft will make its attacks from the altitude. If the altitude is too low or too high to use weapon aircraft/controllable will choose closest altitude to the desired attack start altitude. If the desired altitude is defined controllable/aircraft will not attack from safe altitude. +-- @param #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. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskEngageControllable( AttackControllable, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit ) + self:F2( { self.ControllableName, AttackControllable, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit } ) + + -- EngageControllable = { + -- id = 'EngageControllable ', + -- params = { + -- controllableId = Controllable.ID, + -- weaponType = number, + -- expend = enum AI.Task.WeaponExpend, + -- attackQty = number, + -- directionEnabled = boolean, + -- direction = Azimuth, + -- altitudeEnabled = boolean, + -- altitude = Distance, + -- attackQtyLimit = boolean, + -- priority = number, + -- } + -- } + + local DirectionEnabled = nil + if Direction then + DirectionEnabled = true + end + + local AltitudeEnabled = nil + if Altitude then + AltitudeEnabled = true + end + + local DCSTask + DCSTask = { id = 'EngageControllable', + params = { + controllableId = AttackControllable:GetID(), + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + directionEnabled = DirectionEnabled, + direction = Direction, + altitudeEnabled = AltitudeEnabled, + altitude = Altitude, + attackQtyLimit = AttackQtyLimit, + priority = Priority, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Attack the Unit. +-- @param #CONTROLLABLE self +-- @param Unit#UNIT AttackUnit The UNIT. +-- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (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. +-- @param DCSTypes#Azimuth Direction (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. +-- @param #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. +-- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskEngageUnit( AttackUnit, Priority, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, ControllableAttack ) + self:F2( { self.ControllableName, AttackUnit, Priority, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, ControllableAttack } ) + + -- EngageUnit = { + -- id = 'EngageUnit', + -- params = { + -- unitId = Unit.ID, + -- weaponType = number, + -- expend = enum AI.Task.WeaponExpend + -- attackQty = number, + -- direction = Azimuth, + -- attackQtyLimit = boolean, + -- controllableAttack = boolean, + -- priority = number, + -- } + -- } + + local DCSTask + DCSTask = { id = 'EngageUnit', + params = { + unitId = AttackUnit:GetID(), + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + direction = Direction, + attackQtyLimit = AttackQtyLimit, + controllableAttack = ControllableAttack, + priority = Priority, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + + +--- (AIR) Aircraft will act as an AWACS for friendly units (will provide them with information about contacts). No parameters. +-- @param #CONTROLLABLE self +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskAWACS( ) + self:F2( { self.ControllableName } ) + +-- AWACS = { +-- id = 'AWACS', +-- params = { +-- } +-- } + + local DCSTask + DCSTask = { id = 'AWACS', + params = { + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Aircraft will act as a tanker for friendly units. No parameters. +-- @param #CONTROLLABLE self +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskTanker( ) + self:F2( { self.ControllableName } ) + +-- Tanker = { +-- id = 'Tanker', +-- params = { +-- } +-- } + + local DCSTask + DCSTask = { id = 'Tanker', + params = { + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + +-- En-route tasks for ground units/controllables + +--- (GROUND) Ground unit (EW-radar) will act as an EWR for friendly units (will provide them with information about contacts). No parameters. +-- @param #CONTROLLABLE self +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskEWR( ) + self:F2( { self.ControllableName } ) + +-- EWR = { +-- id = 'EWR', +-- params = { +-- } +-- } + + local DCSTask + DCSTask = { id = 'EWR', + params = { + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + +-- En-route tasks for airborne and ground units/controllables + +--- (AIR + GROUND) The task makes the controllable/unit a FAC and lets the FAC to choose the target (enemy ground controllable) as well as other assigned targets. +-- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. +-- If the task is assigned to the controllable lead unit will be a FAC. +-- @param #CONTROLLABLE self +-- @param Controllable#CONTROLLABLE AttackControllable Target CONTROLLABLE. +-- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. +-- @param #number WeaponType Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.Designation Designation (optional) Designation type. +-- @param #boolean Datalink (optional) Allows to use datalink to send the target information to attack aircraft. Enabled by default. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskFAC_EngageControllable( AttackControllable, Priority, WeaponType, Designation, Datalink ) + self:F2( { self.ControllableName, AttackControllable, WeaponType, Priority, Designation, Datalink } ) + +-- FAC_EngageControllable = { +-- id = 'FAC_EngageControllable', +-- params = { +-- controllableId = Controllable.ID, +-- weaponType = number, +-- designation = enum AI.Task.Designation, +-- datalink = boolean, +-- priority = number, +-- } +-- } + + local DCSTask + DCSTask = { id = 'FAC_EngageControllable', + params = { + controllableId = AttackControllable:GetID(), + weaponType = WeaponType, + designation = Designation, + datalink = Datalink, + priority = Priority, + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR + GROUND) The task makes the controllable/unit a FAC and lets the FAC to choose a targets (enemy ground controllable) around as well as other assigned targets. +-- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. +-- If the task is assigned to the controllable lead unit will be a FAC. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Distance Radius The maximal distance from the FAC to a target. +-- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskFAC( Radius, Priority ) + self:F2( { self.ControllableName, Radius, Priority } ) + +-- FAC = { +-- id = 'FAC', +-- params = { +-- radius = Distance, +-- priority = number +-- } +-- } + + local DCSTask + DCSTask = { id = 'FAC', + params = { + radius = Radius, + priority = Priority + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + + + +--- (AIR) Move the controllable to a Vec2 Point, wait for a defined duration and embark a controllable. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 Point The point where to wait. +-- @param #number Duration The duration in seconds to wait. +-- @param #CONTROLLABLE EmbarkingControllable The controllable to be embarked. +-- @return DCSTask#Task The DCS task structure +function CONTROLLABLE:TaskEmbarking( Point, Duration, EmbarkingControllable ) + self:F2( { self.ControllableName, Point, Duration, EmbarkingControllable.DCSControllable } ) + + local DCSTask + DCSTask = { id = 'Embarking', + params = { x = Point.x, + y = Point.y, + duration = Duration, + controllablesForEmbarking = { EmbarkingControllable.ControllableID }, + durationFlag = true, + distributionFlag = false, + distribution = {}, + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + +--- (GROUND) Embark to a Transport landed at a location. + +--- Move to a defined Vec2 Point, and embark to a controllable when arrived within a defined Radius. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 Point The point where to wait. +-- @param #number Radius The radius of the embarking zone around the Point. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskEmbarkToTransport( Point, Radius ) + self:F2( { self.ControllableName, Point, Radius } ) + + local DCSTask --DCSTask#Task + DCSTask = { id = 'EmbarkToTransport', + params = { x = Point.x, + y = Point.y, + zoneRadius = Radius, + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + + +--- (AIR + GROUND) Return a mission task from a mission template. +-- @param #CONTROLLABLE self +-- @param #table TaskMission A table containing the mission task. +-- @return DCSTask#Task +function CONTROLLABLE:TaskMission( TaskMission ) + self:F2( Points ) + + local DCSTask + DCSTask = { id = 'Mission', params = { TaskMission, }, } + + self:T3( { DCSTask } ) + return DCSTask +end + +--- Return a Misson task to follow a given route defined by Points. +-- @param #CONTROLLABLE self +-- @param #table Points A table of route points. +-- @return DCSTask#Task +function CONTROLLABLE:TaskRoute( Points ) + self:F2( Points ) + + local DCSTask + DCSTask = { id = 'Mission', params = { route = { points = Points, }, }, } + + self:T3( { DCSTask } ) + return DCSTask +end + +--- (AIR + GROUND) Make the Controllable move to fly to a given point. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec3 Point The destination point in Vec3 format. +-- @param #number Speed The speed to travel. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskRouteToVec2( Point, Speed ) + self:F2( { Point, Speed } ) + + local ControllablePoint = self:GetUnit( 1 ):GetPointVec2() + + local PointFrom = {} + PointFrom.x = ControllablePoint.x + PointFrom.y = ControllablePoint.y + PointFrom.type = "Turning Point" + PointFrom.action = "Turning Point" + PointFrom.speed = Speed + PointFrom.speed_locked = true + PointFrom.properties = { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + } + + + local PointTo = {} + PointTo.x = Point.x + PointTo.y = Point.y + PointTo.type = "Turning Point" + PointTo.action = "Fly Over Point" + PointTo.speed = Speed + PointTo.speed_locked = true + PointTo.properties = { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + } + + + local Points = { PointFrom, PointTo } + + self:T3( Points ) + + self:Route( Points ) + + return self +end + +--- (AIR + GROUND) Make the Controllable move to a given point. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec3 Point The destination point in Vec3 format. +-- @param #number Speed The speed to travel. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskRouteToVec3( Point, Speed ) + self:F2( { Point, Speed } ) + + local ControllablePoint = self:GetUnit( 1 ):GetPointVec3() + + local PointFrom = {} + PointFrom.x = ControllablePoint.x + PointFrom.y = ControllablePoint.z + PointFrom.alt = ControllablePoint.y + PointFrom.alt_type = "BARO" + PointFrom.type = "Turning Point" + PointFrom.action = "Turning Point" + PointFrom.speed = Speed + PointFrom.speed_locked = true + PointFrom.properties = { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + } + + + local PointTo = {} + PointTo.x = Point.x + PointTo.y = Point.z + PointTo.alt = Point.y + PointTo.alt_type = "BARO" + PointTo.type = "Turning Point" + PointTo.action = "Fly Over Point" + PointTo.speed = Speed + PointTo.speed_locked = true + PointTo.properties = { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + } + + + local Points = { PointFrom, PointTo } + + self:T3( Points ) + + self:Route( Points ) + + return self +end + + + +--- Make the controllable to follow a given route. +-- @param #CONTROLLABLE self +-- @param #table GoPoints A table of Route Points. +-- @return #CONTROLLABLE self +function CONTROLLABLE:Route( GoPoints ) + self:F2( GoPoints ) + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + local Points = routines.utils.deepCopy( GoPoints ) + local MissionTask = { id = 'Mission', params = { route = { points = Points, }, }, } + local Controller = self:_GetController() + --Controller.setTask( Controller, MissionTask ) + --routines.scheduleFunction( Controller.setTask, { Controller, MissionTask}, timer.getTime() + 1 ) + SCHEDULER:New( Controller, Controller.setTask, { MissionTask }, 1 ) + return self + end + + return nil +end + + + +--- (AIR + GROUND) Route the controllable to a given zone. +-- The controllable final destination point can be randomized. +-- A speed can be given in km/h. +-- A given formation can be given. +-- @param #CONTROLLABLE self +-- @param Zone#ZONE Zone The zone where to route to. +-- @param #boolean Randomize Defines whether to target point gets randomized within the Zone. +-- @param #number Speed The speed. +-- @param Base#FORMATION Formation The formation string. +function CONTROLLABLE:TaskRouteToZone( Zone, Randomize, Speed, Formation ) + self:F2( Zone ) + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + + local ControllablePoint = self:GetPointVec2() + + local PointFrom = {} + PointFrom.x = ControllablePoint.x + PointFrom.y = ControllablePoint.y + PointFrom.type = "Turning Point" + PointFrom.action = "Cone" + PointFrom.speed = 20 / 1.6 + + + local PointTo = {} + local ZonePoint + + if Randomize then + ZonePoint = Zone:GetRandomVec2() + else + ZonePoint = Zone:GetPointVec2() + end + + PointTo.x = ZonePoint.x + PointTo.y = ZonePoint.y + PointTo.type = "Turning Point" + + if Formation then + PointTo.action = Formation + else + PointTo.action = "Cone" + end + + if Speed then + PointTo.speed = Speed + else + PointTo.speed = 20 / 1.6 + end + + local Points = { PointFrom, PointTo } + + self:T3( Points ) + + self:Route( Points ) + + return self + end + + return nil +end + +--- (AIR) Return the Controllable to an @{Airbase#AIRBASE} +-- A speed can be given in km/h. +-- A given formation can be given. +-- @param #CONTROLLABLE self +-- @param Airbase#AIRBASE ReturnAirbase The @{Airbase#AIRBASE} to return to. +-- @param #number Speed (optional) The speed. +-- @return #string The route +function CONTROLLABLE:RouteReturnToAirbase( ReturnAirbase, Speed ) + self:F2( { ReturnAirbase, Speed } ) + +-- Example +-- [4] = +-- { +-- ["alt"] = 45, +-- ["type"] = "Land", +-- ["action"] = "Landing", +-- ["alt_type"] = "BARO", +-- ["formation_template"] = "", +-- ["properties"] = +-- { +-- ["vnav"] = 1, +-- ["scale"] = 0, +-- ["angle"] = 0, +-- ["vangle"] = 0, +-- ["steer"] = 2, +-- }, -- end of ["properties"] +-- ["ETA"] = 527.81058817743, +-- ["airdromeId"] = 12, +-- ["y"] = 243127.2973737, +-- ["x"] = -5406.2803440839, +-- ["name"] = "DictKey_WptName_53", +-- ["speed"] = 138.88888888889, +-- ["ETA_locked"] = false, +-- ["task"] = +-- { +-- ["id"] = "ComboTask", +-- ["params"] = +-- { +-- ["tasks"] = +-- { +-- }, -- end of ["tasks"] +-- }, -- end of ["params"] +-- }, -- end of ["task"] +-- ["speed_locked"] = true, +-- }, -- end of [4] + + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + + local ControllablePoint = self:GetPointVec2() + local ControllableVelocity = self:GetMaxVelocity() + + local PointFrom = {} + PointFrom.x = ControllablePoint.x + PointFrom.y = ControllablePoint.y + PointFrom.type = "Turning Point" + PointFrom.action = "Turning Point" + PointFrom.speed = ControllableVelocity + + + local PointTo = {} + local AirbasePoint = ReturnAirbase:GetPointVec2() + + PointTo.x = AirbasePoint.x + PointTo.y = AirbasePoint.y + PointTo.type = "Land" + PointTo.action = "Landing" + PointTo.airdromeId = ReturnAirbase:GetID()-- Airdrome ID + self:T(PointTo.airdromeId) + --PointTo.alt = 0 + + local Points = { PointFrom, PointTo } + + self:T3( Points ) + + local Route = { points = Points, } + + return Route + end + + return nil +end + +-- Commands + +--- Do Script command +-- @param #CONTROLLABLE self +-- @param #string DoScript +-- @return #DCSCommand +function CONTROLLABLE:CommandDoScript( DoScript ) + + local DCSDoScript = { + id = "Script", + params = { + command = DoScript, + }, + } + + self:T3( DCSDoScript ) + return DCSDoScript +end + + +--- Return the mission template of the controllable. +-- @param #CONTROLLABLE self +-- @return #table The MissionTemplate +-- TODO: Rework the method how to retrieve a template ... +function CONTROLLABLE:GetTaskMission() + self:F2( self.ControllableName ) + + return routines.utils.deepCopy( _DATABASE.Templates.Controllables[self.ControllableName].Template ) +end + +--- Return the mission route of the controllable. +-- @param #CONTROLLABLE self +-- @return #table The mission route defined by points. +function CONTROLLABLE:GetTaskRoute() + self:F2( self.ControllableName ) + + return routines.utils.deepCopy( _DATABASE.Templates.Controllables[self.ControllableName].Template.route.points ) +end + +--- Return the route of a controllable by using the @{Database#DATABASE} class. +-- @param #CONTROLLABLE self +-- @param #number Begin The route point from where the copy will start. The base route point is 0. +-- @param #number End The route point where the copy will end. The End point is the last point - the End point. The last point has base 0. +-- @param #boolean Randomize Randomization of the route, when true. +-- @param #number Radius When randomization is on, the randomization is within the radius. +function CONTROLLABLE:CopyRoute( Begin, End, Randomize, Radius ) + self:F2( { Begin, End } ) + + local Points = {} + + -- Could be a Spawned Controllable + local ControllableName = string.match( self:GetName(), ".*#" ) + if ControllableName then + ControllableName = ControllableName:sub( 1, -2 ) + else + ControllableName = self:GetName() + end + + self:T3( { ControllableName } ) + + local Template = _DATABASE.Templates.Controllables[ControllableName].Template + + if Template then + if not Begin then + Begin = 0 + end + if not End then + End = 0 + end + + for TPointID = Begin + 1, #Template.route.points - End do + if Template.route.points[TPointID] then + Points[#Points+1] = routines.utils.deepCopy( Template.route.points[TPointID] ) + if Randomize then + if not Radius then + Radius = 500 + end + Points[#Points].x = Points[#Points].x + math.random( Radius * -1, Radius ) + Points[#Points].y = Points[#Points].y + math.random( Radius * -1, Radius ) + end + end + end + return Points + else + error( "Template not found for Controllable : " .. ControllableName ) + end + + return nil +end + + +--- Return the detected targets of the controllable. +-- The optional parametes specify the detection methods that can be applied. +-- If no detection method is given, the detection will use all the available methods by default. +-- @param Controllable#CONTROLLABLE self +-- @param #boolean DetectVisual (optional) +-- @param #boolean DetectOptical (optional) +-- @param #boolean DetectRadar (optional) +-- @param #boolean DetectIRST (optional) +-- @param #boolean DetectRWR (optional) +-- @param #boolean DetectDLINK (optional) +-- @return #table DetectedTargets +function CONTROLLABLE:GetDetectedTargets( DetectVisual, DetectOptical, DetectRadar, DetectIRST, DetectRWR, DetectDLINK ) + self:F2( self.ControllableName ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local DetectionVisual = ( DetectVisual and DetectVisual == true ) and Controller.Detection.VISUAL or nil + local DetectionOptical = ( DetectOptical and DetectOptical == true ) and Controller.Detection.OPTICAL or nil + local DetectionRadar = ( DetectRadar and DetectRadar == true ) and Controller.Detection.RADAR or nil + local DetectionIRST = ( DetectIRST and DetectIRST == true ) and Controller.Detection.IRST or nil + local DetectionRWR = ( DetectRWR and DetectRWR == true ) and Controller.Detection.RWR or nil + local DetectionDLINK = ( DetectDLINK and DetectDLINK == true ) and Controller.Detection.DLINK or nil + + + return self:_GetController():getDetectedTargets( DetectionVisual, DetectionOptical, DetectionRadar, DetectionIRST, DetectionRWR, DetectionDLINK ) + end + + return nil +end + +function CONTROLLABLE:IsTargetDetected( DCSObject ) + self:F2( self.ControllableName ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + + local TargetIsDetected, TargetIsVisible, TargetLastTime, TargetKnowType, TargetKnowDistance, TargetLastPos, TargetLastVelocity + = self:_GetController().isTargetDetected( self:_GetController(), DCSObject, + Controller.Detection.VISUAL, + Controller.Detection.OPTIC, + Controller.Detection.RADAR, + Controller.Detection.IRST, + Controller.Detection.RWR, + Controller.Detection.DLINK + ) + return TargetIsDetected, TargetIsVisible, TargetLastTime, TargetKnowType, TargetKnowDistance, TargetLastPos, TargetLastVelocity + end + + return nil +end + +-- Options + +--- Can the CONTROLLABLE hold their weapons? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROEHoldFirePossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() or self:IsGround() or self:IsShip() then + return true + end + + return false + end + + return nil +end + +--- Holding weapons. +-- @param Controllable#CONTROLLABLE self +-- @return Controllable#CONTROLLABLE self +function CONTROLLABLE:OptionROEHoldFire() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) + elseif self:IsGround() then + Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.WEAPON_HOLD ) + elseif self:IsShip() then + Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.WEAPON_HOLD ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE attack returning on enemy fire? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROEReturnFirePossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() or self:IsGround() or self:IsShip() then + return true + end + + return false + end + + return nil +end + +--- Return fire. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROEReturnFire() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.RETURN_FIRE ) + elseif self:IsGround() then + Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.RETURN_FIRE ) + elseif self:IsShip() then + Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.RETURN_FIRE ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE attack designated targets? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROEOpenFirePossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() or self:IsGround() or self:IsShip() then + return true + end + + return false + end + + return nil +end + +--- Openfire. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROEOpenFire() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) + elseif self:IsGround() then + Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.OPEN_FIRE ) + elseif self:IsShip() then + Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.OPEN_FIRE ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE attack targets of opportunity? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROEWeaponFreePossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() then + return true + end + + return false + end + + return nil +end + +--- Weapon free. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROEWeaponFree() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_FREE ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE ignore enemy fire? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROTNoReactionPossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() then + return true + end + + return false + end + + return nil +end + + +--- No evasion on enemy threats. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROTNoReaction() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.NO_REACTION ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE evade using passive defenses? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROTPassiveDefensePossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() then + return true + end + + return false + end + + return nil +end + +--- Evasion passive defense. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROTPassiveDefense() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.PASSIVE_DEFENCE ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE evade on enemy fire? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROTEvadeFirePossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() then + return true + end + + return false + end + + return nil +end + + +--- Evade on fire. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROTEvadeFire() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE evade on fire using vertical manoeuvres? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROTVerticalPossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() then + return true + end + + return false + end + + return nil +end + + +--- Evade on fire using vertical manoeuvres. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROTVertical() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) + end + + return self + end + + return nil +end + +--- Retrieve the controllable mission and allow to place function hooks within the mission waypoint plan. +-- Use the method @{Controllable#CONTROLLABLE:WayPointFunction} to define the hook functions for specific waypoints. +-- Use the method @{Controllable@CONTROLLABLE:WayPointExecute) to start the execution of the new mission plan. +-- Note that when WayPointInitialize is called, the Mission of the controllable is RESTARTED! +-- @param #CONTROLLABLE self +-- @param #table WayPoints If WayPoints is given, then use the route. +-- @return #CONTROLLABLE +function CONTROLLABLE:WayPointInitialize( WayPoints ) + + if WayPoints then + self.WayPoints = WayPoints + else + self.WayPoints = self:GetTaskRoute() + end + + return self +end + + +--- Registers a waypoint function that will be executed when the controllable moves over the WayPoint. +-- @param #CONTROLLABLE self +-- @param #number WayPoint The waypoint number. Note that the start waypoint on the route is WayPoint 1! +-- @param #number WayPointIndex When defining multiple WayPoint functions for one WayPoint, use WayPointIndex to set the sequence of actions. +-- @param #function WayPointFunction The waypoint function to be called when the controllable moves over the waypoint. The waypoint function takes variable parameters. +-- @return #CONTROLLABLE +function CONTROLLABLE:WayPointFunction( WayPoint, WayPointIndex, WayPointFunction, ... ) + self:F2( { WayPoint, WayPointIndex, WayPointFunction } ) + + table.insert( self.WayPoints[WayPoint].task.params.tasks, WayPointIndex ) + self.WayPoints[WayPoint].task.params.tasks[WayPointIndex] = self:TaskFunction( WayPoint, WayPointIndex, WayPointFunction, arg ) + return self +end + + +function CONTROLLABLE:TaskFunction( WayPoint, WayPointIndex, FunctionString, FunctionArguments ) + self:F2( { WayPoint, WayPointIndex, FunctionString, FunctionArguments } ) + + local DCSTask + + local DCSScript = {} + DCSScript[#DCSScript+1] = "local MissionControllable = CONTROLLABLE:Find( ... ) " + + if FunctionArguments and #FunctionArguments > 0 then + DCSScript[#DCSScript+1] = FunctionString .. "( MissionControllable, " .. table.concat( FunctionArguments, "," ) .. ")" + else + DCSScript[#DCSScript+1] = FunctionString .. "( MissionControllable )" + end + + DCSTask = self:TaskWrappedAction( + self:CommandDoScript( + table.concat( DCSScript ) + ), WayPointIndex + ) + + self:T3( DCSTask ) + + return DCSTask + +end + +--- Executes the WayPoint plan. +-- The function gets a WayPoint parameter, that you can use to restart the mission at a specific WayPoint. +-- Note that when the WayPoint parameter is used, the new start mission waypoint of the controllable will be 1! +-- @param #CONTROLLABLE self +-- @param #number WayPoint The WayPoint from where to execute the mission. +-- @param #number WaitTime The amount seconds to wait before initiating the mission. +-- @return #CONTROLLABLE +function CONTROLLABLE:WayPointExecute( WayPoint, WaitTime ) + + if not WayPoint then + WayPoint = 1 + end + + -- When starting the mission from a certain point, the TaskPoints need to be deleted before the given WayPoint. + for TaskPointID = 1, WayPoint - 1 do + table.remove( self.WayPoints, 1 ) + end + + self:T3( self.WayPoints ) + + self:SetTask( self:TaskRoute( self.WayPoints ), WaitTime ) + + return self +end + + +--- This module contains the SCHEDULER class. +-- +-- 1) @{Scheduler#SCHEDULER} class, extends @{Base#BASE} +-- ===================================================== +-- The @{Scheduler#SCHEDULER} class models time events calling given event handling functions. +-- +-- 1.1) SCHEDULER constructor +-- -------------------------- +-- The SCHEDULER class is quite easy to use: +-- +-- * @{Scheduler#SCHEDULER.New}: Setup a new scheduler and start it with the specified parameters. +-- +-- 1.2) SCHEDULER timer stop and start +-- ----------------------------------- +-- The SCHEDULER can be stopped and restarted with the following methods: +-- +-- * @{Scheduler#SCHEDULER.Start}: (Re-)Start the scheduler. +-- * @{Scheduler#SCHEDULER.Stop}: Stop the scheduler. +-- +-- @module Scheduler +-- @author FlightControl + + +--- The SCHEDULER class +-- @type SCHEDULER +-- @field #number ScheduleID the ID of the scheduler. +-- @extends Base#BASE +SCHEDULER = { + ClassName = "SCHEDULER", +} + +--- SCHEDULER constructor. +-- @param #SCHEDULER self +-- @param #table TimeEventObject Specified for which Moose object the timer is setup. If a value of nil is provided, a scheduler will be setup without an object reference. +-- @param #function TimeEventFunction The event function to be called when a timer event occurs. The event function needs to accept the parameters specified in TimeEventFunctionArguments. +-- @param #table TimeEventFunctionArguments Optional arguments that can be given as part of scheduler. The arguments need to be given as a table { param1, param 2, ... }. +-- @param #number StartSeconds Specifies the amount of seconds that will be waited before the scheduling is started, and the event function is called. +-- @param #number RepeatSecondsInterval Specifies the interval in seconds when the scheduler will call the event function. +-- @param #number RandomizationFactor Specifies a randomization factor between 0 and 1 to randomize the RepeatSecondsInterval. +-- @param #number StopSeconds Specifies the amount of seconds when the scheduler will be stopped. +-- @return #SCHEDULER self +function SCHEDULER:New( TimeEventObject, TimeEventFunction, TimeEventFunctionArguments, StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds ) + local self = BASE:Inherit( self, BASE:New() ) + self:F2( { TimeEventObject, TimeEventFunction, TimeEventFunctionArguments, StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds } ) + + self.TimeEventObject = TimeEventObject + self.TimeEventFunction = TimeEventFunction + self.TimeEventFunctionArguments = TimeEventFunctionArguments + self.StartSeconds = StartSeconds + self.Repeat = false + + if RepeatSecondsInterval then + self.RepeatSecondsInterval = RepeatSecondsInterval + else + self.RepeatSecondsInterval = 0 + end + + if RandomizationFactor then + self.RandomizationFactor = RandomizationFactor + else + self.RandomizationFactor = 0 + end + + if StopSeconds then + self.StopSeconds = StopSeconds + end + + + self.StartTime = timer.getTime() + + self:Start() + + return self +end + +--- (Re-)Starts the scheduler. +-- @param #SCHEDULER self +-- @return #SCHEDULER self +function SCHEDULER:Start() + self:F2( self.TimeEventObject ) + + if self.RepeatSecondsInterval ~= 0 then + self.Repeat = true + end + self.ScheduleID = timer.scheduleFunction( self._Scheduler, self, timer.getTime() + self.StartSeconds + .01 ) + + return self +end + +--- Stops the scheduler. +-- @param #SCHEDULER self +-- @return #SCHEDULER self +function SCHEDULER:Stop() + self:F2( self.TimeEventObject ) + + self.Repeat = false + if self.ScheduleID then + timer.removeFunction( self.ScheduleID ) + end + self.ScheduleID = nil + + return self +end + +-- Private Functions + +--- @param #SCHEDULER self +function SCHEDULER:_Scheduler() + self:F2( self.TimeEventFunctionArguments ) + + local ErrorHandler = function( errmsg ) + + env.info( "Error in SCHEDULER function:" .. errmsg ) + env.info( debug.traceback() ) + + return errmsg + end + + local Status, Result + if self.TimeEventObject then + Status, Result = xpcall( function() return self.TimeEventFunction( self.TimeEventObject, unpack( self.TimeEventFunctionArguments ) ) end, ErrorHandler ) + else + Status, Result = xpcall( function() return self.TimeEventFunction( unpack( self.TimeEventFunctionArguments ) ) end, ErrorHandler ) + end + + self:T( { self.TimeEventFunctionArguments, Status, Result, self.StartTime, self.RepeatSecondsInterval, self.RandomizationFactor, self.StopSeconds } ) + + if Status and ( ( Result == nil ) or ( Result and Result ~= false ) ) then + if self.Repeat and ( not self.StopSeconds or ( self.StopSeconds and timer.getTime() <= self.StartTime + self.StopSeconds ) ) then + local ScheduleTime = + timer.getTime() + + self.RepeatSecondsInterval + + math.random( + - ( self.RandomizationFactor * self.RepeatSecondsInterval / 2 ), + ( self.RandomizationFactor * self.RepeatSecondsInterval / 2 ) + ) + + 0.01 + self:T( { self.TimeEventFunctionArguments, "Repeat:", timer.getTime(), ScheduleTime } ) + return ScheduleTime -- returns the next time the function needs to be called. + else + timer.removeFunction( self.ScheduleID ) + self.ScheduleID = nil + end + else + timer.removeFunction( self.ScheduleID ) + self.ScheduleID = nil + end + + return nil +end + + + + + + + + + + + + + + + + +--- The EVENT class models an efficient event handling process between other classes and its units, weapons. +-- @module Event +-- @author FlightControl + +--- The EVENT structure +-- @type EVENT +-- @field #EVENT.Events Events +EVENT = { + ClassName = "EVENT", + ClassID = 0, +} + +local _EVENTCODES = { + "S_EVENT_SHOT", + "S_EVENT_HIT", + "S_EVENT_TAKEOFF", + "S_EVENT_LAND", + "S_EVENT_CRASH", + "S_EVENT_EJECTION", + "S_EVENT_REFUELING", + "S_EVENT_DEAD", + "S_EVENT_PILOT_DEAD", + "S_EVENT_BASE_CAPTURED", + "S_EVENT_MISSION_START", + "S_EVENT_MISSION_END", + "S_EVENT_TOOK_CONTROL", + "S_EVENT_REFUELING_STOP", + "S_EVENT_BIRTH", + "S_EVENT_HUMAN_FAILURE", + "S_EVENT_ENGINE_STARTUP", + "S_EVENT_ENGINE_SHUTDOWN", + "S_EVENT_PLAYER_ENTER_UNIT", + "S_EVENT_PLAYER_LEAVE_UNIT", + "S_EVENT_PLAYER_COMMENT", + "S_EVENT_SHOOTING_START", + "S_EVENT_SHOOTING_END", + "S_EVENT_MAX", +} + +--- The Event structure +-- @type EVENTDATA +-- @field id +-- @field initiator +-- @field target +-- @field weapon +-- @field IniDCSUnit +-- @field IniDCSUnitName +-- @field Unit#UNIT IniUnit +-- @field #string IniUnitName +-- @field IniDCSGroup +-- @field IniDCSGroupName +-- @field TgtDCSUnit +-- @field TgtDCSUnitName +-- @field Unit#UNIT TgtUnit +-- @field #string TgtUnitName +-- @field TgtDCSGroup +-- @field TgtDCSGroupName +-- @field Weapon +-- @field WeaponName +-- @field WeaponTgtDCSUnit + +--- The Events structure +-- @type EVENT.Events +-- @field #number IniUnit + +function EVENT:New() + local self = BASE:Inherit( self, BASE:New() ) + self:F2() + self.EventHandler = world.addEventHandler( self ) + return self +end + +function EVENT:EventText( EventID ) + + local EventText = _EVENTCODES[EventID] + + return EventText +end + + +--- Initializes the Events structure for the event +-- @param #EVENT self +-- @param DCSWorld#world.event EventID +-- @param #string EventClass +-- @return #EVENT.Events +function EVENT:Init( EventID, EventClass ) + self:F3( { _EVENTCODES[EventID], EventClass } ) + if not self.Events[EventID] then + self.Events[EventID] = {} + end + if not self.Events[EventID][EventClass] then + self.Events[EventID][EventClass] = {} + end + return self.Events[EventID][EventClass] +end + + +--- Create an OnDead event handler for a group +-- @param #EVENT self +-- @param #table EventTemplate +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @param #function OnEventFunction +-- @return #EVENT +function EVENT:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, OnEventFunction ) + self:F2( EventTemplate.name ) + + for EventUnitID, EventUnit in pairs( EventTemplate.units ) do + OnEventFunction( self, EventUnit.name, EventFunction, EventSelf ) + end + return self +end + +--- Set a new listener for an S_EVENT_X event independent from a unit or a weapon. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @param EventID +-- @return #EVENT +function EVENT:OnEventGeneric( EventFunction, EventSelf, EventID ) + self:F2( { EventID } ) + + local Event = self:Init( EventID, EventSelf:GetClassNameAndID() ) + Event.EventFunction = EventFunction + Event.EventSelf = EventSelf + return self +end + + +--- Set a new listener for an S_EVENT_X event +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @param EventID +-- @return #EVENT +function EVENT:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, EventID ) + self:F2( EventDCSUnitName ) + + local Event = self:Init( EventID, EventSelf:GetClassNameAndID() ) + if not Event.IniUnit then + Event.IniUnit = {} + end + Event.IniUnit[EventDCSUnitName] = {} + Event.IniUnit[EventDCSUnitName].EventFunction = EventFunction + Event.IniUnit[EventDCSUnitName].EventSelf = EventSelf + return self +end + + +--- Create an OnBirth event handler for a group +-- @param #EVENT self +-- @param Group#GROUP EventGroup +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnBirthForTemplate( EventTemplate, EventFunction, EventSelf ) + self:F2( EventTemplate.name ) + + self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnBirthForUnit ) + + return self +end + +--- Set a new listener for an S_EVENT_BIRTH event, and registers the unit born. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf +-- @return #EVENT +function EVENT:OnBirth( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_BIRTH ) + + return self +end + +--- Set a new listener for an S_EVENT_BIRTH event. +-- @param #EVENT self +-- @param #string EventDCSUnitName The id of the unit for the event to be handled. +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf +-- @return #EVENT +function EVENT:OnBirthForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_BIRTH ) + + return self +end + +--- Create an OnCrash event handler for a group +-- @param #EVENT self +-- @param Group#GROUP EventGroup +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnCrashForTemplate( EventTemplate, EventFunction, EventSelf ) + self:F2( EventTemplate.name ) + + self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnCrashForUnit ) + + return self +end + +--- Set a new listener for an S_EVENT_CRASH event. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf +-- @return #EVENT +function EVENT:OnCrash( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_CRASH ) + + return self +end + +--- Set a new listener for an S_EVENT_CRASH event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnCrashForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_CRASH ) + + return self +end + +--- Create an OnDead event handler for a group +-- @param #EVENT self +-- @param Group#GROUP EventGroup +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnDeadForTemplate( EventTemplate, EventFunction, EventSelf ) + self:F2( EventTemplate.name ) + + self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnDeadForUnit ) + + return self +end + +--- Set a new listener for an S_EVENT_DEAD event. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf +-- @return #EVENT +function EVENT:OnDead( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_DEAD ) + + return self +end + + +--- Set a new listener for an S_EVENT_DEAD event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnDeadForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_DEAD ) + + return self +end + +--- Set a new listener for an S_EVENT_PILOT_DEAD event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnPilotDeadForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_PILOT_DEAD ) + + return self +end + +--- Create an OnDead event handler for a group +-- @param #EVENT self +-- @param #table EventTemplate +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnLandForTemplate( EventTemplate, EventFunction, EventSelf ) + self:F2( EventTemplate.name ) + + self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnLandForUnit ) + + return self +end + +--- Set a new listener for an S_EVENT_LAND event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnLandForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_LAND ) + + return self +end + +--- Create an OnDead event handler for a group +-- @param #EVENT self +-- @param #table EventTemplate +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnTakeOffForTemplate( EventTemplate, EventFunction, EventSelf ) + self:F2( EventTemplate.name ) + + self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnTakeOffForUnit ) + + return self +end + +--- Set a new listener for an S_EVENT_TAKEOFF event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnTakeOffForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_TAKEOFF ) + + return self +end + +--- Create an OnDead event handler for a group +-- @param #EVENT self +-- @param #table EventTemplate +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnEngineShutDownForTemplate( EventTemplate, EventFunction, EventSelf ) + self:F2( EventTemplate.name ) + + self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnEngineShutDownForUnit ) + + return self +end + +--- Set a new listener for an S_EVENT_ENGINE_SHUTDOWN event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnEngineShutDownForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_ENGINE_SHUTDOWN ) + + return self +end + +--- Set a new listener for an S_EVENT_ENGINE_STARTUP event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnEngineStartUpForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_ENGINE_STARTUP ) + + return self +end + +--- Set a new listener for an S_EVENT_SHOT event. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnShot( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_SHOT ) + + return self +end + +--- Set a new listener for an S_EVENT_SHOT event for a unit. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnShotForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_SHOT ) + + return self +end + +--- Set a new listener for an S_EVENT_HIT event. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnHit( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_HIT ) + + return self +end + +--- Set a new listener for an S_EVENT_HIT event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnHitForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_HIT ) + + return self +end + +--- Set a new listener for an S_EVENT_PLAYER_ENTER_UNIT event. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnPlayerEnterUnit( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_PLAYER_ENTER_UNIT ) + + return self +end + +--- Set a new listener for an S_EVENT_PLAYER_LEAVE_UNIT event. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnPlayerLeaveUnit( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_PLAYER_LEAVE_UNIT ) + + return self +end + + + +function EVENT:onEvent( Event ) + self:F2( { _EVENTCODES[Event.id], Event } ) + + if self and self.Events and self.Events[Event.id] then + if Event.initiator and Event.initiator:getCategory() == Object.Category.UNIT then + Event.IniDCSUnit = Event.initiator + Event.IniDCSGroup = Event.IniDCSUnit:getGroup() + Event.IniDCSUnitName = Event.IniDCSUnit:getName() + Event.IniUnitName = Event.IniDCSUnitName + Event.IniUnit = UNIT:FindByName( Event.IniDCSUnitName ) + Event.IniDCSGroupName = "" + if Event.IniDCSGroup and Event.IniDCSGroup:isExist() then + Event.IniDCSGroupName = Event.IniDCSGroup:getName() + end + end + if Event.target then + if Event.target and Event.target:getCategory() == Object.Category.UNIT then + Event.TgtDCSUnit = Event.target + Event.TgtDCSGroup = Event.TgtDCSUnit:getGroup() + Event.TgtDCSUnitName = Event.TgtDCSUnit:getName() + Event.TgtUnitName = Event.TgtDCSUnitName + Event.TgtUnit = UNIT:FindByName( Event.TgtDCSUnitName ) + Event.TgtDCSGroupName = "" + if Event.TgtDCSGroup and Event.TgtDCSGroup:isExist() then + Event.TgtDCSGroupName = Event.TgtDCSGroup:getName() + end + end + end + if Event.weapon then + Event.Weapon = Event.weapon + Event.WeaponName = Event.Weapon:getTypeName() + --Event.WeaponTgtDCSUnit = Event.Weapon:getTarget() + end + self:E( { _EVENTCODES[Event.id], Event } ) + for ClassName, EventData in pairs( self.Events[Event.id] ) do + if Event.IniDCSUnitName and EventData.IniUnit and EventData.IniUnit[Event.IniDCSUnitName] then + self:E( { "Calling event function for class ", ClassName, " unit ", Event.IniDCSUnitName } ) + EventData.IniUnit[Event.IniDCSUnitName].EventFunction( EventData.IniUnit[Event.IniDCSUnitName].EventSelf, Event ) + else + if Event.IniDCSUnit and not EventData.IniUnit then + self:E( { "Calling event function for class ", ClassName } ) + EventData.EventFunction( EventData.EventSelf, Event ) + end + end + end + end +end + +--- Encapsulation of DCS World Menu system in a set of MENU classes. +-- @module Menu + +--- The MENU class +-- @type MENU +-- @extends Base#BASE +MENU = { + ClassName = "MENU", + MenuPath = nil, + MenuText = "", + MenuParentPath = nil +} + +--- +function MENU:New( MenuText, MenuParentPath ) + + -- Arrange meta tables + local Child = BASE:Inherit( self, BASE:New() ) + + Child.MenuPath = nil + Child.MenuText = MenuText + Child.MenuParentPath = MenuParentPath + return Child +end + +--- The COMMANDMENU class +-- @type COMMANDMENU +-- @extends Menu#MENU +COMMANDMENU = { + ClassName = "COMMANDMENU", + CommandMenuFunction = nil, + CommandMenuArgument = nil +} + +function COMMANDMENU:New( MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument ) + + -- Arrange meta tables + + local MenuParentPath = nil + if ParentMenu ~= nil then + MenuParentPath = ParentMenu.MenuPath + end + + local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) + + Child.MenuPath = missionCommands.addCommand( MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument ) + Child.CommandMenuFunction = CommandMenuFunction + Child.CommandMenuArgument = CommandMenuArgument + return Child +end + +--- The SUBMENU class +-- @type SUBMENU +-- @extends Menu#MENU +SUBMENU = { + ClassName = "SUBMENU" +} + +function SUBMENU:New( MenuText, ParentMenu ) + + -- Arrange meta tables + local MenuParentPath = nil + if ParentMenu ~= nil then + MenuParentPath = ParentMenu.MenuPath + end + + local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) + + Child.MenuPath = missionCommands.addSubMenu( MenuText, MenuParentPath ) + return Child +end + +-- This local variable is used to cache the menus registered under clients. +-- Menus don't dissapear when clients are destroyed and restarted. +-- So every menu for a client created must be tracked so that program logic accidentally does not create +-- the same menus twice during initialization logic. +-- These menu classes are handling this logic with this variable. +local _MENUCLIENTS = {} + +--- The MENU_CLIENT class +-- @type MENU_CLIENT +-- @extends Menu#MENU +MENU_CLIENT = { + ClassName = "MENU_CLIENT" +} + +--- Creates a new menu item for a group +-- @param self +-- @param Client#CLIENT MenuClient The Client owning the menu. +-- @param #string MenuText The text for the menu. +-- @param #table ParentMenu The parent menu. +-- @return #MENU_CLIENT self +function MENU_CLIENT:New( MenuClient, MenuText, ParentMenu ) + + -- Arrange meta tables + local MenuParentPath = {} + if ParentMenu ~= nil then + MenuParentPath = ParentMenu.MenuPath + end + + local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) + self:F( { MenuClient, MenuText, ParentMenu } ) + + self.MenuClient = MenuClient + self.MenuClientGroupID = MenuClient:GetClientGroupID() + self.MenuParentPath = MenuParentPath + self.MenuText = MenuText + self.ParentMenu = ParentMenu + + self.Menus = {} + + if not _MENUCLIENTS[self.MenuClientGroupID] then + _MENUCLIENTS[self.MenuClientGroupID] = {} + end + + local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] + + self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText } ) + + local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText + if MenuPath[MenuPathID] then + missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), MenuPath[MenuPathID] ) + end + + self.MenuPath = missionCommands.addSubMenuForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath ) + MenuPath[MenuPathID] = self.MenuPath + + self:T( { MenuClient:GetClientGroupName(), self.MenuPath } ) + + if ParentMenu and ParentMenu.Menus then + ParentMenu.Menus[self.MenuPath] = self + end + return self +end + +--- Removes the sub menus recursively of this MENU_CLIENT. +-- @param #MENU_CLIENT self +-- @return #MENU_CLIENT self +function MENU_CLIENT:RemoveSubMenus() + self:F( self.MenuPath ) + + for MenuID, Menu in pairs( self.Menus ) do + Menu:Remove() + end + +end + +--- Removes the sub menus recursively of this MENU_CLIENT. +-- @param #MENU_CLIENT self +-- @return #MENU_CLIENT self +function MENU_CLIENT:Remove() + self:F( self.MenuPath ) + + self:RemoveSubMenus() + + if not _MENUCLIENTS[self.MenuClientGroupID] then + _MENUCLIENTS[self.MenuClientGroupID] = {} + end + + local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] + + if MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] then + MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] = nil + end + + missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), self.MenuPath ) + self.ParentMenu.Menus[self.MenuPath] = nil + return nil +end + + +--- The MENU_CLIENT_COMMAND class +-- @type MENU_CLIENT_COMMAND +-- @extends Menu#MENU +MENU_CLIENT_COMMAND = { + ClassName = "MENU_CLIENT_COMMAND" +} + +--- Creates a new radio command item for a group +-- @param self +-- @param Client#CLIENT MenuClient The Client owning the menu. +-- @param MenuText The text for the menu. +-- @param ParentMenu The parent menu. +-- @param CommandMenuFunction A function that is called when the menu key is pressed. +-- @param CommandMenuArgument An argument for the function. +-- @return Menu#MENU_CLIENT_COMMAND self +function MENU_CLIENT_COMMAND:New( MenuClient, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument ) + + -- Arrange meta tables + + local MenuParentPath = {} + if ParentMenu ~= nil then + MenuParentPath = ParentMenu.MenuPath + end + + local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) + + self.MenuClient = MenuClient + self.MenuClientGroupID = MenuClient:GetClientGroupID() + self.MenuParentPath = MenuParentPath + self.MenuText = MenuText + self.ParentMenu = ParentMenu + + if not _MENUCLIENTS[self.MenuClientGroupID] then + _MENUCLIENTS[self.MenuClientGroupID] = {} + end + + local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] + + self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } ) + + local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText + if MenuPath[MenuPathID] then + missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), MenuPath[MenuPathID] ) + end + + self.MenuPath = missionCommands.addCommandForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument ) + MenuPath[MenuPathID] = self.MenuPath + + self.CommandMenuFunction = CommandMenuFunction + self.CommandMenuArgument = CommandMenuArgument + + ParentMenu.Menus[self.MenuPath] = self + + return self +end + +function MENU_CLIENT_COMMAND:Remove() + self:F( self.MenuPath ) + + if not _MENUCLIENTS[self.MenuClientGroupID] then + _MENUCLIENTS[self.MenuClientGroupID] = {} + end + + local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] + + if MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] then + MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] = nil + end + + missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), self.MenuPath ) + self.ParentMenu.Menus[self.MenuPath] = nil + return nil +end + + +--- The MENU_COALITION class +-- @type MENU_COALITION +-- @extends Menu#MENU +MENU_COALITION = { + ClassName = "MENU_COALITION" +} + +--- Creates a new coalition menu item +-- @param #MENU_COALITION self +-- @param DCSCoalition#coalition.side MenuCoalition The coalition owning the menu. +-- @param #string MenuText The text for the menu. +-- @param #table ParentMenu The parent menu. +-- @return #MENU_COALITION self +function MENU_COALITION:New( MenuCoalition, MenuText, ParentMenu ) + + -- Arrange meta tables + local MenuParentPath = {} + if ParentMenu ~= nil then + MenuParentPath = ParentMenu.MenuPath + end + + local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) + self:F( { MenuCoalition, MenuText, ParentMenu } ) + + self.MenuCoalition = MenuCoalition + self.MenuParentPath = MenuParentPath + self.MenuText = MenuText + self.ParentMenu = ParentMenu + + self.Menus = {} + + self:T( { MenuParentPath, MenuText } ) + + self.MenuPath = missionCommands.addSubMenuForCoalition( self.MenuCoalition, MenuText, MenuParentPath ) + + self:T( { self.MenuPath } ) + + if ParentMenu and ParentMenu.Menus then + ParentMenu.Menus[self.MenuPath] = self + end + return self +end + +--- Removes the sub menus recursively of this MENU_COALITION. +-- @param #MENU_COALITION self +-- @return #MENU_COALITION self +function MENU_COALITION:RemoveSubMenus() + self:F( self.MenuPath ) + + for MenuID, Menu in pairs( self.Menus ) do + Menu:Remove() + end + +end + +--- Removes the sub menus recursively of this MENU_COALITION. +-- @param #MENU_COALITION self +-- @return #MENU_COALITION self +function MENU_COALITION:Remove() + self:F( self.MenuPath ) + + self:RemoveSubMenus() + missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath ) + self.ParentMenu.Menus[self.MenuPath] = nil + + return nil +end + + +--- The MENU_COALITION_COMMAND class +-- @type MENU_COALITION_COMMAND +-- @extends Menu#MENU +MENU_COALITION_COMMAND = { + ClassName = "MENU_COALITION_COMMAND" +} + +--- Creates a new radio command item for a group +-- @param #MENU_COALITION_COMMAND self +-- @param DCSCoalition#coalition.side MenuCoalition The coalition owning the menu. +-- @param MenuText The text for the menu. +-- @param ParentMenu The parent menu. +-- @param CommandMenuFunction A function that is called when the menu key is pressed. +-- @param CommandMenuArgument An argument for the function. +-- @return #MENU_COALITION_COMMAND self +function MENU_COALITION_COMMAND:New( MenuCoalition, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument ) + + -- Arrange meta tables + + local MenuParentPath = {} + if ParentMenu ~= nil then + MenuParentPath = ParentMenu.MenuPath + end + + local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) + + self.MenuCoalition = MenuCoalition + self.MenuParentPath = MenuParentPath + self.MenuText = MenuText + self.ParentMenu = ParentMenu + + self:T( { MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } ) + + self.MenuPath = missionCommands.addCommandForCoalition( self.MenuCoalition, MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument ) + + self.CommandMenuFunction = CommandMenuFunction + self.CommandMenuArgument = CommandMenuArgument + + ParentMenu.Menus[self.MenuPath] = self + + return self +end + +--- Removes a radio command item for a coalition +-- @param #MENU_COALITION_COMMAND self +-- @return #MENU_COALITION_COMMAND self +function MENU_COALITION_COMMAND:Remove() + self:F( self.MenuPath ) + + missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath ) + self.ParentMenu.Menus[self.MenuPath] = nil + return nil +end +--- This module contains the GROUP class. +-- +-- 1) @{Group#GROUP} class, extends @{Controllable#CONTROLLABLE} +-- ============================================================= +-- The @{Group#GROUP} class is a wrapper class to handle the DCS Group objects: +-- +-- * Support all DCS Group APIs. +-- * Enhance with Group specific APIs not in the DCS Group API set. +-- * Handle local Group Controller. +-- * Manage the "state" of the DCS Group. +-- +-- **IMPORTANT: ONE SHOULD NEVER SANATIZE these GROUP OBJECT REFERENCES! (make the GROUP object references nil).** +-- +-- 1.1) GROUP reference methods +-- ----------------------- +-- For each DCS Group object alive within a running mission, a GROUP wrapper object (instance) will be created within the _@{DATABASE} object. +-- This is done at the beginning of the mission (when the mission starts), and dynamically when new DCS Group objects are spawned (using the @{SPAWN} class). +-- +-- The GROUP class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference +-- using the DCS Group or the DCS GroupName. +-- +-- Another thing to know is that GROUP objects do not "contain" the DCS Group object. +-- The GROUP methods will reference the DCS Group object by name when it is needed during API execution. +-- If the DCS Group object does not exist or is nil, the GROUP methods will return nil and log an exception in the DCS.log file. +-- +-- The GROUP class provides the following functions to retrieve quickly the relevant GROUP instance: +-- +-- * @{#GROUP.Find}(): Find a GROUP instance from the _DATABASE object using a DCS Group object. +-- * @{#GROUP.FindByName}(): Find a GROUP instance from the _DATABASE object using a DCS Group name. +-- +-- 1.2) GROUP task methods +-- ----------------------- +-- Several group task methods are available that help you to prepare tasks. +-- These methods return a string consisting of the task description, which can then be given to either a @{Group#GROUP.PushTask} or @{Group#SetTask} method to assign the task to the GROUP. +-- Tasks are specific for the category of the GROUP, more specific, for AIR, GROUND or AIR and GROUND. +-- Each task description where applicable indicates for which group category the task is valid. +-- There are 2 main subdivisions of tasks: Assigned tasks and EnRoute tasks. +-- +-- ### 1.2.1) Assigned task methods +-- +-- Assigned task methods make the group execute the task where the location of the (possible) targets of the task are known before being detected. +-- This is different from the EnRoute tasks, where the targets of the task need to be detected before the task can be executed. +-- +-- Find below a list of the **assigned task** methods: +-- +-- * @{#GROUP.TaskAttackGroup}: (AIR) Attack a Group. +-- * @{#GROUP.TaskAttackMapObject}: (AIR) Attacking the map object (building, structure, e.t.c). +-- * @{#GROUP.TaskAttackUnit}: (AIR) Attack the Unit. +-- * @{#GROUP.TaskBombing}: (AIR) Delivering weapon at the point on the ground. +-- * @{#GROUP.TaskBombingRunway}: (AIR) Delivering weapon on the runway. +-- * @{#GROUP.TaskEmbarking}: (AIR) Move the group to a Vec2 Point, wait for a defined duration and embark a group. +-- * @{#GROUP.TaskEmbarkToTransport}: (GROUND) Embark to a Transport landed at a location. +-- * @{#GROUP.TaskEscort}: (AIR) Escort another airborne group. +-- * @{#GROUP.TaskFAC_AttackGroup}: (AIR + GROUND) The task makes the group/unit a FAC and orders the FAC to control the target (enemy ground group) destruction. +-- * @{#GROUP.TaskFireAtPoint}: (GROUND) Fire at a VEC2 point until ammunition is finished. +-- * @{#GROUP.TaskFollow}: (AIR) Following another airborne group. +-- * @{#GROUP.TaskHold}: (GROUND) Hold ground group from moving. +-- * @{#GROUP.TaskHoldPosition}: (AIR) Hold position at the current position of the first unit of the group. +-- * @{#GROUP.TaskLand}: (AIR HELICOPTER) Landing at the ground. For helicopters only. +-- * @{#GROUP.TaskLandAtZone}: (AIR) Land the group at a @{Zone#ZONE_RADIUS). +-- * @{#GROUP.TaskOrbitCircle}: (AIR) Orbit at the current position of the first unit of the group at a specified alititude. +-- * @{#GROUP.TaskOrbitCircleAtVec2}: (AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed. +-- * @{#GROUP.TaskRefueling}: (AIR) Refueling from the nearest tanker. No parameters. +-- * @{#GROUP.TaskRoute}: (AIR + GROUND) Return a Misson task to follow a given route defined by Points. +-- * @{#GROUP.TaskRouteToVec2}: (AIR + GROUND) Make the Group move to a given point. +-- * @{#GROUP.TaskRouteToVec3}: (AIR + GROUND) Make the Group move to a given point. +-- * @{#GROUP.TaskRouteToZone}: (AIR + GROUND) Route the group to a given zone. +-- * @{#GROUP.TaskReturnToBase}: (AIR) Route the group to an airbase. +-- +-- ### 1.2.2) EnRoute task methods +-- +-- EnRoute tasks require the targets of the task need to be detected by the group (using its sensors) before the task can be executed: +-- +-- * @{#GROUP.EnRouteTaskAWACS}: (AIR) Aircraft will act as an AWACS for friendly units (will provide them with information about contacts). No parameters. +-- * @{#GROUP.EnRouteTaskEngageGroup}: (AIR) Engaging a group. The task does not assign the target group to the unit/group to attack now; it just allows the unit/group to engage the target group as well as other assigned targets. +-- * @{#GROUP.EnRouteTaskEngageTargets}: (AIR) Engaging targets of defined types. +-- * @{#GROUP.EnRouteTaskEWR}: (AIR) Attack the Unit. +-- * @{#GROUP.EnRouteTaskFAC}: (AIR + GROUND) The task makes the group/unit a FAC and lets the FAC to choose a targets (enemy ground group) around as well as other assigned targets. +-- * @{#GROUP.EnRouteTaskFAC_EngageGroup}: (AIR + GROUND) The task makes the group/unit a FAC and lets the FAC to choose the target (enemy ground group) as well as other assigned targets. +-- * @{#GROUP.EnRouteTaskTanker}: (AIR) Aircraft will act as a tanker for friendly units. No parameters. +-- +-- ### 1.2.3) Preparation task methods +-- +-- There are certain task methods that allow to tailor the task behaviour: +-- +-- * @{#GROUP.TaskWrappedAction}: Return a WrappedAction Task taking a Command. +-- * @{#GROUP.TaskCombo}: Return a Combo Task taking an array of Tasks. +-- * @{#GROUP.TaskCondition}: Return a condition section for a controlled task. +-- * @{#GROUP.TaskControlled}: Return a Controlled Task taking a Task and a TaskCondition. +-- +-- ### 1.2.4) Obtain the mission from group templates +-- +-- Group templates contain complete mission descriptions. Sometimes you want to copy a complete mission from a group and assign it to another: +-- +-- * @{#GROUP.TaskMission}: (AIR + GROUND) Return a mission task from a mission template. +-- +-- 1.3) GROUP Command methods +-- -------------------------- +-- Group **command methods** prepare the execution of commands using the @{#GROUP.SetCommand} method: +-- +-- * @{#GROUP.CommandDoScript}: Do Script command. +-- * @{#GROUP.CommandSwitchWayPoint}: Perform a switch waypoint command. +-- +-- 1.4) GROUP Option methods +-- ------------------------- +-- Group **Option methods** change the behaviour of the Group while being alive. +-- +-- ### 1.4.1) Rule of Engagement: +-- +-- * @{#GROUP.OptionROEWeaponFree} +-- * @{#GROUP.OptionROEOpenFire} +-- * @{#GROUP.OptionROEReturnFire} +-- * @{#GROUP.OptionROEEvadeFire} +-- +-- To check whether an ROE option is valid for a specific group, use: +-- +-- * @{#GROUP.OptionROEWeaponFreePossible} +-- * @{#GROUP.OptionROEOpenFirePossible} +-- * @{#GROUP.OptionROEReturnFirePossible} +-- * @{#GROUP.OptionROEEvadeFirePossible} +-- +-- ### 1.4.2) Rule on thread: +-- +-- * @{#GROUP.OptionROTNoReaction} +-- * @{#GROUP.OptionROTPassiveDefense} +-- * @{#GROUP.OptionROTEvadeFire} +-- * @{#GROUP.OptionROTVertical} +-- +-- To test whether an ROT option is valid for a specific group, use: +-- +-- * @{#GROUP.OptionROTNoReactionPossible} +-- * @{#GROUP.OptionROTPassiveDefensePossible} +-- * @{#GROUP.OptionROTEvadeFirePossible} +-- * @{#GROUP.OptionROTVerticalPossible} +-- +-- 1.5) GROUP Zone validation methods +-- ---------------------------------- +-- The group can be validated whether it is completely, partly or not within a @{Zone}. +-- Use the following Zone validation methods on the group: +-- +-- * @{#GROUP.IsCompletelyInZone}: Returns true if all units of the group are within a @{Zone}. +-- * @{#GROUP.IsPartlyInZone}: Returns true if some units of the group are within a @{Zone}. +-- * @{#GROUP.IsNotInZone}: Returns true if none of the group units of the group are within a @{Zone}. +-- +-- The zone can be of any @{Zone} class derived from @{Zone#ZONE_BASE}. So, these methods are polymorphic to the zones tested on. +-- +-- @module Group +-- @author FlightControl + +--- The GROUP class +-- @type GROUP +-- @extends Controllable#CONTROLLABLE +-- @field #string GroupName The name of the group. +GROUP = { + ClassName = "GROUP", +} + +--- Create a new GROUP from a DCSGroup +-- @param #GROUP self +-- @param DCSGroup#Group GroupName The DCS Group name +-- @return #GROUP self +function GROUP:Register( GroupName ) + local self = BASE:Inherit( self, CONTROLLABLE:New( GroupName ) ) + self:F2( GroupName ) + self.GroupName = GroupName + return self +end + +-- Reference methods. + +--- Find the GROUP wrapper class instance using the DCS Group. +-- @param #GROUP self +-- @param DCSGroup#Group DCSGroup The DCS Group. +-- @return #GROUP The GROUP. +function GROUP:Find( DCSGroup ) + + local GroupName = DCSGroup:getName() -- Group#GROUP + local GroupFound = _DATABASE:FindGroup( GroupName ) + GroupFound:E( { GroupName, GroupFound:GetClassNameAndID() } ) + return GroupFound +end + +--- Find the created GROUP using the DCS Group Name. +-- @param #GROUP self +-- @param #string GroupName The DCS Group Name. +-- @return #GROUP The GROUP. +function GROUP:FindByName( GroupName ) + + local GroupFound = _DATABASE:FindGroup( GroupName ) + return GroupFound +end + +-- DCS Group methods support. + +--- Returns the DCS Group. +-- @param #GROUP self +-- @return DCSGroup#Group The DCS Group. +function GROUP:GetDCSObject() + local DCSGroup = Group.getByName( self.GroupName ) + + if DCSGroup then + return DCSGroup + end + + return nil +end + + +--- Returns if the DCS Group is alive. +-- When the group exists at run-time, this method will return true, otherwise false. +-- @param #GROUP self +-- @return #boolean true if the DCS Group is alive. +function GROUP:IsAlive() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupIsAlive = DCSGroup:isExist() + self:T3( GroupIsAlive ) + return GroupIsAlive + end + + return nil +end + +--- Destroys the DCS Group and all of its DCS Units. +-- Note that this destroy method also raises a destroy event at run-time. +-- So all event listeners will catch the destroy event of this DCS Group. +-- @param #GROUP self +function GROUP:Destroy() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + for Index, UnitData in pairs( DCSGroup:getUnits() ) do + self:CreateEventCrash( timer.getTime(), UnitData ) + end + DCSGroup:destroy() + DCSGroup = nil + end + + return nil +end + +--- Returns category of the DCS Group. +-- @param #GROUP self +-- @return DCSGroup#Group.Category The category ID +function GROUP:GetCategory() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + local GroupCategory = DCSGroup:getCategory() + self:T3( GroupCategory ) + return GroupCategory + end + + return nil +end + +--- Returns the category name of the DCS Group. +-- @param #GROUP self +-- @return #string Category name = Helicopter, Airplane, Ground Unit, Ship +function GROUP:GetCategoryName() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + local CategoryNames = { + [Group.Category.AIRPLANE] = "Airplane", + [Group.Category.HELICOPTER] = "Helicopter", + [Group.Category.GROUND] = "Ground Unit", + [Group.Category.SHIP] = "Ship", + } + local GroupCategory = DCSGroup:getCategory() + self:T3( GroupCategory ) + + return CategoryNames[GroupCategory] + end + + return nil +end + + +--- Returns the coalition of the DCS Group. +-- @param #GROUP self +-- @return DCSCoalitionObject#coalition.side The coalition side of the DCS Group. +function GROUP:GetCoalition() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + local GroupCoalition = DCSGroup:getCoalition() + self:T3( GroupCoalition ) + return GroupCoalition + end + + return nil +end + +--- Returns the country of the DCS Group. +-- @param #GROUP self +-- @return DCScountry#country.id The country identifier. +-- @return #nil The DCS Group is not existing or alive. +function GROUP:GetCountry() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + local GroupCountry = DCSGroup:getUnit(1):getCountry() + self:T3( GroupCountry ) + return GroupCountry + end + + return nil +end + +--- Returns the UNIT wrapper class with number UnitNumber. +-- If the underlying DCS Unit does not exist, the method will return nil. . +-- @param #GROUP self +-- @param #number UnitNumber The number of the UNIT wrapper class to be returned. +-- @return Unit#UNIT The UNIT wrapper class. +function GROUP:GetUnit( UnitNumber ) + self:F2( { self.GroupName, UnitNumber } ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local UnitFound = UNIT:Find( DCSGroup:getUnit( UnitNumber ) ) + self:T3( UnitFound.UnitName ) + self:T2( UnitFound ) + return UnitFound + end + + return nil +end + +--- Returns the DCS Unit with number UnitNumber. +-- If the underlying DCS Unit does not exist, the method will return nil. . +-- @param #GROUP self +-- @param #number UnitNumber The number of the DCS Unit to be returned. +-- @return DCSUnit#Unit The DCS Unit. +function GROUP:GetDCSUnit( UnitNumber ) + self:F2( { self.GroupName, UnitNumber } ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local DCSUnitFound = DCSGroup:getUnit( UnitNumber ) + self:T3( DCSUnitFound ) + return DCSUnitFound + end + + return nil +end + +--- Returns current size of the DCS Group. +-- If some of the DCS Units of the DCS Group are destroyed the size of the DCS Group is changed. +-- @param #GROUP self +-- @return #number The DCS Group size. +function GROUP:GetSize() + self:F2( { self.GroupName } ) + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupSize = DCSGroup:getSize() + self:T3( GroupSize ) + return GroupSize + end + + return nil +end + +--- +--- Returns the initial size of the DCS Group. +-- If some of the DCS Units of the DCS Group are destroyed, the initial size of the DCS Group is unchanged. +-- @param #GROUP self +-- @return #number The DCS Group initial size. +function GROUP:GetInitialSize() + self:F2( { self.GroupName } ) + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupInitialSize = DCSGroup:getInitialSize() + self:T3( GroupInitialSize ) + return GroupInitialSize + end + + return nil +end + +--- Returns the UNITs wrappers of the DCS Units of the DCS Group. +-- @param #GROUP self +-- @return #table The UNITs wrappers. +function GROUP:GetUnits() + self:F2( { self.GroupName } ) + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local DCSUnits = DCSGroup:getUnits() + local Units = {} + for Index, UnitData in pairs( DCSUnits ) do + Units[#Units+1] = UNIT:Find( UnitData ) + end + self:T3( Units ) + return Units + end + + return nil +end + + +--- Returns the DCS Units of the DCS Group. +-- @param #GROUP self +-- @return #table The DCS Units. +function GROUP:GetDCSUnits() + self:F2( { self.GroupName } ) + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local DCSUnits = DCSGroup:getUnits() + self:T3( DCSUnits ) + return DCSUnits + end + + return nil +end + + +--- Activates a GROUP. +-- @param #GROUP self +function GROUP:Activate() + self:F2( { self.GroupName } ) + trigger.action.activateGroup( self:GetDCSObject() ) + return self:GetDCSObject() +end + + +--- Gets the type name of the group. +-- @param #GROUP self +-- @return #string The type name of the group. +function GROUP:GetTypeName() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupTypeName = DCSGroup:getUnit(1):getTypeName() + self:T3( GroupTypeName ) + return( GroupTypeName ) + end + + return nil +end + +--- Gets the CallSign of the first DCS Unit of the DCS Group. +-- @param #GROUP self +-- @return #string The CallSign of the first DCS Unit of the DCS Group. +function GROUP:GetCallsign() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupCallSign = DCSGroup:getUnit(1):getCallsign() + self:T3( GroupCallSign ) + return GroupCallSign + end + + return nil +end + +--- Returns the current point (Vec2 vector) of the first DCS Unit in the DCS Group. +-- @param #GROUP self +-- @return DCSTypes#Vec2 Current Vec2 point of the first DCS Unit of the DCS Group. +function GROUP:GetPointVec2() + self:F2( self.GroupName ) + + local UnitPoint = self:GetUnit(1) + UnitPoint:GetPointVec2() + local GroupPointVec2 = UnitPoint:GetPointVec2() + self:T3( GroupPointVec2 ) + return GroupPointVec2 +end + +--- Returns the current point (Vec3 vector) of the first DCS Unit in the DCS Group. +-- @return DCSTypes#Vec3 Current Vec3 point of the first DCS Unit of the DCS Group. +function GROUP:GetPointVec3() + self:F2( self.GroupName ) + + local GroupPointVec3 = self:GetUnit(1):GetPointVec3() + self:T3( GroupPointVec3 ) + return GroupPointVec3 +end + + + +-- Is Zone Functions + +--- Returns true if all units of the group are within a @{Zone}. +-- @param #GROUP self +-- @param Zone#ZONE_BASE Zone The zone to test. +-- @return #boolean Returns true if the Group is completely within the @{Zone#ZONE_BASE} +function GROUP:IsCompletelyInZone( Zone ) + self:F2( { self.GroupName, Zone } ) + + for UnitID, UnitData in pairs( self:GetUnits() ) do + local Unit = UnitData -- Unit#UNIT + if Zone:IsPointVec3InZone( Unit:GetPointVec3() ) then + else + return false + end + end + + return true +end + +--- Returns true if some units of the group are within a @{Zone}. +-- @param #GROUP self +-- @param Zone#ZONE_BASE Zone The zone to test. +-- @return #boolean Returns true if the Group is completely within the @{Zone#ZONE_BASE} +function GROUP:IsPartlyInZone( Zone ) + self:F2( { self.GroupName, Zone } ) + + for UnitID, UnitData in pairs( self:GetUnits() ) do + local Unit = UnitData -- Unit#UNIT + if Zone:IsPointVec3InZone( Unit:GetPointVec3() ) then + return true + end + end + + return false +end + +--- Returns true if none of the group units of the group are within a @{Zone}. +-- @param #GROUP self +-- @param Zone#ZONE_BASE Zone The zone to test. +-- @return #boolean Returns true if the Group is completely within the @{Zone#ZONE_BASE} +function GROUP:IsNotInZone( Zone ) + self:F2( { self.GroupName, Zone } ) + + for UnitID, UnitData in pairs( self:GetUnits() ) do + local Unit = UnitData -- Unit#UNIT + if Zone:IsPointVec3InZone( Unit:GetPointVec3() ) then + return false + end + end + + return true +end + +--- Returns if the group is of an air category. +-- If the group is a helicopter or a plane, then this method will return true, otherwise false. +-- @param #GROUP self +-- @return #boolean Air category evaluation result. +function GROUP:IsAir() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local IsAirResult = DCSGroup:getCategory() == Group.Category.AIRPLANE or DCSGroup:getCategory() == Group.Category.HELICOPTER + self:T3( IsAirResult ) + return IsAirResult + end + + return nil +end + +--- Returns if the DCS Group contains Helicopters. +-- @param #GROUP self +-- @return #boolean true if DCS Group contains Helicopters. +function GROUP:IsHelicopter() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupCategory = DCSGroup:getCategory() + self:T2( GroupCategory ) + return GroupCategory == Group.Category.HELICOPTER + end + + return nil +end + +--- Returns if the DCS Group contains AirPlanes. +-- @param #GROUP self +-- @return #boolean true if DCS Group contains AirPlanes. +function GROUP:IsAirPlane() + self:F2() + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupCategory = DCSGroup:getCategory() + self:T2( GroupCategory ) + return GroupCategory == Group.Category.AIRPLANE + end + + return nil +end + +--- Returns if the DCS Group contains Ground troops. +-- @param #GROUP self +-- @return #boolean true if DCS Group contains Ground troops. +function GROUP:IsGround() + self:F2() + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupCategory = DCSGroup:getCategory() + self:T2( GroupCategory ) + return GroupCategory == Group.Category.GROUND + end + + return nil +end + +--- Returns if the DCS Group contains Ships. +-- @param #GROUP self +-- @return #boolean true if DCS Group contains Ships. +function GROUP:IsShip() + self:F2() + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupCategory = DCSGroup:getCategory() + self:T2( GroupCategory ) + return GroupCategory == Group.Category.SHIP + end + + return nil +end + +--- Returns if all units of the group are on the ground or landed. +-- If all units of this group are on the ground, this function will return true, otherwise false. +-- @param #GROUP self +-- @return #boolean All units on the ground result. +function GROUP:AllOnGround() + self:F2() + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local AllOnGroundResult = true + + for Index, UnitData in pairs( DCSGroup:getUnits() ) do + if UnitData:inAir() then + AllOnGroundResult = false + end + end + + self:T3( AllOnGroundResult ) + return AllOnGroundResult + end + + return nil +end + +--- Returns the current maximum velocity of the group. +-- Each unit within the group gets evaluated, and the maximum velocity (= the unit which is going the fastest) is returned. +-- @param #GROUP self +-- @return #number Maximum velocity found. +function GROUP:GetMaxVelocity() + self:F2() + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local MaxVelocity = 0 + + for Index, UnitData in pairs( DCSGroup:getUnits() ) do + + local Velocity = UnitData:getVelocity() + local VelocityTotal = math.abs( Velocity.x ) + math.abs( Velocity.y ) + math.abs( Velocity.z ) + + if VelocityTotal < MaxVelocity then + MaxVelocity = VelocityTotal + end + end + + return MaxVelocity + end + + return nil +end + +--- Returns the current minimum height of the group. +-- Each unit within the group gets evaluated, and the minimum height (= the unit which is the lowest elevated) is returned. +-- @param #GROUP self +-- @return #number Minimum height found. +function GROUP:GetMinHeight() + self:F2() + +end + +--- Returns the current maximum height of the group. +-- Each unit within the group gets evaluated, and the maximum height (= the unit which is the highest elevated) is returned. +-- @param #GROUP self +-- @return #number Maximum height found. +function GROUP:GetMaxHeight() + self:F2() + +end + +--- @param Group#GROUP self +function GROUP:Respawn( Template ) + + local Vec3 = self:GetPointVec3() + --Template.x = Vec3.x + --Template.y = Vec3.z + Template.x = nil + Template.y = nil + + self:E( #Template.units ) + for UnitID, UnitData in pairs( self:GetUnits() ) do + local GroupUnit = UnitData -- Unit#UNIT + self:E( GroupUnit:GetName() ) + if GroupUnit:IsAlive() then + local GroupUnitVec3 = GroupUnit:GetPointVec3() + local GroupUnitHeading = GroupUnit:GetHeading() + Template.units[UnitID].alt = GroupUnitVec3.y + Template.units[UnitID].x = GroupUnitVec3.x + Template.units[UnitID].y = GroupUnitVec3.z + Template.units[UnitID].heading = GroupUnitHeading + self:E( { UnitID, Template.units[UnitID], Template.units[UnitID] } ) + end + end + + _DATABASE:Spawn( Template ) + +end + +function GROUP:GetTemplate() + + return _DATABASE.Templates.Groups[self:GetName()].Template + +end + +--- Return the mission template of the group. +-- @param #GROUP self +-- @return #table The MissionTemplate +function GROUP:GetTaskMission() + self:F2( self.GroupName ) + + return routines.utils.deepCopy( _DATABASE.Templates.Groups[self.GroupName].Template ) +end + +--- Return the mission route of the group. +-- @param #GROUP self +-- @return #table The mission route defined by points. +function GROUP:GetTaskRoute() + self:F2( self.GroupName ) + + return routines.utils.deepCopy( _DATABASE.Templates.Groups[self.GroupName].Template.route.points ) +end + +--- Return the route of a group by using the @{Database#DATABASE} class. +-- @param #GROUP self +-- @param #number Begin The route point from where the copy will start. The base route point is 0. +-- @param #number End The route point where the copy will end. The End point is the last point - the End point. The last point has base 0. +-- @param #boolean Randomize Randomization of the route, when true. +-- @param #number Radius When randomization is on, the randomization is within the radius. +function GROUP:CopyRoute( Begin, End, Randomize, Radius ) + self:F2( { Begin, End } ) + + local Points = {} + + -- Could be a Spawned Group + local GroupName = string.match( self:GetName(), ".*#" ) + if GroupName then + GroupName = GroupName:sub( 1, -2 ) + else + GroupName = self:GetName() + end + + self:T3( { GroupName } ) + + local Template = _DATABASE.Templates.Groups[GroupName].Template + + if Template then + if not Begin then + Begin = 0 + end + if not End then + End = 0 + end + + for TPointID = Begin + 1, #Template.route.points - End do + if Template.route.points[TPointID] then + Points[#Points+1] = routines.utils.deepCopy( Template.route.points[TPointID] ) + if Randomize then + if not Radius then + Radius = 500 + end + Points[#Points].x = Points[#Points].x + math.random( Radius * -1, Radius ) + Points[#Points].y = Points[#Points].y + math.random( Radius * -1, Radius ) + end + end + end + return Points + else + error( "Template not found for Group : " .. GroupName ) + end + + return nil +end + + +-- Message APIs + +--- Returns a message for a coalition or a client. +-- @param #GROUP self +-- @param #string Message The message text +-- @param DCSTypes#Duration Duration The duration of the message. +-- @return Message#MESSAGE +function GROUP:Message( Message, Duration ) + self:F2( { Message, Duration } ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + return MESSAGE:New( Message, Duration, self:GetCallsign() .. " (" .. self:GetTypeName() .. ")" ) + end + + return nil +end + +--- Send a message to all coalitions. +-- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. +-- @param #GROUP self +-- @param #string Message The message text +-- @param DCSTypes#Duration Duration The duration of the message. +function GROUP:MessageToAll( Message, Duration ) + self:F2( { Message, Duration } ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + self:Message( Message, Duration ):ToAll() + end + + return nil +end + +--- Send a message to the red coalition. +-- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. +-- @param #GROUP self +-- @param #string Message The message text +-- @param DCSTYpes#Duration Duration The duration of the message. +function GROUP:MessageToRed( Message, Duration ) + self:F2( { Message, Duration } ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + self:Message( Message, Duration ):ToRed() + end + + return nil +end + +--- Send a message to the blue coalition. +-- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. +-- @param #GROUP self +-- @param #string Message The message text +-- @param DCSTypes#Duration Duration The duration of the message. +function GROUP:MessageToBlue( Message, Duration ) + self:F2( { Message, Duration } ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + self:Message( Message, Duration ):ToBlue() + end + + return nil +end + +--- Send a message to a client. +-- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. +-- @param #GROUP self +-- @param #string Message The message text +-- @param DCSTypes#Duration Duration The duration of the message. +-- @param Client#CLIENT Client The client object receiving the message. +function GROUP:MessageToClient( Message, Duration, Client ) + self:F2( { Message, Duration } ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + self:Message( Message, Duration ):ToClient( Client ) + end + + return nil +end +--- This module contains the UNIT class. +-- +-- 1) @{Unit#UNIT} class, extends @{Controllable#CONTROLLABLE} +-- =========================================================== +-- The @{Unit#UNIT} class is a wrapper class to handle the DCS Unit objects: +-- +-- * Support all DCS Unit APIs. +-- * Enhance with Unit specific APIs not in the DCS Unit API set. +-- * Handle local Unit Controller. +-- * Manage the "state" of the DCS Unit. +-- +-- +-- 1.1) UNIT reference methods +-- ---------------------- +-- For each DCS Unit object alive within a running mission, a UNIT wrapper object (instance) will be created within the _@{DATABASE} object. +-- This is done at the beginning of the mission (when the mission starts), and dynamically when new DCS Unit objects are spawned (using the @{SPAWN} class). +-- +-- The UNIT class **does not contain a :New()** method, rather it provides **:Find()** methods to retrieve the object reference +-- using the DCS Unit or the DCS UnitName. +-- +-- Another thing to know is that UNIT objects do not "contain" the DCS Unit object. +-- The UNIT methods will reference the DCS Unit object by name when it is needed during API execution. +-- If the DCS Unit object does not exist or is nil, the UNIT methods will return nil and log an exception in the DCS.log file. +-- +-- The UNIT class provides the following functions to retrieve quickly the relevant UNIT instance: +-- +-- * @{#UNIT.Find}(): Find a UNIT instance from the _DATABASE object using a DCS Unit object. +-- * @{#UNIT.FindByName}(): Find a UNIT instance from the _DATABASE object using a DCS Unit name. +-- +-- IMPORTANT: ONE SHOULD NEVER SANATIZE these UNIT OBJECT REFERENCES! (make the UNIT object references nil). +-- +-- 1.2) DCS UNIT APIs +-- ------------------ +-- The DCS Unit APIs are used extensively within MOOSE. The UNIT class has for each DCS Unit API a corresponding method. +-- To be able to distinguish easily in your code the difference between a UNIT API call and a DCS Unit API call, +-- the first letter of the method is also capitalized. So, by example, the DCS Unit method @{DCSUnit#Unit.getName}() +-- is implemented in the UNIT class as @{#UNIT.GetName}(). +-- +-- 1.3) Smoke, Flare Units +-- ----------------------- +-- The UNIT class provides methods to smoke or flare units easily. +-- The @{#UNIT.SmokeBlue}(), @{#UNIT.SmokeGreen}(),@{#UNIT.SmokeOrange}(), @{#UNIT.SmokeRed}(), @{#UNIT.SmokeRed}() methods +-- will smoke the unit in the corresponding color. Note that smoking a unit is done at the current position of the DCS Unit. +-- When the DCS Unit moves for whatever reason, the smoking will still continue! +-- The @{#UNIT.FlareGreen}(), @{#UNIT.FlareRed}(), @{#UNIT.FlareWhite}(), @{#UNIT.FlareYellow}() +-- methods will fire off a flare in the air with the corresponding color. Note that a flare is a one-off shot and its effect is of very short duration. +-- +-- 1.4) Location Position, Point +-- ----------------------------- +-- The UNIT class provides methods to obtain the current point or position of the DCS Unit. +-- The @{#UNIT.GetPointVec2}(), @{#UNIT.GetPointVec3}() will obtain the current **location** of the DCS Unit in a Vec2 (2D) or a **point** in a Vec3 (3D) vector respectively. +-- If you want to obtain the complete **3D position** including oriëntation and direction vectors, consult the @{#UNIT.GetPositionVec3}() method respectively. +-- +-- 1.5) Test if alive +-- ------------------ +-- The @{#UNIT.IsAlive}(), @{#UNIT.IsActive}() methods determines if the DCS Unit is alive, meaning, it is existing and active. +-- +-- 1.6) Test for proximity +-- ----------------------- +-- The UNIT class contains methods to test the location or proximity against zones or other objects. +-- +-- ### 1.6.1) Zones +-- To test whether the Unit is within a **zone**, use the @{#UNIT.IsInZone}() or the @{#UNIT.IsNotInZone}() methods. Any zone can be tested on, but the zone must be derived from @{Zone#ZONE_BASE}. +-- +-- ### 1.6.2) Units +-- Test if another DCS Unit is within a given radius of the current DCS Unit, use the @{#UNIT.OtherUnitInRadius}() method. +-- +-- @module Unit +-- @author FlightControl + + + + + +--- The UNIT class +-- @type UNIT +-- @extends Controllable#CONTROLLABLE +-- @field #UNIT.FlareColor FlareColor +-- @field #UNIT.SmokeColor SmokeColor +UNIT = { + ClassName="UNIT", + FlareColor = { + Green = trigger.flareColor.Green, + Red = trigger.flareColor.Red, + White = trigger.flareColor.White, + Yellow = trigger.flareColor.Yellow + }, + SmokeColor = { + Green = trigger.smokeColor.Green, + Red = trigger.smokeColor.Red, + White = trigger.smokeColor.White, + Orange = trigger.smokeColor.Orange, + Blue = trigger.smokeColor.Blue + }, + } + +--- FlareColor +-- @type UNIT.FlareColor +-- @field Green +-- @field Red +-- @field White +-- @field Yellow + +--- SmokeColor +-- @type UNIT.SmokeColor +-- @field Green +-- @field Red +-- @field White +-- @field Orange +-- @field Blue + +-- Registration. + +--- Create a new UNIT from DCSUnit. +-- @param #UNIT self +-- @param #string UnitName The name of the DCS unit. +-- @return Unit#UNIT +function UNIT:Register( UnitName ) + local self = BASE:Inherit( self, CONTROLLABLE:New( UnitName ) ) + self.UnitName = UnitName + return self +end + +-- Reference methods. + +--- Finds a UNIT from the _DATABASE using a DCSUnit object. +-- @param #UNIT self +-- @param DCSUnit#Unit DCSUnit An existing DCS Unit object reference. +-- @return Unit#UNIT self +function UNIT:Find( DCSUnit ) + + local UnitName = DCSUnit:getName() + local UnitFound = _DATABASE:FindUnit( UnitName ) + return UnitFound +end + +--- Find a UNIT in the _DATABASE using the name of an existing DCS Unit. +-- @param #UNIT self +-- @param #string UnitName The Unit Name. +-- @return Unit#UNIT self +function UNIT:FindByName( UnitName ) + + local UnitFound = _DATABASE:FindUnit( UnitName ) + return UnitFound +end + + +--- @param #UNIT self +-- @return DCSUnit#Unit +function UNIT:GetDCSObject() + + local DCSUnit = Unit.getByName( self.UnitName ) + + if DCSUnit then + return DCSUnit + end + + return nil +end + + + + +--- Returns if the unit is activated. +-- @param Unit#UNIT self +-- @return #boolean true if Unit is activated. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:IsActive() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + + local UnitIsActive = DCSUnit:isActive() + return UnitIsActive + end + + return nil +end + +--- Returns the Unit's callsign - the localized string. +-- @param Unit#UNIT self +-- @return #string The Callsign of the Unit. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetCallSign() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitCallSign = DCSUnit:getCallsign() + return UnitCallSign + end + + self:E( self.ClassName .. " " .. self.UnitName .. " not found!" ) + return nil +end + + +--- Returns name of the player that control the unit or nil if the unit is controlled by A.I. +-- @param Unit#UNIT self +-- @return #string Player Name +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetPlayerName() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + + local PlayerName = DCSUnit:getPlayerName() + if PlayerName == nil then + PlayerName = "" + end + return PlayerName + end + + return nil +end + +--- Returns the unit's number in the group. +-- The number is the same number the unit has in ME. +-- It may not be changed during the mission. +-- If any unit in the group is destroyed, the numbers of another units will not be changed. +-- @param Unit#UNIT self +-- @return #number The Unit number. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetNumber() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitNumber = DCSUnit:getNumber() + return UnitNumber + end + + return nil +end + +--- Returns the unit's group if it exist and nil otherwise. +-- @param Unit#UNIT self +-- @return Group#GROUP The Group of the Unit. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetGroup() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitGroup = GROUP:Find( DCSUnit:getGroup() ) + return UnitGroup + end + + return nil +end + + +-- Need to add here functions to check if radar is on and which object etc. + +--- Returns the prefix name of the DCS Unit. A prefix name is a part of the name before a '#'-sign. +-- DCS Units spawned with the @{SPAWN} class contain a '#'-sign to indicate the end of the (base) DCS Unit name. +-- The spawn sequence number and unit number are contained within the name after the '#' sign. +-- @param Unit#UNIT self +-- @return #string The name of the DCS Unit. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetPrefix() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitPrefix = string.match( self.UnitName, ".*#" ):sub( 1, -2 ) + self:T3( UnitPrefix ) + return UnitPrefix + end + + return nil +end + +--- Returns the Unit's ammunition. +-- @param Unit#UNIT self +-- @return DCSUnit#Unit.Ammo +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetAmmo() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitAmmo = DCSUnit:getAmmo() + return UnitAmmo + end + + return nil +end + +--- Returns the unit sensors. +-- @param Unit#UNIT self +-- @return DCSUnit#Unit.Sensors +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetSensors() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitSensors = DCSUnit:getSensors() + return UnitSensors + end + + return nil +end + +-- Need to add here a function per sensortype +-- unit:hasSensors(Unit.SensorType.RADAR, Unit.RadarType.AS) + +--- Returns two values: +-- +-- * First value indicates if at least one of the unit's radar(s) is on. +-- * Second value is the object of the radar's interest. Not nil only if at least one radar of the unit is tracking a target. +-- @param Unit#UNIT self +-- @return #boolean Indicates if at least one of the unit's radar(s) is on. +-- @return DCSObject#Object The object of the radar's interest. Not nil only if at least one radar of the unit is tracking a target. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetRadar() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitRadarOn, UnitRadarObject = DCSUnit:getRadar() + return UnitRadarOn, UnitRadarObject + end + + return nil, nil +end + +--- Returns relative amount of fuel (from 0.0 to 1.0) the unit has in its internal tanks. If there are additional fuel tanks the value may be greater than 1.0. +-- @param Unit#UNIT self +-- @return #number The relative amount of fuel (from 0.0 to 1.0). +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetFuel() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitFuel = DCSUnit:getFuel() + return UnitFuel + end + + return nil +end + +--- Returns the unit's health. Dead units has health <= 1.0. +-- @param Unit#UNIT self +-- @return #number The Unit's health value. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetLife() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitLife = DCSUnit:getLife() + return UnitLife + end + + return nil +end + +--- Returns the Unit's initial health. +-- @param Unit#UNIT self +-- @return #number The Unit's initial health value. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetLife0() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitLife0 = DCSUnit:getLife0() + return UnitLife0 + end + + return nil +end + + + + +-- Is functions + +--- Returns true if the unit is within a @{Zone}. +-- @param #UNIT self +-- @param Zone#ZONE_BASE Zone The zone to test. +-- @return #boolean Returns true if the unit is within the @{Zone#ZONE_BASE} +function UNIT:IsInZone( Zone ) + self:F2( { self.UnitName, Zone } ) + + if self:IsAlive() then + local IsInZone = Zone:IsPointVec3InZone( self:GetPointVec3() ) + + self:T( { IsInZone } ) + return IsInZone + else + return false + end +end + +--- Returns true if the unit is not within a @{Zone}. +-- @param #UNIT self +-- @param Zone#ZONE_BASE Zone The zone to test. +-- @return #boolean Returns true if the unit is not within the @{Zone#ZONE_BASE} +function UNIT:IsNotInZone( Zone ) + self:F2( { self.UnitName, Zone } ) + + if self:IsAlive() then + local IsInZone = not Zone:IsPointVec3InZone( self:GetPointVec3() ) + + self:T( { IsInZone } ) + return IsInZone + else + return false + end +end + + +--- Returns true if there is an **other** DCS Unit within a radius of the current 2D point of the DCS Unit. +-- @param Unit#UNIT self +-- @param Unit#UNIT AwaitUnit The other UNIT wrapper object. +-- @param Radius The radius in meters with the DCS Unit in the centre. +-- @return true If the other DCS Unit is within the radius of the 2D point of the DCS Unit. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:OtherUnitInRadius( AwaitUnit, Radius ) + self:F2( { self.UnitName, AwaitUnit.UnitName, Radius } ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitPos = self:GetPointVec3() + local AwaitUnitPos = AwaitUnit:GetPointVec3() + + if (((UnitPos.x - AwaitUnitPos.x)^2 + (UnitPos.z - AwaitUnitPos.z)^2)^0.5 <= Radius) then + self:T3( "true" ) + return true + else + self:T3( "false" ) + return false + end + end + + return nil +end + + + +--- Signal a flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:Flare( FlareColor ) + self:F2() + trigger.action.signalFlare( self:GetPointVec3(), FlareColor , 0 ) +end + +--- Signal a white flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:FlareWhite() + self:F2() + trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.White , 0 ) +end + +--- Signal a yellow flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:FlareYellow() + self:F2() + trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.Yellow , 0 ) +end + +--- Signal a green flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:FlareGreen() + self:F2() + trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.Green , 0 ) +end + +--- Signal a red flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:FlareRed() + self:F2() + trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.Red, 0 ) +end + +--- Smoke the UNIT. +-- @param #UNIT self +function UNIT:Smoke( SmokeColor ) + self:F2() + trigger.action.smoke( self:GetPointVec3(), SmokeColor ) +end + +--- Smoke the UNIT Green. +-- @param #UNIT self +function UNIT:SmokeGreen() + self:F2() + trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Green ) +end + +--- Smoke the UNIT Red. +-- @param #UNIT self +function UNIT:SmokeRed() + self:F2() + trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Red ) +end + +--- Smoke the UNIT White. +-- @param #UNIT self +function UNIT:SmokeWhite() + self:F2() + trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.White ) +end + +--- Smoke the UNIT Orange. +-- @param #UNIT self +function UNIT:SmokeOrange() + self:F2() + trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Orange ) +end + +--- Smoke the UNIT Blue. +-- @param #UNIT self +function UNIT:SmokeBlue() + self:F2() + trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Blue ) +end + +-- Is methods + +--- Returns if the unit is of an air category. +-- If the unit is a helicopter or a plane, then this method will return true, otherwise false. +-- @param #UNIT self +-- @return #boolean Air category evaluation result. +function UNIT:IsAir() + self:F2() + + local UnitDescriptor = self.DCSUnit:getDesc() + self:T3( { UnitDescriptor.category, Unit.Category.AIRPLANE, Unit.Category.HELICOPTER } ) + + local IsAirResult = ( UnitDescriptor.category == Unit.Category.AIRPLANE ) or ( UnitDescriptor.category == Unit.Category.HELICOPTER ) + + self:T3( IsAirResult ) + return IsAirResult +end + +--- This module contains the ZONE classes, inherited from @{Zone#ZONE_BASE}. +-- There are essentially two core functions that zones accomodate: +-- +-- * Test if an object is within the zone boundaries. +-- * Provide the zone behaviour. Some zones are static, while others are moveable. +-- +-- The object classes are using the zone classes to test the zone boundaries, which can take various forms: +-- +-- * Test if completely within the zone. +-- * Test if partly within the zone (for @{Group#GROUP} objects). +-- * Test if not in the zone. +-- * Distance to the nearest intersecting point of the zone. +-- * Distance to the center of the zone. +-- * ... +-- +-- Each of these ZONE classes have a zone name, and specific parameters defining the zone type: +-- +-- * @{Zone#ZONE_BASE}: The ZONE_BASE class defining the base for all other zone classes. +-- * @{Zone#ZONE_RADIUS}: The ZONE_RADIUS class defined by a zone name, a location and a radius. +-- * @{Zone#ZONE}: The ZONE class, defined by the zone name as defined within the Mission Editor. +-- * @{Zone#ZONE_UNIT}: The ZONE_UNIT class defined by a zone around a @{Unit#UNIT} with a radius. +-- * @{Zone#ZONE_POLYGON}: The ZONE_POLYGON class defined by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. +-- +-- Each zone implements two polymorphic functions defined in @{Zone#ZONE_BASE}: +-- +-- * @{#ZONE_BASE.IsPointVec2InZone}: Returns if a location is within the zone. +-- * @{#ZONE_BASE.IsPointVec3InZone}: Returns if a point is within the zone. +-- +-- === +-- +-- 1) @{Zone#ZONE_BASE} class, extends @{Base#BASE} +-- ================================================ +-- The ZONE_BASE class defining the base for all other zone classes. +-- +-- === +-- +-- 2) @{Zone#ZONE_RADIUS} class, extends @{Zone#ZONE_BASE} +-- ======================================================= +-- The ZONE_RADIUS class defined by a zone name, a location and a radius. +-- +-- === +-- +-- 3) @{Zone#ZONE} class, extends @{Zone#ZONE_RADIUS} +-- ========================================== +-- The ZONE class, defined by the zone name as defined within the Mission Editor. +-- +-- === +-- +-- 4) @{Zone#ZONE_UNIT} class, extends @{Zone#ZONE_RADIUS} +-- ======================================================= +-- The ZONE_UNIT class defined by a zone around a @{Unit#UNIT} with a radius. +-- +-- === +-- +-- 5) @{Zone#ZONE_POLYGON} class, extends @{Zone#ZONE_BASE} +-- ======================================================== +-- The ZONE_POLYGON class defined by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. +-- +-- === +-- +-- @module Zone +-- @author FlightControl + + + + + + + + + +--- The ZONE_BASE class +-- @type ZONE_BASE +-- @field #string ZoneName Name of the zone. +-- @extends Base#BASE +ZONE_BASE = { + ClassName = "ZONE_BASE", + } + + +--- The ZONE_BASE.BoundingSquare +-- @type ZONE_BASE.BoundingSquare +-- @field DCSTypes#Distance x1 The lower x coordinate (left down) +-- @field DCSTypes#Distance y1 The lower y coordinate (left down) +-- @field DCSTypes#Distance x2 The higher x coordinate (right up) +-- @field DCSTypes#Distance y2 The higher y coordinate (right up) + + +--- ZONE_BASE constructor +-- @param #ZONE_BASE self +-- @param #string ZoneName Name of the zone. +-- @return #ZONE_BASE self +function ZONE_BASE:New( ZoneName ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( ZoneName ) + + self.ZoneName = ZoneName + + return self +end + +--- Returns if a location is within the zone. +-- @param #ZONE_BASE self +-- @param DCSTypes#Vec2 PointVec2 The location to test. +-- @return #boolean true if the location is within the zone. +function ZONE_BASE:IsPointVec2InZone( PointVec2 ) + self:F2( PointVec2 ) + + return false +end + +--- Returns if a point is within the zone. +-- @param #ZONE_BASE self +-- @param DCSTypes#Vec3 PointVec3 The point to test. +-- @return #boolean true if the point is within the zone. +function ZONE_BASE:IsPointVec3InZone( PointVec3 ) + self:F2( PointVec3 ) + + local InZone = self:IsPointVec2InZone( { x = PointVec3.x, y = PointVec3.z } ) + + return InZone +end + +--- Define a random @{DCSTypes#Vec2} within the zone. +-- @param #ZONE_BASE self +-- @return DCSTypes#Vec2 The Vec2 coordinates. +function ZONE_BASE:GetRandomVec2() + return { x = 0, y = 0 } +end + +--- Get the bounding square the zone. +-- @param #ZONE_BASE self +-- @return #ZONE_BASE.BoundingSquare The bounding square. +function ZONE_BASE:GetBoundingSquare() + return { x1 = 0, y1 = 0, x2 = 0, y2 = 0 } +end + + +--- Smokes the zone boundaries in a color. +-- @param #ZONE_BASE self +-- @param SmokeColor The smoke color. +function ZONE_BASE:SmokeZone( SmokeColor ) + self:F2( SmokeColor ) + +end + + +--- The ZONE_RADIUS class, defined by a zone name, a location and a radius. +-- @type ZONE_RADIUS +-- @field DCSTypes#Vec2 PointVec2 The current location of the zone. +-- @field DCSTypes#Distance Radius The radius of the zone. +-- @extends Zone#ZONE_BASE +ZONE_RADIUS = { + ClassName="ZONE_RADIUS", + } + +--- Constructor of ZONE_RADIUS, taking the zone name, the zone location and a radius. +-- @param #ZONE_RADIUS self +-- @param #string ZoneName Name of the zone. +-- @param DCSTypes#Vec2 PointVec2 The location of the zone. +-- @param DCSTypes#Distance Radius The radius of the zone. +-- @return #ZONE_RADIUS self +function ZONE_RADIUS:New( ZoneName, PointVec2, Radius ) + local self = BASE:Inherit( self, ZONE_BASE:New( ZoneName ) ) + self:F( { ZoneName, PointVec2, Radius } ) + + self.Radius = Radius + self.PointVec2 = PointVec2 + + return self +end + +--- Smokes the zone boundaries in a color. +-- @param #ZONE_RADIUS self +-- @param #POINT_VEC3.SmokeColor SmokeColor The smoke color. +-- @param #number Points (optional) The amount of points in the circle. +-- @return #ZONE_RADIUS self +function ZONE_RADIUS:SmokeZone( SmokeColor, Points ) + self:F2( SmokeColor ) + + local Point = {} + local PointVec2 = self:GetPointVec2() + + Points = Points and Points or 360 + + local Angle + local RadialBase = math.pi*2 + + for Angle = 0, 360, 360 / Points do + local Radial = Angle * RadialBase / 360 + Point.x = PointVec2.x + math.cos( Radial ) * self:GetRadius() + Point.y = PointVec2.y + math.sin( Radial ) * self:GetRadius() + POINT_VEC2:New( Point.x, Point.y ):Smoke( SmokeColor ) + end + + return self +end + + +--- Flares the zone boundaries in a color. +-- @param #ZONE_RADIUS self +-- @param #POINT_VEC3.FlareColor FlareColor The flare color. +-- @param #number Points (optional) The amount of points in the circle. +-- @param DCSTypes#Azimuth Azimuth (optional) Azimuth The azimuth of the flare. +-- @return #ZONE_RADIUS self +function ZONE_RADIUS:FlareZone( FlareColor, Points, Azimuth ) + self:F2( { FlareColor, Azimuth } ) + + local Point = {} + local PointVec2 = self:GetPointVec2() + + Points = Points and Points or 360 + + local Angle + local RadialBase = math.pi*2 + + for Angle = 0, 360, 360 / Points do + local Radial = Angle * RadialBase / 360 + Point.x = PointVec2.x + math.cos( Radial ) * self:GetRadius() + Point.y = PointVec2.y + math.sin( Radial ) * self:GetRadius() + POINT_VEC2:New( Point.x, Point.y ):Flare( FlareColor, Azimuth ) + end + + return self +end + +--- Returns the radius of the zone. +-- @param #ZONE_RADIUS self +-- @return DCSTypes#Distance The radius of the zone. +function ZONE_RADIUS:GetRadius() + self:F2( self.ZoneName ) + + self:T2( { self.Radius } ) + + return self.Radius +end + +--- Sets the radius of the zone. +-- @param #ZONE_RADIUS self +-- @param DCSTypes#Distance Radius The radius of the zone. +-- @return DCSTypes#Distance The radius of the zone. +function ZONE_RADIUS:SetRadius( Radius ) + self:F2( self.ZoneName ) + + self.Radius = Radius + self:T2( { self.Radius } ) + + return self.Radius +end + +--- Returns the location of the zone. +-- @param #ZONE_RADIUS self +-- @return DCSTypes#Vec2 The location of the zone. +function ZONE_RADIUS:GetPointVec2() + self:F2( self.ZoneName ) + + self:T2( { self.PointVec2 } ) + + return self.PointVec2 +end + +--- Sets the location of the zone. +-- @param #ZONE_RADIUS self +-- @param DCSTypes#Vec2 PointVec2 The new location of the zone. +-- @return DCSTypes#Vec2 The new location of the zone. +function ZONE_RADIUS:SetPointVec2( PointVec2 ) + self:F2( self.ZoneName ) + + self.PointVec2 = PointVec2 + + self:T2( { self.PointVec2 } ) + + return self.PointVec2 +end + +--- Returns the point of the zone. +-- @param #ZONE_RADIUS self +-- @param DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. +-- @return DCSTypes#Vec3 The point of the zone. +function ZONE_RADIUS:GetPointVec3( Height ) + self:F2( self.ZoneName ) + + local PointVec2 = self:GetPointVec2() + + local PointVec3 = { x = PointVec2.x, y = land.getHeight( self:GetPointVec2() ) + Height, z = PointVec2.y } + + self:T2( { PointVec3 } ) + + return PointVec3 +end + + +--- Returns if a location is within the zone. +-- @param #ZONE_RADIUS self +-- @param DCSTypes#Vec2 PointVec2 The location to test. +-- @return #boolean true if the location is within the zone. +function ZONE_RADIUS:IsPointVec2InZone( PointVec2 ) + self:F2( PointVec2 ) + + local ZonePointVec2 = self:GetPointVec2() + + if (( PointVec2.x - ZonePointVec2.x )^2 + ( PointVec2.y - ZonePointVec2.y ) ^2 ) ^ 0.5 <= self:GetRadius() then + return true + end + + return false +end + +--- Returns if a point is within the zone. +-- @param #ZONE_RADIUS self +-- @param DCSTypes#Vec3 PointVec3 The point to test. +-- @return #boolean true if the point is within the zone. +function ZONE_RADIUS:IsPointVec3InZone( PointVec3 ) + self:F2( PointVec3 ) + + local InZone = self:IsPointVec2InZone( { x = PointVec3.x, y = PointVec3.z } ) + + return InZone +end + +--- Returns a random location within the zone. +-- @param #ZONE_RADIUS self +-- @return DCSTypes#Vec2 The random location within the zone. +function ZONE_RADIUS:GetRandomVec2() + self:F( self.ZoneName ) + + local Point = {} + local PointVec2 = self:GetPointVec2() + + local angle = math.random() * math.pi*2; + Point.x = PointVec2.x + math.cos( angle ) * math.random() * self:GetRadius(); + Point.y = PointVec2.y + math.sin( angle ) * math.random() * self:GetRadius(); + + self:T( { Point } ) + + return Point +end + + + +--- The ZONE class, defined by the zone name as defined within the Mission Editor. The location and the radius are automatically collected from the mission settings. +-- @type ZONE +-- @extends Zone#ZONE_RADIUS +ZONE = { + ClassName="ZONE", + } + + +--- Constructor of ZONE, taking the zone name. +-- @param #ZONE self +-- @param #string ZoneName The name of the zone as defined within the mission editor. +-- @return #ZONE +function ZONE:New( ZoneName ) + + local Zone = trigger.misc.getZone( ZoneName ) + + if not Zone then + error( "Zone " .. ZoneName .. " does not exist." ) + return nil + end + + local self = BASE:Inherit( self, ZONE_RADIUS:New( ZoneName, { x = Zone.point.x, y = Zone.point.z }, Zone.radius ) ) + self:F( ZoneName ) + + self.Zone = Zone + + return self +end + + +--- The ZONE_UNIT class defined by a zone around a @{Unit#UNIT} with a radius. +-- @type ZONE_UNIT +-- @field Unit#UNIT ZoneUNIT +-- @extends Zone#ZONE_RADIUS +ZONE_UNIT = { + ClassName="ZONE_UNIT", + } + +--- Constructor to create a ZONE_UNIT instance, taking the zone name, a zone unit and a radius. +-- @param #ZONE_UNIT self +-- @param #string ZoneName Name of the zone. +-- @param Unit#UNIT ZoneUNIT The unit as the center of the zone. +-- @param DCSTypes#Distance Radius The radius of the zone. +-- @return #ZONE_UNIT self +function ZONE_UNIT:New( ZoneName, ZoneUNIT, Radius ) + local self = BASE:Inherit( self, ZONE_RADIUS:New( ZoneName, ZoneUNIT:GetPointVec2(), Radius ) ) + self:F( { ZoneName, ZoneUNIT:GetPointVec2(), Radius } ) + + self.ZoneUNIT = ZoneUNIT + + return self +end + + +--- Returns the current location of the @{Unit#UNIT}. +-- @param #ZONE_UNIT self +-- @return DCSTypes#Vec2 The location of the zone based on the @{Unit#UNIT}location. +function ZONE_UNIT:GetPointVec2() + self:F( self.ZoneName ) + + local ZonePointVec2 = self.ZoneUNIT:GetPointVec2() + + self:T( { ZonePointVec2 } ) + + return ZonePointVec2 +end + +-- Polygons + +--- The ZONE_POLYGON_BASE class defined by an array of @{DCSTypes#Vec2}, forming a polygon. +-- @type ZONE_POLYGON_BASE +-- @field #ZONE_POLYGON_BASE.ListVec2 Polygon The polygon defined by an array of @{DCSTypes#Vec2}. +-- @extends Zone#ZONE_BASE +ZONE_POLYGON_BASE = { + ClassName="ZONE_POLYGON_BASE", + } + +--- A points array. +-- @type ZONE_POLYGON_BASE.ListVec2 +-- @list + +--- Constructor to create a ZONE_POLYGON_BASE instance, taking the zone name and an array of @{DCSTypes#Vec2}, forming a polygon. +-- The @{Group#GROUP} waypoints define the polygon corners. The first and the last point are automatically connected. +-- @param #ZONE_POLYGON_BASE self +-- @param #string ZoneName Name of the zone. +-- @param #ZONE_POLYGON_BASE.ListVec2 PointsArray An array of @{DCSTypes#Vec2}, forming a polygon.. +-- @return #ZONE_POLYGON_BASE self +function ZONE_POLYGON_BASE:New( ZoneName, PointsArray ) + local self = BASE:Inherit( self, ZONE_BASE:New( ZoneName ) ) + self:F( { ZoneName, PointsArray } ) + + local i = 0 + + self.Polygon = {} + + for i = 1, #PointsArray do + self.Polygon[i] = {} + self.Polygon[i].x = PointsArray[i].x + self.Polygon[i].y = PointsArray[i].y + end + + return self +end + +--- Flush polygon coordinates as a table in DCS.log. +-- @param #ZONE_POLYGON_BASE self +-- @return #ZONE_POLYGON_BASE self +function ZONE_POLYGON_BASE:Flush() + self:F2() + + self:E( { Polygon = self.ZoneName, Coordinates = self.Polygon } ) + + return self +end + + +--- Smokes the zone boundaries in a color. +-- @param #ZONE_POLYGON_BASE self +-- @param #POINT_VEC3.SmokeColor SmokeColor The smoke color. +-- @return #ZONE_POLYGON_BASE self +function ZONE_POLYGON_BASE:SmokeZone( SmokeColor ) + self:F2( SmokeColor ) + + local i + local j + local Segments = 10 + + i = 1 + j = #self.Polygon + + while i <= #self.Polygon do + self:T( { i, j, self.Polygon[i], self.Polygon[j] } ) + + local DeltaX = self.Polygon[j].x - self.Polygon[i].x + local DeltaY = self.Polygon[j].y - self.Polygon[i].y + + for Segment = 0, Segments do -- We divide each line in 5 segments and smoke a point on the line. + local PointX = self.Polygon[i].x + ( Segment * DeltaX / Segments ) + local PointY = self.Polygon[i].y + ( Segment * DeltaY / Segments ) + POINT_VEC2:New( PointX, PointY ):Smoke( SmokeColor ) + end + j = i + i = i + 1 + end + + return self +end + + + + +--- Returns if a location is within the zone. +-- @param #ZONE_POLYGON_BASE self +-- @param DCSTypes#Vec2 PointVec2 The location to test. +-- @return #boolean true if the location is within the zone. +function ZONE_POLYGON_BASE:IsPointVec2InZone( PointVec2 ) + self:F2( PointVec2 ) + + local i + local j + local c = false + + i = 1 + j = #self.Polygon + + while i < #self.Polygon do + j = i + i = i + 1 + self:T( { i, j, self.Polygon[i], self.Polygon[j] } ) + if ( ( ( self.Polygon[i].y > PointVec2.y ) ~= ( self.Polygon[j].y > PointVec2.y ) ) and + ( PointVec2.x < ( self.Polygon[j].x - self.Polygon[i].x ) * ( PointVec2.y - self.Polygon[i].y ) / ( self.Polygon[j].y - self.Polygon[i].y ) + self.Polygon[i].x ) + ) then + c = not c + end + self:T2( { "c = ", c } ) + end + + self:T( { "c = ", c } ) + return c +end + +--- Define a random @{DCSTypes#Vec2} within the zone. +-- @param #ZONE_POLYGON_BASE self +-- @return DCSTypes#Vec2 The Vec2 coordinate. +function ZONE_POLYGON_BASE:GetRandomVec2() + self:F2() + + --- It is a bit tricky to find a random point within a polygon. Right now i am doing it the dirty and inefficient way... + local Vec2Found = false + local Vec2 + local BS = self:GetBoundingSquare() + + self:T2( BS ) + + while Vec2Found == false do + Vec2 = { x = math.random( BS.x1, BS.x2 ), y = math.random( BS.y1, BS.y2 ) } + self:T2( Vec2 ) + if self:IsPointVec2InZone( Vec2 ) then + Vec2Found = true + end + end + + self:T2( Vec2 ) + + return Vec2 +end + +--- Get the bounding square the zone. +-- @param #ZONE_POLYGON_BASE self +-- @return #ZONE_POLYGON_BASE.BoundingSquare The bounding square. +function ZONE_POLYGON_BASE:GetBoundingSquare() + + local x1 = self.Polygon[1].x + local y1 = self.Polygon[1].y + local x2 = self.Polygon[1].x + local y2 = self.Polygon[1].y + + for i = 2, #self.Polygon do + self:T2( { self.Polygon[i], x1, y1, x2, y2 } ) + x1 = ( x1 > self.Polygon[i].x ) and self.Polygon[i].x or x1 + x2 = ( x2 < self.Polygon[i].x ) and self.Polygon[i].x or x2 + y1 = ( y1 > self.Polygon[i].y ) and self.Polygon[i].y or y1 + y2 = ( y2 < self.Polygon[i].y ) and self.Polygon[i].y or y2 + + end + + return { x1 = x1, y1 = y1, x2 = x2, y2 = y2 } +end + + + + + +--- The ZONE_POLYGON class defined by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. +-- @type ZONE_POLYGON +-- @extends Zone#ZONE_POLYGON_BASE +ZONE_POLYGON = { + ClassName="ZONE_POLYGON", + } + +--- Constructor to create a ZONE_POLYGON instance, taking the zone name and the name of the @{Group#GROUP} defined within the Mission Editor. +-- The @{Group#GROUP} waypoints define the polygon corners. The first and the last point are automatically connected by ZONE_POLYGON. +-- @param #ZONE_POLYGON self +-- @param #string ZoneName Name of the zone. +-- @param Group#GROUP ZoneGroup The GROUP waypoints as defined within the Mission Editor define the polygon shape. +-- @return #ZONE_POLYGON self +function ZONE_POLYGON:New( ZoneName, ZoneGroup ) + + local GroupPoints = ZoneGroup:GetTaskRoute() + + local self = BASE:Inherit( self, ZONE_POLYGON_BASE:New( ZoneName, GroupPoints ) ) + self:F( { ZoneName, ZoneGroup, self.Polygon } ) + + return self +end + +--- This module contains the CLIENT class. +-- +-- 1) @{Client#CLIENT} class, extends @{Unit#UNIT} +-- =============================================== +-- Clients are those **Units** defined within the Mission Editor that have the skillset defined as __Client__ or __Player__. +-- Note that clients are NOT the same as Units, they are NOT necessarily alive. +-- The @{Client#CLIENT} class is a wrapper class to handle the DCS Unit objects that have the skillset defined as __Client__ or __Player__: +-- +-- * Wraps the DCS Unit objects with skill level set to Player or Client. +-- * Support all DCS Unit APIs. +-- * Enhance with Unit specific APIs not in the DCS Group API set. +-- * When player joins Unit, execute alive init logic. +-- * Handles messages to players. +-- * Manage the "state" of the DCS Unit. +-- +-- Clients are being used by the @{MISSION} class to follow players and register their successes. +-- +-- 1.1) CLIENT reference methods +-- ----------------------------- +-- For each DCS Unit having skill level Player or Client, a CLIENT wrapper object (instance) will be created within the _@{DATABASE} object. +-- This is done at the beginning of the mission (when the mission starts). +-- +-- The CLIENT class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference +-- using the DCS Unit or the DCS UnitName. +-- +-- Another thing to know is that CLIENT objects do not "contain" the DCS Unit object. +-- The CLIENT methods will reference the DCS Unit object by name when it is needed during API execution. +-- If the DCS Unit object does not exist or is nil, the CLIENT methods will return nil and log an exception in the DCS.log file. +-- +-- The CLIENT class provides the following functions to retrieve quickly the relevant CLIENT instance: +-- +-- * @{#CLIENT.Find}(): Find a CLIENT instance from the _DATABASE object using a DCS Unit object. +-- * @{#CLIENT.FindByName}(): Find a CLIENT instance from the _DATABASE object using a DCS Unit name. +-- +-- IMPORTANT: ONE SHOULD NEVER SANATIZE these CLIENT OBJECT REFERENCES! (make the CLIENT object references nil). +-- +-- @module Client +-- @author FlightControl + +--- The CLIENT class +-- @type CLIENT +-- @extends Unit#UNIT +CLIENT = { + ONBOARDSIDE = { + NONE = 0, + LEFT = 1, + RIGHT = 2, + BACK = 3, + FRONT = 4 + }, + ClassName = "CLIENT", + ClientName = nil, + ClientAlive = false, + ClientTransport = false, + ClientBriefingShown = false, + _Menus = {}, + _Tasks = {}, + Messages = { + } +} + + +--- Finds a CLIENT from the _DATABASE using the relevant DCS Unit. +-- @param #CLIENT self +-- @param #string ClientName Name of the DCS **Unit** as defined within the Mission Editor. +-- @param #string ClientBriefing Text that describes the briefing of the mission when a Player logs into the Client. +-- @return #CLIENT +-- @usage +-- -- Create new Clients. +-- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) +-- Mission:AddGoal( DeploySA6TroopsGoal ) +-- +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 1' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 3' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 2' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 4' ):Transport() ) +function CLIENT:Find( DCSUnit ) + local ClientName = DCSUnit:getName() + local ClientFound = _DATABASE:FindClient( ClientName ) + + if ClientFound then + ClientFound:F( ClientName ) + return ClientFound + end + + error( "CLIENT not found for: " .. ClientName ) +end + + +--- Finds a CLIENT from the _DATABASE using the relevant Client Unit Name. +-- As an optional parameter, a briefing text can be given also. +-- @param #CLIENT self +-- @param #string ClientName Name of the DCS **Unit** as defined within the Mission Editor. +-- @param #string ClientBriefing Text that describes the briefing of the mission when a Player logs into the Client. +-- @return #CLIENT +-- @usage +-- -- Create new Clients. +-- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) +-- Mission:AddGoal( DeploySA6TroopsGoal ) +-- +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 1' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 3' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 2' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 4' ):Transport() ) +function CLIENT:FindByName( ClientName, ClientBriefing ) + local ClientFound = _DATABASE:FindClient( ClientName ) + + if ClientFound then + ClientFound:F( { ClientName, ClientBriefing } ) + ClientFound:AddBriefing( ClientBriefing ) + ClientFound.MessageSwitch = true + + return ClientFound + end + + error( "CLIENT not found for: " .. ClientName ) +end + +function CLIENT:Register( ClientName ) + local self = BASE:Inherit( self, UNIT:Register( ClientName ) ) + + self:F( ClientName ) + self.ClientName = ClientName + self.MessageSwitch = true + self.ClientAlive2 = false + + --self.AliveCheckScheduler = routines.scheduleFunction( self._AliveCheckScheduler, { self }, timer.getTime() + 1, 5 ) + self.AliveCheckScheduler = SCHEDULER:New( self, self._AliveCheckScheduler, { "Client Alive " .. ClientName }, 1, 5 ) + + self:E( self ) + return self +end + + +--- Transport defines that the Client is a Transport. Transports show cargo. +-- @param #CLIENT self +-- @return #CLIENT +function CLIENT:Transport() + self:F() + + self.ClientTransport = true + return self +end + +--- AddBriefing adds a briefing to a CLIENT when a player joins a mission. +-- @param #CLIENT self +-- @param #string ClientBriefing is the text defining the Mission briefing. +-- @return #CLIENT self +function CLIENT:AddBriefing( ClientBriefing ) + self:F( ClientBriefing ) + self.ClientBriefing = ClientBriefing + self.ClientBriefingShown = false + + return self +end + +--- Show the briefing of a CLIENT. +-- @param #CLIENT self +-- @return #CLIENT self +function CLIENT:ShowBriefing() + self:F( { self.ClientName, self.ClientBriefingShown } ) + + if not self.ClientBriefingShown then + self.ClientBriefingShown = true + local Briefing = "" + if self.ClientBriefing then + Briefing = Briefing .. self.ClientBriefing + end + Briefing = Briefing .. " Press [LEFT ALT]+[B] to view the complete mission briefing." + self:Message( Briefing, 60, "Briefing" ) + end + + return self +end + +--- Show the mission briefing of a MISSION to the CLIENT. +-- @param #CLIENT self +-- @param #string MissionBriefing +-- @return #CLIENT self +function CLIENT:ShowMissionBriefing( MissionBriefing ) + self:F( { self.ClientName } ) + + if MissionBriefing then + self:Message( MissionBriefing, 60, "Mission Briefing" ) + end + + return self +end + + + +--- Resets a CLIENT. +-- @param #CLIENT self +-- @param #string ClientName Name of the Group as defined within the Mission Editor. The Group must have a Unit with the type Client. +function CLIENT:Reset( ClientName ) + self:F() + self._Menus = {} +end + +-- Is Functions + +--- Checks if the CLIENT is a multi-seated UNIT. +-- @param #CLIENT self +-- @return #boolean true if multi-seated. +function CLIENT:IsMultiSeated() + self:F( self.ClientName ) + + local ClientMultiSeatedTypes = { + ["Mi-8MT"] = "Mi-8MT", + ["UH-1H"] = "UH-1H", + ["P-51B"] = "P-51B" + } + + if self:IsAlive() then + local ClientTypeName = self:GetClientGroupUnit():GetTypeName() + if ClientMultiSeatedTypes[ClientTypeName] then + return true + end + end + + return false +end + +--- Checks for a client alive event and calls a function on a continuous basis. +-- @param #CLIENT self +-- @param #function CallBack Function. +-- @return #CLIENT +function CLIENT:Alive( CallBackFunction, ... ) + self:F() + + self.ClientCallBack = CallBackFunction + self.ClientParameters = arg + + return self +end + +--- @param #CLIENT self +function CLIENT:_AliveCheckScheduler( SchedulerName ) + self:F( { SchedulerName, self.ClientName, self.ClientAlive2, self.ClientBriefingShown, self.ClientCallBack } ) + + if self:IsAlive() then + if self.ClientAlive2 == false then + self:ShowBriefing() + if self.ClientCallBack then + self:T("Calling Callback function") + self.ClientCallBack( self, unpack( self.ClientParameters ) ) + end + self.ClientAlive2 = true + end + else + if self.ClientAlive2 == true then + self.ClientAlive2 = false + end + end + + return true +end + +--- Return the DCSGroup of a Client. +-- This function is modified to deal with a couple of bugs in DCS 1.5.3 +-- @param #CLIENT self +-- @return DCSGroup#Group +function CLIENT:GetDCSGroup() + self:F3() + +-- local ClientData = Group.getByName( self.ClientName ) +-- if ClientData and ClientData:isExist() then +-- self:T( self.ClientName .. " : group found!" ) +-- return ClientData +-- else +-- return nil +-- end + + local ClientUnit = Unit.getByName( self.ClientName ) + + local CoalitionsData = { AlivePlayersRed = coalition.getPlayers( coalition.side.RED ), AlivePlayersBlue = coalition.getPlayers( coalition.side.BLUE ) } + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + self:T3( { "CoalitionData:", CoalitionData } ) + for UnitId, UnitData in pairs( CoalitionData ) do + self:T3( { "UnitData:", UnitData } ) + if UnitData and UnitData:isExist() then + + --self:E(self.ClientName) + if ClientUnit then + local ClientGroup = ClientUnit:getGroup() + if ClientGroup then + self:T3( "ClientGroup = " .. self.ClientName ) + if ClientGroup:isExist() and UnitData:getGroup():isExist() then + if ClientGroup:getID() == UnitData:getGroup():getID() then + self:T3( "Normal logic" ) + self:T3( self.ClientName .. " : group found!" ) + self.ClientGroupID = ClientGroup:getID() + self.ClientGroupName = ClientGroup:getName() + return ClientGroup + end + else + -- Now we need to resolve the bugs in DCS 1.5 ... + -- Consult the database for the units of the Client Group. (ClientGroup:getUnits() returns nil) + self:T3( "Bug 1.5 logic" ) + local ClientGroupTemplate = _DATABASE.Templates.Units[self.ClientName].GroupTemplate + self.ClientGroupID = ClientGroupTemplate.groupId + self.ClientGroupName = _DATABASE.Templates.Units[self.ClientName].GroupName + self:T3( self.ClientName .. " : group found in bug 1.5 resolvement logic!" ) + return ClientGroup + end + -- else + -- error( "Client " .. self.ClientName .. " not found!" ) + end + else + --self:E( { "Client not found!", self.ClientName } ) + end + end + end + end + + -- For non player clients + if ClientUnit then + local ClientGroup = ClientUnit:getGroup() + if ClientGroup then + self:T3( "ClientGroup = " .. self.ClientName ) + if ClientGroup:isExist() then + self:T3( "Normal logic" ) + self:T3( self.ClientName .. " : group found!" ) + return ClientGroup + end + end + end + + self.ClientGroupID = nil + self.ClientGroupUnit = nil + + return nil +end + + +-- TODO: Check DCSTypes#Group.ID +--- Get the group ID of the client. +-- @param #CLIENT self +-- @return DCSTypes#Group.ID +function CLIENT:GetClientGroupID() + + local ClientGroup = self:GetDCSGroup() + + --self:E( self.ClientGroupID ) -- Determined in GetDCSGroup() + return self.ClientGroupID +end + + +--- Get the name of the group of the client. +-- @param #CLIENT self +-- @return #string +function CLIENT:GetClientGroupName() + + local ClientGroup = self:GetDCSGroup() + + self:T( self.ClientGroupName ) -- Determined in GetDCSGroup() + return self.ClientGroupName +end + +--- Returns the UNIT of the CLIENT. +-- @param #CLIENT self +-- @return Unit#UNIT +function CLIENT:GetClientGroupUnit() + self:F2() + + local ClientDCSUnit = Unit.getByName( self.ClientName ) + + self:T( self.ClientDCSUnit ) + if ClientDCSUnit and ClientDCSUnit:isExist() then + local ClientUnit = _DATABASE:FindUnit( self.ClientName ) + self:T2( ClientUnit ) + return ClientUnit + end +end + +--- Returns the DCSUnit of the CLIENT. +-- @param #CLIENT self +-- @return DCSTypes#Unit +function CLIENT:GetClientGroupDCSUnit() + self:F2() + + local ClientDCSUnit = Unit.getByName( self.ClientName ) + + if ClientDCSUnit and ClientDCSUnit:isExist() then + self:T2( ClientDCSUnit ) + return ClientDCSUnit + end +end + + +--- Evaluates if the CLIENT is a transport. +-- @param #CLIENT self +-- @return #boolean true is a transport. +function CLIENT:IsTransport() + self:F() + return self.ClientTransport +end + +--- Shows the @{Cargo#CARGO} contained within the CLIENT to the player as a message. +-- The @{Cargo#CARGO} is shown using the @{Message#MESSAGE} distribution system. +-- @param #CLIENT self +function CLIENT:ShowCargo() + self:F() + + local CargoMsg = "" + + for CargoName, Cargo in pairs( CARGOS ) do + if self == Cargo:IsLoadedInClient() then + CargoMsg = CargoMsg .. Cargo.CargoName .. " Type:" .. Cargo.CargoType .. " Weight: " .. Cargo.CargoWeight .. "\n" + end + end + + if CargoMsg == "" then + CargoMsg = "empty" + end + + self:Message( CargoMsg, 15, "Co-Pilot: Cargo Status", 30 ) + +end + +-- TODO (1) I urgently need to revise this. +--- A local function called by the DCS World Menu system to switch off messages. +function CLIENT.SwitchMessages( PrmTable ) + PrmTable[1].MessageSwitch = PrmTable[2] +end + +--- The main message driver for the CLIENT. +-- This function displays various messages to the Player logged into the CLIENT through the DCS World Messaging system. +-- @param #CLIENT self +-- @param #string Message is the text describing the message. +-- @param #number MessageDuration is the duration in seconds that the Message should be displayed. +-- @param #string MessageCategory is the category of the message (the title). +-- @param #number MessageInterval is the interval in seconds between the display of the @{Message#MESSAGE} when the CLIENT is in the air. +-- @param #string MessageID is the identifier of the message when displayed with intervals. +function CLIENT:Message( Message, MessageDuration, MessageCategory, MessageInterval, MessageID ) + self:F( { Message, MessageDuration, MessageCategory, MessageInterval } ) + + if not self.MenuMessages then + if self:GetClientGroupID() then + self.MenuMessages = MENU_CLIENT:New( self, 'Messages' ) + self.MenuRouteMessageOn = MENU_CLIENT_COMMAND:New( self, 'Messages On', self.MenuMessages, CLIENT.SwitchMessages, { self, true } ) + self.MenuRouteMessageOff = MENU_CLIENT_COMMAND:New( self,'Messages Off', self.MenuMessages, CLIENT.SwitchMessages, { self, false } ) + end + end + + if self.MessageSwitch == true then + if MessageCategory == nil then + MessageCategory = "Messages" + end + if MessageID ~= nil then + if self.Messages[MessageID] == nil then + self.Messages[MessageID] = {} + self.Messages[MessageID].MessageId = MessageID + self.Messages[MessageID].MessageTime = timer.getTime() + self.Messages[MessageID].MessageDuration = MessageDuration + if MessageInterval == nil then + self.Messages[MessageID].MessageInterval = 600 + else + self.Messages[MessageID].MessageInterval = MessageInterval + end + MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self ) + else + if self:GetClientGroupDCSUnit() and not self:GetClientGroupDCSUnit():inAir() then + if timer.getTime() - self.Messages[MessageID].MessageTime >= self.Messages[MessageID].MessageDuration + 10 then + MESSAGE:New( Message, MessageDuration , MessageCategory):ToClient( self ) + self.Messages[MessageID].MessageTime = timer.getTime() + end + else + if timer.getTime() - self.Messages[MessageID].MessageTime >= self.Messages[MessageID].MessageDuration + self.Messages[MessageID].MessageInterval then + MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self ) + self.Messages[MessageID].MessageTime = timer.getTime() + end + end + end + else + MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self ) + end + end +end +--- This module contains the STATIC class. +-- +-- 1) @{Static#STATIC} class, extends @{Positionable#POSITIONABLE} +-- =============================================================== +-- Statics are **Static Units** defined within the Mission Editor. +-- Note that Statics are almost the same as Units, but they don't have a controller. +-- The @{Static#STATIC} class is a wrapper class to handle the DCS Static objects: +-- +-- * Wraps the DCS Static objects. +-- * Support all DCS Static APIs. +-- * Enhance with Static specific APIs not in the DCS API set. +-- +-- 1.1) STATIC reference methods +-- ----------------------------- +-- For each DCS Static will have a STATIC wrapper object (instance) within the _@{DATABASE} object. +-- This is done at the beginning of the mission (when the mission starts). +-- +-- The STATIC class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference +-- using the Static Name. +-- +-- Another thing to know is that STATIC objects do not "contain" the DCS Static object. +-- The STATIc methods will reference the DCS Static object by name when it is needed during API execution. +-- If the DCS Static object does not exist or is nil, the STATIC methods will return nil and log an exception in the DCS.log file. +-- +-- The STATIc class provides the following functions to retrieve quickly the relevant STATIC instance: +-- +-- * @{#STATIC.FindByName}(): Find a STATIC instance from the _DATABASE object using a DCS Static name. +-- +-- IMPORTANT: ONE SHOULD NEVER SANATIZE these STATIC OBJECT REFERENCES! (make the STATIC object references nil). +-- +-- @module Static +-- @author FlightControl + + + + + + +--- The STATIC class +-- @type STATIC +-- @extends Positionable#POSITIONABLE +STATIC = { + ClassName = "STATIC", +} + + +--- Finds a STATIC from the _DATABASE using the relevant Static Name. +-- As an optional parameter, a briefing text can be given also. +-- @param #STATIC self +-- @param #string StaticName Name of the DCS **Static** as defined within the Mission Editor. +-- @return #STATIC +function STATIC:FindByName( StaticName ) + local StaticFound = _DATABASE:FindStatic( StaticName ) + + if StaticFound then + StaticFound:F( { StaticName } ) + + return StaticFound + end + + error( "STATIC not found for: " .. StaticName ) +end + +function STATIC:Register( StaticName ) + local self = BASE:Inherit( self, POSITIONABLE:New( StaticName ) ) + return self +end + + +function STATIC:GetDCSUnit() + local DCSStatic = StaticObject.getByName( self.UnitName ) + + if DCSStatic then + return DCSStatic + end + + return nil +end +--- This module contains the AIRBASE classes. +-- +-- === +-- +-- 1) @{Airbase#AIRBASE} class, extends @{Positionable#POSITIONABLE} +-- ================================================================= +-- The @{AIRBASE} class is a wrapper class to handle the DCS Airbase objects: +-- +-- * Support all DCS Airbase APIs. +-- * Enhance with Airbase specific APIs not in the DCS Airbase API set. +-- +-- +-- 1.1) AIRBASE reference methods +-- ------------------------------ +-- For each DCS Airbase object alive within a running mission, a AIRBASE wrapper object (instance) will be created within the _@{DATABASE} object. +-- This is done at the beginning of the mission (when the mission starts). +-- +-- The AIRBASE class **does not contain a :New()** method, rather it provides **:Find()** methods to retrieve the object reference +-- using the DCS Airbase or the DCS AirbaseName. +-- +-- Another thing to know is that AIRBASE objects do not "contain" the DCS Airbase object. +-- The AIRBASE methods will reference the DCS Airbase object by name when it is needed during API execution. +-- If the DCS Airbase object does not exist or is nil, the AIRBASE methods will return nil and log an exception in the DCS.log file. +-- +-- The AIRBASE class provides the following functions to retrieve quickly the relevant AIRBASE instance: +-- +-- * @{#AIRBASE.Find}(): Find a AIRBASE instance from the _DATABASE object using a DCS Airbase object. +-- * @{#AIRBASE.FindByName}(): Find a AIRBASE instance from the _DATABASE object using a DCS Airbase name. +-- +-- IMPORTANT: ONE SHOULD NEVER SANATIZE these AIRBASE OBJECT REFERENCES! (make the AIRBASE object references nil). +-- +-- 1.2) DCS AIRBASE APIs +-- --------------------- +-- The DCS Airbase APIs are used extensively within MOOSE. The AIRBASE class has for each DCS Airbase API a corresponding method. +-- To be able to distinguish easily in your code the difference between a AIRBASE API call and a DCS Airbase API call, +-- the first letter of the method is also capitalized. So, by example, the DCS Airbase method @{DCSAirbase#Airbase.getName}() +-- is implemented in the AIRBASE class as @{#AIRBASE.GetName}(). +-- +-- More functions will be added +-- ---------------------------- +-- During the MOOSE development, more functions will be added. +-- +-- @module Airbase +-- @author FlightControl + + + + + +--- The AIRBASE class +-- @type AIRBASE +-- @extends Positionable#POSITIONABLE +AIRBASE = { + ClassName="AIRBASE", + CategoryName = { + [Airbase.Category.AIRDROME] = "Airdrome", + [Airbase.Category.HELIPAD] = "Helipad", + [Airbase.Category.SHIP] = "Ship", + }, + } + +-- Registration. + +--- Create a new AIRBASE from DCSAirbase. +-- @param #AIRBASE self +-- @param #string AirbaseName The name of the airbase. +-- @return Airbase#AIRBASE +function AIRBASE:Register( AirbaseName ) + + local self = BASE:Inherit( self, POSITIONABLE:New( AirbaseName ) ) + self.AirbaseName = AirbaseName + return self +end + +-- Reference methods. + +--- Finds a AIRBASE from the _DATABASE using a DCSAirbase object. +-- @param #AIRBASE self +-- @param DCSAirbase#Airbase DCSAirbase An existing DCS Airbase object reference. +-- @return Airbase#AIRBASE self +function AIRBASE:Find( DCSAirbase ) + + local AirbaseName = DCSAirbase:getName() + local AirbaseFound = _DATABASE:FindAirbase( AirbaseName ) + return AirbaseFound +end + +--- Find a AIRBASE in the _DATABASE using the name of an existing DCS Airbase. +-- @param #AIRBASE self +-- @param #string AirbaseName The Airbase Name. +-- @return Airbase#AIRBASE self +function AIRBASE:FindByName( AirbaseName ) + + local AirbaseFound = _DATABASE:FindAirbase( AirbaseName ) + return AirbaseFound +end + +function AIRBASE:GetDCSAirbase() + local DCSAirbase = Airbase.getByName( self.AirbaseName ) + + if DCSAirbase then + return DCSAirbase + end + + return nil +end + +--- Returns coalition of the Airbase. +-- @param Airbase#AIRBASE self +-- @return DCSCoalitionObject#coalition.side The side of the coalition. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetCoalition() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseCoalition = DCSAirbase:getCoalition() + self:T3( AirbaseCoalition ) + return AirbaseCoalition + end + + return nil +end + +--- Returns country of the Airbase. +-- @param Airbase#AIRBASE self +-- @return DCScountry#country.id The country identifier. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetCountry() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseCountry = DCSAirbase:getCountry() + self:T3( AirbaseCountry ) + return AirbaseCountry + end + + return nil +end + + +--- Returns DCS Airbase object name. +-- The function provides access to non-activated units too. +-- @param Airbase#AIRBASE self +-- @return #string The name of the DCS Airbase. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetName() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseName = self.AirbaseName + return AirbaseName + end + + return nil +end + + +--- Returns if the airbase is alive. +-- @param Airbase#AIRBASE self +-- @return #boolean true if Airbase is alive. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:IsAlive() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseIsAlive = DCSAirbase:isExist() + return AirbaseIsAlive + end + + return false +end + +--- Returns the unit's unique identifier. +-- @param Airbase#AIRBASE self +-- @return DCSAirbase#Airbase.ID Airbase ID +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetID() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseID = DCSAirbase:getID() + return AirbaseID + end + + return nil +end + +--- Returns the Airbase's callsign - the localized string. +-- @param Airbase#AIRBASE self +-- @return #string The Callsign of the Airbase. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetCallSign() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseCallSign = DCSAirbase:getCallsign() + return AirbaseCallSign + end + + return nil +end + + + +--- Returns unit descriptor. Descriptor type depends on unit category. +-- @param Airbase#AIRBASE self +-- @return DCSAirbase#Airbase.Desc The Airbase descriptor. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetDesc() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseDesc = DCSAirbase:getDesc() + return AirbaseDesc + end + + return nil +end + + +--- Returns the type name of the DCS Airbase. +-- @param Airbase#AIRBASE self +-- @return #string The type name of the DCS Airbase. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetTypeName() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseTypeName = DCSAirbase:getTypeName() + self:T3( AirbaseTypeName ) + return AirbaseTypeName + end + + return nil +end + + +--- Returns the @{DCSTypes#Vec2} vector indicating the point in 2D of the DCS Airbase within the mission. +-- @param Airbase#AIRBASE self +-- @return DCSTypes#Vec2 The 2D point vector of the DCS Airbase. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetPointVec2() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbasePointVec3 = DCSAirbase:getPosition().p + + local AirbasePointVec2 = {} + AirbasePointVec2.x = AirbasePointVec3.x + AirbasePointVec2.y = AirbasePointVec3.z + + self:T3( AirbasePointVec2 ) + return AirbasePointVec2 + end + + return nil +end + +--- Returns the DCS Airbase category as defined within the DCS Airbase Descriptor. +-- @param Airbase#AIRBASE self +-- @return DCSAirbase#Airbase.Category The DCS Airbase Category +function AIRBASE:GetCategory() + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseCategory = self:GetDesc().category + return AirbaseCategory + end + + return nil +end + + +--- Returns the DCS Airbase category name as defined within the DCS Airbase Descriptor. +-- @param Airbase#AIRBASE self +-- @return #string The DCS Airbase Category Name +function AIRBASE:GetCategoryName() + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseCategoryName = self.CategoryName[ self:GetDesc().category ] + return AirbaseCategoryName + end + + return nil +end + + +--- This module contains the DATABASE class, managing the database of mission objects. +-- +-- ==== +-- +-- 1) @{Database#DATABASE} class, extends @{Base#BASE} +-- =================================================== +-- Mission designers can use the DATABASE class to refer to: +-- +-- * UNITS +-- * GROUPS +-- * CLIENTS +-- * AIRPORTS +-- * PLAYERSJOINED +-- * PLAYERS +-- +-- On top, for internal MOOSE administration purposes, the DATBASE administers the Unit and Group TEMPLATES as defined within the Mission Editor. +-- +-- Moose will automatically create one instance of the DATABASE class into the **global** object _DATABASE. +-- Moose refers to _DATABASE within the framework extensively, but you can also refer to the _DATABASE object within your missions if required. +-- +-- 1.1) DATABASE iterators +-- ----------------------- +-- You can iterate the database with the available iterator methods. +-- The iterator methods will walk the DATABASE set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the DATABASE: +-- +-- * @{#DATABASE.ForEachUnit}: Calls a function for each @{UNIT} it finds within the DATABASE. +-- * @{#DATABASE.ForEachGroup}: Calls a function for each @{GROUP} it finds within the DATABASE. +-- * @{#DATABASE.ForEachPlayer}: Calls a function for each alive player it finds within the DATABASE. +-- * @{#DATABASE.ForEachPlayerJoined}: Calls a function for each joined player it finds within the DATABASE. +-- * @{#DATABASE.ForEachClient}: Calls a function for each @{CLIENT} it finds within the DATABASE. +-- * @{#DATABASE.ForEachClientAlive}: Calls a function for each alive @{CLIENT} it finds within the DATABASE. +-- +-- === +-- +-- @module Database +-- @author FlightControl + +--- DATABASE class +-- @type DATABASE +-- @extends Base#BASE +DATABASE = { + ClassName = "DATABASE", + Templates = { + Units = {}, + Groups = {}, + ClientsByName = {}, + ClientsByID = {}, + }, + UNITS = {}, + STATICS = {}, + GROUPS = {}, + PLAYERS = {}, + PLAYERSJOINED = {}, + CLIENTS = {}, + AIRBASES = {}, + NavPoints = {}, +} + +local _DATABASECoalition = + { + [1] = "Red", + [2] = "Blue", + } + +local _DATABASECategory = + { + ["plane"] = Unit.Category.AIRPLANE, + ["helicopter"] = Unit.Category.HELICOPTER, + ["vehicle"] = Unit.Category.GROUND_UNIT, + ["ship"] = Unit.Category.SHIP, + ["static"] = Unit.Category.STRUCTURE, + } + + +--- Creates a new DATABASE object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. +-- @param #DATABASE self +-- @return #DATABASE +-- @usage +-- -- Define a new DATABASE Object. This DBObject will contain a reference to all Group and Unit Templates defined within the ME and the DCSRTE. +-- DBObject = DATABASE:New() +function DATABASE:New() + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + _EVENTDISPATCHER:OnBirth( self._EventOnBirth, self ) + _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) + _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) + + + -- Follow alive players and clients + _EVENTDISPATCHER:OnPlayerEnterUnit( self._EventOnPlayerEnterUnit, self ) + _EVENTDISPATCHER:OnPlayerLeaveUnit( self._EventOnPlayerLeaveUnit, self ) + + self:_RegisterTemplates() + self:_RegisterGroupsAndUnits() + self:_RegisterClients() + self:_RegisterStatics() + self:_RegisterPlayers() + self:_RegisterAirbases() + + return self +end + +--- Finds a Unit based on the Unit Name. +-- @param #DATABASE self +-- @param #string UnitName +-- @return Unit#UNIT The found Unit. +function DATABASE:FindUnit( UnitName ) + + local UnitFound = self.UNITS[UnitName] + return UnitFound +end + + +--- Adds a Unit based on the Unit Name in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddUnit( DCSUnitName ) + + if not self.UNITS[DCSUnitName] then + local UnitRegister = UNIT:Register( DCSUnitName ) + self:E( UnitRegister.UnitName ) + self.UNITS[DCSUnitName] = UNIT:Register( DCSUnitName ) + end + + return self.UNITS[DCSUnitName] +end + + +--- Deletes a Unit from the DATABASE based on the Unit Name. +-- @param #DATABASE self +function DATABASE:DeleteUnit( DCSUnitName ) + + --self.UNITS[DCSUnitName] = nil +end + +--- Adds a Static based on the Static Name in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddStatic( DCSStaticName ) + + if not self.STATICS[DCSStaticName] then + self.STATICS[DCSStaticName] = STATIC:Register( DCSStaticName ) + end +end + + +--- Deletes a Static from the DATABASE based on the Static Name. +-- @param #DATABASE self +function DATABASE:DeleteStatic( DCSStaticName ) + + --self.STATICS[DCSStaticName] = nil +end + +--- Finds a STATIC based on the StaticName. +-- @param #DATABASE self +-- @param #string StaticName +-- @return Static#STATIC The found STATIC. +function DATABASE:FindStatic( StaticName ) + + local StaticFound = self.STATICS[StaticName] + return StaticFound +end + +--- Adds a Airbase based on the Airbase Name in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddAirbase( DCSAirbaseName ) + + if not self.AIRBASES[DCSAirbaseName] then + self.AIRBASES[DCSAirbaseName] = AIRBASE:Register( DCSAirbaseName ) + end +end + + +--- Deletes a Airbase from the DATABASE based on the Airbase Name. +-- @param #DATABASE self +function DATABASE:DeleteAirbase( DCSAirbaseName ) + + --self.AIRBASES[DCSAirbaseName] = nil +end + +--- Finds a AIRBASE based on the AirbaseName. +-- @param #DATABASE self +-- @param #string AirbaseName +-- @return Airbase#AIRBASE The found AIRBASE. +function DATABASE:FindAirbase( AirbaseName ) + + local AirbaseFound = self.AIRBASES[AirbaseName] + return AirbaseFound +end + + +--- Finds a CLIENT based on the ClientName. +-- @param #DATABASE self +-- @param #string ClientName +-- @return Client#CLIENT The found CLIENT. +function DATABASE:FindClient( ClientName ) + + local ClientFound = self.CLIENTS[ClientName] + return ClientFound +end + + +--- Adds a CLIENT based on the ClientName in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddClient( ClientName ) + + if not self.CLIENTS[ClientName] then + self.CLIENTS[ClientName] = CLIENT:Register( ClientName ) + end + + return self.CLIENTS[ClientName] +end + + +--- Finds a GROUP based on the GroupName. +-- @param #DATABASE self +-- @param #string GroupName +-- @return Group#GROUP The found GROUP. +function DATABASE:FindGroup( GroupName ) + + local GroupFound = self.GROUPS[GroupName] + return GroupFound +end + + +--- Adds a GROUP based on the GroupName in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddGroup( GroupName ) + + if not self.GROUPS[GroupName] then + self.GROUPS[GroupName] = GROUP:Register( GroupName ) + end + + return self.GROUPS[GroupName] +end + +--- Adds a player based on the Player Name in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddPlayer( UnitName, PlayerName ) + + if PlayerName then + self:E( { "Add player for unit:", UnitName, PlayerName } ) + self.PLAYERS[PlayerName] = self:FindUnit( UnitName ) + self.PLAYERSJOINED[PlayerName] = PlayerName + end +end + +--- Deletes a player from the DATABASE based on the Player Name. +-- @param #DATABASE self +function DATABASE:DeletePlayer( PlayerName ) + + if PlayerName then + self:E( { "Clean player:", PlayerName } ) + self.PLAYERS[PlayerName] = nil + end +end + + +--- Instantiate new Groups within the DCSRTE. +-- This method expects EXACTLY the same structure as a structure within the ME, and needs 2 additional fields defined: +-- SpawnCountryID, SpawnCategoryID +-- This method is used by the SPAWN class. +-- @param #DATABASE self +-- @param #table SpawnTemplate +-- @return #DATABASE self +function DATABASE:Spawn( SpawnTemplate ) + self:F2( SpawnTemplate.name ) + + self:T2( { SpawnTemplate.SpawnCountryID, SpawnTemplate.SpawnCategoryID } ) + + -- Copy the spawn variables of the template in temporary storage, nullify, and restore the spawn variables. + local SpawnCoalitionID = SpawnTemplate.SpawnCoalitionID + local SpawnCountryID = SpawnTemplate.SpawnCountryID + local SpawnCategoryID = SpawnTemplate.SpawnCategoryID + + -- Nullify + SpawnTemplate.SpawnCoalitionID = nil + SpawnTemplate.SpawnCountryID = nil + SpawnTemplate.SpawnCategoryID = nil + + self:_RegisterTemplate( SpawnTemplate, SpawnCoalitionID, SpawnCategoryID, SpawnCountryID ) + + self:T3( SpawnTemplate ) + coalition.addGroup( SpawnCountryID, SpawnCategoryID, SpawnTemplate ) + + -- Restore + SpawnTemplate.SpawnCoalitionID = SpawnCoalitionID + SpawnTemplate.SpawnCountryID = SpawnCountryID + SpawnTemplate.SpawnCategoryID = SpawnCategoryID + + local SpawnGroup = self:AddGroup( SpawnTemplate.name ) + return SpawnGroup +end + +--- Set a status to a Group within the Database, this to check crossing events for example. +function DATABASE:SetStatusGroup( GroupName, Status ) + self:F2( Status ) + + self.Templates.Groups[GroupName].Status = Status +end + +--- Get a status to a Group within the Database, this to check crossing events for example. +function DATABASE:GetStatusGroup( GroupName ) + self:F2( Status ) + + if self.Templates.Groups[GroupName] then + return self.Templates.Groups[GroupName].Status + else + return "" + end +end + +--- Private method that registers new Group Templates within the DATABASE Object. +-- @param #DATABASE self +-- @param #table GroupTemplate +-- @return #DATABASE self +function DATABASE:_RegisterTemplate( GroupTemplate, CoalitionID, CategoryID, CountryID ) + + local GroupTemplateName = env.getValueDictByKey(GroupTemplate.name) + + local TraceTable = {} + + if not self.Templates.Groups[GroupTemplateName] then + self.Templates.Groups[GroupTemplateName] = {} + self.Templates.Groups[GroupTemplateName].Status = nil + end + + -- Delete the spans from the route, it is not needed and takes memory. + if GroupTemplate.route and GroupTemplate.route.spans then + GroupTemplate.route.spans = nil + end + + self.Templates.Groups[GroupTemplateName].GroupName = GroupTemplateName + self.Templates.Groups[GroupTemplateName].Template = GroupTemplate + self.Templates.Groups[GroupTemplateName].groupId = GroupTemplate.groupId + self.Templates.Groups[GroupTemplateName].UnitCount = #GroupTemplate.units + self.Templates.Groups[GroupTemplateName].Units = GroupTemplate.units + self.Templates.Groups[GroupTemplateName].CategoryID = CategoryID + self.Templates.Groups[GroupTemplateName].CoalitionID = CoalitionID + self.Templates.Groups[GroupTemplateName].CountryID = CountryID + + + TraceTable[#TraceTable+1] = "Group" + TraceTable[#TraceTable+1] = self.Templates.Groups[GroupTemplateName].GroupName + + TraceTable[#TraceTable+1] = "Coalition" + TraceTable[#TraceTable+1] = self.Templates.Groups[GroupTemplateName].CoalitionID + TraceTable[#TraceTable+1] = "Category" + TraceTable[#TraceTable+1] = self.Templates.Groups[GroupTemplateName].CategoryID + TraceTable[#TraceTable+1] = "Country" + TraceTable[#TraceTable+1] = self.Templates.Groups[GroupTemplateName].CountryID + + TraceTable[#TraceTable+1] = "Units" + + for unit_num, UnitTemplate in pairs( GroupTemplate.units ) do + + local UnitTemplateName = env.getValueDictByKey(UnitTemplate.name) + self.Templates.Units[UnitTemplateName] = {} + self.Templates.Units[UnitTemplateName].UnitName = UnitTemplateName + self.Templates.Units[UnitTemplateName].Template = UnitTemplate + self.Templates.Units[UnitTemplateName].GroupName = GroupTemplateName + self.Templates.Units[UnitTemplateName].GroupTemplate = GroupTemplate + self.Templates.Units[UnitTemplateName].GroupId = GroupTemplate.groupId + self.Templates.Units[UnitTemplateName].CategoryID = CategoryID + self.Templates.Units[UnitTemplateName].CoalitionID = CoalitionID + self.Templates.Units[UnitTemplateName].CountryID = CountryID + + if UnitTemplate.skill and (UnitTemplate.skill == "Client" or UnitTemplate.skill == "Player") then + self.Templates.ClientsByName[UnitTemplateName] = UnitTemplate + self.Templates.ClientsByName[UnitTemplateName].CategoryID = CategoryID + self.Templates.ClientsByName[UnitTemplateName].CoalitionID = CoalitionID + self.Templates.ClientsByName[UnitTemplateName].CountryID = CountryID + self.Templates.ClientsByID[UnitTemplate.unitId] = UnitTemplate + end + + TraceTable[#TraceTable+1] = self.Templates.Units[UnitTemplateName].UnitName + end + + self:E( TraceTable ) +end + +function DATABASE:GetCoalitionFromClientTemplate( ClientName ) + return self.Templates.ClientsByName[ClientName].CoalitionID +end + +function DATABASE:GetCategoryFromClientTemplate( ClientName ) + return self.Templates.ClientsByName[ClientName].CategoryID +end + +function DATABASE:GetCountryFromClientTemplate( ClientName ) + return self.Templates.ClientsByName[ClientName].CountryID +end + +--- Airbase + +function DATABASE:GetCoalitionFromAirbase( AirbaseName ) + return self.AIRBASES[AirbaseName]:GetCoalition() +end + +function DATABASE:GetCategoryFromAirbase( AirbaseName ) + return self.AIRBASES[AirbaseName]:GetCategory() +end + + + +--- Private method that registers all alive players in the mission. +-- @param #DATABASE self +-- @return #DATABASE self +function DATABASE:_RegisterPlayers() + + local CoalitionsData = { AlivePlayersRed = coalition.getPlayers( coalition.side.RED ), AlivePlayersBlue = coalition.getPlayers( coalition.side.BLUE ) } + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + for UnitId, UnitData in pairs( CoalitionData ) do + self:T3( { "UnitData:", UnitData } ) + if UnitData and UnitData:isExist() then + local UnitName = UnitData:getName() + local PlayerName = UnitData:getPlayerName() + if not self.PLAYERS[PlayerName] then + self:E( { "Add player for unit:", UnitName, PlayerName } ) + self:AddPlayer( UnitName, PlayerName ) + end + end + end + end + + return self +end + + +--- Private method that registers all Groups and Units within in the mission. +-- @param #DATABASE self +-- @return #DATABASE self +function DATABASE:_RegisterGroupsAndUnits() + + local CoalitionsData = { GroupsRed = coalition.getGroups( coalition.side.RED ), GroupsBlue = coalition.getGroups( coalition.side.BLUE ) } + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + for DCSGroupId, DCSGroup in pairs( CoalitionData ) do + + if DCSGroup:isExist() then + local DCSGroupName = DCSGroup:getName() + + self:E( { "Register Group:", DCSGroupName } ) + self:AddGroup( DCSGroupName ) + + for DCSUnitId, DCSUnit in pairs( DCSGroup:getUnits() ) do + + local DCSUnitName = DCSUnit:getName() + self:E( { "Register Unit:", DCSUnitName } ) + self:AddUnit( DCSUnitName ) + end + else + self:E( { "Group does not exist: ", DCSGroup } ) + end + + end + end + + return self +end + +--- Private method that registers all Units of skill Client or Player within in the mission. +-- @param #DATABASE self +-- @return #DATABASE self +function DATABASE:_RegisterClients() + + for ClientName, ClientTemplate in pairs( self.Templates.ClientsByName ) do + self:E( { "Register Client:", ClientName } ) + self:AddClient( ClientName ) + end + + return self +end + +--- @param #DATABASE self +function DATABASE:_RegisterStatics() + + local CoalitionsData = { GroupsRed = coalition.getStaticObjects( coalition.side.RED ), GroupsBlue = coalition.getStaticObjects( coalition.side.BLUE ) } + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + for DCSStaticId, DCSStatic in pairs( CoalitionData ) do + + if DCSStatic:isExist() then + local DCSStaticName = DCSStatic:getName() + + self:E( { "Register Static:", DCSStaticName } ) + self:AddStatic( DCSStaticName ) + else + self:E( { "Static does not exist: ", DCSStatic } ) + end + end + end + + return self +end + +--- @param #DATABASE self +function DATABASE:_RegisterAirbases() + + local CoalitionsData = { AirbasesRed = coalition.getAirbases( coalition.side.RED ), AirbasesBlue = coalition.getAirbases( coalition.side.BLUE ), AirbasesNeutral = coalition.getAirbases( coalition.side.NEUTRAL ) } + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + for DCSAirbaseId, DCSAirbase in pairs( CoalitionData ) do + + local DCSAirbaseName = DCSAirbase:getName() + + self:E( { "Register Airbase:", DCSAirbaseName } ) + self:AddAirbase( DCSAirbaseName ) + end + end + + return self +end + + +--- Events + +--- Handles the OnBirth event for the alive units set. +-- @param #DATABASE self +-- @param Event#EVENTDATA Event +function DATABASE:_EventOnBirth( Event ) + self:F2( { Event } ) + + if Event.IniDCSUnit then + self:AddUnit( Event.IniDCSUnitName ) + self:AddGroup( Event.IniDCSGroupName ) + self:_EventOnPlayerEnterUnit( Event ) + end +end + + +--- Handles the OnDead or OnCrash event for alive units set. +-- @param #DATABASE self +-- @param Event#EVENTDATA Event +function DATABASE:_EventOnDeadOrCrash( Event ) + self:F2( { Event } ) + + if Event.IniDCSUnit then + if self.UNITS[Event.IniDCSUnitName] then + self:DeleteUnit( Event.IniDCSUnitName ) + -- add logic to correctly remove a group once all units are destroyed... + end + end +end + + +--- Handles the OnPlayerEnterUnit event to fill the active players table (with the unit filter applied). +-- @param #DATABASE self +-- @param Event#EVENTDATA Event +function DATABASE:_EventOnPlayerEnterUnit( Event ) + self:F2( { Event } ) + + if Event.IniUnit then + local PlayerName = Event.IniUnit:GetPlayerName() + if not self.PLAYERS[PlayerName] then + self:AddPlayer( Event.IniUnitName, PlayerName ) + end + end +end + + +--- Handles the OnPlayerLeaveUnit event to clean the active players table. +-- @param #DATABASE self +-- @param Event#EVENTDATA Event +function DATABASE:_EventOnPlayerLeaveUnit( Event ) + self:F2( { Event } ) + + if Event.IniUnit then + local PlayerName = Event.IniUnit:GetPlayerName() + if self.PLAYERS[PlayerName] then + self:DeletePlayer( PlayerName ) + end + end +end + +--- Iterators + +--- Iterate the DATABASE and call an iterator function for the given set, providing the Object for each element within the set and optional parameters. +-- @param #DATABASE self +-- @param #function IteratorFunction The function that will be called when there is an alive player in the database. +-- @return #DATABASE self +function DATABASE:ForEach( IteratorFunction, FinalizeFunction, arg, Set ) + self:F2( arg ) + + local function CoRoutine() + local Count = 0 + for ObjectID, Object in pairs( Set ) do + self:T2( Object ) + IteratorFunction( Object, unpack( arg ) ) + Count = Count + 1 +-- if Count % 100 == 0 then +-- coroutine.yield( false ) +-- end + end + return true + end + +-- local co = coroutine.create( CoRoutine ) + local co = CoRoutine + + local function Schedule() + +-- local status, res = coroutine.resume( co ) + local status, res = co() + self:T3( { status, res } ) + + if status == false then + error( res ) + end + if res == false then + return true -- resume next time the loop + end + if FinalizeFunction then + FinalizeFunction( unpack( arg ) ) + end + return false + end + + local Scheduler = SCHEDULER:New( self, Schedule, {}, 0.001, 0.001, 0 ) + + return self +end + + +--- Iterate the DATABASE and call an iterator function for each **alive** UNIT, providing the UNIT and optional parameters. +-- @param #DATABASE self +-- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the database. The function needs to accept a UNIT parameter. +-- @return #DATABASE self +function DATABASE:ForEachUnit( IteratorFunction, FinalizeFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, FinalizeFunction, arg, self.UNITS ) + + return self +end + +--- Iterate the DATABASE and call an iterator function for each **alive** GROUP, providing the GROUP and optional parameters. +-- @param #DATABASE self +-- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the database. The function needs to accept a GROUP parameter. +-- @return #DATABASE self +function DATABASE:ForEachGroup( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.GROUPS ) + + return self +end + + +--- Iterate the DATABASE and call an iterator function for each **ALIVE** player, providing the player name and optional parameters. +-- @param #DATABASE self +-- @param #function IteratorFunction The function that will be called when there is an player in the database. The function needs to accept the player name. +-- @return #DATABASE self +function DATABASE:ForEachPlayer( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.PLAYERS ) + + return self +end + + +--- Iterate the DATABASE and call an iterator function for each player who has joined the mission, providing the Unit of the player and optional parameters. +-- @param #DATABASE self +-- @param #function IteratorFunction The function that will be called when there is was a player in the database. The function needs to accept a UNIT parameter. +-- @return #DATABASE self +function DATABASE:ForEachPlayerJoined( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.PLAYERSJOINED ) + + return self +end + +--- Iterate the DATABASE and call an iterator function for each CLIENT, providing the CLIENT to the function and optional parameters. +-- @param #DATABASE self +-- @param #function IteratorFunction The function that will be called when there is an alive player in the database. The function needs to accept a CLIENT parameter. +-- @return #DATABASE self +function DATABASE:ForEachClient( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.CLIENTS ) + + return self +end + + +function DATABASE:_RegisterTemplates() + self:F2() + + self.Navpoints = {} + self.UNITS = {} + --Build routines.db.units and self.Navpoints + for CoalitionName, coa_data in pairs(env.mission.coalition) do + + if (CoalitionName == 'red' or CoalitionName == 'blue') and type(coa_data) == 'table' then + --self.Units[coa_name] = {} + + ---------------------------------------------- + -- build nav points DB + self.Navpoints[CoalitionName] = {} + if coa_data.nav_points then --navpoints + for nav_ind, nav_data in pairs(coa_data.nav_points) do + + if type(nav_data) == 'table' then + self.Navpoints[CoalitionName][nav_ind] = routines.utils.deepCopy(nav_data) + + self.Navpoints[CoalitionName][nav_ind]['name'] = nav_data.callsignStr -- name is a little bit more self-explanatory. + self.Navpoints[CoalitionName][nav_ind]['point'] = {} -- point is used by SSE, support it. + self.Navpoints[CoalitionName][nav_ind]['point']['x'] = nav_data.x + self.Navpoints[CoalitionName][nav_ind]['point']['y'] = 0 + self.Navpoints[CoalitionName][nav_ind]['point']['z'] = nav_data.y + end + end + end + ------------------------------------------------- + if coa_data.country then --there is a country table + for cntry_id, cntry_data in pairs(coa_data.country) do + + local CountryName = string.upper(cntry_data.name) + --self.Units[coa_name][countryName] = {} + --self.Units[coa_name][countryName]["countryId"] = cntry_data.id + + if type(cntry_data) == 'table' then --just making sure + + for obj_type_name, obj_type_data in pairs(cntry_data) do + + if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then --should be an unncessary check + + local CategoryName = obj_type_name + + if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then --there's a group! + + --self.Units[coa_name][countryName][category] = {} + + for group_num, GroupTemplate in pairs(obj_type_data.group) do + + if GroupTemplate and GroupTemplate.units and type(GroupTemplate.units) == 'table' then --making sure again- this is a valid group + self:_RegisterTemplate( + GroupTemplate, + coalition.side[string.upper(CoalitionName)], + _DATABASECategory[string.lower(CategoryName)], + country.id[string.upper(CountryName)] + ) + end --if GroupTemplate and GroupTemplate.units then + end --for group_num, GroupTemplate in pairs(obj_type_data.group) do + end --if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then + end --if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then + end --for obj_type_name, obj_type_data in pairs(cntry_data) do + end --if type(cntry_data) == 'table' then + end --for cntry_id, cntry_data in pairs(coa_data.country) do + end --if coa_data.country then --there is a country table + end --if coa_name == 'red' or coa_name == 'blue' and type(coa_data) == 'table' then + end --for coa_name, coa_data in pairs(mission.coalition) do + + return self +end + + + + +--- This module contains the SET classes. +-- +-- === +-- +-- 1) @{Set#SET_BASE} class, extends @{Base#BASE} +-- ============================================== +-- The @{Set#SET_BASE} class defines the core functions that define a collection of objects. +-- A SET provides iterators to iterate the SET, but will **temporarily** yield the ForEach interator loop at defined **"intervals"** to the mail simulator loop. +-- In this way, large loops can be done while not blocking the simulator main processing loop. +-- The default **"yield interval"** is after 10 objects processed. +-- The default **"time interval"** is after 0.001 seconds. +-- +-- 1.1) Add or remove objects from the SET +-- --------------------------------------- +-- Some key core functions are @{Set#SET_BASE.Add} and @{Set#SET_BASE.Remove} to add or remove objects from the SET in your logic. +-- +-- 1.2) Define the SET iterator **"yield interval"** and the **"time interval"** +-- ----------------------------------------------------------------------------- +-- Modify the iterator intervals with the @{Set#SET_BASE.SetInteratorIntervals} method. +-- You can set the **"yield interval"**, and the **"time interval"**. (See above). +-- +-- === +-- +-- 2) @{Set#SET_GROUP} class, extends @{Set#SET_BASE} +-- ================================================== +-- Mission designers can use the @{Set#SET_GROUP} class to build sets of groups belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Starting with certain prefix strings. +-- +-- 2.1) SET_GROUP construction method: +-- ----------------------------------- +-- Create a new SET_GROUP object with the @{#SET_GROUP.New} method: +-- +-- * @{#SET_GROUP.New}: Creates a new SET_GROUP object. +-- +-- 2.2) Add or Remove GROUP(s) from SET_GROUP: +-- ------------------------------------------- +-- GROUPS can be added and removed using the @{Set#SET_GROUP.AddGroupsByName} and @{Set#SET_GROUP.RemoveGroupsByName} respectively. +-- These methods take a single GROUP name or an array of GROUP names to be added or removed from SET_GROUP. +-- +-- 2.3) SET_GROUP filter criteria: +-- ------------------------------- +-- You can set filter criteria to define the set of groups within the SET_GROUP. +-- Filter criteria are defined by: +-- +-- * @{#SET_GROUP.FilterCoalitions}: Builds the SET_GROUP with the groups belonging to the coalition(s). +-- * @{#SET_GROUP.FilterCategories}: Builds the SET_GROUP with the groups belonging to the category(ies). +-- * @{#SET_GROUP.FilterCountries}: Builds the SET_GROUP with the gruops belonging to the country(ies). +-- * @{#SET_GROUP.FilterPrefixes}: Builds the SET_GROUP with the groups starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_GROUP, you can start filtering using: +-- +-- * @{#SET_GROUP.FilterStart}: Starts the filtering of the groups within the SET_GROUP and add or remove GROUP objects **dynamically**. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_GROUP.FilterZones}: Builds the SET_GROUP with the groups within a @{Zone#ZONE}. +-- +-- 2.4) SET_GROUP iterators: +-- ------------------------- +-- Once the filters have been defined and the SET_GROUP has been built, you can iterate the SET_GROUP with the available iterator methods. +-- The iterator methods will walk the SET_GROUP set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_GROUP: +-- +-- * @{#SET_GROUP.ForEachGroup}: Calls a function for each alive group it finds within the SET_GROUP. +-- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupPartlyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence partly in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- +-- ==== +-- +-- 3) @{Set#SET_UNIT} class, extends @{Set#SET_BASE} +-- =================================================== +-- Mission designers can use the @{Set#SET_UNIT} class to build sets of units belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Unit types +-- * Starting with certain prefix strings. +-- +-- 3.1) SET_UNIT construction method: +-- ---------------------------------- +-- Create a new SET_UNIT object with the @{#SET_UNIT.New} method: +-- +-- * @{#SET_UNIT.New}: Creates a new SET_UNIT object. +-- +-- 3.2) Add or Remove UNIT(s) from SET_UNIT: +-- ----------------------------------------- +-- UNITs can be added and removed using the @{Set#SET_UNIT.AddUnitsByName} and @{Set#SET_UNIT.RemoveUnitsByName} respectively. +-- These methods take a single UNIT name or an array of UNIT names to be added or removed from SET_UNIT. +-- +-- 3.3) SET_UNIT filter criteria: +-- ------------------------------ +-- You can set filter criteria to define the set of units within the SET_UNIT. +-- Filter criteria are defined by: +-- +-- * @{#SET_UNIT.FilterCoalitions}: Builds the SET_UNIT with the units belonging to the coalition(s). +-- * @{#SET_UNIT.FilterCategories}: Builds the SET_UNIT with the units belonging to the category(ies). +-- * @{#SET_UNIT.FilterTypes}: Builds the SET_UNIT with the units belonging to the unit type(s). +-- * @{#SET_UNIT.FilterCountries}: Builds the SET_UNIT with the units belonging to the country(ies). +-- * @{#SET_UNIT.FilterPrefixes}: Builds the SET_UNIT with the units starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_UNIT, you can start filtering using: +-- +-- * @{#SET_UNIT.FilterStart}: Starts the filtering of the units within the SET_UNIT. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_UNIT.FilterZones}: Builds the SET_UNIT with the units within a @{Zone#ZONE}. +-- +-- 3.4) SET_UNIT iterators: +-- ------------------------ +-- Once the filters have been defined and the SET_UNIT has been built, you can iterate the SET_UNIT with the available iterator methods. +-- The iterator methods will walk the SET_UNIT set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_UNIT: +-- +-- * @{#SET_UNIT.ForEachUnit}: Calls a function for each alive unit it finds within the SET_UNIT. +-- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- +-- Planned iterators methods in development are (so these are not yet available): +-- +-- * @{#SET_UNIT.ForEachUnitInUnit}: Calls a function for each unit contained within the SET_UNIT. +-- * @{#SET_UNIT.ForEachUnitCompletelyInZone}: Iterate and call an iterator function for each **alive** UNIT presence completely in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- * @{#SET_UNIT.ForEachUnitNotInZone}: Iterate and call an iterator function for each **alive** UNIT presence not in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- +-- === +-- +-- 4) @{Set#SET_CLIENT} class, extends @{Set#SET_BASE} +-- =================================================== +-- Mission designers can use the @{Set#SET_CLIENT} class to build sets of units belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Client types +-- * Starting with certain prefix strings. +-- +-- 4.1) SET_CLIENT construction method: +-- ---------------------------------- +-- Create a new SET_CLIENT object with the @{#SET_CLIENT.New} method: +-- +-- * @{#SET_CLIENT.New}: Creates a new SET_CLIENT object. +-- +-- 4.2) Add or Remove CLIENT(s) from SET_CLIENT: +-- ----------------------------------------- +-- CLIENTs can be added and removed using the @{Set#SET_CLIENT.AddClientsByName} and @{Set#SET_CLIENT.RemoveClientsByName} respectively. +-- These methods take a single CLIENT name or an array of CLIENT names to be added or removed from SET_CLIENT. +-- +-- 4.3) SET_CLIENT filter criteria: +-- ------------------------------ +-- You can set filter criteria to define the set of clients within the SET_CLIENT. +-- Filter criteria are defined by: +-- +-- * @{#SET_CLIENT.FilterCoalitions}: Builds the SET_CLIENT with the clients belonging to the coalition(s). +-- * @{#SET_CLIENT.FilterCategories}: Builds the SET_CLIENT with the clients belonging to the category(ies). +-- * @{#SET_CLIENT.FilterTypes}: Builds the SET_CLIENT with the clients belonging to the client type(s). +-- * @{#SET_CLIENT.FilterCountries}: Builds the SET_CLIENT with the clients belonging to the country(ies). +-- * @{#SET_CLIENT.FilterPrefixes}: Builds the SET_CLIENT with the clients starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_CLIENT, you can start filtering using: +-- +-- * @{#SET_CLIENT.FilterStart}: Starts the filtering of the clients within the SET_CLIENT. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_CLIENT.FilterZones}: Builds the SET_CLIENT with the clients within a @{Zone#ZONE}. +-- +-- 4.4) SET_CLIENT iterators: +-- ------------------------ +-- Once the filters have been defined and the SET_CLIENT has been built, you can iterate the SET_CLIENT with the available iterator methods. +-- The iterator methods will walk the SET_CLIENT set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_CLIENT: +-- +-- * @{#SET_CLIENT.ForEachClient}: Calls a function for each alive client it finds within the SET_CLIENT. +-- +-- ==== +-- +-- 5) @{Set#SET_AIRBASE} class, extends @{Set#SET_BASE} +-- ==================================================== +-- Mission designers can use the @{Set#SET_AIRBASE} class to build sets of airbases optionally belonging to certain: +-- +-- * Coalitions +-- +-- 5.1) SET_AIRBASE construction +-- ----------------------------- +-- Create a new SET_AIRBASE object with the @{#SET_AIRBASE.New} method: +-- +-- * @{#SET_AIRBASE.New}: Creates a new SET_AIRBASE object. +-- +-- 5.2) Add or Remove AIRBASEs from SET_AIRBASE +-- -------------------------------------------- +-- AIRBASEs can be added and removed using the @{Set#SET_AIRBASE.AddAirbasesByName} and @{Set#SET_AIRBASE.RemoveAirbasesByName} respectively. +-- These methods take a single AIRBASE name or an array of AIRBASE names to be added or removed from SET_AIRBASE. +-- +-- 5.3) SET_AIRBASE filter criteria +-- -------------------------------- +-- You can set filter criteria to define the set of clients within the SET_AIRBASE. +-- Filter criteria are defined by: +-- +-- * @{#SET_AIRBASE.FilterCoalitions}: Builds the SET_AIRBASE with the airbases belonging to the coalition(s). +-- +-- Once the filter criteria have been set for the SET_AIRBASE, you can start filtering using: +-- +-- * @{#SET_AIRBASE.FilterStart}: Starts the filtering of the airbases within the SET_AIRBASE. +-- +-- 5.4) SET_AIRBASE iterators: +-- --------------------------- +-- Once the filters have been defined and the SET_AIRBASE has been built, you can iterate the SET_AIRBASE with the available iterator methods. +-- The iterator methods will walk the SET_AIRBASE set, and call for each airbase within the set a function that you provide. +-- The following iterator methods are currently available within the SET_AIRBASE: +-- +-- * @{#SET_AIRBASE.ForEachAirbase}: Calls a function for each airbase it finds within the SET_AIRBASE. +-- +-- ==== +-- +-- @module Set +-- @author FlightControl + + +--- SET_BASE class +-- @type SET_BASE +-- @extends Base#BASE +SET_BASE = { + ClassName = "SET_BASE", + Set = {}, +} + +--- Creates a new SET_BASE object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. +-- @param #SET_BASE self +-- @return #SET_BASE +-- @usage +-- -- Define a new SET_BASE Object. This DBObject will contain a reference to all Group and Unit Templates defined within the ME and the DCSRTE. +-- DBObject = SET_BASE:New() +function SET_BASE:New( Database ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + self.Database = Database + + self.YieldInterval = 10 + self.TimeInterval = 0.001 + + return self +end + +--- Finds an @{Base#BASE} object based on the object Name. +-- @param #SET_BASE self +-- @param #string ObjectName +-- @return Base#BASE The Object found. +function SET_BASE:_Find( ObjectName ) + + local ObjectFound = self.Set[ObjectName] + return ObjectFound +end + + +--- Gets the Set. +-- @param #SET_BASE self +-- @return #SET_BASE self +function SET_BASE:GetSet() + self:F2() + + return self.Set +end + +--- Adds a @{Base#BASE} object in the @{Set#SET_BASE}, using the Object Name as the index. +-- @param #SET_BASE self +-- @param #string ObjectName +-- @param Base#BASE Object +-- @return Base#BASE The added BASE Object. +function SET_BASE:Add( ObjectName, Object ) + + self.Set[ObjectName] = Object +end + +--- Removes a @{Base#BASE} object from the @{Set#SET_BASE} and derived classes, based on the Object Name. +-- @param #SET_BASE self +-- @param #string ObjectName +function SET_BASE:Remove( ObjectName ) + + self.Set[ObjectName] = nil +end + +--- Define the SET iterator **"yield interval"** and the **"time interval"**. +-- @param #SET_BASE self +-- @param #number YieldInterval Sets the frequency when the iterator loop will yield after the number of objects processed. The default frequency is 10 objects processed. +-- @param #number TimeInterval Sets the time in seconds when the main logic will resume the iterator loop. The default time is 0.001 seconds. +-- @return #SET_BASE self +function SET_BASE:SetIteratorIntervals( YieldInterval, TimeInterval ) + + self.YieldInterval = YieldInterval + self.TimeInterval = TimeInterval + + return self +end + + + +--- Starts the filtering for the defined collection. +-- @param #SET_BASE self +-- @return #SET_BASE self +function SET_BASE:_FilterStart() + + for ObjectName, Object in pairs( self.Database ) do + + if self:IsIncludeObject( Object ) then + self:E( { "Adding Object:", ObjectName } ) + self:Add( ObjectName, Object ) + end + end + + _EVENTDISPATCHER:OnBirth( self._EventOnBirth, self ) + _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) + _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) + + -- Follow alive players and clients +-- _EVENTDISPATCHER:OnPlayerEnterUnit( self._EventOnPlayerEnterUnit, self ) +-- _EVENTDISPATCHER:OnPlayerLeaveUnit( self._EventOnPlayerLeaveUnit, self ) + + + return self +end + +--- Iterate the SET_BASE while identifying the nearest object from a @{Point#POINT_VEC2}. +-- @param #SET_BASE self +-- @param Point#POINT_VEC2 PointVec2 A @{Point#POINT_VEC2} object from where to evaluate the closest object in the set. +-- @return Base#BASE The closest object. +function SET_BASE:FindNearestObjectFromPointVec2( PointVec2 ) + self:F2( PointVec2 ) + + local NearestObject = nil + local ClosestDistance = nil + + for ObjectID, ObjectData in pairs( self.Set ) do + if NearestObject == nil then + NearestObject = ObjectData + ClosestDistance = PointVec2:DistanceFromVec2( ObjectData:GetPointVec2() ) + else + local Distance = PointVec2:DistanceFromVec2( ObjectData:GetPointVec2() ) + if Distance < ClosestDistance then + NearestObject = ObjectData + ClosestDistance = Distance + end + end + end + + return NearestObject +end + + + +----- Private method that registers all alive players in the mission. +---- @param #SET_BASE self +---- @return #SET_BASE self +--function SET_BASE:_RegisterPlayers() +-- +-- local CoalitionsData = { AlivePlayersRed = coalition.getPlayers( coalition.side.RED ), AlivePlayersBlue = coalition.getPlayers( coalition.side.BLUE ) } +-- for CoalitionId, CoalitionData in pairs( CoalitionsData ) do +-- for UnitId, UnitData in pairs( CoalitionData ) do +-- self:T3( { "UnitData:", UnitData } ) +-- if UnitData and UnitData:isExist() then +-- local UnitName = UnitData:getName() +-- if not self.PlayersAlive[UnitName] then +-- self:E( { "Add player for unit:", UnitName, UnitData:getPlayerName() } ) +-- self.PlayersAlive[UnitName] = UnitData:getPlayerName() +-- end +-- end +-- end +-- end +-- +-- return self +--end + +--- Events + +--- Handles the OnBirth event for the Set. +-- @param #SET_BASE self +-- @param Event#EVENTDATA Event +function SET_BASE:_EventOnBirth( Event ) + self:F3( { Event } ) + + if Event.IniDCSUnit then + local ObjectName, Object = self:AddInDatabase( Event ) + self:T3( ObjectName, Object ) + if self:IsIncludeObject( Object ) then + self:Add( ObjectName, Object ) + --self:_EventOnPlayerEnterUnit( Event ) + end + end +end + +--- Handles the OnDead or OnCrash event for alive units set. +-- @param #SET_BASE self +-- @param Event#EVENTDATA Event +function SET_BASE:_EventOnDeadOrCrash( Event ) + self:F2( { Event } ) + + if Event.IniDCSUnit then + local ObjectName, Object = self:FindInDatabase( Event ) + if ObjectName and Object then + self:Remove( ObjectName ) + end + end +end + +----- Handles the OnPlayerEnterUnit event to fill the active players table (with the unit filter applied). +---- @param #SET_BASE self +---- @param Event#EVENTDATA Event +--function SET_BASE:_EventOnPlayerEnterUnit( Event ) +-- self:F3( { Event } ) +-- +-- if Event.IniDCSUnit then +-- if self:IsIncludeObject( Event.IniDCSUnit ) then +-- if not self.PlayersAlive[Event.IniDCSUnitName] then +-- self:E( { "Add player for unit:", Event.IniDCSUnitName, Event.IniDCSUnit:getPlayerName() } ) +-- self.PlayersAlive[Event.IniDCSUnitName] = Event.IniDCSUnit:getPlayerName() +-- self.ClientsAlive[Event.IniDCSUnitName] = _DATABASE.Clients[ Event.IniDCSUnitName ] +-- end +-- end +-- end +--end +-- +----- Handles the OnPlayerLeaveUnit event to clean the active players table. +---- @param #SET_BASE self +---- @param Event#EVENTDATA Event +--function SET_BASE:_EventOnPlayerLeaveUnit( Event ) +-- self:F3( { Event } ) +-- +-- if Event.IniDCSUnit then +-- if self:IsIncludeObject( Event.IniDCSUnit ) then +-- if self.PlayersAlive[Event.IniDCSUnitName] then +-- self:E( { "Cleaning player for unit:", Event.IniDCSUnitName, Event.IniDCSUnit:getPlayerName() } ) +-- self.PlayersAlive[Event.IniDCSUnitName] = nil +-- self.ClientsAlive[Event.IniDCSUnitName] = nil +-- end +-- end +-- end +--end + +-- Iterators + +--- Iterate the SET_BASE and derived classes and call an iterator function for the given SET_BASE, providing the Object for each element within the set and optional parameters. +-- @param #SET_BASE self +-- @param #function IteratorFunction The function that will be called. +-- @return #SET_BASE self +function SET_BASE:ForEach( IteratorFunction, arg, Set, Function, FunctionArguments ) + self:F3( arg ) + + local function CoRoutine() + local Count = 0 + for ObjectID, Object in pairs( Set ) do + self:T2( Object ) + if Function then + if Function( unpack( FunctionArguments ), Object ) == true then + IteratorFunction( Object, unpack( arg ) ) + end + else + IteratorFunction( Object, unpack( arg ) ) + end + Count = Count + 1 +-- if Count % self.YieldInterval == 0 then +-- coroutine.yield( false ) +-- end + end + return true + end + +-- local co = coroutine.create( CoRoutine ) + local co = CoRoutine + + local function Schedule() + +-- local status, res = coroutine.resume( co ) + local status, res = co() + self:T3( { status, res } ) + + if status == false then + error( res ) + end + if res == false then + return true -- resume next time the loop + end + + return false + end + + local Scheduler = SCHEDULER:New( self, Schedule, {}, self.TimeInterval, self.TimeInterval, 0 ) + + return self +end + + +----- Iterate the SET_BASE and call an interator function for each **alive** unit, providing the Unit and optional parameters. +---- @param #SET_BASE self +---- @param #function IteratorFunction The function that will be called when there is an alive unit in the SET_BASE. The function needs to accept a UNIT parameter. +---- @return #SET_BASE self +--function SET_BASE:ForEachDCSUnitAlive( IteratorFunction, ... ) +-- self:F3( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.DCSUnitsAlive ) +-- +-- return self +--end +-- +----- Iterate the SET_BASE and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. +---- @param #SET_BASE self +---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_BASE. The function needs to accept a UNIT parameter. +---- @return #SET_BASE self +--function SET_BASE:ForEachPlayer( IteratorFunction, ... ) +-- self:F3( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.PlayersAlive ) +-- +-- return self +--end +-- +-- +----- Iterate the SET_BASE and call an interator function for each client, providing the Client to the function and optional parameters. +---- @param #SET_BASE self +---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_BASE. The function needs to accept a CLIENT parameter. +---- @return #SET_BASE self +--function SET_BASE:ForEachClient( IteratorFunction, ... ) +-- self:F3( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.Clients ) +-- +-- return self +--end + + +--- Decides whether to include the Object +-- @param #SET_BASE self +-- @param #table Object +-- @return #SET_BASE self +function SET_BASE:IsIncludeObject( Object ) + self:F3( Object ) + + return true +end + +--- Flushes the current SET_BASE contents in the log ... (for debug reasons). +-- @param #SET_BASE self +-- @return #string A string with the names of the objects. +function SET_BASE:Flush() + self:F3() + + local ObjectNames = "" + for ObjectName, Object in pairs( self.Set ) do + ObjectNames = ObjectNames .. ObjectName .. ", " + end + self:T( { "Objects in Set:", ObjectNames } ) + + return ObjectNames +end + +-- SET_GROUP + +--- SET_GROUP class +-- @type SET_GROUP +-- @extends Set#SET_BASE +SET_GROUP = { + ClassName = "SET_GROUP", + Filter = { + Coalitions = nil, + Categories = nil, + Countries = nil, + GroupPrefixes = nil, + }, + FilterMeta = { + Coalitions = { + red = coalition.side.RED, + blue = coalition.side.BLUE, + neutral = coalition.side.NEUTRAL, + }, + Categories = { + plane = Group.Category.AIRPLANE, + helicopter = Group.Category.HELICOPTER, + ground = Group.Category.GROUND_UNIT, + ship = Group.Category.SHIP, + structure = Group.Category.STRUCTURE, + }, + }, +} + + +--- Creates a new SET_GROUP object, building a set of groups belonging to a coalitions, categories, countries, types or with defined prefix names. +-- @param #SET_GROUP self +-- @return #SET_GROUP +-- @usage +-- -- Define a new SET_GROUP Object. This DBObject will contain a reference to all alive GROUPS. +-- DBObject = SET_GROUP:New() +function SET_GROUP:New() + + -- Inherits from BASE + local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.GROUPS ) ) + + return self +end + +--- Add GROUP(s) to SET_GROUP. +-- @param Set#SET_GROUP self +-- @param #string AddGroupNames A single name or an array of GROUP names. +-- @return self +function SET_GROUP:AddGroupsByName( AddGroupNames ) + + local AddGroupNamesArray = ( type( AddGroupNames ) == "table" ) and AddGroupNames or { AddGroupNames } + + for AddGroupID, AddGroupName in pairs( AddGroupNamesArray ) do + self:Add( AddGroupName, GROUP:FindByName( AddGroupName ) ) + end + + return self +end + +--- Remove GROUP(s) from SET_GROUP. +-- @param Set#SET_GROUP self +-- @param Group#GROUP RemoveGroupNames A single name or an array of GROUP names. +-- @return self +function SET_GROUP:RemoveGroupsByName( RemoveGroupNames ) + + local RemoveGroupNamesArray = ( type( RemoveGroupNames ) == "table" ) and RemoveGroupNames or { RemoveGroupNames } + + for RemoveGroupID, RemoveGroupName in pairs( RemoveGroupNamesArray ) do + self:Remove( RemoveGroupName.GroupName ) + end + + return self +end + + + + +--- Finds a Group based on the Group Name. +-- @param #SET_GROUP self +-- @param #string GroupName +-- @return Group#GROUP The found Group. +function SET_GROUP:FindGroup( GroupName ) + + local GroupFound = self.Set[GroupName] + return GroupFound +end + + + +--- Builds a set of groups of coalitions. +-- Possible current coalitions are red, blue and neutral. +-- @param #SET_GROUP self +-- @param #string Coalitions Can take the following values: "red", "blue", "neutral". +-- @return #SET_GROUP self +function SET_GROUP:FilterCoalitions( Coalitions ) + if not self.Filter.Coalitions then + self.Filter.Coalitions = {} + end + if type( Coalitions ) ~= "table" then + Coalitions = { Coalitions } + end + for CoalitionID, Coalition in pairs( Coalitions ) do + self.Filter.Coalitions[Coalition] = Coalition + end + return self +end + + +--- Builds a set of groups out of categories. +-- Possible current categories are plane, helicopter, ground, ship. +-- @param #SET_GROUP self +-- @param #string Categories Can take the following values: "plane", "helicopter", "ground", "ship". +-- @return #SET_GROUP self +function SET_GROUP:FilterCategories( Categories ) + if not self.Filter.Categories then + self.Filter.Categories = {} + end + if type( Categories ) ~= "table" then + Categories = { Categories } + end + for CategoryID, Category in pairs( Categories ) do + self.Filter.Categories[Category] = Category + end + return self +end + +--- Builds a set of groups of defined countries. +-- Possible current countries are those known within DCS world. +-- @param #SET_GROUP self +-- @param #string Countries Can take those country strings known within DCS world. +-- @return #SET_GROUP self +function SET_GROUP:FilterCountries( Countries ) + if not self.Filter.Countries then + self.Filter.Countries = {} + end + if type( Countries ) ~= "table" then + Countries = { Countries } + end + for CountryID, Country in pairs( Countries ) do + self.Filter.Countries[Country] = Country + end + return self +end + + +--- Builds a set of groups of defined GROUP prefixes. +-- All the groups starting with the given prefixes will be included within the set. +-- @param #SET_GROUP self +-- @param #string Prefixes The prefix of which the group name starts with. +-- @return #SET_GROUP self +function SET_GROUP:FilterPrefixes( Prefixes ) + if not self.Filter.GroupPrefixes then + self.Filter.GroupPrefixes = {} + end + if type( Prefixes ) ~= "table" then + Prefixes = { Prefixes } + end + for PrefixID, Prefix in pairs( Prefixes ) do + self.Filter.GroupPrefixes[Prefix] = Prefix + end + return self +end + + +--- Starts the filtering. +-- @param #SET_GROUP self +-- @return #SET_GROUP self +function SET_GROUP:FilterStart() + + if _DATABASE then + self:_FilterStart() + end + + return self +end + +--- Handles the Database to check on an event (birth) that the Object was added in the Database. +-- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! +-- @param #SET_GROUP self +-- @param Event#EVENTDATA Event +-- @return #string The name of the GROUP +-- @return #table The GROUP +function SET_GROUP:AddInDatabase( Event ) + self:F3( { Event } ) + + if not self.Database[Event.IniDCSGroupName] then + self.Database[Event.IniDCSGroupName] = GROUP:Register( Event.IniDCSGroupName ) + self:T3( self.Database[Event.IniDCSGroupName] ) + end + + return Event.IniDCSGroupName, self.Database[Event.IniDCSGroupName] +end + +--- Handles the Database to check on any event that Object exists in the Database. +-- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! +-- @param #SET_GROUP self +-- @param Event#EVENTDATA Event +-- @return #string The name of the GROUP +-- @return #table The GROUP +function SET_GROUP:FindInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSGroupName, self.Database[Event.IniDCSGroupName] +end + +--- Iterate the SET_GROUP and call an iterator function for each **alive** GROUP, providing the GROUP and optional parameters. +-- @param #SET_GROUP self +-- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the SET_GROUP. The function needs to accept a GROUP parameter. +-- @return #SET_GROUP self +function SET_GROUP:ForEachGroup( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set ) + + return self +end + +--- Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- @param #SET_GROUP self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the SET_GROUP. The function needs to accept a GROUP parameter. +-- @return #SET_GROUP self +function SET_GROUP:ForEachGroupCompletelyInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Group#GROUP GroupObject + function( ZoneObject, GroupObject ) + if GroupObject:IsCompletelyInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + +--- Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence partly in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- @param #SET_GROUP self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the SET_GROUP. The function needs to accept a GROUP parameter. +-- @return #SET_GROUP self +function SET_GROUP:ForEachGroupPartlyInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Group#GROUP GroupObject + function( ZoneObject, GroupObject ) + if GroupObject:IsPartlyInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + +--- Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- @param #SET_GROUP self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the SET_GROUP. The function needs to accept a GROUP parameter. +-- @return #SET_GROUP self +function SET_GROUP:ForEachGroupNotInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Group#GROUP GroupObject + function( ZoneObject, GroupObject ) + if GroupObject:IsNotInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + + +----- Iterate the SET_GROUP and call an interator function for each **alive** player, providing the Group of the player and optional parameters. +---- @param #SET_GROUP self +---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_GROUP. The function needs to accept a GROUP parameter. +---- @return #SET_GROUP self +--function SET_GROUP:ForEachPlayer( IteratorFunction, ... ) +-- self:F2( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.PlayersAlive ) +-- +-- return self +--end +-- +-- +----- Iterate the SET_GROUP and call an interator function for each client, providing the Client to the function and optional parameters. +---- @param #SET_GROUP self +---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_GROUP. The function needs to accept a CLIENT parameter. +---- @return #SET_GROUP self +--function SET_GROUP:ForEachClient( IteratorFunction, ... ) +-- self:F2( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.Clients ) +-- +-- return self +--end + + +--- +-- @param #SET_GROUP self +-- @param Group#GROUP MooseGroup +-- @return #SET_GROUP self +function SET_GROUP:IsIncludeObject( MooseGroup ) + self:F2( MooseGroup ) + local MooseGroupInclude = true + + if self.Filter.Coalitions then + local MooseGroupCoalition = false + for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do + self:T3( { "Coalition:", MooseGroup:GetCoalition(), self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) + if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == MooseGroup:GetCoalition() then + MooseGroupCoalition = true + end + end + MooseGroupInclude = MooseGroupInclude and MooseGroupCoalition + end + + if self.Filter.Categories then + local MooseGroupCategory = false + for CategoryID, CategoryName in pairs( self.Filter.Categories ) do + self:T3( { "Category:", MooseGroup:GetCategory(), self.FilterMeta.Categories[CategoryName], CategoryName } ) + if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == MooseGroup:GetCategory() then + MooseGroupCategory = true + end + end + MooseGroupInclude = MooseGroupInclude and MooseGroupCategory + end + + if self.Filter.Countries then + local MooseGroupCountry = false + for CountryID, CountryName in pairs( self.Filter.Countries ) do + self:T3( { "Country:", MooseGroup:GetCountry(), CountryName } ) + if country.id[CountryName] == MooseGroup:GetCountry() then + MooseGroupCountry = true + end + end + MooseGroupInclude = MooseGroupInclude and MooseGroupCountry + end + + if self.Filter.GroupPrefixes then + local MooseGroupPrefix = false + for GroupPrefixId, GroupPrefix in pairs( self.Filter.GroupPrefixes ) do + self:T3( { "Prefix:", string.find( MooseGroup:GetName(), GroupPrefix, 1 ), GroupPrefix } ) + if string.find( MooseGroup:GetName(), GroupPrefix, 1 ) then + MooseGroupPrefix = true + end + end + MooseGroupInclude = MooseGroupInclude and MooseGroupPrefix + end + + self:T2( MooseGroupInclude ) + return MooseGroupInclude +end + +--- SET_UNIT class +-- @type SET_UNIT +-- @extends Set#SET_BASE +SET_UNIT = { + ClassName = "SET_UNIT", + Units = {}, + Filter = { + Coalitions = nil, + Categories = nil, + Types = nil, + Countries = nil, + UnitPrefixes = nil, + }, + FilterMeta = { + Coalitions = { + red = coalition.side.RED, + blue = coalition.side.BLUE, + neutral = coalition.side.NEUTRAL, + }, + Categories = { + plane = Unit.Category.AIRPLANE, + helicopter = Unit.Category.HELICOPTER, + ground = Unit.Category.GROUND_UNIT, + ship = Unit.Category.SHIP, + structure = Unit.Category.STRUCTURE, + }, + }, +} + + +--- Creates a new SET_UNIT object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. +-- @param #SET_UNIT self +-- @return #SET_UNIT +-- @usage +-- -- Define a new SET_UNIT Object. This DBObject will contain a reference to all alive Units. +-- DBObject = SET_UNIT:New() +function SET_UNIT:New() + + -- Inherits from BASE + local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.UNITS ) ) + + _EVENTDISPATCHER:OnBirth( self._EventOnBirth, self ) + _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) + _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) + + return self +end + +--- Add UNIT(s) to SET_UNIT. +-- @param #SET_UNIT self +-- @param #string AddUnit A single UNIT. +-- @return #SET_UNIT self +function SET_UNIT:AddUnit( AddUnit ) + self:F2( AddUnit:GetName() ) + + self:Add( AddUnit:GetName(), AddUnit ) + + return self +end + + +--- Add UNIT(s) to SET_UNIT. +-- @param #SET_UNIT self +-- @param #string AddUnitNames A single name or an array of UNIT names. +-- @return #SET_UNIT self +function SET_UNIT:AddUnitsByName( AddUnitNames ) + + local AddUnitNamesArray = ( type( AddUnitNames ) == "table" ) and AddUnitNames or { AddUnitNames } + + self:T( AddUnitNamesArray ) + for AddUnitID, AddUnitName in pairs( AddUnitNamesArray ) do + self:Add( AddUnitName, UNIT:FindByName( AddUnitName ) ) + end + + return self +end + +--- Remove UNIT(s) from SET_UNIT. +-- @param Set#SET_UNIT self +-- @param Unit#UNIT RemoveUnitNames A single name or an array of UNIT names. +-- @return self +function SET_UNIT:RemoveUnitsByName( RemoveUnitNames ) + + local RemoveUnitNamesArray = ( type( RemoveUnitNames ) == "table" ) and RemoveUnitNames or { RemoveUnitNames } + + for RemoveUnitID, RemoveUnitName in pairs( RemoveUnitNamesArray ) do + self:Remove( RemoveUnitName.UnitName ) + end + + return self +end + + +--- Finds a Unit based on the Unit Name. +-- @param #SET_UNIT self +-- @param #string UnitName +-- @return Unit#UNIT The found Unit. +function SET_UNIT:FindUnit( UnitName ) + + local UnitFound = self.Set[UnitName] + return UnitFound +end + + + +--- Builds a set of units of coalitions. +-- Possible current coalitions are red, blue and neutral. +-- @param #SET_UNIT self +-- @param #string Coalitions Can take the following values: "red", "blue", "neutral". +-- @return #SET_UNIT self +function SET_UNIT:FilterCoalitions( Coalitions ) + if not self.Filter.Coalitions then + self.Filter.Coalitions = {} + end + if type( Coalitions ) ~= "table" then + Coalitions = { Coalitions } + end + for CoalitionID, Coalition in pairs( Coalitions ) do + self.Filter.Coalitions[Coalition] = Coalition + end + return self +end + + +--- Builds a set of units out of categories. +-- Possible current categories are plane, helicopter, ground, ship. +-- @param #SET_UNIT self +-- @param #string Categories Can take the following values: "plane", "helicopter", "ground", "ship". +-- @return #SET_UNIT self +function SET_UNIT:FilterCategories( Categories ) + if not self.Filter.Categories then + self.Filter.Categories = {} + end + if type( Categories ) ~= "table" then + Categories = { Categories } + end + for CategoryID, Category in pairs( Categories ) do + self.Filter.Categories[Category] = Category + end + return self +end + + +--- Builds a set of units of defined unit types. +-- Possible current types are those types known within DCS world. +-- @param #SET_UNIT self +-- @param #string Types Can take those type strings known within DCS world. +-- @return #SET_UNIT self +function SET_UNIT:FilterTypes( Types ) + if not self.Filter.Types then + self.Filter.Types = {} + end + if type( Types ) ~= "table" then + Types = { Types } + end + for TypeID, Type in pairs( Types ) do + self.Filter.Types[Type] = Type + end + return self +end + + +--- Builds a set of units of defined countries. +-- Possible current countries are those known within DCS world. +-- @param #SET_UNIT self +-- @param #string Countries Can take those country strings known within DCS world. +-- @return #SET_UNIT self +function SET_UNIT:FilterCountries( Countries ) + if not self.Filter.Countries then + self.Filter.Countries = {} + end + if type( Countries ) ~= "table" then + Countries = { Countries } + end + for CountryID, Country in pairs( Countries ) do + self.Filter.Countries[Country] = Country + end + return self +end + + +--- Builds a set of units of defined unit prefixes. +-- All the units starting with the given prefixes will be included within the set. +-- @param #SET_UNIT self +-- @param #string Prefixes The prefix of which the unit name starts with. +-- @return #SET_UNIT self +function SET_UNIT:FilterPrefixes( Prefixes ) + if not self.Filter.UnitPrefixes then + self.Filter.UnitPrefixes = {} + end + if type( Prefixes ) ~= "table" then + Prefixes = { Prefixes } + end + for PrefixID, Prefix in pairs( Prefixes ) do + self.Filter.UnitPrefixes[Prefix] = Prefix + end + return self +end + + + + +--- Starts the filtering. +-- @param #SET_UNIT self +-- @return #SET_UNIT self +function SET_UNIT:FilterStart() + + if _DATABASE then + self:_FilterStart() + end + + return self +end + +--- Handles the Database to check on an event (birth) that the Object was added in the Database. +-- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! +-- @param #SET_UNIT self +-- @param Event#EVENTDATA Event +-- @return #string The name of the UNIT +-- @return #table The UNIT +function SET_UNIT:AddInDatabase( Event ) + self:F3( { Event } ) + + if not self.Database[Event.IniDCSUnitName] then + self.Database[Event.IniDCSUnitName] = UNIT:Register( Event.IniDCSUnitName ) + self:T3( self.Database[Event.IniDCSUnitName] ) + end + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Handles the Database to check on any event that Object exists in the Database. +-- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! +-- @param #SET_UNIT self +-- @param Event#EVENTDATA Event +-- @return #string The name of the UNIT +-- @return #table The UNIT +function SET_UNIT:FindInDatabase( Event ) + self:F3( { Event } ) + + self:E( { Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] } ) + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Iterate the SET_UNIT and call an interator function for each **alive** UNIT, providing the UNIT and optional parameters. +-- @param #SET_UNIT self +-- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the SET_UNIT. The function needs to accept a UNIT parameter. +-- @return #SET_UNIT self +function SET_UNIT:ForEachUnit( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set ) + + return self +end + +--- Iterate the SET_UNIT and call an iterator function for each **alive** UNIT presence completely in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- @param #SET_UNIT self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the SET_UNIT. The function needs to accept a UNIT parameter. +-- @return #SET_UNIT self +function SET_UNIT:ForEachUnitCompletelyInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Unit#UNIT UnitObject + function( ZoneObject, UnitObject ) + if UnitObject:IsCompletelyInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + +--- Iterate the SET_UNIT and call an iterator function for each **alive** UNIT presence not in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- @param #SET_UNIT self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the SET_UNIT. The function needs to accept a UNIT parameter. +-- @return #SET_UNIT self +function SET_UNIT:ForEachUnitNotInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Unit#UNIT UnitObject + function( ZoneObject, UnitObject ) + if UnitObject:IsNotInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + + + +----- Iterate the SET_UNIT and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. +---- @param #SET_UNIT self +---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_UNIT. The function needs to accept a UNIT parameter. +---- @return #SET_UNIT self +--function SET_UNIT:ForEachPlayer( IteratorFunction, ... ) +-- self:F2( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.PlayersAlive ) +-- +-- return self +--end +-- +-- +----- Iterate the SET_UNIT and call an interator function for each client, providing the Client to the function and optional parameters. +---- @param #SET_UNIT self +---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_UNIT. The function needs to accept a CLIENT parameter. +---- @return #SET_UNIT self +--function SET_UNIT:ForEachClient( IteratorFunction, ... ) +-- self:F2( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.Clients ) +-- +-- return self +--end + + +--- +-- @param #SET_UNIT self +-- @param Unit#UNIT MUnit +-- @return #SET_UNIT self +function SET_UNIT:IsIncludeObject( MUnit ) + self:F2( MUnit ) + local MUnitInclude = true + + if self.Filter.Coalitions then + local MUnitCoalition = false + for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do + self:T3( { "Coalition:", MUnit:GetCoalition(), self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) + if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == MUnit:GetCoalition() then + MUnitCoalition = true + end + end + MUnitInclude = MUnitInclude and MUnitCoalition + end + + if self.Filter.Categories then + local MUnitCategory = false + for CategoryID, CategoryName in pairs( self.Filter.Categories ) do + self:T3( { "Category:", MUnit:GetDesc().category, self.FilterMeta.Categories[CategoryName], CategoryName } ) + if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == MUnit:GetDesc().category then + MUnitCategory = true + end + end + MUnitInclude = MUnitInclude and MUnitCategory + end + + if self.Filter.Types then + local MUnitType = false + for TypeID, TypeName in pairs( self.Filter.Types ) do + self:T3( { "Type:", MUnit:GetTypeName(), TypeName } ) + if TypeName == MUnit:GetTypeName() then + MUnitType = true + end + end + MUnitInclude = MUnitInclude and MUnitType + end + + if self.Filter.Countries then + local MUnitCountry = false + for CountryID, CountryName in pairs( self.Filter.Countries ) do + self:T3( { "Country:", MUnit:GetCountry(), CountryName } ) + if country.id[CountryName] == MUnit:GetCountry() then + MUnitCountry = true + end + end + MUnitInclude = MUnitInclude and MUnitCountry + end + + if self.Filter.UnitPrefixes then + local MUnitPrefix = false + for UnitPrefixId, UnitPrefix in pairs( self.Filter.UnitPrefixes ) do + self:T3( { "Prefix:", string.find( MUnit:GetName(), UnitPrefix, 1 ), UnitPrefix } ) + if string.find( MUnit:GetName(), UnitPrefix, 1 ) then + MUnitPrefix = true + end + end + MUnitInclude = MUnitInclude and MUnitPrefix + end + + self:T2( MUnitInclude ) + return MUnitInclude +end + + +--- SET_CLIENT + +--- SET_CLIENT class +-- @type SET_CLIENT +-- @extends Set#SET_BASE +SET_CLIENT = { + ClassName = "SET_CLIENT", + Clients = {}, + Filter = { + Coalitions = nil, + Categories = nil, + Types = nil, + Countries = nil, + ClientPrefixes = nil, + }, + FilterMeta = { + Coalitions = { + red = coalition.side.RED, + blue = coalition.side.BLUE, + neutral = coalition.side.NEUTRAL, + }, + Categories = { + plane = Unit.Category.AIRPLANE, + helicopter = Unit.Category.HELICOPTER, + ground = Unit.Category.GROUND_UNIT, + ship = Unit.Category.SHIP, + structure = Unit.Category.STRUCTURE, + }, + }, +} + + +--- Creates a new SET_CLIENT object, building a set of clients belonging to a coalitions, categories, countries, types or with defined prefix names. +-- @param #SET_CLIENT self +-- @return #SET_CLIENT +-- @usage +-- -- Define a new SET_CLIENT Object. This DBObject will contain a reference to all Clients. +-- DBObject = SET_CLIENT:New() +function SET_CLIENT:New() + -- Inherits from BASE + local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.CLIENTS ) ) + + return self +end + +--- Add CLIENT(s) to SET_CLIENT. +-- @param Set#SET_CLIENT self +-- @param #string AddClientNames A single name or an array of CLIENT names. +-- @return self +function SET_CLIENT:AddClientsByName( AddClientNames ) + + local AddClientNamesArray = ( type( AddClientNames ) == "table" ) and AddClientNames or { AddClientNames } + + for AddClientID, AddClientName in pairs( AddClientNamesArray ) do + self:Add( AddClientName, CLIENT:FindByName( AddClientName ) ) + end + + return self +end + +--- Remove CLIENT(s) from SET_CLIENT. +-- @param Set#SET_CLIENT self +-- @param Client#CLIENT RemoveClientNames A single name or an array of CLIENT names. +-- @return self +function SET_CLIENT:RemoveClientsByName( RemoveClientNames ) + + local RemoveClientNamesArray = ( type( RemoveClientNames ) == "table" ) and RemoveClientNames or { RemoveClientNames } + + for RemoveClientID, RemoveClientName in pairs( RemoveClientNamesArray ) do + self:Remove( RemoveClientName.ClientName ) + end + + return self +end + + +--- Finds a Client based on the Client Name. +-- @param #SET_CLIENT self +-- @param #string ClientName +-- @return Client#CLIENT The found Client. +function SET_CLIENT:FindClient( ClientName ) + + local ClientFound = self.Set[ClientName] + return ClientFound +end + + + +--- Builds a set of clients of coalitions. +-- Possible current coalitions are red, blue and neutral. +-- @param #SET_CLIENT self +-- @param #string Coalitions Can take the following values: "red", "blue", "neutral". +-- @return #SET_CLIENT self +function SET_CLIENT:FilterCoalitions( Coalitions ) + if not self.Filter.Coalitions then + self.Filter.Coalitions = {} + end + if type( Coalitions ) ~= "table" then + Coalitions = { Coalitions } + end + for CoalitionID, Coalition in pairs( Coalitions ) do + self.Filter.Coalitions[Coalition] = Coalition + end + return self +end + + +--- Builds a set of clients out of categories. +-- Possible current categories are plane, helicopter, ground, ship. +-- @param #SET_CLIENT self +-- @param #string Categories Can take the following values: "plane", "helicopter", "ground", "ship". +-- @return #SET_CLIENT self +function SET_CLIENT:FilterCategories( Categories ) + if not self.Filter.Categories then + self.Filter.Categories = {} + end + if type( Categories ) ~= "table" then + Categories = { Categories } + end + for CategoryID, Category in pairs( Categories ) do + self.Filter.Categories[Category] = Category + end + return self +end + + +--- Builds a set of clients of defined client types. +-- Possible current types are those types known within DCS world. +-- @param #SET_CLIENT self +-- @param #string Types Can take those type strings known within DCS world. +-- @return #SET_CLIENT self +function SET_CLIENT:FilterTypes( Types ) + if not self.Filter.Types then + self.Filter.Types = {} + end + if type( Types ) ~= "table" then + Types = { Types } + end + for TypeID, Type in pairs( Types ) do + self.Filter.Types[Type] = Type + end + return self +end + + +--- Builds a set of clients of defined countries. +-- Possible current countries are those known within DCS world. +-- @param #SET_CLIENT self +-- @param #string Countries Can take those country strings known within DCS world. +-- @return #SET_CLIENT self +function SET_CLIENT:FilterCountries( Countries ) + if not self.Filter.Countries then + self.Filter.Countries = {} + end + if type( Countries ) ~= "table" then + Countries = { Countries } + end + for CountryID, Country in pairs( Countries ) do + self.Filter.Countries[Country] = Country + end + return self +end + + +--- Builds a set of clients of defined client prefixes. +-- All the clients starting with the given prefixes will be included within the set. +-- @param #SET_CLIENT self +-- @param #string Prefixes The prefix of which the client name starts with. +-- @return #SET_CLIENT self +function SET_CLIENT:FilterPrefixes( Prefixes ) + if not self.Filter.ClientPrefixes then + self.Filter.ClientPrefixes = {} + end + if type( Prefixes ) ~= "table" then + Prefixes = { Prefixes } + end + for PrefixID, Prefix in pairs( Prefixes ) do + self.Filter.ClientPrefixes[Prefix] = Prefix + end + return self +end + + + + +--- Starts the filtering. +-- @param #SET_CLIENT self +-- @return #SET_CLIENT self +function SET_CLIENT:FilterStart() + + if _DATABASE then + self:_FilterStart() + end + + return self +end + +--- Handles the Database to check on an event (birth) that the Object was added in the Database. +-- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! +-- @param #SET_CLIENT self +-- @param Event#EVENTDATA Event +-- @return #string The name of the CLIENT +-- @return #table The CLIENT +function SET_CLIENT:AddInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Handles the Database to check on any event that Object exists in the Database. +-- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! +-- @param #SET_CLIENT self +-- @param Event#EVENTDATA Event +-- @return #string The name of the CLIENT +-- @return #table The CLIENT +function SET_CLIENT:FindInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Iterate the SET_CLIENT and call an interator function for each **alive** CLIENT, providing the CLIENT and optional parameters. +-- @param #SET_CLIENT self +-- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. +-- @return #SET_CLIENT self +function SET_CLIENT:ForEachClient( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set ) + + return self +end + +--- Iterate the SET_CLIENT and call an iterator function for each **alive** CLIENT presence completely in a @{Zone}, providing the CLIENT and optional parameters to the called function. +-- @param #SET_CLIENT self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. +-- @return #SET_CLIENT self +function SET_CLIENT:ForEachClientInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Client#CLIENT ClientObject + function( ZoneObject, ClientObject ) + if ClientObject:IsInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + +--- Iterate the SET_CLIENT and call an iterator function for each **alive** CLIENT presence not in a @{Zone}, providing the CLIENT and optional parameters to the called function. +-- @param #SET_CLIENT self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. +-- @return #SET_CLIENT self +function SET_CLIENT:ForEachClientNotInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Client#CLIENT ClientObject + function( ZoneObject, ClientObject ) + if ClientObject:IsNotInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + +--- +-- @param #SET_CLIENT self +-- @param Client#CLIENT MClient +-- @return #SET_CLIENT self +function SET_CLIENT:IsIncludeObject( MClient ) + self:F2( MClient ) + + local MClientInclude = true + + if MClient then + local MClientName = MClient.UnitName + + if self.Filter.Coalitions then + local MClientCoalition = false + for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do + local ClientCoalitionID = _DATABASE:GetCoalitionFromClientTemplate( MClientName ) + self:T3( { "Coalition:", ClientCoalitionID, self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) + if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == ClientCoalitionID then + MClientCoalition = true + end + end + self:T( { "Evaluated Coalition", MClientCoalition } ) + MClientInclude = MClientInclude and MClientCoalition + end + + if self.Filter.Categories then + local MClientCategory = false + for CategoryID, CategoryName in pairs( self.Filter.Categories ) do + local ClientCategoryID = _DATABASE:GetCategoryFromClientTemplate( MClientName ) + self:T3( { "Category:", ClientCategoryID, self.FilterMeta.Categories[CategoryName], CategoryName } ) + if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == ClientCategoryID then + MClientCategory = true + end + end + self:T( { "Evaluated Category", MClientCategory } ) + MClientInclude = MClientInclude and MClientCategory + end + + if self.Filter.Types then + local MClientType = false + for TypeID, TypeName in pairs( self.Filter.Types ) do + self:T3( { "Type:", MClient:GetTypeName(), TypeName } ) + if TypeName == MClient:GetTypeName() then + MClientType = true + end + end + self:T( { "Evaluated Type", MClientType } ) + MClientInclude = MClientInclude and MClientType + end + + if self.Filter.Countries then + local MClientCountry = false + for CountryID, CountryName in pairs( self.Filter.Countries ) do + local ClientCountryID = _DATABASE:GetCountryFromClientTemplate(MClientName) + self:T3( { "Country:", ClientCountryID, country.id[CountryName], CountryName } ) + if country.id[CountryName] and country.id[CountryName] == ClientCountryID then + MClientCountry = true + end + end + self:T( { "Evaluated Country", MClientCountry } ) + MClientInclude = MClientInclude and MClientCountry + end + + if self.Filter.ClientPrefixes then + local MClientPrefix = false + for ClientPrefixId, ClientPrefix in pairs( self.Filter.ClientPrefixes ) do + self:T3( { "Prefix:", string.find( MClient.UnitName, ClientPrefix, 1 ), ClientPrefix } ) + if string.find( MClient.UnitName, ClientPrefix, 1 ) then + MClientPrefix = true + end + end + self:T( { "Evaluated Prefix", MClientPrefix } ) + MClientInclude = MClientInclude and MClientPrefix + end + end + + self:T2( MClientInclude ) + return MClientInclude +end + +--- SET_AIRBASE + +--- SET_AIRBASE class +-- @type SET_AIRBASE +-- @extends Set#SET_BASE +SET_AIRBASE = { + ClassName = "SET_AIRBASE", + Airbases = {}, + Filter = { + Coalitions = nil, + }, + FilterMeta = { + Coalitions = { + red = coalition.side.RED, + blue = coalition.side.BLUE, + neutral = coalition.side.NEUTRAL, + }, + Categories = { + airdrome = Airbase.Category.AIRDROME, + helipad = Airbase.Category.HELIPAD, + ship = Airbase.Category.SHIP, + }, + }, +} + + +--- Creates a new SET_AIRBASE object, building a set of airbases belonging to a coalitions and categories. +-- @param #SET_AIRBASE self +-- @return #SET_AIRBASE self +-- @usage +-- -- Define a new SET_AIRBASE Object. The DatabaseSet will contain a reference to all Airbases. +-- DatabaseSet = SET_AIRBASE:New() +function SET_AIRBASE:New() + -- Inherits from BASE + local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.AIRBASES ) ) + + return self +end + +--- Add AIRBASEs to SET_AIRBASE. +-- @param Set#SET_AIRBASE self +-- @param #string AddAirbaseNames A single name or an array of AIRBASE names. +-- @return self +function SET_AIRBASE:AddAirbasesByName( AddAirbaseNames ) + + local AddAirbaseNamesArray = ( type( AddAirbaseNames ) == "table" ) and AddAirbaseNames or { AddAirbaseNames } + + for AddAirbaseID, AddAirbaseName in pairs( AddAirbaseNamesArray ) do + self:Add( AddAirbaseName, AIRBASE:FindByName( AddAirbaseName ) ) + end + + return self +end + +--- Remove AIRBASEs from SET_AIRBASE. +-- @param Set#SET_AIRBASE self +-- @param Airbase#AIRBASE RemoveAirbaseNames A single name or an array of AIRBASE names. +-- @return self +function SET_AIRBASE:RemoveAirbasesByName( RemoveAirbaseNames ) + + local RemoveAirbaseNamesArray = ( type( RemoveAirbaseNames ) == "table" ) and RemoveAirbaseNames or { RemoveAirbaseNames } + + for RemoveAirbaseID, RemoveAirbaseName in pairs( RemoveAirbaseNamesArray ) do + self:Remove( RemoveAirbaseName.AirbaseName ) + end + + return self +end + + +--- Finds a Airbase based on the Airbase Name. +-- @param #SET_AIRBASE self +-- @param #string AirbaseName +-- @return Airbase#AIRBASE The found Airbase. +function SET_AIRBASE:FindAirbase( AirbaseName ) + + local AirbaseFound = self.Set[AirbaseName] + return AirbaseFound +end + + + +--- Builds a set of airbases of coalitions. +-- Possible current coalitions are red, blue and neutral. +-- @param #SET_AIRBASE self +-- @param #string Coalitions Can take the following values: "red", "blue", "neutral". +-- @return #SET_AIRBASE self +function SET_AIRBASE:FilterCoalitions( Coalitions ) + if not self.Filter.Coalitions then + self.Filter.Coalitions = {} + end + if type( Coalitions ) ~= "table" then + Coalitions = { Coalitions } + end + for CoalitionID, Coalition in pairs( Coalitions ) do + self.Filter.Coalitions[Coalition] = Coalition + end + return self +end + + +--- Builds a set of airbases out of categories. +-- Possible current categories are plane, helicopter, ground, ship. +-- @param #SET_AIRBASE self +-- @param #string Categories Can take the following values: "airdrome", "helipad", "ship". +-- @return #SET_AIRBASE self +function SET_AIRBASE:FilterCategories( Categories ) + if not self.Filter.Categories then + self.Filter.Categories = {} + end + if type( Categories ) ~= "table" then + Categories = { Categories } + end + for CategoryID, Category in pairs( Categories ) do + self.Filter.Categories[Category] = Category + end + return self +end + +--- Starts the filtering. +-- @param #SET_AIRBASE self +-- @return #SET_AIRBASE self +function SET_AIRBASE:FilterStart() + + if _DATABASE then + self:_FilterStart() + end + + return self +end + + +--- Handles the Database to check on an event (birth) that the Object was added in the Database. +-- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! +-- @param #SET_AIRBASE self +-- @param Event#EVENTDATA Event +-- @return #string The name of the AIRBASE +-- @return #table The AIRBASE +function SET_AIRBASE:AddInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Handles the Database to check on any event that Object exists in the Database. +-- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! +-- @param #SET_AIRBASE self +-- @param Event#EVENTDATA Event +-- @return #string The name of the AIRBASE +-- @return #table The AIRBASE +function SET_AIRBASE:FindInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Iterate the SET_AIRBASE and call an interator function for each AIRBASE, providing the AIRBASE and optional parameters. +-- @param #SET_AIRBASE self +-- @param #function IteratorFunction The function that will be called when there is an alive AIRBASE in the SET_AIRBASE. The function needs to accept a AIRBASE parameter. +-- @return #SET_AIRBASE self +function SET_AIRBASE:ForEachAirbase( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set ) + + return self +end + +--- Iterate the SET_AIRBASE while identifying the nearest @{Airbase#AIRBASE} from a @{Point#POINT_VEC2}. +-- @param #SET_AIRBASE self +-- @param Point#POINT_VEC2 PointVec2 A @{Point#POINT_VEC2} object from where to evaluate the closest @{Airbase#AIRBASE}. +-- @return Airbase#AIRBASE The closest @{Airbase#AIRBASE}. +function SET_AIRBASE:FindNearestAirbaseFromPointVec2( PointVec2 ) + self:F2( PointVec2 ) + + local NearestAirbase = self:FindNearestObjectFromPointVec2( PointVec2 ) + return NearestAirbase +end + + + +--- +-- @param #SET_AIRBASE self +-- @param Airbase#AIRBASE MAirbase +-- @return #SET_AIRBASE self +function SET_AIRBASE:IsIncludeObject( MAirbase ) + self:F2( MAirbase ) + + local MAirbaseInclude = true + + if MAirbase then + local MAirbaseName = MAirbase:GetName() + + if self.Filter.Coalitions then + local MAirbaseCoalition = false + for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do + local AirbaseCoalitionID = _DATABASE:GetCoalitionFromAirbase( MAirbaseName ) + self:T3( { "Coalition:", AirbaseCoalitionID, self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) + if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == AirbaseCoalitionID then + MAirbaseCoalition = true + end + end + self:T( { "Evaluated Coalition", MAirbaseCoalition } ) + MAirbaseInclude = MAirbaseInclude and MAirbaseCoalition + end + + if self.Filter.Categories then + local MAirbaseCategory = false + for CategoryID, CategoryName in pairs( self.Filter.Categories ) do + local AirbaseCategoryID = _DATABASE:GetCategoryFromAirbase( MAirbaseName ) + self:T3( { "Category:", AirbaseCategoryID, self.FilterMeta.Categories[CategoryName], CategoryName } ) + if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == AirbaseCategoryID then + MAirbaseCategory = true + end + end + self:T( { "Evaluated Category", MAirbaseCategory } ) + MAirbaseInclude = MAirbaseInclude and MAirbaseCategory + end + end + + self:T2( MAirbaseInclude ) + return MAirbaseInclude +end +--- This module contains the POINT classes. +-- +-- 1) @{Point#POINT_VEC3} class, extends @{Base#BASE} +-- =============================================== +-- The @{Point#POINT_VEC3} class defines a 3D point in the simulator. +-- +-- 1.1) POINT_VEC3 constructor +-- --------------------------- +-- +-- A new POINT instance can be created with: +-- +-- * @{#POINT_VEC3.New}(): a 3D point. +-- +-- 2) @{Point#POINT_VEC2} class, extends @{Point#POINT_VEC3} +-- ========================================================= +-- The @{Point#POINT_VEC2} class defines a 2D point in the simulator. The height coordinate (if needed) will be the land height + an optional added height specified. +-- +-- 2.1) POINT_VEC2 constructor +-- --------------------------- +-- +-- A new POINT instance can be created with: +-- +-- * @{#POINT_VEC2.New}(): a 2D point. +-- +-- @module Point +-- @author FlightControl + +--- The POINT_VEC3 class +-- @type POINT_VEC3 +-- @extends Base#BASE +-- @field #POINT_VEC3.SmokeColor SmokeColor +-- @field #POINT_VEC3.FlareColor FlareColor +-- @field #POINT_VEC3.RoutePointAltType RoutePointAltType +-- @field #POINT_VEC3.RoutePointType RoutePointType +-- @field #POINT_VEC3.RoutePointAction RoutePointAction +POINT_VEC3 = { + ClassName = "POINT_VEC3", + SmokeColor = { + Green = trigger.smokeColor.Green, + Red = trigger.smokeColor.Red, + White = trigger.smokeColor.White, + Orange = trigger.smokeColor.Orange, + Blue = trigger.smokeColor.Blue + }, + FlareColor = { + Green = trigger.flareColor.Green, + Red = trigger.flareColor.Red, + White = trigger.flareColor.White, + Yellow = trigger.flareColor.Yellow + }, + RoutePointAltType = { + BARO = "BARO", + }, + RoutePointType = { + TurningPoint = "Turning Point", + }, + RoutePointAction = { + TurningPoint = "Turning Point", + }, +} + + +--- SmokeColor +-- @type POINT_VEC3.SmokeColor +-- @field Green +-- @field Red +-- @field White +-- @field Orange +-- @field Blue + + + +--- FlareColor +-- @type POINT_VEC3.FlareColor +-- @field Green +-- @field Red +-- @field White +-- @field Yellow + + + +--- RoutePoint AltTypes +-- @type POINT_VEC3.RoutePointAltType +-- @field BARO "BARO" + + + +--- RoutePoint Types +-- @type POINT_VEC3.RoutePointType +-- @field TurningPoint "Turning Point" + + + +--- RoutePoint Actions +-- @type POINT_VEC3.RoutePointAction +-- @field TurningPoint "Turning Point" + + + +-- Constructor. + +--- Create a new POINT_VEC3 object. +-- @param #POINT_VEC3 self +-- @param DCSTypes#Distance x The x coordinate of the Vec3 point, pointing to the North. +-- @param DCSTypes#Distance y The y coordinate of the Vec3 point, pointing Upwards. +-- @param DCSTypes#Distance z The z coordinate of the Vec3 point, pointing to the Right. +-- @return Point#POINT_VEC3 self +function POINT_VEC3:New( x, y, z ) + + local self = BASE:Inherit( self, BASE:New() ) + self.PointVec3 = { x = x, y = y, z = z } + self:F2( self.PointVec3 ) + return self +end + + +--- Build an air type route point. +-- @param #POINT_VEC3 self +-- @param #POINT_VEC3.RoutePointAltType AltType The altitude type. +-- @param #POINT_VEC3.RoutePointType Type The route point type. +-- @param #POINT_VEC3.RoutePointAction Action The route point action. +-- @param DCSTypes#Speed Speed Airspeed in km/h. +-- @param #boolean SpeedLocked true means the speed is locked. +-- @return #table The route point. +function POINT_VEC3:RoutePointAir( AltType, Type, Action, Speed, SpeedLocked ) + self:F2( { AltType, Type, Action, Speed, SpeedLocked } ) + + local RoutePoint = {} + RoutePoint.x = self.PointVec3.x + RoutePoint.y = self.PointVec3.z + RoutePoint.alt = self.PointVec3.y + RoutePoint.alt_type = AltType + + RoutePoint.type = Type + RoutePoint.action = Action + + RoutePoint.speed = Speed / 3.6 + RoutePoint.speed_locked = true + +-- ["task"] = +-- { +-- ["id"] = "ComboTask", +-- ["params"] = +-- { +-- ["tasks"] = +-- { +-- }, -- end of ["tasks"] +-- }, -- end of ["params"] +-- }, -- end of ["task"] + + + RoutePoint.task = {} + RoutePoint.task.id = "ComboTask" + RoutePoint.task.params = {} + RoutePoint.task.params.tasks = {} + + + return RoutePoint +end + + +--- Smokes the point in a color. +-- @param #POINT_VEC3 self +-- @param Point#POINT_VEC3.SmokeColor SmokeColor +function POINT_VEC3:Smoke( SmokeColor ) + self:F2( { SmokeColor, self.PointVec3 } ) + trigger.action.smoke( self.PointVec3, SmokeColor ) +end + +--- Smoke the POINT_VEC3 Green. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeGreen() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.Green ) +end + +--- Smoke the POINT_VEC3 Red. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeRed() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.Red ) +end + +--- Smoke the POINT_VEC3 White. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeWhite() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.White ) +end + +--- Smoke the POINT_VEC3 Orange. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeOrange() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.Orange ) +end + +--- Smoke the POINT_VEC3 Blue. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeBlue() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.Blue ) +end + +--- Flares the point in a color. +-- @param #POINT_VEC3 self +-- @param Point#POINT_VEC3.FlareColor +-- @param DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. +function POINT_VEC3:Flare( FlareColor, Azimuth ) + self:F2( { FlareColor, self.PointVec3 } ) + trigger.action.signalFlare( self.PointVec3, FlareColor, Azimuth and Azimuth or 0 ) +end + +--- Flare the POINT_VEC3 White. +-- @param #POINT_VEC3 self +-- @param DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. +function POINT_VEC3:FlareWhite( Azimuth ) + self:F2( Azimuth ) + self:Flare( POINT_VEC3.FlareColor.White, Azimuth ) +end + +--- Flare the POINT_VEC3 Yellow. +-- @param #POINT_VEC3 self +-- @param DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. +function POINT_VEC3:FlareYellow( Azimuth ) + self:F2( Azimuth ) + self:Flare( POINT_VEC3.FlareColor.Yellow, Azimuth ) +end + +--- Flare the POINT_VEC3 Green. +-- @param #POINT_VEC3 self +-- @param DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. +function POINT_VEC3:FlareGreen( Azimuth ) + self:F2( Azimuth ) + self:Flare( POINT_VEC3.FlareColor.Green, Azimuth ) +end + +--- Flare the POINT_VEC3 Red. +-- @param #POINT_VEC3 self +function POINT_VEC3:FlareRed( Azimuth ) + self:F2( Azimuth ) + self:Flare( POINT_VEC3.FlareColor.Red, Azimuth ) +end + + +--- The POINT_VEC2 class +-- @type POINT_VEC2 +-- @field DCSTypes#Vec2 PointVec2 +-- @extends Point#POINT_VEC3 +POINT_VEC2 = { + ClassName = "POINT_VEC2", + } + +--- Create a new POINT_VEC2 object. +-- @param #POINT_VEC2 self +-- @param DCSTypes#Distance x The x coordinate of the Vec3 point, pointing to the North. +-- @param DCSTypes#Distance y The y coordinate of the Vec3 point, pointing to the Right. +-- @param DCSTypes#Distance LandHeightAdd (optional) The default height if required to be evaluated will be the land height of the x, y coordinate. You can specify an extra height to be added to the land height. +-- @return Point#POINT_VEC2 +function POINT_VEC2:New( x, y, LandHeightAdd ) + + local LandHeight = land.getHeight( { ["x"] = x, ["y"] = y } ) + if LandHeightAdd then + LandHeight = LandHeight + LandHeightAdd + end + + local self = BASE:Inherit( self, POINT_VEC3:New( x, LandHeight, y ) ) + self:F2( { x, y, LandHeightAdd } ) + + self.PointVec2 = { x = x, y = y } + + return self +end + +--- Calculate the distance from a reference @{Point#POINT_VEC2}. +-- @param #POINT_VEC2 self +-- @param #POINT_VEC2 PointVec2Reference The reference @{Point#POINT_VEC2}. +-- @return DCSTypes#Distance The distance from the reference @{Point#POINT_VEC2} in meters. +function POINT_VEC2:DistanceFromPointVec2( PointVec2Reference ) + self:F2( PointVec2Reference ) + + local Distance = ( ( PointVec2Reference.PointVec2.x - self.PointVec2.x ) ^ 2 + ( PointVec2Reference.PointVec2.y - self.PointVec2.y ) ^2 ) ^0.5 + + self:T2( Distance ) + return Distance +end + +--- Calculate the distance from a reference @{DCSTypes#Vec2}. +-- @param #POINT_VEC2 self +-- @param DCSTypes#Vec2 Vec2Reference The reference @{DCSTypes#Vec2}. +-- @return DCSTypes#Distance The distance from the reference @{DCSTypes#Vec2} in meters. +function POINT_VEC2:DistanceFromVec2( Vec2Reference ) + self:F2( Vec2Reference ) + + local Distance = ( ( Vec2Reference.x - self.PointVec2.x ) ^ 2 + ( Vec2Reference.y - self.PointVec2.y ) ^2 ) ^0.5 + + self:T2( Distance ) + return Distance +end + + +--- The main include file for the MOOSE system. + +Include.File( "Routines" ) +Include.File( "Base" ) +Include.File( "Object" ) +Include.File( "Identifiable" ) +Include.File( "Positionable" ) +Include.File( "Controllable" ) +Include.File( "Scheduler" ) +Include.File( "Event" ) +Include.File( "Menu" ) +Include.File( "Group" ) +Include.File( "Unit" ) +Include.File( "Zone" ) +Include.File( "Client" ) +Include.File( "Static" ) +Include.File( "Airbase" ) +Include.File( "Database" ) +Include.File( "Set" ) +Include.File( "Point" ) Include.File( "Moose" ) +Include.File( "Scoring" ) +Include.File( "Cargo" ) +Include.File( "Message" ) +Include.File( "Stage" ) +Include.File( "Task" ) +Include.File( "GoHomeTask" ) +Include.File( "DestroyBaseTask" ) +Include.File( "DestroyGroupsTask" ) +Include.File( "DestroyRadarsTask" ) +Include.File( "DestroyUnitTypesTask" ) +Include.File( "PickupTask" ) +Include.File( "DeployTask" ) +Include.File( "NoTask" ) +Include.File( "RouteTask" ) +Include.File( "Mission" ) +Include.File( "CleanUp" ) +Include.File( "Spawn" ) +Include.File( "Movement" ) +Include.File( "Sead" ) +Include.File( "Escort" ) +Include.File( "MissileTrainer" ) +Include.File( "PatrolZone" ) +Include.File( "AIBalancer" ) +Include.File( "AirbasePolice" ) +Include.File( "Detection" ) +Include.File( "FAC" ) -BASE:TraceOnOff( true ) +-- The order of the declarations is important here. Don't touch it. + +--- Declare the event dispatcher based on the EVENT class +_EVENTDISPATCHER = EVENT:New() -- #EVENT + +--- Declare the main database object, which is used internally by the MOOSE classes. +_DATABASE = DATABASE:New() -- Database#DATABASE + +--- Scoring system for MOOSE. +-- This scoring class calculates the hits and kills that players make within a simulation session. +-- Scoring is calculated using a defined algorithm. +-- With a small change in MissionScripting.lua, the scoring can also be logged in a CSV file, that can then be uploaded +-- to a database or a BI tool to publish the scoring results to the player community. +-- @module Scoring +-- @author FlightControl + + +--- The Scoring class +-- @type SCORING +-- @field Players A collection of the current players that have joined the game. +-- @extends Base#BASE +SCORING = { + ClassName = "SCORING", + ClassID = 0, + Players = {}, +} + +local _SCORINGCoalition = + { + [1] = "Red", + [2] = "Blue", + } + +local _SCORINGCategory = + { + [Unit.Category.AIRPLANE] = "Plane", + [Unit.Category.HELICOPTER] = "Helicopter", + [Unit.Category.GROUND_UNIT] = "Vehicle", + [Unit.Category.SHIP] = "Ship", + [Unit.Category.STRUCTURE] = "Structure", + } + +--- Creates a new SCORING object to administer the scoring achieved by players. +-- @param #SCORING self +-- @param #string GameName The name of the game. This name is also logged in the CSV score file. +-- @return #SCORING self +-- @usage +-- -- Define a new scoring object for the mission Gori Valley. +-- ScoringObject = SCORING:New( "Gori Valley" ) +function SCORING:New( GameName ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + if GameName then + self.GameName = GameName + else + error( "A game name must be given to register the scoring results" ) + end + + + _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) + _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) + _EVENTDISPATCHER:OnHit( self._EventOnHit, self ) + + --self.SchedulerId = routines.scheduleFunction( SCORING._FollowPlayersScheduled, { self }, 0, 5 ) + self.SchedulerId = SCHEDULER:New( self, self._FollowPlayersScheduled, {}, 0, 5 ) + + self:ScoreMenu() + + return self + +end + +--- Creates a score radio menu. Can be accessed using Radio -> F10. +-- @param #SCORING self +-- @return #SCORING self +function SCORING:ScoreMenu() + self.Menu = SUBMENU:New( 'Scoring' ) + self.AllScoresMenu = COMMANDMENU:New( 'Score All Active Players', self.Menu, SCORING.ReportScoreAll, self ) + --- = COMMANDMENU:New('Your Current Score', ReportScore, SCORING.ReportScorePlayer, self ) + return self +end + +--- Follows new players entering Clients within the DCSRTE. +-- TODO: Need to see if i can catch this also with an event. It will eliminate the schedule ... +function SCORING:_FollowPlayersScheduled() + self:F3( "_FollowPlayersScheduled" ) + + local ClientUnit = 0 + local CoalitionsData = { AlivePlayersRed = coalition.getPlayers(coalition.side.RED), AlivePlayersBlue = coalition.getPlayers(coalition.side.BLUE) } + local unitId + local unitData + local AlivePlayerUnits = {} + + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + self:T3( { "_FollowPlayersScheduled", CoalitionData } ) + for UnitId, UnitData in pairs( CoalitionData ) do + self:_AddPlayerFromUnit( UnitData ) + end + end + + return true +end + + +--- Track DEAD or CRASH events for the scoring. +-- @param #SCORING self +-- @param Event#EVENTDATA Event +function SCORING:_EventOnDeadOrCrash( Event ) + self:F( { Event } ) + + local TargetUnit = nil + local TargetGroup = nil + local TargetUnitName = "" + local TargetGroupName = "" + local TargetPlayerName = "" + local TargetCoalition = nil + local TargetCategory = nil + local TargetType = nil + local TargetUnitCoalition = nil + local TargetUnitCategory = nil + local TargetUnitType = nil + + if Event.IniDCSUnit then + + TargetUnit = Event.IniDCSUnit + TargetUnitName = Event.IniDCSUnitName + TargetGroup = Event.IniDCSGroup + TargetGroupName = Event.IniDCSGroupName + TargetPlayerName = TargetUnit:getPlayerName() + + TargetCoalition = TargetUnit:getCoalition() + --TargetCategory = TargetUnit:getCategory() + TargetCategory = TargetUnit:getDesc().category -- Workaround + TargetType = TargetUnit:getTypeName() + + TargetUnitCoalition = _SCORINGCoalition[TargetCoalition] + TargetUnitCategory = _SCORINGCategory[TargetCategory] + TargetUnitType = TargetType + + self:T( { TargetUnitName, TargetGroupName, TargetPlayerName, TargetCoalition, TargetCategory, TargetType } ) + end + + for PlayerName, PlayerData in pairs( self.Players ) do + if PlayerData then -- This should normally not happen, but i'll test it anyway. + self:T( "Something got killed" ) + + -- Some variables + local InitUnitName = PlayerData.UnitName + local InitUnitType = PlayerData.UnitType + local InitCoalition = PlayerData.UnitCoalition + local InitCategory = PlayerData.UnitCategory + local InitUnitCoalition = _SCORINGCoalition[InitCoalition] + local InitUnitCategory = _SCORINGCategory[InitCategory] + + self:T( { InitUnitName, InitUnitType, InitUnitCoalition, InitCoalition, InitUnitCategory, InitCategory } ) + + -- What is he hitting? + if TargetCategory then + if PlayerData and PlayerData.Hit and PlayerData.Hit[TargetCategory] and PlayerData.Hit[TargetCategory][TargetUnitName] then -- Was there a hit for this unit for this player before registered??? + if not PlayerData.Kill[TargetCategory] then + PlayerData.Kill[TargetCategory] = {} + end + if not PlayerData.Kill[TargetCategory][TargetType] then + PlayerData.Kill[TargetCategory][TargetType] = {} + PlayerData.Kill[TargetCategory][TargetType].Score = 0 + PlayerData.Kill[TargetCategory][TargetType].ScoreKill = 0 + PlayerData.Kill[TargetCategory][TargetType].Penalty = 0 + PlayerData.Kill[TargetCategory][TargetType].PenaltyKill = 0 + end + + if InitCoalition == TargetCoalition then + PlayerData.Penalty = PlayerData.Penalty + 25 + PlayerData.Kill[TargetCategory][TargetType].Penalty = PlayerData.Kill[TargetCategory][TargetType].Penalty + 25 + PlayerData.Kill[TargetCategory][TargetType].PenaltyKill = PlayerData.Kill[TargetCategory][TargetType].PenaltyKill + 1 + MESSAGE:New( "Player '" .. PlayerName .. "' killed a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. + PlayerData.Kill[TargetCategory][TargetType].PenaltyKill .. " times. Penalty: -" .. PlayerData.Kill[TargetCategory][TargetType].Penalty .. + ". Score Total:" .. PlayerData.Score - PlayerData.Penalty, + 5 ):ToAll() + self:ScoreCSV( PlayerName, "KILL_PENALTY", 1, -125, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) + else + PlayerData.Score = PlayerData.Score + 10 + PlayerData.Kill[TargetCategory][TargetType].Score = PlayerData.Kill[TargetCategory][TargetType].Score + 10 + PlayerData.Kill[TargetCategory][TargetType].ScoreKill = PlayerData.Kill[TargetCategory][TargetType].ScoreKill + 1 + MESSAGE:New( "Player '" .. PlayerName .. "' killed an enemy " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. + PlayerData.Kill[TargetCategory][TargetType].ScoreKill .. " times. Score: " .. PlayerData.Kill[TargetCategory][TargetType].Score .. + ". Score Total:" .. PlayerData.Score - PlayerData.Penalty, + 5 ):ToAll() + self:ScoreCSV( PlayerName, "KILL_SCORE", 1, 10, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) + end + end + end + end + end +end + + + +--- Add a new player entering a Unit. +function SCORING:_AddPlayerFromUnit( UnitData ) + self:F( UnitData ) + + if UnitData and UnitData:isExist() then + local UnitName = UnitData:getName() + local PlayerName = UnitData:getPlayerName() + local UnitDesc = UnitData:getDesc() + local UnitCategory = UnitDesc.category + local UnitCoalition = UnitData:getCoalition() + local UnitTypeName = UnitData:getTypeName() + + self:T( { PlayerName, UnitName, UnitCategory, UnitCoalition, UnitTypeName } ) + + if self.Players[PlayerName] == nil then -- I believe this is the place where a Player gets a life in a mission when he enters a unit ... + self.Players[PlayerName] = {} + self.Players[PlayerName].Hit = {} + self.Players[PlayerName].Kill = {} + self.Players[PlayerName].Mission = {} + + -- for CategoryID, CategoryName in pairs( SCORINGCategory ) do + -- self.Players[PlayerName].Hit[CategoryID] = {} + -- self.Players[PlayerName].Kill[CategoryID] = {} + -- end + self.Players[PlayerName].HitPlayers = {} + self.Players[PlayerName].HitUnits = {} + self.Players[PlayerName].Score = 0 + self.Players[PlayerName].Penalty = 0 + self.Players[PlayerName].PenaltyCoalition = 0 + self.Players[PlayerName].PenaltyWarning = 0 + end + + if not self.Players[PlayerName].UnitCoalition then + self.Players[PlayerName].UnitCoalition = UnitCoalition + else + if self.Players[PlayerName].UnitCoalition ~= UnitCoalition then + self.Players[PlayerName].Penalty = self.Players[PlayerName].Penalty + 50 + self.Players[PlayerName].PenaltyCoalition = self.Players[PlayerName].PenaltyCoalition + 1 + MESSAGE:New( "Player '" .. PlayerName .. "' changed coalition from " .. _SCORINGCoalition[self.Players[PlayerName].UnitCoalition] .. " to " .. _SCORINGCoalition[UnitCoalition] .. + "(changed " .. self.Players[PlayerName].PenaltyCoalition .. " times the coalition). 50 Penalty points added.", + 2 + ):ToAll() + self:ScoreCSV( PlayerName, "COALITION_PENALTY", 1, -50, self.Players[PlayerName].UnitName, _SCORINGCoalition[self.Players[PlayerName].UnitCoalition], _SCORINGCategory[self.Players[PlayerName].UnitCategory], self.Players[PlayerName].UnitType, + UnitName, _SCORINGCoalition[UnitCoalition], _SCORINGCategory[UnitCategory], UnitData:getTypeName() ) + end + end + self.Players[PlayerName].UnitName = UnitName + self.Players[PlayerName].UnitCoalition = UnitCoalition + self.Players[PlayerName].UnitCategory = UnitCategory + self.Players[PlayerName].UnitType = UnitTypeName + + if self.Players[PlayerName].Penalty > 100 then + if self.Players[PlayerName].PenaltyWarning < 1 then + MESSAGE:New( "Player '" .. PlayerName .. "': WARNING! If you continue to commit FRATRICIDE and have a PENALTY score higher than 150, you will be COURT MARTIALED and DISMISSED from this mission! \nYour total penalty is: " .. self.Players[PlayerName].Penalty, + 30 + ):ToAll() + self.Players[PlayerName].PenaltyWarning = self.Players[PlayerName].PenaltyWarning + 1 + end + end + + if self.Players[PlayerName].Penalty > 150 then + ClientGroup = GROUP:NewFromDCSUnit( UnitData ) + ClientGroup:Destroy() + MESSAGE:New( "Player '" .. PlayerName .. "' committed FRATRICIDE, he will be COURT MARTIALED and is DISMISSED from this mission!", + 10 + ):ToAll() + end + + end +end + + +--- Registers Scores the players completing a Mission Task. +function SCORING:_AddMissionTaskScore( PlayerUnit, MissionName, Score ) + self:F( { PlayerUnit, MissionName, Score } ) + + local PlayerName = PlayerUnit:getPlayerName() + + if not self.Players[PlayerName].Mission[MissionName] then + self.Players[PlayerName].Mission[MissionName] = {} + self.Players[PlayerName].Mission[MissionName].ScoreTask = 0 + self.Players[PlayerName].Mission[MissionName].ScoreMission = 0 + end + + self:T( PlayerName ) + self:T( self.Players[PlayerName].Mission[MissionName] ) + + self.Players[PlayerName].Score = self.Players[PlayerName].Score + Score + self.Players[PlayerName].Mission[MissionName].ScoreTask = self.Players[PlayerName].Mission[MissionName].ScoreTask + Score + + MESSAGE:New( "Player '" .. PlayerName .. "' has finished another Task in Mission '" .. MissionName .. "'. " .. + Score .. " Score points added.", + 20 ):ToAll() + + self:ScoreCSV( PlayerName, "TASK_" .. MissionName:gsub( ' ', '_' ), 1, Score, PlayerUnit:getName() ) +end + + +--- Registers Mission Scores for possible multiple players that contributed in the Mission. +function SCORING:_AddMissionScore( MissionName, Score ) + self:F( { MissionName, Score } ) + + for PlayerName, PlayerData in pairs( self.Players ) do + + if PlayerData.Mission[MissionName] then + PlayerData.Score = PlayerData.Score + Score + PlayerData.Mission[MissionName].ScoreMission = PlayerData.Mission[MissionName].ScoreMission + Score + MESSAGE:New( "Player '" .. PlayerName .. "' has finished Mission '" .. MissionName .. "'. " .. + Score .. " Score points added.", + 20 ):ToAll() + self:ScoreCSV( PlayerName, "MISSION_" .. MissionName:gsub( ' ', '_' ), 1, Score ) + end + end +end + +--- Handles the OnHit event for the scoring. +-- @param #SCORING self +-- @param Event#EVENTDATA Event +function SCORING:_EventOnHit( Event ) + self:F( { Event } ) + + local InitUnit = nil + local InitUnitName = "" + local InitGroup = nil + local InitGroupName = "" + local InitPlayerName = nil + + local InitCoalition = nil + local InitCategory = nil + local InitType = nil + local InitUnitCoalition = nil + local InitUnitCategory = nil + local InitUnitType = nil + + local TargetUnit = nil + local TargetUnitName = "" + local TargetGroup = nil + local TargetGroupName = "" + local TargetPlayerName = "" + + local TargetCoalition = nil + local TargetCategory = nil + local TargetType = nil + local TargetUnitCoalition = nil + local TargetUnitCategory = nil + local TargetUnitType = nil + + if Event.IniDCSUnit then + + InitUnit = Event.IniDCSUnit + InitUnitName = Event.IniDCSUnitName + InitGroup = Event.IniDCSGroup + InitGroupName = Event.IniDCSGroupName + InitPlayerName = InitUnit:getPlayerName() + + InitCoalition = InitUnit:getCoalition() + --TODO: Workaround Client DCS Bug + --InitCategory = InitUnit:getCategory() + InitCategory = InitUnit:getDesc().category + InitType = InitUnit:getTypeName() + + InitUnitCoalition = _SCORINGCoalition[InitCoalition] + InitUnitCategory = _SCORINGCategory[InitCategory] + InitUnitType = InitType + + self:T( { InitUnitName, InitGroupName, InitPlayerName, InitCoalition, InitCategory, InitType , InitUnitCoalition, InitUnitCategory, InitUnitType } ) + end + + + if Event.TgtDCSUnit then + + TargetUnit = Event.TgtDCSUnit + TargetUnitName = Event.TgtDCSUnitName + TargetGroup = Event.TgtDCSGroup + TargetGroupName = Event.TgtDCSGroupName + TargetPlayerName = TargetUnit:getPlayerName() + + TargetCoalition = TargetUnit:getCoalition() + --TODO: Workaround Client DCS Bug + --TargetCategory = TargetUnit:getCategory() + TargetCategory = TargetUnit:getDesc().category + TargetType = TargetUnit:getTypeName() + + TargetUnitCoalition = _SCORINGCoalition[TargetCoalition] + TargetUnitCategory = _SCORINGCategory[TargetCategory] + TargetUnitType = TargetType + + self:T( { TargetUnitName, TargetGroupName, TargetPlayerName, TargetCoalition, TargetCategory, TargetType, TargetUnitCoalition, TargetUnitCategory, TargetUnitType } ) + end + + if InitPlayerName ~= nil then -- It is a player that is hitting something + self:_AddPlayerFromUnit( InitUnit ) + if self.Players[InitPlayerName] then -- This should normally not happen, but i'll test it anyway. + if TargetPlayerName ~= nil then -- It is a player hitting another player ... + self:_AddPlayerFromUnit( TargetUnit ) + self.Players[InitPlayerName].HitPlayers = self.Players[InitPlayerName].HitPlayers + 1 + end + + self:T( "Hitting Something" ) + -- What is he hitting? + if TargetCategory then + if not self.Players[InitPlayerName].Hit[TargetCategory] then + self.Players[InitPlayerName].Hit[TargetCategory] = {} + end + if not self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName] then + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName] = {} + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score = 0 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty = 0 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit = 0 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit = 0 + end + local Score = 0 + if InitCoalition == TargetCoalition then + self.Players[InitPlayerName].Penalty = self.Players[InitPlayerName].Penalty + 10 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty + 10 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit + 1 + MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit .. " times. Penalty: -" .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty .. + ". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty, + 2 + ):ToAll() + self:ScoreCSV( InitPlayerName, "HIT_PENALTY", 1, -25, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) + else + self.Players[InitPlayerName].Score = self.Players[InitPlayerName].Score + 10 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score + 1 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit + 1 + MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a target " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit .. " times. Score: " .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score .. + ". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty, + 2 + ):ToAll() + self:ScoreCSV( InitPlayerName, "HIT_SCORE", 1, 1, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) + end + end + end + elseif InitPlayerName == nil then -- It is an AI hitting a player??? + + end +end + + +function SCORING:ReportScoreAll() + + env.info( "Hello World " ) + + local ScoreMessage = "" + local PlayerMessage = "" + + self:T( "Score Report" ) + + for PlayerName, PlayerData in pairs( self.Players ) do + if PlayerData then -- This should normally not happen, but i'll test it anyway. + self:T( "Score Player: " .. PlayerName ) + + -- Some variables + local InitUnitCoalition = _SCORINGCoalition[PlayerData.UnitCoalition] + local InitUnitCategory = _SCORINGCategory[PlayerData.UnitCategory] + local InitUnitType = PlayerData.UnitType + local InitUnitName = PlayerData.UnitName + + local PlayerScore = 0 + local PlayerPenalty = 0 + + ScoreMessage = ":\n" + + local ScoreMessageHits = "" + + for CategoryID, CategoryName in pairs( _SCORINGCategory ) do + self:T( CategoryName ) + if PlayerData.Hit[CategoryID] then + local Score = 0 + local ScoreHit = 0 + local Penalty = 0 + local PenaltyHit = 0 + self:T( "Hit scores exist for player " .. PlayerName ) + for UnitName, UnitData in pairs( PlayerData.Hit[CategoryID] ) do + Score = Score + UnitData.Score + ScoreHit = ScoreHit + UnitData.ScoreHit + Penalty = Penalty + UnitData.Penalty + PenaltyHit = UnitData.PenaltyHit + end + local ScoreMessageHit = string.format( "%s:%d ", CategoryName, Score - Penalty ) + self:T( ScoreMessageHit ) + ScoreMessageHits = ScoreMessageHits .. ScoreMessageHit + PlayerScore = PlayerScore + Score + PlayerPenalty = PlayerPenalty + Penalty + else + --ScoreMessageHits = ScoreMessageHits .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) + end + end + if ScoreMessageHits ~= "" then + ScoreMessage = ScoreMessage .. " Hits: " .. ScoreMessageHits .. "\n" + end + + local ScoreMessageKills = "" + for CategoryID, CategoryName in pairs( _SCORINGCategory ) do + self:T( "Kill scores exist for player " .. PlayerName ) + if PlayerData.Kill[CategoryID] then + local Score = 0 + local ScoreKill = 0 + local Penalty = 0 + local PenaltyKill = 0 + + for UnitName, UnitData in pairs( PlayerData.Kill[CategoryID] ) do + Score = Score + UnitData.Score + ScoreKill = ScoreKill + UnitData.ScoreKill + Penalty = Penalty + UnitData.Penalty + PenaltyKill = PenaltyKill + UnitData.PenaltyKill + end + + local ScoreMessageKill = string.format( " %s:%d ", CategoryName, Score - Penalty ) + self:T( ScoreMessageKill ) + ScoreMessageKills = ScoreMessageKills .. ScoreMessageKill + + PlayerScore = PlayerScore + Score + PlayerPenalty = PlayerPenalty + Penalty + else + --ScoreMessageKills = ScoreMessageKills .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) + end + end + if ScoreMessageKills ~= "" then + ScoreMessage = ScoreMessage .. " Kills: " .. ScoreMessageKills .. "\n" + end + + local ScoreMessageCoalitionChangePenalties = "" + if PlayerData.PenaltyCoalition ~= 0 then + ScoreMessageCoalitionChangePenalties = ScoreMessageCoalitionChangePenalties .. string.format( " -%d (%d changed)", PlayerData.Penalty, PlayerData.PenaltyCoalition ) + PlayerPenalty = PlayerPenalty + PlayerData.Penalty + end + if ScoreMessageCoalitionChangePenalties ~= "" then + ScoreMessage = ScoreMessage .. " Coalition Penalties: " .. ScoreMessageCoalitionChangePenalties .. "\n" + end + + local ScoreMessageMission = "" + local ScoreMission = 0 + local ScoreTask = 0 + for MissionName, MissionData in pairs( PlayerData.Mission ) do + ScoreMission = ScoreMission + MissionData.ScoreMission + ScoreTask = ScoreTask + MissionData.ScoreTask + ScoreMessageMission = ScoreMessageMission .. "'" .. MissionName .. "'; " + end + PlayerScore = PlayerScore + ScoreMission + ScoreTask + + if ScoreMessageMission ~= "" then + ScoreMessage = ScoreMessage .. " Tasks: " .. ScoreTask .. " Mission: " .. ScoreMission .. " ( " .. ScoreMessageMission .. ")\n" + end + + PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score:%d (%d Score -%d Penalties)%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage ) + end + end + MESSAGE:New( PlayerMessage, 30, "Player Scores" ):ToAll() +end + + +function SCORING:ReportScorePlayer() + + env.info( "Hello World " ) + + local ScoreMessage = "" + local PlayerMessage = "" + + self:T( "Score Report" ) + + for PlayerName, PlayerData in pairs( self.Players ) do + if PlayerData then -- This should normally not happen, but i'll test it anyway. + self:T( "Score Player: " .. PlayerName ) + + -- Some variables + local InitUnitCoalition = _SCORINGCoalition[PlayerData.UnitCoalition] + local InitUnitCategory = _SCORINGCategory[PlayerData.UnitCategory] + local InitUnitType = PlayerData.UnitType + local InitUnitName = PlayerData.UnitName + + local PlayerScore = 0 + local PlayerPenalty = 0 + + ScoreMessage = "" + + local ScoreMessageHits = "" + + for CategoryID, CategoryName in pairs( _SCORINGCategory ) do + self:T( CategoryName ) + if PlayerData.Hit[CategoryID] then + local Score = 0 + local ScoreHit = 0 + local Penalty = 0 + local PenaltyHit = 0 + self:T( "Hit scores exist for player " .. PlayerName ) + for UnitName, UnitData in pairs( PlayerData.Hit[CategoryID] ) do + Score = Score + UnitData.Score + ScoreHit = ScoreHit + UnitData.ScoreHit + Penalty = Penalty + UnitData.Penalty + PenaltyHit = UnitData.PenaltyHit + end + local ScoreMessageHit = string.format( "\n %s = %d score(%d;-%d) hits(#%d;#-%d)", CategoryName, Score - Penalty, Score, Penalty, ScoreHit, PenaltyHit ) + self:T( ScoreMessageHit ) + ScoreMessageHits = ScoreMessageHits .. ScoreMessageHit + PlayerScore = PlayerScore + Score + PlayerPenalty = PlayerPenalty + Penalty + else + --ScoreMessageHits = ScoreMessageHits .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) + end + end + if ScoreMessageHits ~= "" then + ScoreMessage = ScoreMessage .. "\n Hits: " .. ScoreMessageHits .. " " + end + + local ScoreMessageKills = "" + for CategoryID, CategoryName in pairs( _SCORINGCategory ) do + self:T( "Kill scores exist for player " .. PlayerName ) + if PlayerData.Kill[CategoryID] then + local Score = 0 + local ScoreKill = 0 + local Penalty = 0 + local PenaltyKill = 0 + + for UnitName, UnitData in pairs( PlayerData.Kill[CategoryID] ) do + Score = Score + UnitData.Score + ScoreKill = ScoreKill + UnitData.ScoreKill + Penalty = Penalty + UnitData.Penalty + PenaltyKill = PenaltyKill + UnitData.PenaltyKill + end + + local ScoreMessageKill = string.format( "\n %s = %d score(%d;-%d) hits(#%d;#-%d)", CategoryName, Score - Penalty, Score, Penalty, ScoreKill, PenaltyKill ) + self:T( ScoreMessageKill ) + ScoreMessageKills = ScoreMessageKills .. ScoreMessageKill + + PlayerScore = PlayerScore + Score + PlayerPenalty = PlayerPenalty + Penalty + else + --ScoreMessageKills = ScoreMessageKills .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) + end + end + if ScoreMessageKills ~= "" then + ScoreMessage = ScoreMessage .. "\n Kills: " .. ScoreMessageKills .. " " + end + + local ScoreMessageCoalitionChangePenalties = "" + if PlayerData.PenaltyCoalition ~= 0 then + ScoreMessageCoalitionChangePenalties = ScoreMessageCoalitionChangePenalties .. string.format( " -%d (%d changed)", PlayerData.Penalty, PlayerData.PenaltyCoalition ) + PlayerPenalty = PlayerPenalty + PlayerData.Penalty + end + if ScoreMessageCoalitionChangePenalties ~= "" then + ScoreMessage = ScoreMessage .. "\n Coalition: " .. ScoreMessageCoalitionChangePenalties .. " " + end + + local ScoreMessageMission = "" + local ScoreMission = 0 + local ScoreTask = 0 + for MissionName, MissionData in pairs( PlayerData.Mission ) do + ScoreMission = ScoreMission + MissionData.ScoreMission + ScoreTask = ScoreTask + MissionData.ScoreTask + ScoreMessageMission = ScoreMessageMission .. "'" .. MissionName .. "'; " + end + PlayerScore = PlayerScore + ScoreMission + ScoreTask + + if ScoreMessageMission ~= "" then + ScoreMessage = ScoreMessage .. "\n Tasks: " .. ScoreTask .. " Mission: " .. ScoreMission .. " ( " .. ScoreMessageMission .. ") " + end + + PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score = %d ( %d Score, -%d Penalties ):%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage ) + end + end + MESSAGE:New( PlayerMessage, 30, "Player Scores" ):ToAll() + +end + + +function SCORING:SecondsToClock(sSeconds) + local nSeconds = sSeconds + if nSeconds == 0 then + --return nil; + return "00:00:00"; + else + nHours = string.format("%02.f", math.floor(nSeconds/3600)); + nMins = string.format("%02.f", math.floor(nSeconds/60 - (nHours*60))); + nSecs = string.format("%02.f", math.floor(nSeconds - nHours*3600 - nMins *60)); + return nHours..":"..nMins..":"..nSecs + end +end + +--- Opens a score CSV file to log the scores. +-- @param #SCORING self +-- @param #string ScoringCSV +-- @return #SCORING self +-- @usage +-- -- Open a new CSV file to log the scores of the game Gori Valley. Let the name of the CSV file begin with "Player Scores". +-- ScoringObject = SCORING:New( "Gori Valley" ) +-- ScoringObject:OpenCSV( "Player Scores" ) +function SCORING:OpenCSV( ScoringCSV ) + self:F( ScoringCSV ) + + if lfs and io and os then + if ScoringCSV then + self.ScoringCSV = ScoringCSV + local fdir = lfs.writedir() .. [[Logs\]] .. self.ScoringCSV .. " " .. os.date( "%Y-%m-%d %H-%M-%S" ) .. ".csv" + + self.CSVFile, self.err = io.open( fdir, "w+" ) + if not self.CSVFile then + error( "Error: Cannot open CSV file in " .. lfs.writedir() ) + end + + self.CSVFile:write( '"GameName","RunTime","Time","PlayerName","ScoreType","PlayerUnitCoaltion","PlayerUnitCategory","PlayerUnitType","PlayerUnitName","TargetUnitCoalition","TargetUnitCategory","TargetUnitType","TargetUnitName","Times","Score"\n' ) + + self.RunTime = os.date("%y-%m-%d_%H-%M-%S") + else + error( "A string containing the CSV file name must be given." ) + end + else + self:E( "The MissionScripting.lua file has not been changed to allow lfs, io and os modules to be used..." ) + end + return self +end + + +--- Registers a score for a player. +-- @param #SCORING self +-- @param #string PlayerName The name of the player. +-- @param #string ScoreType The type of the score. +-- @param #string ScoreTimes The amount of scores achieved. +-- @param #string ScoreAmount The score given. +-- @param #string PlayerUnitName The unit name of the player. +-- @param #string PlayerUnitCoalition The coalition of the player unit. +-- @param #string PlayerUnitCategory The category of the player unit. +-- @param #string PlayerUnitType The type of the player unit. +-- @param #string TargetUnitName The name of the target unit. +-- @param #string TargetUnitCoalition The coalition of the target unit. +-- @param #string TargetUnitCategory The category of the target unit. +-- @param #string TargetUnitType The type of the target unit. +-- @return #SCORING self +function SCORING:ScoreCSV( PlayerName, ScoreType, ScoreTimes, ScoreAmount, PlayerUnitName, PlayerUnitCoalition, PlayerUnitCategory, PlayerUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) + --write statistic information to file + local ScoreTime = self:SecondsToClock( timer.getTime() ) + PlayerName = PlayerName:gsub( '"', '_' ) + + if PlayerUnitName and PlayerUnitName ~= '' then + local PlayerUnit = Unit.getByName( PlayerUnitName ) + + if PlayerUnit then + if not PlayerUnitCategory then + --PlayerUnitCategory = SCORINGCategory[PlayerUnit:getCategory()] + PlayerUnitCategory = _SCORINGCategory[PlayerUnit:getDesc().category] + end + + if not PlayerUnitCoalition then + PlayerUnitCoalition = _SCORINGCoalition[PlayerUnit:getCoalition()] + end + + if not PlayerUnitType then + PlayerUnitType = PlayerUnit:getTypeName() + end + else + PlayerUnitName = '' + PlayerUnitCategory = '' + PlayerUnitCoalition = '' + PlayerUnitType = '' + end + else + PlayerUnitName = '' + PlayerUnitCategory = '' + PlayerUnitCoalition = '' + PlayerUnitType = '' + end + + if not TargetUnitCoalition then + TargetUnitCoalition = '' + end + + if not TargetUnitCategory then + TargetUnitCategory = '' + end + + if not TargetUnitType then + TargetUnitType = '' + end + + if not TargetUnitName then + TargetUnitName = '' + end + + if lfs and io and os then + self.CSVFile:write( + '"' .. self.GameName .. '"' .. ',' .. + '"' .. self.RunTime .. '"' .. ',' .. + '' .. ScoreTime .. '' .. ',' .. + '"' .. PlayerName .. '"' .. ',' .. + '"' .. ScoreType .. '"' .. ',' .. + '"' .. PlayerUnitCoalition .. '"' .. ',' .. + '"' .. PlayerUnitCategory .. '"' .. ',' .. + '"' .. PlayerUnitType .. '"' .. ',' .. + '"' .. PlayerUnitName .. '"' .. ',' .. + '"' .. TargetUnitCoalition .. '"' .. ',' .. + '"' .. TargetUnitCategory .. '"' .. ',' .. + '"' .. TargetUnitType .. '"' .. ',' .. + '"' .. TargetUnitName .. '"' .. ',' .. + '' .. ScoreTimes .. '' .. ',' .. + '' .. ScoreAmount + ) + + self.CSVFile:write( "\n" ) + end +end + + +function SCORING:CloseCSV() + if lfs and io and os then + self.CSVFile:close() + end +end + +--- CARGO Classes +-- @module CARGO + + + + + + + +--- Clients are those Groups defined within the Mission Editor that have the skillset defined as "Client" or "Player". +-- These clients are defined within the Mission Orchestration Framework (MOF) + +CARGOS = {} + + +CARGO_ZONE = { + ClassName="CARGO_ZONE", + CargoZoneName = '', + CargoHostUnitName = '', + SIGNAL = { + TYPE = { + SMOKE = { ID = 1, TEXT = "smoke" }, + FLARE = { ID = 2, TEXT = "flare" } + }, + COLOR = { + GREEN = { ID = 1, TRIGGERCOLOR = trigger.smokeColor.Green, TEXT = "A green" }, + RED = { ID = 2, TRIGGERCOLOR = trigger.smokeColor.Red, TEXT = "A red" }, + WHITE = { ID = 3, TRIGGERCOLOR = trigger.smokeColor.White, TEXT = "A white" }, + ORANGE = { ID = 4, TRIGGERCOLOR = trigger.smokeColor.Orange, TEXT = "An orange" }, + BLUE = { ID = 5, TRIGGERCOLOR = trigger.smokeColor.Blue, TEXT = "A blue" }, + YELLOW = { ID = 6, TRIGGERCOLOR = trigger.flareColor.Yellow, TEXT = "A yellow" } + } + } +} + +--- Creates a new zone where cargo can be collected or deployed. +-- The zone functionality is useful to smoke or indicate routes for cargo pickups or deployments. +-- Provide the zone name as declared in the mission file into the CargoZoneName in the :New method. +-- An optional parameter is the CargoHostName, which is a Group declared with Late Activation switched on in the mission file. +-- The CargoHostName is the "host" of the cargo zone: +-- +-- * It will smoke the zone position when a client is approaching the zone. +-- * Depending on the cargo type, it will assist in the delivery of the cargo by driving to and from the client. +-- +-- @param #CARGO_ZONE self +-- @param #string CargoZoneName The name of the zone as declared within the mission editor. +-- @param #string CargoHostName The name of the Group "hosting" the zone. The Group MUST NOT be a static, and must be a "mobile" unit. +function CARGO_ZONE:New( CargoZoneName, CargoHostName ) local self = BASE:Inherit( self, ZONE:New( CargoZoneName ) ) + self:F( { CargoZoneName, CargoHostName } ) + + self.CargoZoneName = CargoZoneName + self.SignalHeight = 2 + --self.CargoZone = trigger.misc.getZone( CargoZoneName ) + + + if CargoHostName then + self.CargoHostName = CargoHostName + end + + self:T( self.CargoZoneName ) + + return self +end + +function CARGO_ZONE:Spawn() + self:F( self.CargoHostName ) + + if self.CargoHostName then -- Only spawn a host in the zone when there is one given as a parameter in the New function. + if self.CargoHostSpawn then + local CargoHostGroup = self.CargoHostSpawn:GetGroupFromIndex() + if CargoHostGroup and CargoHostGroup:IsAlive() then + else + self.CargoHostSpawn:ReSpawn( 1 ) + end + else + self:T( "Initialize CargoHostSpawn" ) + self.CargoHostSpawn = SPAWN:New( self.CargoHostName ):Limit( 1, 1 ) + self.CargoHostSpawn:ReSpawn( 1 ) + end + end + + return self +end + +function CARGO_ZONE:GetHostUnit() + self:F( self ) + + if self.CargoHostName then + + -- A Host has been given, signal the host + local CargoHostGroup = self.CargoHostSpawn:GetGroupFromIndex() + local CargoHostUnit + if CargoHostGroup and CargoHostGroup:IsAlive() then + CargoHostUnit = CargoHostGroup:GetUnit(1) + else + CargoHostUnit = StaticObject.getByName( self.CargoHostName ) + end + + return CargoHostUnit + end + + return nil +end + +function CARGO_ZONE:ReportCargosToClient( Client, CargoType ) + self:F() + + local SignalUnit = self:GetHostUnit() + + if SignalUnit then + + local SignalUnitTypeName = SignalUnit:getTypeName() + + local HostMessage = "" + + local IsCargo = false + for CargoID, Cargo in pairs( CARGOS ) do + if Cargo.CargoType == Task.CargoType then + if Cargo:IsStatusNone() then + HostMessage = HostMessage .. " - " .. Cargo.CargoName .. " - " .. Cargo.CargoType .. " (" .. Cargo.Weight .. "kg)" .. "\n" + IsCargo = true + end + end + end + + if not IsCargo then + HostMessage = "No Cargo Available." + end + + Client:Message( HostMessage, 20, SignalUnitTypeName .. ": Reporting Cargo", 10 ) + end +end + + +function CARGO_ZONE:Signal() + self:F() + + local Signalled = false + + if self.SignalType then + + if self.CargoHostName then + + -- A Host has been given, signal the host + + local SignalUnit = self:GetHostUnit() + + if SignalUnit then + + self:T( 'Signalling Unit' ) + local SignalVehiclePos = SignalUnit:GetPointVec3() + SignalVehiclePos.y = SignalVehiclePos.y + 2 + + if self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.SMOKE.ID then + + trigger.action.smoke( SignalVehiclePos, self.SignalColor.TRIGGERCOLOR ) + Signalled = true + + elseif self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.FLARE.ID then + + trigger.action.signalFlare( SignalVehiclePos, self.SignalColor.TRIGGERCOLOR , 0 ) + Signalled = false + + end + end + + else + + local ZonePointVec3 = self:GetPointVec3( self.SignalHeight ) -- Get the zone position + the landheight + 2 meters + + if self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.SMOKE.ID then + + trigger.action.smoke( ZonePointVec3, self.SignalColor.TRIGGERCOLOR ) + Signalled = true + + elseif self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.FLARE.ID then + trigger.action.signalFlare( ZonePointVec3, self.SignalColor.TRIGGERCOLOR, 0 ) + Signalled = false + + end + end + end + + return Signalled + +end + +function CARGO_ZONE:WhiteSmoke( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.WHITE + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:BlueSmoke( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.BLUE + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:RedSmoke( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.RED + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:OrangeSmoke( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.ORANGE + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:GreenSmoke( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.GREEN + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + + +function CARGO_ZONE:WhiteFlare( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.WHITE + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:RedFlare( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.RED + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:GreenFlare( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.GREEN + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:YellowFlare( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.YELLOW + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + + +function CARGO_ZONE:GetCargoHostUnit() + self:F( self ) + + if self.CargoHostSpawn then + local CargoHostGroup = self.CargoHostSpawn:GetGroupFromIndex(1) + if CargoHostGroup and CargoHostGroup:IsAlive() then + local CargoHostUnit = CargoHostGroup:GetUnit(1) + if CargoHostUnit and CargoHostUnit:IsAlive() then + return CargoHostUnit + end + end + end + + return nil +end + +function CARGO_ZONE:GetCargoZoneName() + self:F() + + return self.CargoZoneName +end + +CARGO = { + ClassName = "CARGO", + STATUS = { + NONE = 0, + LOADED = 1, + UNLOADED = 2, + LOADING = 3 + }, + CargoClient = nil +} + +--- Add Cargo to the mission... Cargo functionality needs to be reworked a bit, so this is still under construction. I need to make a CARGO Class... +function CARGO:New( CargoType, CargoName, CargoWeight ) local self = BASE:Inherit( self, BASE:New() ) + self:F( { CargoType, CargoName, CargoWeight } ) + + + self.CargoType = CargoType + self.CargoName = CargoName + self.CargoWeight = CargoWeight + + self:StatusNone() + + return self +end + +function CARGO:Spawn( Client ) + self:F() + + return self + +end + +function CARGO:IsNear( Client, LandingZone ) + self:F() + + local Near = true + + return Near + +end + + +function CARGO:IsLoadingToClient() + self:F() + + if self:IsStatusLoading() then + return self.CargoClient + end + + return nil + +end + + +function CARGO:IsLoadedInClient() + self:F() + + if self:IsStatusLoaded() then + return self.CargoClient + end + + return nil + +end + + +function CARGO:UnLoad( Client, TargetZoneName ) + self:F() + + self:StatusUnLoaded() + + return self +end + +function CARGO:OnBoard( Client, LandingZone ) + self:F() + + local Valid = true + + self.CargoClient = Client + local ClientUnit = Client:GetClientGroupDCSUnit() + + return Valid +end + +function CARGO:OnBoarded( Client, LandingZone ) + self:F() + + local OnBoarded = true + + return OnBoarded +end + +function CARGO:Load( Client ) + self:F() + + self:StatusLoaded( Client ) + + return self +end + +function CARGO:IsLandingRequired() + self:F() + return true +end + +function CARGO:IsSlingLoad() + self:F() + return false +end + + +function CARGO:StatusNone() + self:F() + + self.CargoClient = nil + self.CargoStatus = CARGO.STATUS.NONE + + return self +end + +function CARGO:StatusLoading( Client ) + self:F() + + self.CargoClient = Client + self.CargoStatus = CARGO.STATUS.LOADING + self:T( "Cargo " .. self.CargoName .. " loading to Client: " .. self.CargoClient:GetClientGroupName() ) + + return self +end + +function CARGO:StatusLoaded( Client ) + self:F() + + self.CargoClient = Client + self.CargoStatus = CARGO.STATUS.LOADED + self:T( "Cargo " .. self.CargoName .. " loaded in Client: " .. self.CargoClient:GetClientGroupName() ) + + return self +end + +function CARGO:StatusUnLoaded() + self:F() + + self.CargoClient = nil + self.CargoStatus = CARGO.STATUS.UNLOADED + + return self +end + + +function CARGO:IsStatusNone() + self:F() + + return self.CargoStatus == CARGO.STATUS.NONE +end + +function CARGO:IsStatusLoading() + self:F() + + return self.CargoStatus == CARGO.STATUS.LOADING +end + +function CARGO:IsStatusLoaded() + self:F() + + return self.CargoStatus == CARGO.STATUS.LOADED +end + +function CARGO:IsStatusUnLoaded() + self:F() + + return self.CargoStatus == CARGO.STATUS.UNLOADED +end + + +CARGO_GROUP = { + ClassName = "CARGO_GROUP" +} + + +function CARGO_GROUP:New( CargoType, CargoName, CargoWeight, CargoGroupTemplate, CargoZone ) local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) ) + self:F( { CargoType, CargoName, CargoWeight, CargoGroupTemplate, CargoZone } ) + + self.CargoSpawn = SPAWN:NewWithAlias( CargoGroupTemplate, CargoName ) + self.CargoZone = CargoZone + + CARGOS[self.CargoName] = self + + return self + +end + +function CARGO_GROUP:Spawn( Client ) + self:F( { Client } ) + + local SpawnCargo = true + + if self:IsStatusNone() then + local CargoGroup = Group.getByName( self.CargoName ) + if CargoGroup and CargoGroup:isExist() then + SpawnCargo = false + end + + elseif self:IsStatusLoading() then + + local Client = self:IsLoadingToClient() + if Client and Client:GetDCSGroup() then + SpawnCargo = false + else + local CargoGroup = Group.getByName( self.CargoName ) + if CargoGroup and CargoGroup:isExist() then + SpawnCargo = false + end + end + + elseif self:IsStatusLoaded() then + + local ClientLoaded = self:IsLoadedInClient() + -- Now test if another Client is alive (not this one), and it has the CARGO, then this cargo does not need to be initialized and spawned. + if ClientLoaded and ClientLoaded ~= Client then + local ClientGroup = Client:GetDCSGroup() + if ClientLoaded:GetClientGroupDCSUnit() and ClientLoaded:GetClientGroupDCSUnit():isExist() then + SpawnCargo = false + else + self:StatusNone() + end + else + -- Same Client, but now in initialize, so set back the status to None. + self:StatusNone() + end + + elseif self:IsStatusUnLoaded() then + + SpawnCargo = false + + end + + if SpawnCargo then + if self.CargoZone:GetCargoHostUnit() then + --- ReSpawn the Cargo from the CargoHost + self.CargoGroupName = self.CargoSpawn:SpawnFromUnit( self.CargoZone:GetCargoHostUnit(), 60, 30, 1 ):GetName() + else + --- ReSpawn the Cargo in the CargoZone without a host ... + self:T( self.CargoZone ) + self.CargoGroupName = self.CargoSpawn:SpawnInZone( self.CargoZone, true, 1 ):GetName() + end + self:StatusNone() + end + + self:T( { self.CargoGroupName, CARGOS[self.CargoName].CargoGroupName } ) + + return self +end + +function CARGO_GROUP:IsNear( Client, LandingZone ) + self:F() + + local Near = false + + if self.CargoGroupName then + local CargoGroup = Group.getByName( self.CargoGroupName ) + if routines.IsPartOfGroupInRadius( CargoGroup, Client:GetPositionVec3(), 250 ) then + Near = true + end + end + + return Near + +end + + +function CARGO_GROUP:OnBoard( Client, LandingZone, OnBoardSide ) + self:F() + + local Valid = true + + local ClientUnit = Client:GetClientGroupDCSUnit() + + local CarrierPos = ClientUnit:getPoint() + local CarrierPosMove = ClientUnit:getPoint() + local CarrierPosOnBoard = ClientUnit:getPoint() + + local CargoGroup = Group.getByName( self.CargoGroupName ) + + local CargoUnit = CargoGroup:getUnit(1) + local CargoPos = CargoUnit:getPoint() + + self.CargoInAir = CargoUnit:inAir() + + self:T( self.CargoInAir ) + + -- Only move the group to the carrier when the cargo is not in the air + -- (eg. cargo can be on a oil derrick, moving the cargo on the oil derrick will drop the cargo on the sea). + if not self.CargoInAir then + + local Points = {} + + self:T( 'CargoPos x = ' .. CargoPos.x .. " z = " .. CargoPos.z ) + self:T( 'CarrierPosMove x = ' .. CarrierPosMove.x .. " z = " .. CarrierPosMove.z ) + + Points[#Points+1] = routines.ground.buildWP( CargoPos, "Cone", 10 ) + + self:T( 'Points[1] x = ' .. Points[1].x .. " y = " .. Points[1].y ) + + if OnBoardSide == nil then + OnBoardSide = CLIENT.ONBOARDSIDE.NONE + end + + if OnBoardSide == CLIENT.ONBOARDSIDE.LEFT then + + self:T( "TransportCargoOnBoard: Onboarding LEFT" ) + CarrierPosMove.z = CarrierPosMove.z - 25 + CarrierPosOnBoard.z = CarrierPosOnBoard.z - 5 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.RIGHT then + + self:T( "TransportCargoOnBoard: Onboarding RIGHT" ) + CarrierPosMove.z = CarrierPosMove.z + 25 + CarrierPosOnBoard.z = CarrierPosOnBoard.z + 5 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.BACK then + + self:T( "TransportCargoOnBoard: Onboarding BACK" ) + CarrierPosMove.x = CarrierPosMove.x - 25 + CarrierPosOnBoard.x = CarrierPosOnBoard.x - 5 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.FRONT then + + self:T( "TransportCargoOnBoard: Onboarding FRONT" ) + CarrierPosMove.x = CarrierPosMove.x + 25 + CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.NONE then + + self:T( "TransportCargoOnBoard: Onboarding CENTRAL" ) + Points[#Points+1] = routines.ground.buildWP( CarrierPos, "Cone", 10 ) + + end + self:T( "TransportCargoOnBoard: Routing " .. self.CargoGroupName ) + + --routines.scheduleFunction( routines.goRoute, { self.CargoGroupName, Points}, timer.getTime() + 4 ) + SCHEDULER:New( self, routines.goRoute, { self.CargoGroupName, Points}, 4 ) + end + + self:StatusLoading( Client ) + + return Valid + +end + + +function CARGO_GROUP:OnBoarded( Client, LandingZone ) + self:F() + + local OnBoarded = false + + local CargoGroup = Group.getByName( self.CargoGroupName ) + + if not self.CargoInAir then + if routines.IsPartOfGroupInRadius( CargoGroup, Client:GetPositionVec3(), 25 ) then + CargoGroup:destroy() + self:StatusLoaded( Client ) + OnBoarded = true + end + else + CargoGroup:destroy() + self:StatusLoaded( Client ) + OnBoarded = true + end + + return OnBoarded +end + + +function CARGO_GROUP:UnLoad( Client, TargetZoneName ) + self:F() + + self:T( 'self.CargoName = ' .. self.CargoName ) + + local CargoGroup = self.CargoSpawn:SpawnFromUnit( Client:GetClientGroupUnit(), 60, 30 ) + + self.CargoGroupName = CargoGroup:GetName() + self:T( 'self.CargoGroupName = ' .. self.CargoGroupName ) + + CargoGroup:TaskRouteToZone( ZONE:New( TargetZoneName ), true ) + + self:StatusUnLoaded() + + return self +end + + +CARGO_PACKAGE = { + ClassName = "CARGO_PACKAGE" +} + + +function CARGO_PACKAGE:New( CargoType, CargoName, CargoWeight, CargoClient ) local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) ) + self:F( { CargoType, CargoName, CargoWeight, CargoClient } ) + + self.CargoClient = CargoClient + + CARGOS[self.CargoName] = self + + return self + +end + + +function CARGO_PACKAGE:Spawn( Client ) + self:F( { self, Client } ) + + -- this needs to be checked thoroughly + + local CargoClientGroup = self.CargoClient:GetDCSGroup() + if not CargoClientGroup then + if not self.CargoClientSpawn then + self.CargoClientSpawn = SPAWN:New( self.CargoClient:GetClientGroupName() ):Limit( 1, 1 ) + end + self.CargoClientSpawn:ReSpawn( 1 ) + end + + local SpawnCargo = true + + if self:IsStatusNone() then + + elseif self:IsStatusLoading() or self:IsStatusLoaded() then + + local CargoClientLoaded = self:IsLoadedInClient() + if CargoClientLoaded and CargoClientLoaded:GetDCSGroup() then + SpawnCargo = false + end + + elseif self:IsStatusUnLoaded() then + + SpawnCargo = false + + else + + end + + if SpawnCargo then + self:StatusLoaded( self.CargoClient ) + end + + return self +end + + +function CARGO_PACKAGE:IsNear( Client, LandingZone ) + self:F() + + local Near = false + + if self.CargoClient and self.CargoClient:GetDCSGroup() then + self:T( self.CargoClient.ClientName ) + self:T( 'Client Exists.' ) + + if routines.IsUnitInRadius( self.CargoClient:GetClientGroupDCSUnit(), Client:GetPositionVec3(), 150 ) then + Near = true + end + end + + return Near + +end + + +function CARGO_PACKAGE:OnBoard( Client, LandingZone, OnBoardSide ) + self:F() + + local Valid = true + + local ClientUnit = Client:GetClientGroupDCSUnit() + + local CarrierPos = ClientUnit:getPoint() + local CarrierPosMove = ClientUnit:getPoint() + local CarrierPosOnBoard = ClientUnit:getPoint() + local CarrierPosMoveAway = ClientUnit:getPoint() + + local CargoHostGroup = self.CargoClient:GetDCSGroup() + local CargoHostName = self.CargoClient:GetDCSGroup():getName() + + local CargoHostUnits = CargoHostGroup:getUnits() + local CargoPos = CargoHostUnits[1]:getPoint() + + local Points = {} + + self:T( 'CargoPos x = ' .. CargoPos.x .. " z = " .. CargoPos.z ) + self:T( 'CarrierPosMove x = ' .. CarrierPosMove.x .. " z = " .. CarrierPosMove.z ) + + Points[#Points+1] = routines.ground.buildWP( CargoPos, "Cone", 10 ) + + self:T( 'Points[1] x = ' .. Points[1].x .. " y = " .. Points[1].y ) + + if OnBoardSide == nil then + OnBoardSide = CLIENT.ONBOARDSIDE.NONE + end + + if OnBoardSide == CLIENT.ONBOARDSIDE.LEFT then + + self:T( "TransportCargoOnBoard: Onboarding LEFT" ) + CarrierPosMove.z = CarrierPosMove.z - 25 + CarrierPosOnBoard.z = CarrierPosOnBoard.z - 5 + CarrierPosMoveAway.z = CarrierPosMoveAway.z - 20 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.RIGHT then + + self:T( "TransportCargoOnBoard: Onboarding RIGHT" ) + CarrierPosMove.z = CarrierPosMove.z + 25 + CarrierPosOnBoard.z = CarrierPosOnBoard.z + 5 + CarrierPosMoveAway.z = CarrierPosMoveAway.z + 20 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.BACK then + + self:T( "TransportCargoOnBoard: Onboarding BACK" ) + CarrierPosMove.x = CarrierPosMove.x - 25 + CarrierPosOnBoard.x = CarrierPosOnBoard.x - 5 + CarrierPosMoveAway.x = CarrierPosMoveAway.x - 20 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.FRONT then + + self:T( "TransportCargoOnBoard: Onboarding FRONT" ) + CarrierPosMove.x = CarrierPosMove.x + 25 + CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5 + CarrierPosMoveAway.x = CarrierPosMoveAway.x + 20 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.NONE then + + self:T( "TransportCargoOnBoard: Onboarding FRONT" ) + CarrierPosMove.x = CarrierPosMove.x + 25 + CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5 + CarrierPosMoveAway.x = CarrierPosMoveAway.x + 20 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) + + end + self:T( "Routing " .. CargoHostName ) + + --routines.scheduleFunction( routines.goRoute, { CargoHostName, Points}, timer.getTime() + 4 ) + SCHEDULER:New( self, routines.goRoute, { CargoHostName, Points }, 4 ) + + return Valid + +end + + +function CARGO_PACKAGE:OnBoarded( Client, LandingZone ) + self:F() + + local OnBoarded = false + + if self.CargoClient and self.CargoClient:GetDCSGroup() then + if routines.IsUnitInRadius( self.CargoClient:GetClientGroupDCSUnit(), self.CargoClient:GetPositionVec3(), 10 ) then + + -- Switch Cargo from self.CargoClient to Client ... Each cargo can have only one client. So assigning the new client for the cargo is enough. + self:StatusLoaded( Client ) + + -- All done, onboarded the Cargo to the new Client. + OnBoarded = true + end + end + + return OnBoarded +end + + +function CARGO_PACKAGE:UnLoad( Client, TargetZoneName ) + self:F() + + self:T( 'self.CargoName = ' .. self.CargoName ) + --self:T( 'self.CargoHostName = ' .. self.CargoHostName ) + + --self.CargoSpawn:FromCarrier( Client:GetDCSGroup(), TargetZoneName, self.CargoHostName ) + self:StatusUnLoaded() + + return Cargo +end + + +CARGO_SLINGLOAD = { + ClassName = "CARGO_SLINGLOAD" +} + + +function CARGO_SLINGLOAD:New( CargoType, CargoName, CargoWeight, CargoZone, CargoHostName, CargoCountryID ) + local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) ) + self:F( { CargoType, CargoName, CargoWeight, CargoZone, CargoHostName, CargoCountryID } ) + + self.CargoHostName = CargoHostName + + -- Cargo will be initialized around the CargoZone position. + self.CargoZone = CargoZone + + self.CargoCount = 0 + self.CargoStaticName = string.format( "%s#%03d", self.CargoName, self.CargoCount ) + + -- The country ID needs to be correctly set. + self.CargoCountryID = CargoCountryID + + CARGOS[self.CargoName] = self + + return self + +end + + +function CARGO_SLINGLOAD:IsLandingRequired() + self:F() + return false +end + + +function CARGO_SLINGLOAD:IsSlingLoad() + self:F() + return true +end + + +function CARGO_SLINGLOAD:Spawn( Client ) + self:F( { self, Client } ) + + local Zone = trigger.misc.getZone( self.CargoZone ) + + local ZonePos = {} + ZonePos.x = Zone.point.x + math.random( Zone.radius / 2 * -1, Zone.radius / 2 ) + ZonePos.y = Zone.point.z + math.random( Zone.radius / 2 * -1, Zone.radius / 2 ) + + self:T( "Cargo Location = " .. ZonePos.x .. ", " .. ZonePos.y ) + + --[[ + -- This does not work in 1.5.2. + CargoStatic = StaticObject.getByName( self.CargoName ) + if CargoStatic then + CargoStatic:destroy() + end + --]] + + CargoStatic = StaticObject.getByName( self.CargoStaticName ) + + if CargoStatic and CargoStatic:isExist() then + CargoStatic:destroy() + end + + -- I need to make every time a new cargo due to bugs in 1.5.2. + + self.CargoCount = self.CargoCount + 1 + self.CargoStaticName = string.format( "%s#%03d", self.CargoName, self.CargoCount ) + + local CargoTemplate = { + ["category"] = "Cargo", + ["shape_name"] = "ab-212_cargo", + ["type"] = "Cargo1", + ["x"] = ZonePos.x, + ["y"] = ZonePos.y, + ["mass"] = self.CargoWeight, + ["name"] = self.CargoStaticName, + ["canCargo"] = true, + ["heading"] = 0, + } + + coalition.addStaticObject( self.CargoCountryID, CargoTemplate ) + +-- end + + return self +end + + +function CARGO_SLINGLOAD:IsNear( Client, LandingZone ) + self:F() + + local Near = false + + return Near +end + + +function CARGO_SLINGLOAD:IsInLandingZone( Client, LandingZone ) + self:F() + + local Near = false + + local CargoStaticUnit = StaticObject.getByName( self.CargoName ) + if CargoStaticUnit then + if routines.IsStaticInZones( CargoStaticUnit, LandingZone ) then + Near = true + end + end + + return Near +end + + +function CARGO_SLINGLOAD:OnBoard( Client, LandingZone, OnBoardSide ) + self:F() + + local Valid = true + + + return Valid +end + + +function CARGO_SLINGLOAD:OnBoarded( Client, LandingZone ) + self:F() + + local OnBoarded = false + + local CargoStaticUnit = StaticObject.getByName( self.CargoName ) + if CargoStaticUnit then + if not routines.IsStaticInZones( CargoStaticUnit, LandingZone ) then + OnBoarded = true + end + end + + return OnBoarded +end + + +function CARGO_SLINGLOAD:UnLoad( Client, TargetZoneName ) + self:F() + + self:T( 'self.CargoName = ' .. self.CargoName ) + self:T( 'self.CargoGroupName = ' .. self.CargoGroupName ) + + self:StatusUnLoaded() + + return Cargo +end +--- This module contains the MESSAGE class. +-- +-- 1) @{Message#MESSAGE} class, extends @{Base#BASE} +-- ================================================= +-- Message System to display Messages to Clients, Coalitions or All. +-- Messages are shown on the display panel for an amount of seconds, and will then disappear. +-- Messages can contain a category which is indicating the category of the message. +-- +-- 1.1) MESSAGE construction methods +-- --------------------------------- +-- Messages are created with @{Message#MESSAGE.New}. Note that when the MESSAGE object is created, no message is sent yet. +-- To send messages, you need to use the To functions. +-- +-- 1.2) Send messages with MESSAGE To methods +-- ------------------------------------------ +-- Messages are sent to: +-- +-- * Clients with @{Message#MESSAGE.ToClient}. +-- * Coalitions with @{Message#MESSAGE.ToCoalition}. +-- * All Players with @{Message#MESSAGE.ToAll}. +-- +-- @module Message +-- @author FlightControl + +--- The MESSAGE class +-- @type MESSAGE +-- @extends Base#BASE +MESSAGE = { + ClassName = "MESSAGE", + MessageCategory = 0, + MessageID = 0, +} + + +--- Creates a new MESSAGE object. Note that these MESSAGE objects are not yet displayed on the display panel. You must use the functions @{ToClient} or @{ToCoalition} or @{ToAll} to send these Messages to the respective recipients. +-- @param self +-- @param #string MessageText is the text of the Message. +-- @param #number MessageDuration is a number in seconds of how long the MESSAGE should be shown on the display panel. +-- @param #string MessageCategory (optional) is a string expressing the "category" of the Message. The category will be shown as the first text in the message followed by a ": ". +-- @return #MESSAGE +-- @usage +-- -- Create a series of new Messages. +-- -- MessageAll is meant to be sent to all players, for 25 seconds, and is classified as "Score". +-- -- MessageRED is meant to be sent to the RED players only, for 10 seconds, and is classified as "End of Mission", with ID "Win". +-- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score". +-- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score". +-- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", 25, "End of Mission" ) +-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", 25, "Penalty" ) +-- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", 25, "Score" ) +-- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", 25, "Score") +function MESSAGE:New( MessageText, MessageDuration, MessageCategory ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( { MessageText, MessageDuration, MessageCategory } ) + + -- When no MessageCategory is given, we don't show it as a title... + if MessageCategory and MessageCategory ~= "" then + self.MessageCategory = MessageCategory .. ": " + else + self.MessageCategory = "" + end + + self.MessageDuration = MessageDuration + self.MessageTime = timer.getTime() + self.MessageText = MessageText + + self.MessageSent = false + self.MessageGroup = false + self.MessageCoalition = false + + return self +end + +--- Sends a MESSAGE to a Client Group. Note that the Group needs to be defined within the ME with the skillset "Client" or "Player". +-- @param #MESSAGE self +-- @param Client#CLIENT Client is the Group of the Client. +-- @return #MESSAGE +-- @usage +-- -- Send the 2 messages created with the @{New} method to the Client Group. +-- -- Note that the Message of MessageClient2 is overwriting the Message of MessageClient1. +-- ClientGroup = Group.getByName( "ClientGroup" ) +-- +-- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ):ToClient( ClientGroup ) +-- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ):ToClient( ClientGroup ) +-- or +-- MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ):ToClient( ClientGroup ) +-- MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ):ToClient( ClientGroup ) +-- or +-- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ) +-- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ) +-- MessageClient1:ToClient( ClientGroup ) +-- MessageClient2:ToClient( ClientGroup ) +function MESSAGE:ToClient( Client ) + self:F( Client ) + + if Client and Client:GetClientGroupID() then + + local ClientGroupID = Client:GetClientGroupID() + self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration ) + trigger.action.outTextForGroup( ClientGroupID, self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration ) + end + + return self +end + +--- Sends a MESSAGE to the Blue coalition. +-- @param #MESSAGE self +-- @return #MESSAGE +-- @usage +-- -- Send a message created with the @{New} method to the BLUE coalition. +-- MessageBLUE = MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToBlue() +-- or +-- MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToBlue() +-- or +-- MessageBLUE = MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) +-- MessageBLUE:ToBlue() +function MESSAGE:ToBlue() + self:F() + + self:ToCoalition( coalition.side.BLUE ) + + return self +end + +--- Sends a MESSAGE to the Red Coalition. +-- @param #MESSAGE self +-- @return #MESSAGE +-- @usage +-- -- Send a message created with the @{New} method to the RED coalition. +-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToRed() +-- or +-- MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToRed() +-- or +-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) +-- MessageRED:ToRed() +function MESSAGE:ToRed( ) + self:F() + + self:ToCoalition( coalition.side.RED ) + + return self +end + +--- Sends a MESSAGE to a Coalition. +-- @param #MESSAGE self +-- @param CoalitionSide needs to be filled out by the defined structure of the standard scripting engine @{coalition.side}. +-- @return #MESSAGE +-- @usage +-- -- Send a message created with the @{New} method to the RED coalition. +-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToCoalition( coalition.side.RED ) +-- or +-- MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToCoalition( coalition.side.RED ) +-- or +-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) +-- MessageRED:ToCoalition( coalition.side.RED ) +function MESSAGE:ToCoalition( CoalitionSide ) + self:F( CoalitionSide ) + + if CoalitionSide then + self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration ) + trigger.action.outTextForCoalition( CoalitionSide, self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration ) + end + + return self +end + +--- Sends a MESSAGE to all players. +-- @param #MESSAGE self +-- @return #MESSAGE +-- @usage +-- -- Send a message created to all players. +-- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ):ToAll() +-- or +-- MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ):ToAll() +-- or +-- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ) +-- MessageAll:ToAll() +function MESSAGE:ToAll() + self:F() + + self:ToCoalition( coalition.side.RED ) + self:ToCoalition( coalition.side.BLUE ) + + return self +end + + + +----- The MESSAGEQUEUE class +---- @type MESSAGEQUEUE +--MESSAGEQUEUE = { +-- ClientGroups = {}, +-- CoalitionSides = {} +--} +-- +--function MESSAGEQUEUE:New( RefreshInterval ) +-- local self = BASE:Inherit( self, BASE:New() ) +-- self:F( { RefreshInterval } ) +-- +-- self.RefreshInterval = RefreshInterval +-- +-- --self.DisplayFunction = routines.scheduleFunction( self._DisplayMessages, { self }, 0, RefreshInterval ) +-- self.DisplayFunction = SCHEDULER:New( self, self._DisplayMessages, {}, 0, RefreshInterval ) +-- +-- return self +--end +-- +----- This function is called automatically by the MESSAGEQUEUE scheduler. +--function MESSAGEQUEUE:_DisplayMessages() +-- +-- -- First we display all messages that a coalition needs to receive... Also those who are not in a client (CA module clients...). +-- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do +-- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do +-- if MessageData.MessageSent == false then +-- --trigger.action.outTextForCoalition( CoalitionSideID, MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration ) +-- MessageData.MessageSent = true +-- end +-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime() +-- if MessageTimeLeft <= 0 then +-- MessageData = nil +-- end +-- end +-- end +-- +-- -- Then we send the messages for each individual client, but also to be included are those Coalition messages for the Clients who belong to a coalition. +-- -- Because the Client messages will overwrite the Coalition messages (for that Client). +-- for ClientGroupName, ClientGroupData in pairs( self.ClientGroups ) do +-- for MessageID, MessageData in pairs( ClientGroupData.Messages ) do +-- if MessageData.MessageGroup == false then +-- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration ) +-- MessageData.MessageGroup = true +-- end +-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime() +-- if MessageTimeLeft <= 0 then +-- MessageData = nil +-- end +-- end +-- +-- -- Now check if the Client also has messages that belong to the Coalition of the Client... +-- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do +-- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do +-- local CoalitionGroup = Group.getByName( ClientGroupName ) +-- if CoalitionGroup and CoalitionGroup:getCoalition() == CoalitionSideID then +-- if MessageData.MessageCoalition == false then +-- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration ) +-- MessageData.MessageCoalition = true +-- end +-- end +-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime() +-- if MessageTimeLeft <= 0 then +-- MessageData = nil +-- end +-- end +-- end +-- end +-- +-- return true +--end +-- +----- The _MessageQueue object is created when the MESSAGE class module is loaded. +----_MessageQueue = MESSAGEQUEUE:New( 0.5 ) +-- +--- Stages within a @{TASK} within a @{MISSION}. All of the STAGE functionality is considered internally administered and not to be used by any Mission designer. +-- @module STAGE +-- @author Flightcontrol + + + + + + + +--- The STAGE class +-- @type +STAGE = { + ClassName = "STAGE", + MSG = { ID = "None", TIME = 10 }, + FREQUENCY = { NONE = 0, ONCE = 1, REPEAT = -1 }, + + Name = "NoStage", + StageType = '', + WaitTime = 1, + Frequency = 1, + MessageCount = 0, + MessageInterval = 15, + MessageShown = {}, + MessageShow = false, + MessageFlash = false +} + + +function STAGE:New() + local self = BASE:Inherit( self, BASE:New() ) + self:F() + return self +end + +function STAGE:Execute( Mission, Client, Task ) + + local Valid = true + + return Valid +end + +function STAGE:Executing( Mission, Client, Task ) + +end + +function STAGE:Validate( Mission, Client, Task ) + local Valid = true + + return Valid +end + + +STAGEBRIEF = { + ClassName = "BRIEF", + MSG = { ID = "Brief", TIME = 1 }, + Name = "Brief", + StageBriefingTime = 0, + StageBriefingDuration = 1 +} + +function STAGEBRIEF:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +--- Execute +-- @param #STAGEBRIEF self +-- @param Mission#MISSION Mission +-- @param Client#CLIENT Client +-- @param Task#TASK Task +-- @return #boolean +function STAGEBRIEF:Execute( Mission, Client, Task ) + local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) + self:F() + Client:ShowMissionBriefing( Mission.MissionBriefing ) + self.StageBriefingTime = timer.getTime() + return Valid +end + +function STAGEBRIEF:Validate( Mission, Client, Task ) + local Valid = STAGE:Validate( Mission, Client, Task ) + self:T() + + if timer.getTime() - self.StageBriefingTime <= self.StageBriefingDuration then + return 0 + else + self.StageBriefingTime = timer.getTime() + return 1 + end + +end + + +STAGESTART = { + ClassName = "START", + MSG = { ID = "Start", TIME = 1 }, + Name = "Start", + StageStartTime = 0, + StageStartDuration = 1 +} + +function STAGESTART:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +function STAGESTART:Execute( Mission, Client, Task ) + self:F() + local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) + if Task.TaskBriefing then + Client:Message( Task.TaskBriefing, 30, "Command" ) + else + Client:Message( 'Task ' .. Task.TaskNumber .. '.', 30, "Command" ) + end + self.StageStartTime = timer.getTime() + return Valid +end + +function STAGESTART:Validate( Mission, Client, Task ) + self:F() + local Valid = STAGE:Validate( Mission, Client, Task ) + + if timer.getTime() - self.StageStartTime <= self.StageStartDuration then + return 0 + else + self.StageStartTime = timer.getTime() + return 1 + end + + return 1 + +end + +STAGE_CARGO_LOAD = { + ClassName = "STAGE_CARGO_LOAD" +} + +function STAGE_CARGO_LOAD:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +function STAGE_CARGO_LOAD:Execute( Mission, Client, Task ) + self:F() + local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) + + for LoadCargoID, LoadCargo in pairs( Task.Cargos.LoadCargos ) do + LoadCargo:Load( Client ) + end + + if Mission.MissionReportFlash and Client:IsTransport() then + Client:ShowCargo() + end + + return Valid +end + +function STAGE_CARGO_LOAD:Validate( Mission, Client, Task ) + self:F() + local Valid = STAGE:Validate( Mission, Client, Task ) + + return 1 +end + + +STAGE_CARGO_INIT = { + ClassName = "STAGE_CARGO_INIT" +} + +function STAGE_CARGO_INIT:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +function STAGE_CARGO_INIT:Execute( Mission, Client, Task ) + self:F() + local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) + + for InitLandingZoneID, InitLandingZone in pairs( Task.LandingZones.LandingZones ) do + self:T( InitLandingZone ) + InitLandingZone:Spawn() + end + + + self:T( Task.Cargos.InitCargos ) + for InitCargoID, InitCargoData in pairs( Task.Cargos.InitCargos ) do + self:T( { InitCargoData } ) + InitCargoData:Spawn( Client ) + end + + return Valid +end + + +function STAGE_CARGO_INIT:Validate( Mission, Client, Task ) + self:F() + local Valid = STAGE:Validate( Mission, Client, Task ) + + return 1 +end + + + +STAGEROUTE = { + ClassName = "STAGEROUTE", + MSG = { ID = "Route", TIME = 5 }, + Frequency = STAGE.FREQUENCY.REPEAT, + Name = "Route" +} + +function STAGEROUTE:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + self.MessageSwitch = true + return self +end + + +--- Execute the routing. +-- @param #STAGEROUTE self +-- @param Mission#MISSION Mission +-- @param Client#CLIENT Client +-- @param Task#TASK Task +function STAGEROUTE:Execute( Mission, Client, Task ) + self:F() + local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) + + local RouteMessage = "Fly to: " + self:T( Task.LandingZones ) + for LandingZoneID, LandingZoneName in pairs( Task.LandingZones.LandingZoneNames ) do + RouteMessage = RouteMessage .. "\n " .. LandingZoneName .. ' at ' .. routines.getBRStringZone( { zone = LandingZoneName, ref = Client:GetClientGroupDCSUnit():getPoint(), true, true } ) .. ' km.' + end + + if Client:IsMultiSeated() then + Client:Message( RouteMessage, self.MSG.TIME, "Co-Pilot", 20, "Route" ) + else + Client:Message( RouteMessage, self.MSG.TIME, "Command", 20, "Route" ) + end + + + if Mission.MissionReportFlash and Client:IsTransport() then + Client:ShowCargo() + end + + return Valid +end + +function STAGEROUTE:Validate( Mission, Client, Task ) + self:F() + local Valid = STAGE:Validate( Mission, Client, Task ) + + -- check if the Client is in the landing zone + self:T( Task.LandingZones.LandingZoneNames ) + Task.CurrentLandingZoneName = routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.LandingZones.LandingZoneNames, 500 ) + + if Task.CurrentLandingZoneName then + + Task.CurrentLandingZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName].CargoZone + Task.CurrentCargoZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName] + + if Task.CurrentCargoZone then + if not Task.Signalled then + Task.Signalled = Task.CurrentCargoZone:Signal() + end + end + + self:T( 1 ) + return 1 + end + + self:T( 0 ) + return 0 +end + + + +STAGELANDING = { + ClassName = "STAGELANDING", + MSG = { ID = "Landing", TIME = 10 }, + Name = "Landing", + Signalled = false +} + +function STAGELANDING:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +--- Execute the landing coordination. +-- @param #STAGELANDING self +-- @param Mission#MISSION Mission +-- @param Client#CLIENT Client +-- @param Task#TASK Task +function STAGELANDING:Execute( Mission, Client, Task ) + self:F() + + if Client:IsMultiSeated() then + Client:Message( "We have arrived at the landing zone.", self.MSG.TIME, "Co-Pilot" ) + else + Client:Message( "You have arrived at the landing zone.", self.MSG.TIME, "Command" ) + end + + Task.HostUnit = Task.CurrentCargoZone:GetHostUnit() + + self:T( { Task.HostUnit } ) + + if Task.HostUnit then + + Task.HostUnitName = Task.HostUnit:GetPrefix() + Task.HostUnitTypeName = Task.HostUnit:GetTypeName() + + local HostMessage = "" + Task.CargoNames = "" + + local IsFirst = true + + for CargoID, Cargo in pairs( CARGOS ) do + if Cargo.CargoType == Task.CargoType then + + if Cargo:IsLandingRequired() then + self:T( "Task for cargo " .. Cargo.CargoType .. " requires landing.") + Task.IsLandingRequired = true + end + + if Cargo:IsSlingLoad() then + self:T( "Task for cargo " .. Cargo.CargoType .. " is a slingload.") + Task.IsSlingLoad = true + end + + if IsFirst then + IsFirst = false + Task.CargoNames = Task.CargoNames .. Cargo.CargoName .. "( " .. Cargo.CargoWeight .. " )" + else + Task.CargoNames = Task.CargoNames .. "; " .. Cargo.CargoName .. "( " .. Cargo.CargoWeight .. " )" + end + end + end + + if Task.IsLandingRequired then + HostMessage = "Land the helicopter to " .. Task.TEXT[1] .. " " .. Task.CargoNames .. "." + else + HostMessage = "Use the Radio menu and F6 to find the cargo, then fly or land near the cargo and " .. Task.TEXT[1] .. " " .. Task.CargoNames .. "." + end + + local Host = "Command" + if Task.HostUnitName then + Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" + else + if Client:IsMultiSeated() then + Host = "Co-Pilot" + end + end + + Client:Message( HostMessage, self.MSG.TIME, Host ) + + end +end + +function STAGELANDING:Validate( Mission, Client, Task ) + self:F() + + Task.CurrentLandingZoneName = routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.LandingZones.LandingZoneNames, 500 ) + if Task.CurrentLandingZoneName then + + -- Client is in de landing zone. + self:T( Task.CurrentLandingZoneName ) + + Task.CurrentLandingZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName].CargoZone + Task.CurrentCargoZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName] + + if Task.CurrentCargoZone then + if not Task.Signalled then + Task.Signalled = Task.CurrentCargoZone:Signal() + end + end + else + if Task.CurrentLandingZone then + Task.CurrentLandingZone = nil + end + if Task.CurrentCargoZone then + Task.CurrentCargoZone = nil + end + Task.Signalled = false + Task:RemoveCargoMenus( Client ) + self:T( -1 ) + return -1 + end + + + local DCSUnitVelocityVec3 = Client:GetClientGroupDCSUnit():getVelocity() + local DCSUnitVelocity = ( DCSUnitVelocityVec3.x ^2 + DCSUnitVelocityVec3.y ^2 + DCSUnitVelocityVec3.z ^2 ) ^ 0.5 + + local DCSUnitPointVec3 = Client:GetClientGroupDCSUnit():getPoint() + local LandHeight = land.getHeight( { x = DCSUnitPointVec3.x, y = DCSUnitPointVec3.z } ) + local DCSUnitHeight = DCSUnitPointVec3.y - LandHeight + + self:T( { Task.IsLandingRequired, Client:GetClientGroupDCSUnit():inAir() } ) + if Task.IsLandingRequired and not Client:GetClientGroupDCSUnit():inAir() then + self:T( 1 ) + Task.IsInAirTestRequired = true + return 1 + end + + self:T( { DCSUnitVelocity, DCSUnitHeight, LandHeight, Task.CurrentCargoZone.SignalHeight } ) + if Task.IsLandingRequired and DCSUnitVelocity <= 0.05 and DCSUnitHeight <= Task.CurrentCargoZone.SignalHeight then + self:T( 1 ) + Task.IsInAirTestRequired = false + return 1 + end + + self:T( 0 ) + return 0 +end + +STAGELANDED = { + ClassName = "STAGELANDED", + MSG = { ID = "Land", TIME = 10 }, + Name = "Landed", + MenusAdded = false +} + +function STAGELANDED:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +function STAGELANDED:Execute( Mission, Client, Task ) + self:F() + + if Task.IsLandingRequired then + + local Host = "Command" + if Task.HostUnitName then + Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" + else + if Client:IsMultiSeated() then + Host = "Co-Pilot" + end + end + + Client:Message( 'You have landed within the landing zone. Use the radio menu (F10) to ' .. Task.TEXT[1] .. ' the ' .. Task.CargoType .. '.', + self.MSG.TIME, Host ) + + if not self.MenusAdded then + Task.Cargo = nil + Task:RemoveCargoMenus( Client ) + Task:AddCargoMenus( Client, CARGOS, 250 ) + end + end +end + + + +function STAGELANDED:Validate( Mission, Client, Task ) + self:F() + + if not routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.CurrentLandingZoneName, 500 ) then + self:T( "Client is not anymore in the landing zone, go back to stage Route, and remove cargo menus." ) + Task.Signalled = false + Task:RemoveCargoMenus( Client ) + self:T( -2 ) + return -2 + end + + local DCSUnitVelocityVec3 = Client:GetClientGroupDCSUnit():getVelocity() + local DCSUnitVelocity = ( DCSUnitVelocityVec3.x ^2 + DCSUnitVelocityVec3.y ^2 + DCSUnitVelocityVec3.z ^2 ) ^ 0.5 + + local DCSUnitPointVec3 = Client:GetClientGroupDCSUnit():getPoint() + local LandHeight = land.getHeight( { x = DCSUnitPointVec3.x, y = DCSUnitPointVec3.z } ) + local DCSUnitHeight = DCSUnitPointVec3.y - LandHeight + + self:T( { Task.IsLandingRequired, Client:GetClientGroupDCSUnit():inAir() } ) + if Task.IsLandingRequired and Task.IsInAirTestRequired == true and Client:GetClientGroupDCSUnit():inAir() then + self:T( "Client went back in the air. Go back to stage Landing." ) + self:T( -1 ) + return -1 + end + + self:T( { DCSUnitVelocity, DCSUnitHeight, LandHeight, Task.CurrentCargoZone.SignalHeight } ) + if Task.IsLandingRequired and Task.IsInAirTestRequired == false and DCSUnitVelocity >= 2 and DCSUnitHeight >= Task.CurrentCargoZone.SignalHeight then + self:T( "It seems the Client went back in the air and over the boundary limits. Go back to stage Landing." ) + self:T( -1 ) + return -1 + end + + -- Wait until cargo is selected from the menu. + if Task.IsLandingRequired then + if not Task.Cargo then + self:T( 0 ) + return 0 + end + end + + self:T( 1 ) + return 1 +end + +STAGEUNLOAD = { + ClassName = "STAGEUNLOAD", + MSG = { ID = "Unload", TIME = 10 }, + Name = "Unload" +} + +function STAGEUNLOAD:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +--- Coordinate UnLoading +-- @param #STAGEUNLOAD self +-- @param Mission#MISSION Mission +-- @param Client#CLIENT Client +-- @param Task#TASK Task +function STAGEUNLOAD:Execute( Mission, Client, Task ) + self:F() + + if Client:IsMultiSeated() then + Client:Message( 'The ' .. Task.CargoType .. ' are being ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.', + "Co-Pilot" ) + else + Client:Message( 'You are unloading the ' .. Task.CargoType .. ' ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.', + "Command" ) + end + Task:RemoveCargoMenus( Client ) +end + +function STAGEUNLOAD:Executing( Mission, Client, Task ) + self:F() + env.info( 'STAGEUNLOAD:Executing() Task.Cargo.CargoName = ' .. Task.Cargo.CargoName ) + + local TargetZoneName + + if Task.TargetZoneName then + TargetZoneName = Task.TargetZoneName + else + TargetZoneName = Task.CurrentLandingZoneName + end + + if Task.Cargo:UnLoad( Client, TargetZoneName ) then + Task.ExecuteStage = _TransportExecuteStage.SUCCESS + if Mission.MissionReportFlash then + Client:ShowCargo() + end + end +end + +--- Validate UnLoading +-- @param #STAGEUNLOAD self +-- @param Mission#MISSION Mission +-- @param Client#CLIENT Client +-- @param Task#TASK Task +function STAGEUNLOAD:Validate( Mission, Client, Task ) + self:F() + env.info( 'STAGEUNLOAD:Validate()' ) + + if routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.CurrentLandingZoneName, 500 ) then + else + Task.ExecuteStage = _TransportExecuteStage.FAILED + Task:RemoveCargoMenus( Client ) + if Client:IsMultiSeated() then + Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', + _TransportStageMsgTime.DONE, "Co-Pilot" ) + else + Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', + _TransportStageMsgTime.DONE, "Command" ) + end + return 1 + end + + if not Client:GetClientGroupDCSUnit():inAir() then + else + Task.ExecuteStage = _TransportExecuteStage.FAILED + Task:RemoveCargoMenus( Client ) + if Client:IsMultiSeated() then + Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', + _TransportStageMsgTime.DONE, "Co-Pilot" ) + else + Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', + _TransportStageMsgTime.DONE, "Command" ) + end + return 1 + end + + if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then + if Client:IsMultiSeated() then + Client:Message( 'The ' .. Task.CargoType .. ' have been sucessfully ' .. Task.TEXT[3] .. ' within the landing zone.', _TransportStageMsgTime.DONE, "Co-Pilot" ) + else + Client:Message( 'The ' .. Task.CargoType .. ' have been sucessfully ' .. Task.TEXT[3] .. ' within the landing zone.', _TransportStageMsgTime.DONE, "Command" ) + end + Task:RemoveCargoMenus( Client ) + Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.CargoName, 1 ) -- We set the cargo as one more goal completed in the mission. + return 1 + end + + return 1 +end + +STAGELOAD = { + ClassName = "STAGELOAD", + MSG = { ID = "Load", TIME = 10 }, + Name = "Load" +} + +function STAGELOAD:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +function STAGELOAD:Execute( Mission, Client, Task ) + self:F() + + if not Task.IsSlingLoad then + + local Host = "Command" + if Task.HostUnitName then + Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" + else + if Client:IsMultiSeated() then + Host = "Co-Pilot" + end + end + + Client:Message( 'The ' .. Task.CargoType .. ' are being ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.', + _TransportStageMsgTime.EXECUTING, Host ) + + -- Route the cargo to the Carrier + + Task.Cargo:OnBoard( Client, Task.CurrentCargoZone, Task.OnBoardSide ) + Task.ExecuteStage = _TransportExecuteStage.EXECUTING + else + Task.ExecuteStage = _TransportExecuteStage.EXECUTING + end +end + +function STAGELOAD:Executing( Mission, Client, Task ) + self:F() + + -- If the Cargo is ready to be loaded, load it into the Client. + + local Host = "Command" + if Task.HostUnitName then + Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" + else + if Client:IsMultiSeated() then + Host = "Co-Pilot" + end + end + + if not Task.IsSlingLoad then + self:T( Task.Cargo.CargoName) + + if Task.Cargo:OnBoarded( Client, Task.CurrentCargoZone ) then + + -- Load the Cargo onto the Client + Task.Cargo:Load( Client ) + + -- Message to the pilot that cargo has been loaded. + Client:Message( "The cargo " .. Task.Cargo.CargoName .. " has been loaded in our helicopter.", + 20, Host ) + Task.ExecuteStage = _TransportExecuteStage.SUCCESS + + Client:ShowCargo() + end + else + Client:Message( "Hook the " .. Task.CargoNames .. " onto the helicopter " .. Task.TEXT[3] .. " within the landing zone.", + _TransportStageMsgTime.EXECUTING, Host ) + for CargoID, Cargo in pairs( CARGOS ) do + self:T( "Cargo.CargoName = " .. Cargo.CargoName ) + + if Cargo:IsSlingLoad() then + local CargoStatic = StaticObject.getByName( Cargo.CargoStaticName ) + if CargoStatic then + self:T( "Cargo is found in the DCS simulator.") + local CargoStaticPosition = CargoStatic:getPosition().p + self:T( "Cargo Position x = " .. CargoStaticPosition.x .. ", y = " .. CargoStaticPosition.y .. ", z = " .. CargoStaticPosition.z ) + local CargoStaticHeight = routines.GetUnitHeight( CargoStatic ) + if CargoStaticHeight > 5 then + self:T( "Cargo is airborne.") + Cargo:StatusLoaded() + Task.Cargo = Cargo + Client:Message( 'The Cargo has been successfully hooked onto the helicopter and is now being sling loaded. Fly outside the landing zone.', + self.MSG.TIME, Host ) + Task.ExecuteStage = _TransportExecuteStage.SUCCESS + break + end + else + self:T( "Cargo not found in the DCS simulator." ) + end + end + end + end + +end + +function STAGELOAD:Validate( Mission, Client, Task ) + self:F() + + self:T( "Task.CurrentLandingZoneName = " .. Task.CurrentLandingZoneName ) + + local Host = "Command" + if Task.HostUnitName then + Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" + else + if Client:IsMultiSeated() then + Host = "Co-Pilot" + end + end + + if not Task.IsSlingLoad then + if not routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.CurrentLandingZoneName, 500 ) then + Task:RemoveCargoMenus( Client ) + Task.ExecuteStage = _TransportExecuteStage.FAILED + Task.CargoName = nil + Client:Message( "The " .. Task.CargoType .. " loading has been aborted. You flew outside the pick-up zone while loading. ", + self.MSG.TIME, Host ) + self:T( -1 ) + return -1 + end + + local DCSUnitVelocityVec3 = Client:GetClientGroupDCSUnit():getVelocity() + local DCSUnitVelocity = ( DCSUnitVelocityVec3.x ^2 + DCSUnitVelocityVec3.y ^2 + DCSUnitVelocityVec3.z ^2 ) ^ 0.5 + + local DCSUnitPointVec3 = Client:GetClientGroupDCSUnit():getPoint() + local LandHeight = land.getHeight( { x = DCSUnitPointVec3.x, y = DCSUnitPointVec3.z } ) + local DCSUnitHeight = DCSUnitPointVec3.y - LandHeight + + self:T( { Task.IsLandingRequired, Client:GetClientGroupDCSUnit():inAir() } ) + if Task.IsLandingRequired and Task.IsInAirTestRequired == true and Client:GetClientGroupDCSUnit():inAir() then + Task:RemoveCargoMenus( Client ) + Task.ExecuteStage = _TransportExecuteStage.FAILED + Task.CargoName = nil + Client:Message( "The " .. Task.CargoType .. " loading has been aborted. Re-start the " .. Task.TEXT[3] .. " process. Don't fly outside the pick-up zone.", + self.MSG.TIME, Host ) + self:T( -1 ) + return -1 + end + + self:T( { DCSUnitVelocity, DCSUnitHeight, LandHeight, Task.CurrentCargoZone.SignalHeight } ) + if Task.IsLandingRequired and Task.IsInAirTestRequired == false and DCSUnitVelocity >= 2 and DCSUnitHeight >= Task.CurrentCargoZone.SignalHeight then + Task:RemoveCargoMenus( Client ) + Task.ExecuteStage = _TransportExecuteStage.FAILED + Task.CargoName = nil + Client:Message( "The " .. Task.CargoType .. " loading has been aborted. Re-start the " .. Task.TEXT[3] .. " process. Don't fly outside the pick-up zone.", + self.MSG.TIME, Host ) + self:T( -1 ) + return -1 + end + + if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then + Task:RemoveCargoMenus( Client ) + Client:Message( "Good Job. The " .. Task.CargoType .. " has been sucessfully " .. Task.TEXT[3] .. " within the landing zone.", + self.MSG.TIME, Host ) + Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.CargoName, 1 ) + self:T( 1 ) + return 1 + end + + else + if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then + CargoStatic = StaticObject.getByName( Task.Cargo.CargoStaticName ) + if CargoStatic and not routines.IsStaticInZones( CargoStatic, Task.CurrentLandingZoneName ) then + Client:Message( "Good Job. The " .. Task.CargoType .. " has been sucessfully " .. Task.TEXT[3] .. " and flown outside of the landing zone.", + self.MSG.TIME, Host ) + Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.Cargo.CargoName, 1 ) + self:T( 1 ) + return 1 + end + end + + end + + + self:T( 0 ) + return 0 +end + + +STAGEDONE = { + ClassName = "STAGEDONE", + MSG = { ID = "Done", TIME = 10 }, + Name = "Done" +} + +function STAGEDONE:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'AI' + return self +end + +function STAGEDONE:Execute( Mission, Client, Task ) + self:F() + +end + +function STAGEDONE:Validate( Mission, Client, Task ) + self:F() + + Task:Done() + + return 0 +end + +STAGEARRIVE = { + ClassName = "STAGEARRIVE", + MSG = { ID = "Arrive", TIME = 10 }, + Name = "Arrive" +} + +function STAGEARRIVE:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + + +--- Execute Arrival +-- @param #STAGEARRIVE self +-- @param Mission#MISSION Mission +-- @param Client#CLIENT Client +-- @param Task#TASK Task +function STAGEARRIVE:Execute( Mission, Client, Task ) + self:F() + + if Client:IsMultiSeated() then + Client:Message( 'We have arrived at ' .. Task.CurrentLandingZoneName .. ".", self.MSG.TIME, "Co-Pilot" ) + else + Client:Message( 'We have arrived at ' .. Task.CurrentLandingZoneName .. ".", self.MSG.TIME, "Command" ) + end + +end + +function STAGEARRIVE:Validate( Mission, Client, Task ) + self:F() + + Task.CurrentLandingZoneID = routines.IsUnitInZones( Client:GetClientGroupDCSUnit(), Task.LandingZones ) + if ( Task.CurrentLandingZoneID ) then + else + return -1 + end + + return 1 +end + +STAGEGROUPSDESTROYED = { + ClassName = "STAGEGROUPSDESTROYED", + DestroyGroupSize = -1, + Frequency = STAGE.FREQUENCY.REPEAT, + MSG = { ID = "DestroyGroup", TIME = 10 }, + Name = "GroupsDestroyed" +} + +function STAGEGROUPSDESTROYED:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'AI' + return self +end + +--function STAGEGROUPSDESTROYED:Execute( Mission, Client, Task ) +-- +-- Client:Message( 'Task: Still ' .. DestroyGroupSize .. " of " .. Task.DestroyGroupCount .. " " .. Task.DestroyGroupType .. " to be destroyed!", self.MSG.TIME, Mission.Name .. "/Stage" ) +-- +--end + +function STAGEGROUPSDESTROYED:Validate( Mission, Client, Task ) + self:F() + + if Task.MissionTask:IsGoalReached() then + return 1 + else + return 0 + end +end + +function STAGEGROUPSDESTROYED:Execute( Mission, Client, Task ) + self:F() + self:T( { Task.ClassName, Task.Destroyed } ) + --env.info( 'Event Table Task = ' .. tostring(Task) ) + +end + + + + + + + + + + + + + +--[[ + _TransportStage: Defines the different stages of which of transport missions can be in. This table is internal and is used to control the sequence of messages, actions and flow. + + - _TransportStage.START + - _TransportStage.ROUTE + - _TransportStage.LAND + - _TransportStage.EXECUTE + - _TransportStage.DONE + - _TransportStage.REMOVE +--]] +_TransportStage = { + HOLD = "HOLD", + START = "START", + ROUTE = "ROUTE", + LANDING = "LANDING", + LANDED = "LANDED", + EXECUTING = "EXECUTING", + LOAD = "LOAD", + UNLOAD = "UNLOAD", + DONE = "DONE", + NEXT = "NEXT" +} + +_TransportStageMsgTime = { + HOLD = 10, + START = 60, + ROUTE = 5, + LANDING = 10, + LANDED = 30, + EXECUTING = 30, + LOAD = 30, + UNLOAD = 30, + DONE = 30, + NEXT = 0 +} + +_TransportStageTime = { + HOLD = 10, + START = 5, + ROUTE = 5, + LANDING = 1, + LANDED = 1, + EXECUTING = 5, + LOAD = 5, + UNLOAD = 5, + DONE = 1, + NEXT = 0 +} + +_TransportStageAction = { + REPEAT = -1, + NONE = 0, + ONCE = 1 +} +--- The TASK Classes define major end-to-end activities within a MISSION. The TASK Class is the Master Class to orchestrate these activities. From this class, many concrete TASK classes are inherited. +-- @module TASK + + + + + + + +--- The TASK class +-- @type TASK +-- @extends Base#BASE +TASK = { + + -- Defines the different signal types with a Task. + SIGNAL = { + COLOR = { + RED = { ID = 1, COLOR = trigger.smokeColor.Red, TEXT = "A red" }, + GREEN = { ID = 2, COLOR = trigger.smokeColor.Green, TEXT = "A green" }, + BLUE = { ID = 3, COLOR = trigger.smokeColor.Blue, TEXT = "A blue" }, + WHITE = { ID = 4, COLOR = trigger.smokeColor.White, TEXT = "A white" }, + ORANGE = { ID = 5, COLOR = trigger.smokeColor.Orange, TEXT = "An orange" } + }, + TYPE = { + SMOKE = { ID = 1, TEXT = "smoke" }, + FLARE = { ID = 2, TEXT = "flare" } + } + }, + ClassName = "TASK", + Mission = {}, -- Owning mission of the Task + Name = '', + Stages = {}, + Stage = {}, + Cargos = { + InitCargos = {}, + LoadCargos = {} + }, + LandingZones = { + LandingZoneNames = {}, + LandingZones = {} + }, + ActiveStage = 0, + TaskDone = false, + TaskFailed = false, + GoalTasks = {} +} + +--- Instantiates a new TASK Base. Should never be used. Interface Class. +-- @return TASK +function TASK:New() + local self = BASE:Inherit( self, BASE:New() ) + self:F() + + -- assign Task default values during construction + self.TaskBriefing = "Task: No Task." + self.Time = timer.getTime() + self.ExecuteStage = _TransportExecuteStage.NONE + + return self +end + +function TASK:SetStage( StageSequenceIncrement ) + self:F( { StageSequenceIncrement } ) + + local Valid = false + if StageSequenceIncrement ~= 0 then + self.ActiveStage = self.ActiveStage + StageSequenceIncrement + if 1 <= self.ActiveStage and self.ActiveStage <= #self.Stages then + self.Stage = self.Stages[self.ActiveStage] + self:T( { self.Stage.Name } ) + self.Frequency = self.Stage.Frequency + Valid = true + else + Valid = false + env.info( "TASK:SetStage() self.ActiveStage is smaller or larger than self.Stages array. self.ActiveStage = " .. self.ActiveStage ) + end + end + self.Time = timer.getTime() + return Valid +end + +function TASK:Init() + self:F() + self.ActiveStage = 0 + self:SetStage(1) + self.TaskDone = false + self.TaskFailed = false +end + + +--- Get progress of a TASK. +-- @return string GoalsText +function TASK:GetGoalProgress() + self:F2() + + local GoalsText = "" + for GoalVerb, GoalVerbData in pairs( self.GoalTasks ) do + local Goals = self:GetGoalCompletion( GoalVerb ) + if Goals and Goals ~= "" then + Goals = '(' .. Goals .. ')' + else + Goals = '( - )' + end + GoalsText = GoalsText .. GoalVerb .. ': ' .. self:GetGoalCount(GoalVerb) .. ' goals ' .. Goals .. ' of ' .. self:GetGoalTotal(GoalVerb) .. ' goals completed (' .. self:GetGoalPercentage(GoalVerb) .. '%); ' + end + + if GoalsText == "" then + GoalsText = "( - )" + end + + return GoalsText +end + +--- Show progress of a TASK. +-- @param MISSION Mission Group structure describing the Mission. +-- @param CLIENT Client Group structure describing the Client. +function TASK:ShowGoalProgress( Mission, Client ) + self:F2() + + local GoalsText = "" + for GoalVerb, GoalVerbData in pairs( self.GoalTasks ) do + if Mission:IsCompleted() then + else + local Goals = self:GetGoalCompletion( GoalVerb ) + if Goals and Goals ~= "" then + else + Goals = "-" + end + GoalsText = GoalsText .. self:GetGoalProgress() + end + end + + if Mission.MissionReportFlash or Mission.MissionReportShow then + Client:Message( GoalsText, 10, "Mission Command: Task Status", 30, "Task status" ) + end +end + +--- Sets a TASK to status Done. +function TASK:Done() + self:F2() + self.TaskDone = true +end + +--- Returns if a TASK is done. +-- @return bool +function TASK:IsDone() + self:F2( self.TaskDone ) + return self.TaskDone +end + +--- Sets a TASK to status failed. +function TASK:Failed() + self:F() + self.TaskFailed = true +end + +--- Returns if a TASk has failed. +-- @return bool +function TASK:IsFailed() + self:F2( self.TaskFailed ) + return self.TaskFailed +end + +function TASK:Reset( Mission, Client ) + self:F2() + self.ExecuteStage = _TransportExecuteStage.NONE +end + +--- Returns the Goals of a TASK +-- @return @table Goals +function TASK:GetGoals() + return self.GoalTasks +end + +--- Returns if a TASK has Goal(s). +-- @param #TASK self +-- @param #string GoalVerb is the name of the Goal of the TASK. +-- @return bool +function TASK:Goal( GoalVerb ) + self:F2( { GoalVerb } ) + if not GoalVerb then + GoalVerb = self.GoalVerb + end + self:T2( {self.GoalTasks[GoalVerb] } ) + if self.GoalTasks[GoalVerb] and self.GoalTasks[GoalVerb].GoalTotal > 0 then + return true + else + return false + end +end + +--- Sets the total Goals to be achieved of the Goal Name +-- @param number GoalTotal is the number of times the GoalVerb needs to be achieved. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +function TASK:SetGoalTotal( GoalTotal, GoalVerb ) + self:F2( { GoalTotal, GoalVerb } ) + + if not GoalVerb then + GoalVerb = self.GoalVerb + end + self.GoalTasks[GoalVerb] = {} + self.GoalTasks[GoalVerb].Goals = {} + self.GoalTasks[GoalVerb].GoalTotal = GoalTotal + self.GoalTasks[GoalVerb].GoalCount = 0 + return self +end + +--- Gets the total of Goals to be achieved within the TASK of the GoalVerb. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +function TASK:GetGoalTotal( GoalVerb ) + self:F2( { GoalVerb } ) + if not GoalVerb then + GoalVerb = self.GoalVerb + end + if self:Goal( GoalVerb ) then + return self.GoalTasks[GoalVerb].GoalTotal + else + return 0 + end +end + +--- Sets the total of Goals currently achieved within the TASK of the GoalVerb. +-- @param number GoalCount is the total number of Goals achieved within the TASK. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +-- @return TASK +function TASK:SetGoalCount( GoalCount, GoalVerb ) + self:F2() + if not GoalVerb then + GoalVerb = self.GoalVerb + end + if self:Goal( GoalVerb) then + self.GoalTasks[GoalVerb].GoalCount = GoalCount + end + return self +end + +--- Increments the total of Goals currently achieved within the TASK of the GoalVerb, with the given GoalCountIncrease. +-- @param number GoalCountIncrease is the number of new Goals achieved within the TASK. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +-- @return TASK +function TASK:IncreaseGoalCount( GoalCountIncrease, GoalVerb ) + self:F2( { GoalCountIncrease, GoalVerb } ) + if not GoalVerb then + GoalVerb = self.GoalVerb + end + if self:Goal( GoalVerb) then + self.GoalTasks[GoalVerb].GoalCount = self.GoalTasks[GoalVerb].GoalCount + GoalCountIncrease + end + return self +end + +--- Gets the total of Goals currently achieved within the TASK of the GoalVerb. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +-- @return TASK +function TASK:GetGoalCount( GoalVerb ) + self:F2() + if not GoalVerb then + GoalVerb = self.GoalVerb + end + if self:Goal( GoalVerb ) then + return self.GoalTasks[GoalVerb].GoalCount + else + return 0 + end +end + +--- Gets the percentage of Goals currently achieved within the TASK of the GoalVerb. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +-- @return TASK +function TASK:GetGoalPercentage( GoalVerb ) + self:F2() + if not GoalVerb then + GoalVerb = self.GoalVerb + end + if self:Goal( GoalVerb ) then + return math.floor( self:GetGoalCount( GoalVerb ) / self:GetGoalTotal( GoalVerb ) * 100 + .5 ) + else + return 100 + end +end + +--- Returns if all the Goals of the TASK were achieved. +-- @return bool +function TASK:IsGoalReached() + self:F2() + + local GoalReached = true + + for GoalVerb, Goals in pairs( self.GoalTasks ) do + self:T2( { "GoalVerb", GoalVerb } ) + if self:Goal( GoalVerb ) then + local GoalToDo = self:GetGoalTotal( GoalVerb ) - self:GetGoalCount( GoalVerb ) + self:T2( "GoalToDo = " .. GoalToDo ) + if GoalToDo <= 0 then + else + GoalReached = false + break + end + else + break + end + end + + self:T( { GoalReached, self.GoalTasks } ) + return GoalReached +end + +--- Adds an Additional Goal for the TASK to be achieved. +-- @param string GoalVerb is the name of the Goal of the TASK. +-- @param string GoalTask is a text describing the Goal of the TASK to be achieved. +-- @param number GoalIncrease is a number by which the Goal achievement is increasing. +function TASK:AddGoalCompletion( GoalVerb, GoalTask, GoalIncrease ) + self:F2( { GoalVerb, GoalTask, GoalIncrease } ) + + if self:Goal( GoalVerb ) then + self.GoalTasks[GoalVerb].Goals[#self.GoalTasks[GoalVerb].Goals+1] = GoalTask + self.GoalTasks[GoalVerb].GoalCount = self.GoalTasks[GoalVerb].GoalCount + GoalIncrease + end + return self +end + +--- Returns if the additional Goal for the TASK was completed. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +-- @return string Goals +function TASK:GetGoalCompletion( GoalVerb ) + self:F2( { GoalVerb } ) + + if self:Goal( GoalVerb ) then + local Goals = "" + for GoalID, GoalName in pairs( self.GoalTasks[GoalVerb].Goals ) do Goals = Goals .. GoalName .. " + " end + return Goals:gsub(" + $", ""), self.GoalTasks[GoalVerb].GoalCount + end +end + +function TASK.MenuAction( Parameter ) + Parameter.ReferenceTask.ExecuteStage = _TransportExecuteStage.EXECUTING + Parameter.ReferenceTask.Cargo = Parameter.CargoTask +end + +function TASK:StageExecute() + self:F() + + local Execute = false + + if self.Frequency == STAGE.FREQUENCY.REPEAT then + Execute = true + elseif self.Frequency == STAGE.FREQUENCY.NONE then + Execute = false + elseif self.Frequency >= 0 then + Execute = true + self.Frequency = self.Frequency - 1 + end + + return Execute + +end + +--- Work function to set signal events within a TASK. +function TASK:AddSignal( SignalUnitNames, SignalType, SignalColor, SignalHeight ) + self:F() + + local Valid = true + + if Valid then + if type( SignalUnitNames ) == "table" then + self.LandingZoneSignalUnitNames = SignalUnitNames + else + self.LandingZoneSignalUnitNames = { SignalUnitNames } + end + self.LandingZoneSignalType = SignalType + self.LandingZoneSignalColor = SignalColor + self.Signalled = false + if SignalHeight ~= nil then + self.LandingZoneSignalHeight = SignalHeight + else + self.LandingZoneSignalHeight = 0 + end + + if self.TaskBriefing then + self.TaskBriefing = self.TaskBriefing .. " " .. SignalColor.TEXT .. " " .. SignalType.TEXT .. " will be fired when entering the landing zone." + end + end + + return Valid +end + +--- When the CLIENT is approaching the landing zone, a RED SMOKE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddSmokeRed( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.RED, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a GREEN SMOKE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddSmokeGreen( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.GREEN, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a BLUE SMOKE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddSmokeBlue( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.BLUE, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a WHITE SMOKE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddSmokeWhite( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.WHITE, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, an ORANGE SMOKE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddSmokeOrange( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.ORANGE, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a RED FLARE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddFlareRed( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.RED, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a GREEN FLARE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddFlareGreen( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.GREEN, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a BLUE FLARE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddFlareBlue( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.BLUE, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a WHITE FLARE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddFlareWhite( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.WHITE, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, an ORANGE FLARE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddFlareOrange( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.ORANGE, SignalHeight ) +end +--- A GOHOMETASK orchestrates the travel back to the home base, which is a specific zone defined within the ME. +-- @module GOHOMETASK + +--- The GOHOMETASK class +-- @type +GOHOMETASK = { + ClassName = "GOHOMETASK", +} + +--- Creates a new GOHOMETASK. +-- @param table{string,...}|string LandingZones Table of Landing Zone names where Home(s) are located. +-- @return GOHOMETASK +function GOHOMETASK:New( LandingZones ) + local self = BASE:Inherit( self, TASK:New() ) + self:F( { LandingZones } ) + local Valid = true + + Valid = routines.ValidateZone( LandingZones, "LandingZones", Valid ) + + if Valid then + self.Name = 'Fly Home' + self.TaskBriefing = "Task: Fly back to your home base. Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to your home base." + if type( LandingZones ) == "table" then + self.LandingZones = LandingZones + else + self.LandingZones = { LandingZones } + end + self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGEARRIVE:New(), STAGEDONE:New() } + self.SetStage( self, 1 ) + end + + return self +end +--- A DESTROYBASETASK will monitor the destruction of Groups and Units. This is a BASE class, other classes are derived from this class. +-- @module DESTROYBASETASK +-- @see DESTROYGROUPSTASK +-- @see DESTROYUNITTYPESTASK +-- @see DESTROY_RADARS_TASK + + + +--- The DESTROYBASETASK class +-- @type DESTROYBASETASK +DESTROYBASETASK = { + ClassName = "DESTROYBASETASK", + Destroyed = 0, + GoalVerb = "Destroy", + DestroyPercentage = 100, +} + +--- Creates a new DESTROYBASETASK. +-- @param #DESTROYBASETASK self +-- @param #string DestroyGroupType Text describing the group to be destroyed. f.e. "Radar Installations", "Ships", "Vehicles", "Command Centers". +-- @param #string DestroyUnitType Text describing the unit types to be destroyed. f.e. "SA-6", "Row Boats", "Tanks", "Tents". +-- @param #list<#string> DestroyGroupPrefixes Table of Prefixes of the Groups to be destroyed before task is completed. +-- @param #number DestroyPercentage defines the %-tage that needs to be destroyed to achieve mission success. eg. If in the Group there are 10 units, then a value of 75 would require 8 units to be destroyed from the Group to complete the @{TASK}. +-- @return DESTROYBASETASK +function DESTROYBASETASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupPrefixes, DestroyPercentage ) + local self = BASE:Inherit( self, TASK:New() ) + self:F() + + self.Name = 'Destroy' + self.Destroyed = 0 + self.DestroyGroupPrefixes = DestroyGroupPrefixes + self.DestroyGroupType = DestroyGroupType + self.DestroyUnitType = DestroyUnitType + if DestroyPercentage then + self.DestroyPercentage = DestroyPercentage + end + self.TaskBriefing = "Task: Destroy " .. DestroyGroupType .. "." + self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEGROUPSDESTROYED:New(), STAGEDONE:New() } + self.SetStage( self, 1 ) + + return self +end + +--- Handle the S_EVENT_DEAD events to validate the destruction of units for the task monitoring. +-- @param #DESTROYBASETASK self +-- @param Event#EVENTDATA Event structure of MOOSE. +function DESTROYBASETASK:EventDead( Event ) + self:F( { Event } ) + + if Event.IniDCSUnit then + local DestroyUnit = Event.IniDCSUnit + local DestroyUnitName = Event.IniDCSUnitName + local DestroyGroup = Event.IniDCSGroup + local DestroyGroupName = Event.IniDCSGroupName + + --TODO: I need to fix here if 2 groups in the mission have a similar name with GroupPrefix equal, then i should differentiate for which group the goal was reached! + --I may need to test if for the goalverb that group goal was reached or something. Need to think about it a bit more ... + local UnitsDestroyed = 0 + for DestroyGroupPrefixID, DestroyGroupPrefix in pairs( self.DestroyGroupPrefixes ) do + self:T( DestroyGroupPrefix ) + if string.find( DestroyGroupName, DestroyGroupPrefix, 1, true ) then + self:T( BASE:Inherited(self).ClassName ) + UnitsDestroyed = self:ReportGoalProgress( DestroyGroup, DestroyUnit ) + self:T( UnitsDestroyed ) + end + end + + self:T( { UnitsDestroyed } ) + self:IncreaseGoalCount( UnitsDestroyed, self.GoalVerb ) + end + +end + +--- Validate task completeness of DESTROYBASETASK. +-- @param DestroyGroup Group structure describing the group to be evaluated. +-- @param DestroyUnit Unit structure describing the Unit to be evaluated. +function DESTROYBASETASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) + self:F() + + return 0 +end +--- DESTROYGROUPSTASK +-- @module DESTROYGROUPSTASK + + + +--- The DESTROYGROUPSTASK class +-- @type +DESTROYGROUPSTASK = { + ClassName = "DESTROYGROUPSTASK", + GoalVerb = "Destroy Groups", +} + +--- Creates a new DESTROYGROUPSTASK. +-- @param #DESTROYGROUPSTASK self +-- @param #string DestroyGroupType String describing the group to be destroyed. +-- @param #string DestroyUnitType String describing the unit to be destroyed. +-- @param #list<#string> DestroyGroupNames Table of string containing the name of the groups to be destroyed before task is completed. +-- @param #number DestroyPercentage defines the %-tage that needs to be destroyed to achieve mission success. eg. If in the Group there are 10 units, then a value of 75 would require 8 units to be destroyed from the Group to complete the @{TASK}. +---@return DESTROYGROUPSTASK +function DESTROYGROUPSTASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyPercentage ) + local self = BASE:Inherit( self, DESTROYBASETASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyPercentage ) ) + self:F() + + self.Name = 'Destroy Groups' + self.GoalVerb = "Destroy " .. DestroyGroupType + + _EVENTDISPATCHER:OnDead( self.EventDead , self ) + _EVENTDISPATCHER:OnCrash( self.EventDead , self ) + + return self +end + +--- Report Goal Progress. +-- @param #DESTROYGROUPSTASK self +-- @param DCSGroup#Group DestroyGroup Group structure describing the group to be evaluated. +-- @param DCSUnit#Unit DestroyUnit Unit structure describing the Unit to be evaluated. +-- @return #number The DestroyCount reflecting the amount of units destroyed within the group. +function DESTROYGROUPSTASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) + self:F( { DestroyGroup, DestroyUnit, self.DestroyPercentage } ) + + local DestroyGroupSize = DestroyGroup:getSize() - 1 -- When a DEAD event occurs, the getSize is still one larger than the destroyed unit. + local DestroyGroupInitialSize = DestroyGroup:getInitialSize() + self:T( { DestroyGroupSize, DestroyGroupInitialSize - ( DestroyGroupInitialSize * self.DestroyPercentage / 100 ) } ) + + local DestroyCount = 0 + if DestroyGroup then + if DestroyGroupSize <= DestroyGroupInitialSize - ( DestroyGroupInitialSize * self.DestroyPercentage / 100 ) then + DestroyCount = 1 + end + else + DestroyCount = 1 + end + + self:T( DestroyCount ) + + return DestroyCount +end +--- Task class to destroy radar installations. +-- @module DESTROYRADARSTASK + + + +--- The DESTROYRADARS class +-- @type +DESTROYRADARSTASK = { + ClassName = "DESTROYRADARSTASK", + GoalVerb = "Destroy Radars" +} + +--- Creates a new DESTROYRADARSTASK. +-- @param table{string,...} DestroyGroupNames Table of string containing the group names of which the radars are be destroyed. +-- @return DESTROYRADARSTASK +function DESTROYRADARSTASK:New( DestroyGroupNames ) + local self = BASE:Inherit( self, DESTROYGROUPSTASK:New( 'radar installations', 'radars', DestroyGroupNames ) ) + self:F() + + self.Name = 'Destroy Radars' + + _EVENTDISPATCHER:OnDead( self.EventDead , self ) + + return self +end + +--- Report Goal Progress. +-- @param Group DestroyGroup Group structure describing the group to be evaluated. +-- @param Unit DestroyUnit Unit structure describing the Unit to be evaluated. +function DESTROYRADARSTASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) + self:F( { DestroyGroup, DestroyUnit } ) + + local DestroyCount = 0 + if DestroyUnit and DestroyUnit:hasSensors( Unit.SensorType.RADAR, Unit.RadarType.AS ) then + if DestroyUnit and DestroyUnit:getLife() <= 1.0 then + self:T( 'Destroyed a radar' ) + DestroyCount = 1 + end + end + return DestroyCount +end +--- Set TASK to destroy certain unit types. +-- @module DESTROYUNITTYPESTASK + + + +--- The DESTROYUNITTYPESTASK class +-- @type +DESTROYUNITTYPESTASK = { + ClassName = "DESTROYUNITTYPESTASK", + GoalVerb = "Destroy", +} + +--- Creates a new DESTROYUNITTYPESTASK. +-- @param string DestroyGroupType String describing the group to be destroyed. f.e. "Radar Installations", "Fleet", "Batallion", "Command Centers". +-- @param string DestroyUnitType String describing the unit to be destroyed. f.e. "radars", "ships", "tanks", "centers". +-- @param table{string,...} DestroyGroupNames Table of string containing the group names of which the radars are be destroyed. +-- @param string DestroyUnitTypes Table of string containing the type names of the units to achieve mission success. +-- @return DESTROYUNITTYPESTASK +function DESTROYUNITTYPESTASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyUnitTypes ) + local self = BASE:Inherit( self, DESTROYBASETASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames ) ) + self:F( { DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyUnitTypes } ) + + if type(DestroyUnitTypes) == 'table' then + self.DestroyUnitTypes = DestroyUnitTypes + else + self.DestroyUnitTypes = { DestroyUnitTypes } + end + + self.Name = 'Destroy Unit Types' + self.GoalVerb = "Destroy " .. DestroyGroupType + + _EVENTDISPATCHER:OnDead( self.EventDead , self ) + + return self +end + +--- Report Goal Progress. +-- @param Group DestroyGroup Group structure describing the group to be evaluated. +-- @param Unit DestroyUnit Unit structure describing the Unit to be evaluated. +function DESTROYUNITTYPESTASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) + self:F( { DestroyGroup, DestroyUnit } ) + + local DestroyCount = 0 + for UnitTypeID, UnitType in pairs( self.DestroyUnitTypes ) do + if DestroyUnit and DestroyUnit:getTypeName() == UnitType then + if DestroyUnit and DestroyUnit:getLife() <= 1.0 then + DestroyCount = DestroyCount + 1 + end + end + end + return DestroyCount +end +--- A PICKUPTASK orchestrates the loading of CARGO at a specific landing zone. +-- @module PICKUPTASK +-- @parent TASK + +--- The PICKUPTASK class +-- @type +PICKUPTASK = { + ClassName = "PICKUPTASK", + TEXT = { "Pick-Up", "picked-up", "loaded" }, + GoalVerb = "Pick-Up" +} + +--- Creates a new PICKUPTASK. +-- @param table{string,...}|string LandingZones Table of Zone names where Cargo is to be loaded. +-- @param CARGO_TYPE CargoType Type of the Cargo. The type must be of the following Enumeration:.. +-- @param number OnBoardSide Reflects from which side the cargo Group will be on-boarded on the Carrier. +function PICKUPTASK:New( CargoType, OnBoardSide ) + local self = BASE:Inherit( self, TASK:New() ) + self:F() + + -- self holds the inherited instance of the PICKUPTASK Class to the BASE class. + + local Valid = true + + if Valid then + self.Name = 'Pickup Cargo' + self.TaskBriefing = "Task: Fly to the indicated landing zones and pickup " .. CargoType .. ". Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the pickup zone." + self.CargoType = CargoType + self.GoalVerb = CargoType .. " " .. self.GoalVerb + self.OnBoardSide = OnBoardSide + self.IsLandingRequired = true -- required to decide whether the client needs to land or not + self.IsSlingLoad = false -- Indicates whether the cargo is a sling load cargo + self.Stages = { STAGE_CARGO_INIT:New(), STAGE_CARGO_LOAD:New(), STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGELANDING:New(), STAGELANDED:New(), STAGELOAD:New(), STAGEDONE:New() } + self.SetStage( self, 1 ) + end + + return self +end + +function PICKUPTASK:FromZone( LandingZone ) + self:F() + + self.LandingZones.LandingZoneNames[LandingZone.CargoZoneName] = LandingZone.CargoZoneName + self.LandingZones.LandingZones[LandingZone.CargoZoneName] = LandingZone + + return self +end + +function PICKUPTASK:InitCargo( InitCargos ) + self:F( { InitCargos } ) + + if type( InitCargos ) == "table" then + self.Cargos.InitCargos = InitCargos + else + self.Cargos.InitCargos = { InitCargos } + end + + return self +end + +function PICKUPTASK:LoadCargo( LoadCargos ) + self:F( { LoadCargos } ) + + if type( LoadCargos ) == "table" then + self.Cargos.LoadCargos = LoadCargos + else + self.Cargos.LoadCargos = { LoadCargos } + end + + return self +end + +function PICKUPTASK:AddCargoMenus( Client, Cargos, TransportRadius ) + self:F() + + for CargoID, Cargo in pairs( Cargos ) do + + self:T( { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo:IsStatusNone(), Cargo:IsStatusLoaded(), Cargo:IsStatusLoading(), Cargo:IsStatusUnLoaded() } ) + + -- If the Cargo has no status, allow the menu option. + if Cargo:IsStatusNone() or ( Cargo:IsStatusLoading() and Client == Cargo:IsLoadingToClient() ) then + + local MenuAdd = false + if Cargo:IsNear( Client, self.CurrentCargoZone ) then + MenuAdd = true + end + + if MenuAdd then + if Client._Menus[Cargo.CargoType] == nil then + Client._Menus[Cargo.CargoType] = {} + end + + if not Client._Menus[Cargo.CargoType].PickupMenu then + Client._Menus[Cargo.CargoType].PickupMenu = missionCommands.addSubMenuForGroup( + Client:GetClientGroupID(), + self.TEXT[1] .. " " .. Cargo.CargoType, + nil + ) + self:T( 'Added PickupMenu: ' .. self.TEXT[1] .. " " .. Cargo.CargoType ) + end + + if Client._Menus[Cargo.CargoType].PickupSubMenus == nil then + Client._Menus[Cargo.CargoType].PickupSubMenus = {} + end + + Client._Menus[Cargo.CargoType].PickupSubMenus[ #Client._Menus[Cargo.CargoType].PickupSubMenus + 1 ] = missionCommands.addCommandForGroup( + Client:GetClientGroupID(), + Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )", + Client._Menus[Cargo.CargoType].PickupMenu, + self.MenuAction, + { ReferenceTask = self, CargoTask = Cargo } + ) + self:T( 'Added PickupSubMenu' .. Cargo.CargoType .. ":" .. Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )" ) + end + end + end + +end + +function PICKUPTASK:RemoveCargoMenus( Client ) + self:F() + + for MenuID, MenuData in pairs( Client._Menus ) do + for SubMenuID, SubMenuData in pairs( MenuData.PickupSubMenus ) do + missionCommands.removeItemForGroup( Client:GetClientGroupID(), SubMenuData ) + self:T( "Removed PickupSubMenu " ) + SubMenuData = nil + end + if MenuData.PickupMenu then + missionCommands.removeItemForGroup( Client:GetClientGroupID(), MenuData.PickupMenu ) + self:T( "Removed PickupMenu " ) + MenuData.PickupMenu = nil + end + end + + for CargoID, Cargo in pairs( CARGOS ) do + self:T( { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo:IsStatusNone(), Cargo:IsStatusLoaded(), Cargo:IsStatusLoading(), Cargo:IsStatusUnLoaded() } ) + if Cargo:IsStatusLoading() and Client == Cargo:IsLoadingToClient() then + Cargo:StatusNone() + end + end + +end + + + +function PICKUPTASK:HasFailed( ClientDead ) + self:F() + + local TaskHasFailed = self.TaskFailed + return TaskHasFailed +end + +--- A DEPLOYTASK orchestrates the deployment of CARGO within a specific landing zone. +-- @module DEPLOYTASK + + + +--- A DeployTask +-- @type DEPLOYTASK +DEPLOYTASK = { + ClassName = "DEPLOYTASK", + TEXT = { "Deploy", "deployed", "unloaded" }, + GoalVerb = "Deployment" +} + + +--- Creates a new DEPLOYTASK object, which models the sequence of STAGEs to unload a cargo. +-- @function [parent=#DEPLOYTASK] New +-- @param #string CargoType Type of the Cargo. +-- @return #DEPLOYTASK The created DeployTask +function DEPLOYTASK:New( CargoType ) + local self = BASE:Inherit( self, TASK:New() ) + self:F() + + local Valid = true + + if Valid then + self.Name = 'Deploy Cargo' + self.TaskBriefing = "Fly to one of the indicated landing zones and deploy " .. CargoType .. ". Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the deployment zone." + self.CargoType = CargoType + self.GoalVerb = CargoType .. " " .. self.GoalVerb + self.Stages = { STAGE_CARGO_INIT:New(), STAGE_CARGO_LOAD:New(), STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGELANDING:New(), STAGELANDED:New(), STAGEUNLOAD:New(), STAGEDONE:New() } + self.SetStage( self, 1 ) + end + + return self +end + +function DEPLOYTASK:ToZone( LandingZone ) + self:F() + + self.LandingZones.LandingZoneNames[LandingZone.CargoZoneName] = LandingZone.CargoZoneName + self.LandingZones.LandingZones[LandingZone.CargoZoneName] = LandingZone + + return self +end + + +function DEPLOYTASK:InitCargo( InitCargos ) + self:F( { InitCargos } ) + + if type( InitCargos ) == "table" then + self.Cargos.InitCargos = InitCargos + else + self.Cargos.InitCargos = { InitCargos } + end + + return self +end + + +function DEPLOYTASK:LoadCargo( LoadCargos ) + self:F( { LoadCargos } ) + + if type( LoadCargos ) == "table" then + self.Cargos.LoadCargos = LoadCargos + else + self.Cargos.LoadCargos = { LoadCargos } + end + + return self +end + + +--- When the cargo is unloaded, it will move to the target zone name. +-- @param string TargetZoneName Name of the Zone to where the Cargo should move after unloading. +function DEPLOYTASK:SetCargoTargetZoneName( TargetZoneName ) + self:F() + + local Valid = true + + Valid = routines.ValidateString( TargetZoneName, "TargetZoneName", Valid ) + + if Valid then + self.TargetZoneName = TargetZoneName + end + + return Valid + +end + +function DEPLOYTASK:AddCargoMenus( Client, Cargos, TransportRadius ) + self:F() + + local ClientGroupID = Client:GetClientGroupID() + + self:T( ClientGroupID ) + + for CargoID, Cargo in pairs( Cargos ) do + + self:T( { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo.CargoWeight } ) + + if Cargo:IsStatusLoaded() and Client == Cargo:IsLoadedInClient() then + + if Client._Menus[Cargo.CargoType] == nil then + Client._Menus[Cargo.CargoType] = {} + end + + if not Client._Menus[Cargo.CargoType].DeployMenu then + Client._Menus[Cargo.CargoType].DeployMenu = missionCommands.addSubMenuForGroup( + ClientGroupID, + self.TEXT[1] .. " " .. Cargo.CargoType, + nil + ) + self:T( 'Added DeployMenu ' .. self.TEXT[1] ) + end + + if Client._Menus[Cargo.CargoType].DeploySubMenus == nil then + Client._Menus[Cargo.CargoType].DeploySubMenus = {} + end + + if Client._Menus[Cargo.CargoType].DeployMenu == nil then + self:T( 'deploymenu is nil' ) + end + + Client._Menus[Cargo.CargoType].DeploySubMenus[ #Client._Menus[Cargo.CargoType].DeploySubMenus + 1 ] = missionCommands.addCommandForGroup( + ClientGroupID, + Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )", + Client._Menus[Cargo.CargoType].DeployMenu, + self.MenuAction, + { ReferenceTask = self, CargoTask = Cargo } + ) + self:T( 'Added DeploySubMenu ' .. Cargo.CargoType .. ":" .. Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )" ) + end + end + +end + +function DEPLOYTASK:RemoveCargoMenus( Client ) + self:F() + + local ClientGroupID = Client:GetClientGroupID() + self:T( ClientGroupID ) + + for MenuID, MenuData in pairs( Client._Menus ) do + if MenuData.DeploySubMenus ~= nil then + for SubMenuID, SubMenuData in pairs( MenuData.DeploySubMenus ) do + missionCommands.removeItemForGroup( ClientGroupID, SubMenuData ) + self:T( "Removed DeploySubMenu " ) + SubMenuData = nil + end + end + if MenuData.DeployMenu then + missionCommands.removeItemForGroup( ClientGroupID, MenuData.DeployMenu ) + self:T( "Removed DeployMenu " ) + MenuData.DeployMenu = nil + end + end + +end +--- A NOTASK is a dummy activity... But it will show a Mission Briefing... +-- @module NOTASK + +--- The NOTASK class +-- @type +NOTASK = { + ClassName = "NOTASK", +} + +--- Creates a new NOTASK. +function NOTASK:New() + local self = BASE:Inherit( self, TASK:New() ) + self:F() + + local Valid = true + + if Valid then + self.Name = 'Nothing' + self.TaskBriefing = "Task: Execute your mission." + self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEDONE:New() } + self.SetStage( self, 1 ) + end + + return self +end +--- A ROUTETASK orchestrates the travel to a specific zone defined within the ME. +-- @module ROUTETASK + +--- The ROUTETASK class +-- @type +ROUTETASK = { + ClassName = "ROUTETASK", + GoalVerb = "Route", +} + +--- Creates a new ROUTETASK. +-- @param table{sring,...}|string LandingZones Table of Zone Names where the target is located. +-- @param string TaskBriefing (optional) Defines a text describing the briefing of the task. +-- @return ROUTETASK +function ROUTETASK:New( LandingZones, TaskBriefing ) + local self = BASE:Inherit( self, TASK:New() ) + self:F( { LandingZones, TaskBriefing } ) + + local Valid = true + + Valid = routines.ValidateZone( LandingZones, "LandingZones", Valid ) + + if Valid then + self.Name = 'Route To Zone' + if TaskBriefing then + self.TaskBriefing = TaskBriefing .. " Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the target objective." + else + self.TaskBriefing = "Task: Fly to specified zone(s). Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the target objective." + end + if type( LandingZones ) == "table" then + self.LandingZones = LandingZones + else + self.LandingZones = { LandingZones } + end + self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGEARRIVE:New(), STAGEDONE:New() } + self.SetStage( self, 1 ) + end + + return self +end + +--- A MISSION is the main owner of a Mission orchestration within MOOSE . The Mission framework orchestrates @{CLIENT}s, @{TASK}s, @{STAGE}s etc. +-- A @{CLIENT} needs to be registered within the @{MISSION} through the function @{AddClient}. A @{TASK} needs to be registered within the @{MISSION} through the function @{AddTask}. +-- @module Mission + +--- The MISSION class +-- @type MISSION +-- @extends Base#BASE +-- @field #MISSION.Clients _Clients +-- @field #string MissionBriefing +MISSION = { + ClassName = "MISSION", + Name = "", + MissionStatus = "PENDING", + _Clients = {}, + _Tasks = {}, + _ActiveTasks = {}, + GoalFunction = nil, + MissionReportTrigger = 0, + MissionProgressTrigger = 0, + MissionReportShow = false, + MissionReportFlash = false, + MissionTimeInterval = 0, + MissionCoalition = "", + SUCCESS = 1, + FAILED = 2, + REPEAT = 3, + _GoalTasks = {} +} + +--- @type MISSION.Clients +-- @list + +function MISSION:Meta() + + local self = BASE:Inherit( self, BASE:New() ) + self:F() + + return self +end + +--- This is the main MISSION declaration method. Each Mission is like the master or a Mission orchestration between, Clients, Tasks, Stages etc. +-- @param string MissionName is the name of the mission. This name will be used to reference the status of each mission by the players. +-- @param string MissionPriority is a string indicating the "priority" of the Mission. f.e. "Primary", "Secondary" or "First", "Second". It is free format and up to the Mission designer to choose. There are no rules behind this field. +-- @param string MissionBriefing is a string indicating the mission briefing to be shown when a player joins a @{CLIENT}. +-- @param string MissionCoalition is a string indicating the coalition or party to which this mission belongs to. It is free format and can be chosen freely by the mission designer. Note that this field is not to be confused with the coalition concept of the ME. Examples of a Mission Coalition could be "NATO", "CCCP", "Intruders", "Terrorists"... +-- @return MISSION +-- @usage +-- -- Declare a few missions. +-- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'Patriots', 'Primary', 'Our intelligence reports that 3 Patriot SAM defense batteries are located near Ruisi, Kvarhiti and Gori.', 'Russia' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'Package Delivery', 'Operational', 'In order to be in full control of the situation, we need you to deliver a very important package at a secret location. Fly undetected through the NATO defenses and deliver the secret package. The secret agent is located at waypoint 4.', 'Russia' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'Rescue General', 'Tactical', 'Our intelligence has received a remote signal behind Gori. We believe it is a very important Russian General that was captured by Georgia. Go out there and rescue him! Ensure you stay out of the battle zone, keep south. Waypoint 4 is the location of our Russian General.', 'Russia' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'NATO Transport Troops', 'Operational', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.', 'NATO' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'SA-6 SAMs', 'Primary', 'Our intelligence reports that 3 SA-6 SAM defense batteries are located near Didmukha, Khetagurov and Berula. Eliminate the Russian SAMs.', 'NATO' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'NATO Sling Load', 'Operational', 'Fly to the cargo pickup zone at Dzegvi or Kaspi, and sling the cargo to Soganlug airbase.', 'NATO' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'Rescue secret agent', 'Tactical', 'In order to be in full control of the situation, we need you to rescue a secret agent from the woods behind enemy lines. Avoid the Russian defenses and rescue the agent. Keep south until Khasuri, and keep your eyes open for any SAM presence. The agent is located at waypoint 4 on your kneeboard.', 'NATO' ) +function MISSION:New( MissionName, MissionPriority, MissionBriefing, MissionCoalition ) + + self = MISSION:Meta() + self:T({ MissionName, MissionPriority, MissionBriefing, MissionCoalition }) + + local Valid = true + + Valid = routines.ValidateString( MissionName, "MissionName", Valid ) + Valid = routines.ValidateString( MissionPriority, "MissionPriority", Valid ) + Valid = routines.ValidateString( MissionBriefing, "MissionBriefing", Valid ) + Valid = routines.ValidateString( MissionCoalition, "MissionCoalition", Valid ) + + if Valid then + self.Name = MissionName + self.MissionPriority = MissionPriority + self.MissionBriefing = MissionBriefing + self.MissionCoalition = MissionCoalition + end + + return self +end + +--- Returns if a Mission has completed. +-- @return bool +function MISSION:IsCompleted() + self:F() + return self.MissionStatus == "ACCOMPLISHED" +end + +--- Set a Mission to completed. +function MISSION:Completed() + self:F() + self.MissionStatus = "ACCOMPLISHED" + self:StatusToClients() +end + +--- Returns if a Mission is ongoing. +-- treturn bool +function MISSION:IsOngoing() + self:F() + return self.MissionStatus == "ONGOING" +end + +--- Set a Mission to ongoing. +function MISSION:Ongoing() + self:F() + self.MissionStatus = "ONGOING" + --self:StatusToClients() +end + +--- Returns if a Mission is pending. +-- treturn bool +function MISSION:IsPending() + self:F() + return self.MissionStatus == "PENDING" +end + +--- Set a Mission to pending. +function MISSION:Pending() + self:F() + self.MissionStatus = "PENDING" + self:StatusToClients() +end + +--- Returns if a Mission has failed. +-- treturn bool +function MISSION:IsFailed() + self:F() + return self.MissionStatus == "FAILED" +end + +--- Set a Mission to failed. +function MISSION:Failed() + self:F() + self.MissionStatus = "FAILED" + self:StatusToClients() +end + +--- Send the status of the MISSION to all Clients. +function MISSION:StatusToClients() + self:F() + if self.MissionReportFlash then + for ClientID, Client in pairs( self._Clients ) do + Client:Message( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. '! ( ' .. self.MissionPriority .. ' mission ) ', 10, "Mission Command: Mission Status") + end + end +end + +--- Handles the reporting. After certain time intervals, a MISSION report MESSAGE will be shown to All Players. +function MISSION:ReportTrigger() + self:F() + + if self.MissionReportShow == true then + self.MissionReportShow = false + return true + else + if self.MissionReportFlash == true then + if timer.getTime() >= self.MissionReportTrigger then + self.MissionReportTrigger = timer.getTime() + self.MissionTimeInterval + return true + else + return false + end + else + return false + end + end +end + +--- Report the status of all MISSIONs to all active Clients. +function MISSION:ReportToAll() + self:F() + + local AlivePlayers = '' + for ClientID, Client in pairs( self._Clients ) do + if Client:GetDCSGroup() then + if Client:GetClientGroupDCSUnit() then + if Client:GetClientGroupDCSUnit():getLife() > 0.0 then + if AlivePlayers == '' then + AlivePlayers = ' Players: ' .. Client:GetClientGroupDCSUnit():getPlayerName() + else + AlivePlayers = AlivePlayers .. ' / ' .. Client:GetClientGroupDCSUnit():getPlayerName() + end + end + end + end + end + local Tasks = self:GetTasks() + local TaskText = "" + for TaskID, TaskData in pairs( Tasks ) do + TaskText = TaskText .. " - Task " .. TaskID .. ": " .. TaskData.Name .. ": " .. TaskData:GetGoalProgress() .. "\n" + end + MESSAGE:New( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. ' ( ' .. self.MissionPriority .. ' mission )' .. AlivePlayers .. "\n" .. TaskText:gsub("\n$",""), 10, "Mission Command: Mission Report" ):ToAll() +end + + +--- Add a goal function to a MISSION. Goal functions are called when a @{TASK} within a mission has been completed. +-- @param function GoalFunction is the function defined by the mission designer to evaluate whether a certain goal has been reached after a @{TASK} finishes within the @{MISSION}. A GoalFunction must accept 2 parameters: Mission, Client, which contains the current MISSION object and the current CLIENT object respectively. +-- @usage +-- PatriotActivation = { +-- { "US SAM Patriot Zerti", false }, +-- { "US SAM Patriot Zegduleti", false }, +-- { "US SAM Patriot Gvleti", false } +-- } +-- +-- function DeployPatriotTroopsGoal( Mission, Client ) +-- +-- +-- -- Check if the cargo is all deployed for mission success. +-- for CargoID, CargoData in pairs( Mission._Cargos ) do +-- if Group.getByName( CargoData.CargoGroupName ) then +-- CargoGroup = Group.getByName( CargoData.CargoGroupName ) +-- if CargoGroup then +-- -- Check if the cargo is ready to activate +-- CurrentLandingZoneID = routines.IsUnitInZones( CargoGroup:getUnits()[1], Mission:GetTask( 2 ).LandingZones ) -- The second task is the Deploytask to measure mission success upon +-- if CurrentLandingZoneID then +-- if PatriotActivation[CurrentLandingZoneID][2] == false then +-- -- Now check if this is a new Mission Task to be completed... +-- trigger.action.setGroupAIOn( Group.getByName( PatriotActivation[CurrentLandingZoneID][1] ) ) +-- PatriotActivation[CurrentLandingZoneID][2] = true +-- MessageToBlue( "Mission Command: Message to all airborne units! The " .. PatriotActivation[CurrentLandingZoneID][1] .. " is armed. Our air defenses are now stronger.", 60, "BLUE/PatriotDefense" ) +-- MessageToRed( "Mission Command: Our satellite systems are detecting additional NATO air defenses. To all airborne units: Take care!!!", 60, "RED/PatriotDefense" ) +-- Mission:GetTask( 2 ):AddGoalCompletion( "Patriots activated", PatriotActivation[CurrentLandingZoneID][1], 1 ) -- Register Patriot activation as part of mission goal. +-- end +-- end +-- end +-- end +-- end +-- end +-- +-- local Mission = MISSIONSCHEDULER.AddMission( 'NATO Transport Troops', 'Operational', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.', 'NATO' ) +-- Mission:AddGoalFunction( DeployPatriotTroopsGoal ) +function MISSION:AddGoalFunction( GoalFunction ) + self:F() + self.GoalFunction = GoalFunction +end + +--- Register a new @{CLIENT} to participate within the mission. +-- @param CLIENT Client is the @{CLIENT} object. The object must have been instantiated with @{CLIENT:New}. +-- @return CLIENT +-- @usage +-- Add a number of Client objects to the Mission. +-- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*HOT-Deploy Troops 1', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*RAMP-Deploy Troops 3', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*HOT-Deploy Troops 2', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*RAMP-Deploy Troops 4', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) +function MISSION:AddClient( Client ) + self:F( { Client } ) + + local Valid = true + + if Valid then + self._Clients[Client.ClientName] = Client + end + + return Client +end + +--- Find a @{CLIENT} object within the @{MISSION} by its ClientName. +-- @param CLIENT ClientName is a string defining the Client Group as defined within the ME. +-- @return CLIENT +-- @usage +-- -- Seach for Client "Bomber" within the Mission. +-- local BomberClient = Mission:FindClient( "Bomber" ) +function MISSION:FindClient( ClientName ) + self:F( { self._Clients[ClientName] } ) + return self._Clients[ClientName] +end + + +--- Register a @{TASK} to be completed within the @{MISSION}. Note that there can be multiple @{TASK}s registered to be completed. Each TASK can be set a certain Goal. The MISSION will not be completed until all Goals are reached. +-- @param TASK Task is the @{TASK} object. The object must have been instantiated with @{TASK:New} or any of its inherited @{TASK}s. +-- @param number TaskNumber is the sequence number of the TASK within the MISSION. This number does have to be chronological. +-- @return TASK +-- @usage +-- -- Define a few tasks for the Mission. +-- PickupZones = { "NATO Gold Pickup Zone", "NATO Titan Pickup Zone" } +-- PickupSignalUnits = { "NATO Gold Coordination Center", "NATO Titan Coordination Center" } +-- +-- -- Assign the Pickup Task +-- local PickupTask = PICKUPTASK:New( PickupZones, CARGO_TYPE.ENGINEERS, CLIENT.ONBOARDSIDE.LEFT ) +-- PickupTask:AddSmokeBlue( PickupSignalUnits ) +-- PickupTask:SetGoalTotal( 3 ) +-- Mission:AddTask( PickupTask, 1 ) +-- +-- -- Assign the Deploy Task +-- local PatriotActivationZones = { "US Patriot Battery 1 Activation", "US Patriot Battery 2 Activation", "US Patriot Battery 3 Activation" } +-- local PatriotActivationZonesSmokeUnits = { "US SAM Patriot - Battery 1 Control", "US SAM Patriot - Battery 2 Control", "US SAM Patriot - Battery 3 Control" } +-- local DeployTask = DEPLOYTASK:New( PatriotActivationZones, CARGO_TYPE.ENGINEERS ) +-- --DeployTask:SetCargoTargetZoneName( 'US Troops Attack ' .. math.random(2) ) +-- DeployTask:AddSmokeBlue( PatriotActivationZonesSmokeUnits ) +-- DeployTask:SetGoalTotal( 3 ) +-- DeployTask:SetGoalTotal( 3, "Patriots activated" ) +-- Mission:AddTask( DeployTask, 2 ) + +function MISSION:AddTask( Task, TaskNumber ) + self:F() + + self._Tasks[TaskNumber] = Task + self._Tasks[TaskNumber]:EnableEvents() + self._Tasks[TaskNumber].ID = TaskNumber + + return Task + end + +--- Get the TASK idenified by the TaskNumber from the Mission. This function is useful in GoalFunctions. +-- @param number TaskNumber is the number of the @{TASK} within the @{MISSION}. +-- @return TASK +-- @usage +-- -- Get Task 2 from the Mission. +-- Task2 = Mission:GetTask( 2 ) + +function MISSION:GetTask( TaskNumber ) + self:F() + + local Valid = true + + local Task = nil + + if type(TaskNumber) ~= "number" then + Valid = false + end + + if Valid then + Task = self._Tasks[TaskNumber] + end + + return Task +end + +--- Get all the TASKs from the Mission. This function is useful in GoalFunctions. +-- @return {TASK,...} Structure of TASKS with the @{TASK} number as the key. +-- @usage +-- -- Get Tasks from the Mission. +-- Tasks = Mission:GetTasks() +-- env.info( "Task 2 Completion = " .. Tasks[2]:GetGoalPercentage() .. "%" ) +function MISSION:GetTasks() + self:F() + + return self._Tasks +end + + +--[[ + _TransportExecuteStage: Defines the different stages of Transport unload/load execution. This table is internal and is used to control the validity of Transport load/unload timing. + + - _TransportExecuteStage.EXECUTING + - _TransportExecuteStage.SUCCESS + - _TransportExecuteStage.FAILED + +--]] +_TransportExecuteStage = { + NONE = 0, + EXECUTING = 1, + SUCCESS = 2, + FAILED = 3 +} + + +--- The MISSIONSCHEDULER is an OBJECT and is the main scheduler of ALL active MISSIONs registered within this scheduler. It's workings are considered internal and is automatically created when the Mission.lua file is included. +-- @type MISSIONSCHEDULER +-- @field #MISSIONSCHEDULER.MISSIONS Missions +MISSIONSCHEDULER = { + Missions = {}, + MissionCount = 0, + TimeIntervalCount = 0, + TimeIntervalShow = 150, + TimeSeconds = 14400, + TimeShow = 5 +} + +--- @type MISSIONSCHEDULER.MISSIONS +-- @list <#MISSION> Mission + +--- This is the main MISSIONSCHEDULER Scheduler function. It is considered internal and is automatically created when the Mission.lua file is included. +function MISSIONSCHEDULER.Scheduler() + + + -- loop through the missions in the TransportTasks + for MissionName, MissionData in pairs( MISSIONSCHEDULER.Missions ) do + + local Mission = MissionData -- #MISSION + + if not Mission:IsCompleted() then + + -- This flag will monitor if for this mission, there are clients alive. If this flag is still false at the end of the loop, the mission status will be set to Pending (if not Failed or Completed). + local ClientsAlive = false + + for ClientID, ClientData in pairs( Mission._Clients ) do + + local Client = ClientData -- Client#CLIENT + + if Client:IsAlive() then + + -- There is at least one Client that is alive... So the Mission status is set to Ongoing. + ClientsAlive = true + + -- If this Client was not registered as Alive before: + -- 1. We register the Client as Alive. + -- 2. We initialize the Client Tasks and make a link to the original Mission Task. + -- 3. We initialize the Cargos. + -- 4. We flag the Mission as Ongoing. + if not Client.ClientAlive then + Client.ClientAlive = true + Client.ClientBriefingShown = false + for TaskNumber, Task in pairs( Mission._Tasks ) do + -- Note that this a deepCopy. Each client must have their own Tasks with own Stages!!! + Client._Tasks[TaskNumber] = routines.utils.deepCopy( Mission._Tasks[TaskNumber] ) + -- Each MissionTask must point to the original Mission. + Client._Tasks[TaskNumber].MissionTask = Mission._Tasks[TaskNumber] + Client._Tasks[TaskNumber].Cargos = Mission._Tasks[TaskNumber].Cargos + Client._Tasks[TaskNumber].LandingZones = Mission._Tasks[TaskNumber].LandingZones + end + + Mission:Ongoing() + end + + + -- For each Client, check for each Task the state and evolve the mission. + -- This flag will indicate if the Task of the Client is Complete. + local TaskComplete = false + + for TaskNumber, Task in pairs( Client._Tasks ) do + + if not Task.Stage then + Task:SetStage( 1 ) + end + + + local TransportTime = timer.getTime() + + if not Task:IsDone() then + + if Task:Goal() then + Task:ShowGoalProgress( Mission, Client ) + end + + --env.info( 'Scheduler: Mission = ' .. Mission.Name .. ' / Client = ' .. Client.ClientName .. ' / Task = ' .. Task.Name .. ' / Stage = ' .. Task.ActiveStage .. ' - ' .. Task.Stage.Name .. ' - ' .. Task.Stage.StageType ) + + -- Action + if Task:StageExecute() then + Task.Stage:Execute( Mission, Client, Task ) + end + + -- Wait until execution is finished + if Task.ExecuteStage == _TransportExecuteStage.EXECUTING then + Task.Stage:Executing( Mission, Client, Task ) + end + + -- Validate completion or reverse to earlier stage + if Task.Time + Task.Stage.WaitTime <= TransportTime then + Task:SetStage( Task.Stage:Validate( Mission, Client, Task ) ) + end + + if Task:IsDone() then + --env.info( 'Scheduler: Mission '.. Mission.Name .. ' Task ' .. Task.Name .. ' Stage ' .. Task.Stage.Name .. ' done. TaskComplete = ' .. string.format ( "%s", TaskComplete and "true" or "false" ) ) + TaskComplete = true -- when a task is not yet completed, a mission cannot be completed + + else + -- break only if this task is not yet done, so that future task are not yet activated. + TaskComplete = false -- when a task is not yet completed, a mission cannot be completed + --env.info( 'Scheduler: Mission "'.. Mission.Name .. '" Task "' .. Task.Name .. '" Stage "' .. Task.Stage.Name .. '" break. TaskComplete = ' .. string.format ( "%s", TaskComplete and "true" or "false" ) ) + break + end + + if TaskComplete then + + if Mission.GoalFunction ~= nil then + Mission.GoalFunction( Mission, Client ) + end + if MISSIONSCHEDULER.Scoring then + MISSIONSCHEDULER.Scoring:_AddMissionTaskScore( Client:GetClientGroupDCSUnit(), Mission.Name, 25 ) + end + +-- if not Mission:IsCompleted() then +-- end + end + end + end + + local MissionComplete = true + for TaskNumber, Task in pairs( Mission._Tasks ) do + if Task:Goal() then +-- Task:ShowGoalProgress( Mission, Client ) + if Task:IsGoalReached() then + else + MissionComplete = false + end + else + MissionComplete = false -- If there is no goal, the mission should never be ended. The goal status will be set somewhere else. + end + end + + if MissionComplete then + Mission:Completed() + if MISSIONSCHEDULER.Scoring then + MISSIONSCHEDULER.Scoring:_AddMissionScore( Mission.Name, 100 ) + end + else + if TaskComplete then + -- Reset for new tasking of active client + Client.ClientAlive = false -- Reset the client tasks. + end + end + + + else + if Client.ClientAlive then + env.info( 'Scheduler: Client "' .. Client.ClientName .. '" is inactive.' ) + Client.ClientAlive = false + + -- This is tricky. If we sanitize Client._Tasks before sanitizing Client._Tasks[TaskNumber].MissionTask, then the original MissionTask will be sanitized, and will be lost within the garbage collector. + -- So first sanitize Client._Tasks[TaskNumber].MissionTask, after that, sanitize only the whole _Tasks structure... + --Client._Tasks[TaskNumber].MissionTask = nil + --Client._Tasks = nil + end + end + end + + -- If all Clients of this Mission are not activated, then the Mission status needs to be put back into Pending status. + -- But only if the Mission was Ongoing. In case the Mission is Completed or Failed, the Mission status may not be changed. In these cases, this will be the last run of this Mission in the Scheduler. + if ClientsAlive == false then + if Mission:IsOngoing() then + -- Mission status back to pending... + Mission:Pending() + end + end + end + + Mission:StatusToClients() + + if Mission:ReportTrigger() then + Mission:ReportToAll() + end + end + + return true +end + +--- Start the MISSIONSCHEDULER. +function MISSIONSCHEDULER.Start() + if MISSIONSCHEDULER ~= nil then + --MISSIONSCHEDULER.SchedulerId = routines.scheduleFunction( MISSIONSCHEDULER.Scheduler, { }, 0, 2 ) + MISSIONSCHEDULER.SchedulerId = SCHEDULER:New( nil, MISSIONSCHEDULER.Scheduler, { }, 0, 2 ) + end +end + +--- Stop the MISSIONSCHEDULER. +function MISSIONSCHEDULER.Stop() + if MISSIONSCHEDULER.SchedulerId then + routines.removeFunction(MISSIONSCHEDULER.SchedulerId) + MISSIONSCHEDULER.SchedulerId = nil + end +end + +--- This is the main MISSION declaration method. Each Mission is like the master or a Mission orchestration between, Clients, Tasks, Stages etc. +-- @param Mission is the MISSION object instantiated by @{MISSION:New}. +-- @return MISSION +-- @usage +-- -- Declare a mission. +-- Mission = MISSION:New( 'Russia Transport Troops SA-6', +-- 'Operational', +-- 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', +-- 'Russia' ) +-- MISSIONSCHEDULER:AddMission( Mission ) +function MISSIONSCHEDULER.AddMission( Mission ) + MISSIONSCHEDULER.Missions[Mission.Name] = Mission + MISSIONSCHEDULER.MissionCount = MISSIONSCHEDULER.MissionCount + 1 + -- Add an overall AI Client for the AI tasks... This AI Client will facilitate the Events in the background for each Task. + --MissionAdd:AddClient( CLIENT:Register( 'AI' ) ) + + return Mission +end + +--- Remove a MISSION from the MISSIONSCHEDULER. +-- @param MissionName is the name of the MISSION given at declaration using @{AddMission}. +-- @usage +-- -- Declare a mission. +-- Mission = MISSION:New( 'Russia Transport Troops SA-6', +-- 'Operational', +-- 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', +-- 'Russia' ) +-- MISSIONSCHEDULER:AddMission( Mission ) +-- +-- -- Now remove the Mission. +-- MISSIONSCHEDULER:RemoveMission( 'Russia Transport Troops SA-6' ) +function MISSIONSCHEDULER.RemoveMission( MissionName ) + MISSIONSCHEDULER.Missions[MissionName] = nil + MISSIONSCHEDULER.MissionCount = MISSIONSCHEDULER.MissionCount - 1 +end + +--- Find a MISSION within the MISSIONSCHEDULER. +-- @param MissionName is the name of the MISSION given at declaration using @{AddMission}. +-- @return MISSION +-- @usage +-- -- Declare a mission. +-- Mission = MISSION:New( 'Russia Transport Troops SA-6', +-- 'Operational', +-- 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', +-- 'Russia' ) +-- MISSIONSCHEDULER:AddMission( Mission ) +-- +-- -- Now find the Mission. +-- MissionFind = MISSIONSCHEDULER:FindMission( 'Russia Transport Troops SA-6' ) +function MISSIONSCHEDULER.FindMission( MissionName ) + return MISSIONSCHEDULER.Missions[MissionName] +end + +-- Internal function used by the MISSIONSCHEDULER menu. +function MISSIONSCHEDULER.ReportMissionsShow( ) + for MissionName, Mission in pairs( MISSIONSCHEDULER.Missions ) do + Mission.MissionReportShow = true + Mission.MissionReportFlash = false + end +end + +-- Internal function used by the MISSIONSCHEDULER menu. +function MISSIONSCHEDULER.ReportMissionsFlash( TimeInterval ) + local Count = 0 + for MissionName, Mission in pairs( MISSIONSCHEDULER.Missions ) do + Mission.MissionReportShow = false + Mission.MissionReportFlash = true + Mission.MissionReportTrigger = timer.getTime() + Count * TimeInterval + Mission.MissionTimeInterval = MISSIONSCHEDULER.MissionCount * TimeInterval + env.info( "TimeInterval = " .. Mission.MissionTimeInterval ) + Count = Count + 1 + end +end + +-- Internal function used by the MISSIONSCHEDULER menu. +function MISSIONSCHEDULER.ReportMissionsHide( Prm ) + for MissionName, Mission in pairs( MISSIONSCHEDULER.Missions ) do + Mission.MissionReportShow = false + Mission.MissionReportFlash = false + end +end + +--- Enables a MENU option in the communications menu under F10 to control the status of the active missions. +-- This function should be called only once when starting the MISSIONSCHEDULER. +function MISSIONSCHEDULER.ReportMenu() + local ReportMenu = SUBMENU:New( 'Status' ) + local ReportMenuShow = COMMANDMENU:New( 'Show Report Missions', ReportMenu, MISSIONSCHEDULER.ReportMissionsShow, 0 ) + local ReportMenuFlash = COMMANDMENU:New('Flash Report Missions', ReportMenu, MISSIONSCHEDULER.ReportMissionsFlash, 120 ) + local ReportMenuHide = COMMANDMENU:New( 'Hide Report Missions', ReportMenu, MISSIONSCHEDULER.ReportMissionsHide, 0 ) +end + +--- Show the remaining mission time. +function MISSIONSCHEDULER:TimeShow() + self.TimeIntervalCount = self.TimeIntervalCount + 1 + if self.TimeIntervalCount >= self.TimeTriggerShow then + local TimeMsg = string.format("%00d", ( self.TimeSeconds / 60 ) - ( timer.getTime() / 60 )) .. ' minutes left until mission reload.' + MESSAGE:New( TimeMsg, self.TimeShow, "Mission time" ):ToAll() + self.TimeIntervalCount = 0 + end +end + +function MISSIONSCHEDULER:Time( TimeSeconds, TimeIntervalShow, TimeShow ) + + self.TimeIntervalCount = 0 + self.TimeSeconds = TimeSeconds + self.TimeIntervalShow = TimeIntervalShow + self.TimeShow = TimeShow +end + +--- Adds a mission scoring to the game. +function MISSIONSCHEDULER:Scoring( Scoring ) + + self.Scoring = Scoring +end + +--- The CLEANUP class keeps an area clean of crashing or colliding airplanes. It also prevents airplanes from firing within this area. +-- @module CleanUp +-- @author Flightcontrol + + + + + + + +--- The CLEANUP class. +-- @type CLEANUP +-- @extends Base#BASE +CLEANUP = { + ClassName = "CLEANUP", + ZoneNames = {}, + TimeInterval = 300, + CleanUpList = {}, +} + +--- Creates the main object which is handling the cleaning of the debris within the given Zone Names. +-- @param #CLEANUP self +-- @param #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. +-- @param #number TimeInterval The interval in seconds when the clean activity takes place. The default is 300 seconds, thus every 5 minutes. +-- @return #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 ) +function CLEANUP:New( ZoneNames, TimeInterval ) local self = BASE:Inherit( self, BASE:New() ) + self:F( { ZoneNames, TimeInterval } ) + + if type( ZoneNames ) == 'table' then + self.ZoneNames = ZoneNames + else + self.ZoneNames = { ZoneNames } + end + if TimeInterval then + self.TimeInterval = TimeInterval + end + + _EVENTDISPATCHER:OnBirth( self._OnEventBirth, self ) + + --self.CleanUpScheduler = routines.scheduleFunction( self._CleanUpScheduler, { self }, timer.getTime() + 1, TimeInterval ) + self.CleanUpScheduler = SCHEDULER:New( self, self._CleanUpScheduler, {}, 1, TimeInterval ) + + return self +end + + +--- Destroys a group from the simulator, but checks first if it is still existing! +-- @param #CLEANUP self +-- @param DCSGroup#Group GroupObject The object to be destroyed. +-- @param #string CleanUpGroupName The groupname... +function CLEANUP:_DestroyGroup( GroupObject, CleanUpGroupName ) + self:F( { GroupObject, CleanUpGroupName } ) + + if GroupObject then -- and GroupObject:isExist() then + trigger.action.deactivateGroup(GroupObject) + self:T( { "GroupObject Destroyed", GroupObject } ) + end +end + +--- Destroys a @{DCSUnit#Unit} from the simulator, but checks first if it is still existing! +-- @param #CLEANUP self +-- @param DCSUnit#Unit CleanUpUnit The object to be destroyed. +-- @param #string CleanUpUnitName The Unit name ... +function CLEANUP:_DestroyUnit( CleanUpUnit, CleanUpUnitName ) + self:F( { CleanUpUnit, CleanUpUnitName } ) + + if CleanUpUnit then + local CleanUpGroup = Unit.getGroup(CleanUpUnit) + -- TODO Client bug in 1.5.3 + if CleanUpGroup and CleanUpGroup:isExist() then + local CleanUpGroupUnits = CleanUpGroup:getUnits() + if #CleanUpGroupUnits == 1 then + local CleanUpGroupName = CleanUpGroup:getName() + --self:CreateEventCrash( timer.getTime(), CleanUpUnit ) + CleanUpGroup:destroy() + self:T( { "Destroyed Group:", CleanUpGroupName } ) + else + CleanUpUnit:destroy() + self:T( { "Destroyed Unit:", CleanUpUnitName } ) + end + self.CleanUpList[CleanUpUnitName] = nil -- Cleaning from the list + CleanUpUnit = nil + end + end +end + +-- TODO check DCSTypes#Weapon +--- Destroys a missile from the simulator, but checks first if it is still existing! +-- @param #CLEANUP self +-- @param DCSTypes#Weapon MissileObject +function CLEANUP:_DestroyMissile( MissileObject ) + self:F( { MissileObject } ) + + if MissileObject and MissileObject:isExist() then + MissileObject:destroy() + self:T( "MissileObject Destroyed") + end +end + +function CLEANUP:_OnEventBirth( Event ) + self:F( { Event } ) + + self.CleanUpList[Event.IniDCSUnitName] = {} + self.CleanUpList[Event.IniDCSUnitName].CleanUpUnit = Event.IniDCSUnit + self.CleanUpList[Event.IniDCSUnitName].CleanUpGroup = Event.IniDCSGroup + self.CleanUpList[Event.IniDCSUnitName].CleanUpGroupName = Event.IniDCSGroupName + self.CleanUpList[Event.IniDCSUnitName].CleanUpUnitName = Event.IniDCSUnitName + + _EVENTDISPATCHER:OnEngineShutDownForUnit( Event.IniDCSUnitName, self._EventAddForCleanUp, self ) + _EVENTDISPATCHER:OnEngineStartUpForUnit( Event.IniDCSUnitName, self._EventAddForCleanUp, self ) + _EVENTDISPATCHER:OnHitForUnit( Event.IniDCSUnitName, self._EventAddForCleanUp, self ) + _EVENTDISPATCHER:OnPilotDeadForUnit( Event.IniDCSUnitName, self._EventCrash, self ) + _EVENTDISPATCHER:OnDeadForUnit( Event.IniDCSUnitName, self._EventCrash, self ) + _EVENTDISPATCHER:OnCrashForUnit( Event.IniDCSUnitName, self._EventCrash, self ) + _EVENTDISPATCHER:OnShotForUnit( Event.IniDCSUnitName, self._EventShot, self ) + + --self:AddEvent( world.event.S_EVENT_ENGINE_SHUTDOWN, self._EventAddForCleanUp ) + --self:AddEvent( world.event.S_EVENT_ENGINE_STARTUP, self._EventAddForCleanUp ) +-- self:AddEvent( world.event.S_EVENT_HIT, self._EventAddForCleanUp ) -- , self._EventHitCleanUp ) +-- self:AddEvent( world.event.S_EVENT_CRASH, self._EventCrash ) -- , self._EventHitCleanUp ) +-- --self:AddEvent( world.event.S_EVENT_DEAD, self._EventCrash ) +-- self:AddEvent( world.event.S_EVENT_SHOT, self._EventShot ) +-- +-- self:EnableEvents() + + +end + +--- Detects if a crash event occurs. +-- Crashed units go into a CleanUpList for removal. +-- @param #CLEANUP self +-- @param DCSTypes#Event event +function CLEANUP:_EventCrash( Event ) + self:F( { Event } ) + + --TODO: This stuff is not working due to a DCS bug. Burning units cannot be destroyed. + -- self:T("before getGroup") + -- local _grp = Unit.getGroup(event.initiator)-- Identify the group that fired + -- self:T("after getGroup") + -- _grp:destroy() + -- self:T("after deactivateGroup") + -- event.initiator:destroy() + + self.CleanUpList[Event.IniDCSUnitName] = {} + self.CleanUpList[Event.IniDCSUnitName].CleanUpUnit = Event.IniDCSUnit + self.CleanUpList[Event.IniDCSUnitName].CleanUpGroup = Event.IniDCSGroup + self.CleanUpList[Event.IniDCSUnitName].CleanUpGroupName = Event.IniDCSGroupName + self.CleanUpList[Event.IniDCSUnitName].CleanUpUnitName = Event.IniDCSUnitName + +end + +--- Detects if a unit shoots a missile. +-- If this occurs within one of the zones, then the weapon used must be destroyed. +-- @param #CLEANUP self +-- @param DCSTypes#Event event +function CLEANUP:_EventShot( Event ) + self:F( { Event } ) + + -- Test if the missile was fired within one of the CLEANUP.ZoneNames. + local CurrentLandingZoneID = 0 + CurrentLandingZoneID = routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) + if ( CurrentLandingZoneID ) then + -- Okay, the missile was fired within the CLEANUP.ZoneNames, destroy the fired weapon. + --_SEADmissile:destroy() + --routines.scheduleFunction( CLEANUP._DestroyMissile, { self, Event.Weapon }, timer.getTime() + 0.1) + SCHEDULER:New( self, CLEANUP._DestroyMissile, { Event.Weapon }, 0.1 ) + end +end + + +--- Detects if the Unit has an S_EVENT_HIT within the given ZoneNames. If this is the case, destroy the unit. +-- @param #CLEANUP self +-- @param DCSTypes#Event event +function CLEANUP:_EventHitCleanUp( Event ) + self:F( { Event } ) + + if Event.IniDCSUnit then + if routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) ~= nil then + self:T( { "Life: ", Event.IniDCSUnitName, ' = ', Event.IniDCSUnit:getLife(), "/", Event.IniDCSUnit:getLife0() } ) + if Event.IniDCSUnit:getLife() < Event.IniDCSUnit:getLife0() then + self:T( "CleanUp: Destroy: " .. Event.IniDCSUnitName ) + --routines.scheduleFunction( CLEANUP._DestroyUnit, { self, Event.IniDCSUnit }, timer.getTime() + 0.1) + SCHEDULER:New( self, CLEANUP._DestroyUnit, { Event.IniDCSUnit }, 0.1 ) + end + end + end + + if Event.TgtDCSUnit then + if routines.IsUnitInZones( Event.TgtDCSUnit, self.ZoneNames ) ~= nil then + self:T( { "Life: ", Event.TgtDCSUnitName, ' = ', Event.TgtDCSUnit:getLife(), "/", Event.TgtDCSUnit:getLife0() } ) + if Event.TgtDCSUnit:getLife() < Event.TgtDCSUnit:getLife0() then + self:T( "CleanUp: Destroy: " .. Event.TgtDCSUnitName ) + --routines.scheduleFunction( CLEANUP._DestroyUnit, { self, Event.TgtDCSUnit }, timer.getTime() + 0.1 ) + SCHEDULER:New( self, CLEANUP._DestroyUnit, { Event.TgtDCSUnit }, 0.1 ) + end + end + end +end + +--- Add the @{DCSUnit#Unit} to the CleanUpList for CleanUp. +function CLEANUP:_AddForCleanUp( CleanUpUnit, CleanUpUnitName ) + self:F( { CleanUpUnit, CleanUpUnitName } ) + + self.CleanUpList[CleanUpUnitName] = {} + self.CleanUpList[CleanUpUnitName].CleanUpUnit = CleanUpUnit + self.CleanUpList[CleanUpUnitName].CleanUpUnitName = CleanUpUnitName + self.CleanUpList[CleanUpUnitName].CleanUpGroup = Unit.getGroup(CleanUpUnit) + self.CleanUpList[CleanUpUnitName].CleanUpGroupName = Unit.getGroup(CleanUpUnit):getName() + self.CleanUpList[CleanUpUnitName].CleanUpTime = timer.getTime() + self.CleanUpList[CleanUpUnitName].CleanUpMoved = false + + self:T( { "CleanUp: Add to CleanUpList: ", Unit.getGroup(CleanUpUnit):getName(), CleanUpUnitName } ) + +end + +--- Detects if the Unit has an S_EVENT_ENGINE_SHUTDOWN or an S_EVENT_HIT within the given ZoneNames. If this is the case, add the Group to the CLEANUP List. +-- @param #CLEANUP self +-- @param DCSTypes#Event event +function CLEANUP:_EventAddForCleanUp( Event ) + + if Event.IniDCSUnit then + if self.CleanUpList[Event.IniDCSUnitName] == nil then + if routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) ~= nil then + self:_AddForCleanUp( Event.IniDCSUnit, Event.IniDCSUnitName ) + end + end + end + + if Event.TgtDCSUnit then + if self.CleanUpList[Event.TgtDCSUnitName] == nil then + if routines.IsUnitInZones( Event.TgtDCSUnit, self.ZoneNames ) ~= nil then + self:_AddForCleanUp( Event.TgtDCSUnit, Event.TgtDCSUnitName ) + end + end + end + +end + +local CleanUpSurfaceTypeText = { + "LAND", + "SHALLOW_WATER", + "WATER", + "ROAD", + "RUNWAY" + } + +--- At the defined time interval, CleanUp the Groups within the CleanUpList. +-- @param #CLEANUP self +function CLEANUP:_CleanUpScheduler() + self:F( { "CleanUp Scheduler" } ) + + local CleanUpCount = 0 + for CleanUpUnitName, UnitData in pairs( self.CleanUpList ) do + CleanUpCount = CleanUpCount + 1 + + self:T( { CleanUpUnitName, UnitData } ) + local CleanUpUnit = Unit.getByName(UnitData.CleanUpUnitName) + local CleanUpGroupName = UnitData.CleanUpGroupName + local CleanUpUnitName = UnitData.CleanUpUnitName + if CleanUpUnit then + self:T( { "CleanUp Scheduler", "Checking:", CleanUpUnitName } ) + if _DATABASE:GetStatusGroup( CleanUpGroupName ) ~= "ReSpawn" then + local CleanUpUnitVec3 = CleanUpUnit:getPoint() + --self:T( CleanUpUnitVec3 ) + local CleanUpUnitVec2 = {} + CleanUpUnitVec2.x = CleanUpUnitVec3.x + CleanUpUnitVec2.y = CleanUpUnitVec3.z + --self:T( CleanUpUnitVec2 ) + local CleanUpSurfaceType = land.getSurfaceType(CleanUpUnitVec2) + --self:T( CleanUpSurfaceType ) + + if CleanUpUnit and CleanUpUnit:getLife() <= CleanUpUnit:getLife0() * 0.95 then + if CleanUpSurfaceType == land.SurfaceType.RUNWAY then + if CleanUpUnit:inAir() then + local CleanUpLandHeight = land.getHeight(CleanUpUnitVec2) + local CleanUpUnitHeight = CleanUpUnitVec3.y - CleanUpLandHeight + self:T( { "CleanUp Scheduler", "Height = " .. CleanUpUnitHeight } ) + if CleanUpUnitHeight < 30 then + self:T( { "CleanUp Scheduler", "Destroy " .. CleanUpUnitName .. " because below safe height and damaged." } ) + self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) + end + else + self:T( { "CleanUp Scheduler", "Destroy " .. CleanUpUnitName .. " because on runway and damaged." } ) + self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) + end + end + end + -- Clean Units which are waiting for a very long time in the CleanUpZone. + if CleanUpUnit then + local CleanUpUnitVelocity = CleanUpUnit:getVelocity() + local CleanUpUnitVelocityTotal = math.abs(CleanUpUnitVelocity.x) + math.abs(CleanUpUnitVelocity.y) + math.abs(CleanUpUnitVelocity.z) + if CleanUpUnitVelocityTotal < 1 then + if UnitData.CleanUpMoved then + if UnitData.CleanUpTime + 180 <= timer.getTime() then + self:T( { "CleanUp Scheduler", "Destroy due to not moving anymore " .. CleanUpUnitName } ) + self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) + end + end + else + UnitData.CleanUpTime = timer.getTime() + UnitData.CleanUpMoved = true + end + end + + else + -- Do nothing ... + self.CleanUpList[CleanUpUnitName] = nil -- Not anymore in the DCSRTE + end + else + self:T( "CleanUp: Group " .. CleanUpUnitName .. " cannot be found in DCS RTE, removing ..." ) + self.CleanUpList[CleanUpUnitName] = nil -- Not anymore in the DCSRTE + end + end + self:T(CleanUpCount) + + return true +end + +--- This module contains the SPAWN class. +-- +-- 1) @{Spawn#SPAWN} class, extends @{Base#BASE} +-- ============================================= +-- The @{#SPAWN} class allows to spawn dynamically new groups, based on pre-defined initialization settings, modifying the behaviour when groups are spawned. +-- For each group to be spawned, within the mission editor, a group has to be created with the "late activation flag" set. We call this group the *"Spawn Template"* of the SPAWN object. +-- A reference to this Spawn Template needs to be provided when constructing the SPAWN object, by indicating the name of the group within the mission editor in the constructor methods. +-- +-- Within the SPAWN object, there is an internal index that keeps track of which group from the internal group list was spawned. +-- When new groups get spawned by using the SPAWN functions (see below), it will be validated whether the Limits (@{#SPAWN.Limit}) of the SPAWN object are not reached. +-- When all is valid, a new group will be created by the spawning methods, and the internal index will be increased with 1. +-- +-- Regarding the name of new spawned groups, a _SpawnPrefix_ will be assigned for each new group created. +-- If you want to have the Spawn Template name to be used as the _SpawnPrefix_ name, use the @{#SPAWN.New} constructor. +-- However, when the @{#SPAWN.NewWithAlias} constructor was used, the Alias name will define the _SpawnPrefix_ name. +-- Groups will follow the following naming structure when spawned at run-time: +-- +-- 1. Spawned groups will have the name _SpawnPrefix_#ggg, where ggg is a counter from 0 to 999. +-- 2. Spawned units will have the name _SpawnPrefix_#ggg-uu, where uu is a counter from 0 to 99 for each new spawned unit belonging to the group. +-- +-- Some additional notes that need to be remembered: +-- +-- * Templates are actually groups defined within the mission editor, with the flag "Late Activation" set. As such, these groups are never used within the mission, but are used by the @{#SPAWN} module. +-- * It is important to defined BEFORE you spawn new groups, a proper initialization of the SPAWN instance is done with the options you want to use. +-- * When designing a mission, NEVER name groups using a "#" within the name of the group Spawn Template(s), or the SPAWN module logic won't work anymore. +-- +-- 1.1) SPAWN construction methods +-- ------------------------------- +-- Create a new SPAWN object with the @{#SPAWN.New} or the @{#SPAWN.NewWithAlias} methods: +-- +-- * @{#SPAWN.New}: Creates a new SPAWN object taking the name of the group that functions as the Template. +-- +-- It is important to understand how the SPAWN class works internally. The SPAWN object created will contain internally a list of groups that will be spawned and that are already spawned. +-- The initialization functions will modify this list of groups so that when a group gets spawned, ALL information is already prepared when spawning. This is done for performance reasons. +-- So in principle, the group list will contain all parameters and configurations after initialization, and when groups get actually spawned, this spawning can be done quickly and efficient. +-- +-- 1.2) SPAWN initialization methods +-- --------------------------------- +-- A spawn object will behave differently based on the usage of initialization methods: +-- +-- * @{#SPAWN.Limit}: Limits the amount of groups that can be alive at the same time and that can be dynamically spawned. +-- * @{#SPAWN.RandomizeRoute}: Randomize the routes of spawned groups. +-- * @{#SPAWN.RandomizeTemplate}: Randomize the group templates so that when a new group is spawned, a random group template is selected from one of the templates defined. +-- * @{#SPAWN.Uncontrolled}: Spawn plane groups uncontrolled. +-- * @{#SPAWN.Array}: Make groups visible before they are actually activated, and order these groups like a batallion in an array. +-- * @{#SPAWN.InitRepeat}: Re-spawn groups when they land at the home base. Similar functions are @{#SPAWN.InitRepeatOnLanding} and @{#SPAWN.InitRepeatOnEngineShutDown}. +-- +-- 1.3) SPAWN spawning methods +-- --------------------------- +-- Groups can be spawned at different times and methods: +-- +-- * @{#SPAWN.Spawn}: Spawn one new group based on the last spawned index. +-- * @{#SPAWN.ReSpawn}: Re-spawn a group based on a given index. +-- * @{#SPAWN.SpawnScheduled}: Spawn groups at scheduled but randomized intervals. You can use @{#SPAWN.SpawnScheduleStart} and @{#SPAWN.SpawnScheduleStop} to start and stop the schedule respectively. +-- * @{#SPAWN.SpawnFromUnit}: Spawn a new group taking the position of a @{UNIT}. +-- * @{#SPAWN.SpawnInZone}: Spawn a new group in a @{ZONE}. +-- +-- Note that @{#SPAWN.Spawn} and @{#SPAWN.ReSpawn} return a @{GROUP#GROUP.New} object, that contains a reference to the DCSGroup object. +-- You can use the @{GROUP} object to do further actions with the DCSGroup. +-- +-- 1.4) SPAWN object cleaning +-- -------------------------- +-- Sometimes, it will occur during a mission run-time, that ground or especially air objects get damaged, and will while being damged stop their activities, while remaining alive. +-- In such cases, the SPAWN object will just sit there and wait until that group gets destroyed, but most of the time it won't, +-- and it may occur that no new groups are or can be spawned as limits are reached. +-- To prevent this, a @{#SPAWN.CleanUp} initialization method has been defined that will silently monitor the status of each spawned group. +-- Once a group has a velocity = 0, and has been waiting for a defined interval, that group will be cleaned or removed from run-time. +-- There is a catch however :-) If a damaged group has returned to an airbase within the coalition, that group will not be considered as "lost"... +-- In such a case, when the inactive group is cleaned, a new group will Re-spawned automatically. +-- This models AI that has succesfully returned to their airbase, to restart their combat activities. +-- Check the @{#SPAWN.CleanUp} for further info. +-- +-- +-- @module Spawn +-- @author FlightControl + +--- SPAWN Class +-- @type SPAWN +-- @extends Base#BASE +-- @field ClassName +-- @field #string SpawnTemplatePrefix +-- @field #string SpawnAliasPrefix +SPAWN = { + ClassName = "SPAWN", + SpawnTemplatePrefix = nil, + SpawnAliasPrefix = nil, +} + + + +--- Creates the main object to spawn a GROUP defined in the DCS ME. +-- @param #SPAWN self +-- @param #string SpawnTemplatePrefix is the name of the Group in the ME that defines the Template. Each new group will have the name starting with SpawnTemplatePrefix. +-- @return #SPAWN +-- @usage +-- -- NATO helicopters engaging in the battle field. +-- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ) +-- @usage local Plane = SPAWN:New( "Plane" ) -- Creates a new local variable that can initiate new planes with the name "Plane#ddd" using the template "Plane" as defined within the ME. +function SPAWN:New( SpawnTemplatePrefix ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( { SpawnTemplatePrefix } ) + + local TemplateGroup = Group.getByName( SpawnTemplatePrefix ) + if TemplateGroup then + self.SpawnTemplatePrefix = SpawnTemplatePrefix + self.SpawnIndex = 0 + self.SpawnCount = 0 -- The internal counter of the amount of spawning the has happened since SpawnStart. + self.AliveUnits = 0 -- Contains the counter how many units are currently alive + self.SpawnIsScheduled = false -- Reflects if the spawning for this SpawnTemplatePrefix is going to be scheduled or not. + self.SpawnTemplate = self._GetTemplate( self, SpawnTemplatePrefix ) -- Contains the template structure for a Group Spawn from the Mission Editor. Note that this group must have lateActivation always on!!! + self.Repeat = false -- Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning. + self.UnControlled = false -- When working in UnControlled mode, all planes are Spawned in UnControlled mode before the scheduler starts. + self.SpawnMaxUnitsAlive = 0 -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. + self.SpawnMaxGroups = 0 -- The maximum amount of groups that can be spawned. + self.SpawnRandomize = false -- Sets the randomization flag of new Spawned units to false. + self.SpawnVisible = false -- Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned. + + self.SpawnGroups = {} -- Array containing the descriptions of each Group to be Spawned. + else + error( "SPAWN:New: There is no group declared in the mission editor with SpawnTemplatePrefix = '" .. SpawnTemplatePrefix .. "'" ) + end + + return self +end + +--- Creates a new SPAWN instance to create new groups based on the defined template and using a new alias for each new group. +-- @param #SPAWN self +-- @param #string SpawnTemplatePrefix is the name of the Group in the ME that defines the Template. +-- @param #string SpawnAliasPrefix is the name that will be given to the Group at runtime. +-- @return #SPAWN +-- @usage +-- -- NATO helicopters engaging in the battle field. +-- Spawn_BE_KA50 = SPAWN:NewWithAlias( 'BE KA-50@RAMP-Ground Defense', 'Helicopter Attacking a City' ) +-- @usage local PlaneWithAlias = SPAWN:NewWithAlias( "Plane", "Bomber" ) -- Creates a new local variable that can instantiate new planes with the name "Bomber#ddd" using the template "Plane" as defined within the ME. +function SPAWN:NewWithAlias( SpawnTemplatePrefix, SpawnAliasPrefix ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( { SpawnTemplatePrefix, SpawnAliasPrefix } ) + + local TemplateGroup = Group.getByName( SpawnTemplatePrefix ) + if TemplateGroup then + self.SpawnTemplatePrefix = SpawnTemplatePrefix + self.SpawnAliasPrefix = SpawnAliasPrefix + self.SpawnIndex = 0 + self.SpawnCount = 0 -- The internal counter of the amount of spawning the has happened since SpawnStart. + self.AliveUnits = 0 -- Contains the counter how many units are currently alive + self.SpawnIsScheduled = false -- Reflects if the spawning for this SpawnTemplatePrefix is going to be scheduled or not. + self.SpawnTemplate = self._GetTemplate( self, SpawnTemplatePrefix ) -- Contains the template structure for a Group Spawn from the Mission Editor. Note that this group must have lateActivation always on!!! + self.Repeat = false -- Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning. + self.UnControlled = false -- When working in UnControlled mode, all planes are Spawned in UnControlled mode before the scheduler starts. + self.SpawnMaxUnitsAlive = 0 -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. + self.SpawnMaxGroups = 0 -- The maximum amount of groups that can be spawned. + self.SpawnRandomize = false -- Sets the randomization flag of new Spawned units to false. + self.SpawnVisible = false -- Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned. + + self.SpawnGroups = {} -- Array containing the descriptions of each Group to be Spawned. + else + error( "SPAWN:New: There is no group declared in the mission editor with SpawnTemplatePrefix = '" .. SpawnTemplatePrefix .. "'" ) + end + + return self +end + + +--- Limits the Maximum amount of Units that can be alive at the same time, and the maximum amount of groups that can be spawned. +-- Note that this method is exceptionally important to balance the performance of the mission. Depending on the machine etc, a mission can only process a maximum amount of units. +-- If the time interval must be short, but there should not be more Units or Groups alive than a maximum amount of units, then this function should be used... +-- When a @{#SPAWN.New} is executed and the limit of the amount of units alive is reached, then no new spawn will happen of the group, until some of these units of the spawn object will be destroyed. +-- @param #SPAWN self +-- @param #number SpawnMaxUnitsAlive The maximum amount of units that can be alive at runtime. +-- @param #number SpawnMaxGroups The maximum amount of groups that can be spawned. When the limit is reached, then no more actual spawns will happen of the group. +-- This parameter is useful to define a maximum amount of airplanes, ground troops, helicopters, ships etc within a supply area. +-- This parameter accepts the value 0, which defines that there are no maximum group limits, but there are limits on the maximum of units that can be alive at the same time. +-- @return #SPAWN self +-- @usage +-- -- NATO helicopters engaging in the battle field. +-- -- This helicopter group consists of one Unit. So, this group will SPAWN maximum 2 groups simultaneously within the DCSRTE. +-- -- There will be maximum 24 groups spawned during the whole mission lifetime. +-- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Limit( 2, 24 ) +function SPAWN:Limit( SpawnMaxUnitsAlive, SpawnMaxGroups ) + self:F( { self.SpawnTemplatePrefix, SpawnMaxUnitsAlive, SpawnMaxGroups } ) + + self.SpawnMaxUnitsAlive = SpawnMaxUnitsAlive -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. + self.SpawnMaxGroups = SpawnMaxGroups -- The maximum amount of groups that can be spawned. + + for SpawnGroupID = 1, self.SpawnMaxGroups do + self:_InitializeSpawnGroups( SpawnGroupID ) + end + + return self +end + + +--- Randomizes the defined route of the SpawnTemplatePrefix group in the ME. This is very useful to define extra variation of the behaviour of groups. +-- @param #SPAWN self +-- @param #number SpawnStartPoint is the waypoint where the randomization begins. +-- Note that the StartPoint = 0 equaling the point where the group is spawned. +-- @param #number SpawnEndPoint is the waypoint where the randomization ends counting backwards. +-- This parameter is useful to avoid randomization to end at a waypoint earlier than the last waypoint on the route. +-- @param #number SpawnRadius is the radius in meters in which the randomization of the new waypoints, with the original waypoint of the original template located in the middle ... +-- @return #SPAWN +-- @usage +-- -- NATO helicopters engaging in the battle field. +-- -- The KA-50 has waypoints Start point ( =0 or SP ), 1, 2, 3, 4, End point (= 5 or DP). +-- -- Waypoints 2 and 3 will only be randomized. The others will remain on their original position with each new spawn of the helicopter. +-- -- The randomization of waypoint 2 and 3 will take place within a radius of 2000 meters. +-- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):RandomizeRoute( 2, 2, 2000 ) +function SPAWN:RandomizeRoute( SpawnStartPoint, SpawnEndPoint, SpawnRadius ) + self:F( { self.SpawnTemplatePrefix, SpawnStartPoint, SpawnEndPoint, SpawnRadius } ) + + self.SpawnRandomizeRoute = true + self.SpawnRandomizeRouteStartPoint = SpawnStartPoint + self.SpawnRandomizeRouteEndPoint = SpawnEndPoint + self.SpawnRandomizeRouteRadius = SpawnRadius + + for GroupID = 1, self.SpawnMaxGroups do + self:_RandomizeRoute( GroupID ) + end + + return self +end + + +--- This function is rather complicated to understand. But I'll try to explain. +-- This function becomes useful when you need to spawn groups with random templates of groups defined within the mission editor, +-- but they will all follow the same Template route and have the same prefix name. +-- In other words, this method randomizes between a defined set of groups the template to be used for each new spawn of a group. +-- @param #SPAWN self +-- @param #string SpawnTemplatePrefixTable A table with the names of the groups defined within the mission editor, from which one will be choosen when a new group will be spawned. +-- @return #SPAWN +-- @usage +-- -- NATO Tank Platoons invading Gori. +-- -- Choose between 13 different 'US Tank Platoon' configurations for each new SPAWN the Group to be spawned for the +-- -- 'US Tank Platoon Left', 'US Tank Platoon Middle' and 'US Tank Platoon Right' SpawnTemplatePrefixes. +-- -- Each new SPAWN will randomize the route, with a defined time interval of 200 seconds with 40% time variation (randomization) and +-- -- with a limit set of maximum 12 Units alive simulteneously and 150 Groups to be spawned during the whole mission. +-- Spawn_US_Platoon = { 'US Tank Platoon 1', 'US Tank Platoon 2', 'US Tank Platoon 3', 'US Tank Platoon 4', 'US Tank Platoon 5', +-- 'US Tank Platoon 6', 'US Tank Platoon 7', 'US Tank Platoon 8', 'US Tank Platoon 9', 'US Tank Platoon 10', +-- 'US Tank Platoon 11', 'US Tank Platoon 12', 'US Tank Platoon 13' } +-- Spawn_US_Platoon_Left = SPAWN:New( 'US Tank Platoon Left' ):Limit( 12, 150 ):Schedule( 200, 0.4 ):RandomizeTemplate( Spawn_US_Platoon ):RandomizeRoute( 3, 3, 2000 ) +-- Spawn_US_Platoon_Middle = SPAWN:New( 'US Tank Platoon Middle' ):Limit( 12, 150 ):Schedule( 200, 0.4 ):RandomizeTemplate( Spawn_US_Platoon ):RandomizeRoute( 3, 3, 2000 ) +-- Spawn_US_Platoon_Right = SPAWN:New( 'US Tank Platoon Right' ):Limit( 12, 150 ):Schedule( 200, 0.4 ):RandomizeTemplate( Spawn_US_Platoon ):RandomizeRoute( 3, 3, 2000 ) +function SPAWN:RandomizeTemplate( SpawnTemplatePrefixTable ) + self:F( { self.SpawnTemplatePrefix, SpawnTemplatePrefixTable } ) + + self.SpawnTemplatePrefixTable = SpawnTemplatePrefixTable + self.SpawnRandomizeTemplate = true + + for SpawnGroupID = 1, self.SpawnMaxGroups do + self:_RandomizeTemplate( SpawnGroupID ) + end + + return self +end + + + + + +--- For planes and helicopters, when these groups go home and land on their home airbases and farps, they normally would taxi to the parking spot, shut-down their engines and wait forever until the Group is removed by the runtime environment. +-- This function is used to re-spawn automatically (so no extra call is needed anymore) the same group after it has landed. +-- This will enable a spawned group to be re-spawned after it lands, until it is destroyed... +-- Note: When the group is respawned, it will re-spawn from the original airbase where it took off. +-- So ensure that the routes for groups that respawn, always return to the original airbase, or players may get confused ... +-- @param #SPAWN self +-- @return #SPAWN self +-- @usage +-- -- RU Su-34 - AI Ship Attack +-- -- Re-SPAWN the Group(s) after each landing and Engine Shut-Down automatically. +-- SpawnRU_SU34 = SPAWN:New( 'TF1 RU Su-34 Krymsk@AI - Attack Ships' ):Schedule( 2, 3, 1800, 0.4 ):SpawnUncontrolled():RandomizeRoute( 1, 1, 3000 ):RepeatOnEngineShutDown() +function SPAWN:InitRepeat() + self:F( { self.SpawnTemplatePrefix, self.SpawnIndex } ) + + self.Repeat = true + self.RepeatOnEngineShutDown = false + self.RepeatOnLanding = true + + return self +end + +--- Respawn group after landing. +-- @param #SPAWN self +-- @return #SPAWN self +function SPAWN:InitRepeatOnLanding() + self:F( { self.SpawnTemplatePrefix } ) + + self:InitRepeat() + self.RepeatOnEngineShutDown = false + self.RepeatOnLanding = true + + return self +end + + +--- Respawn after landing when its engines have shut down. +-- @param #SPAWN self +-- @return #SPAWN self +function SPAWN:InitRepeatOnEngineShutDown() + self:F( { self.SpawnTemplatePrefix } ) + + self:InitRepeat() + self.RepeatOnEngineShutDown = true + self.RepeatOnLanding = false + + return self +end + + +--- CleanUp groups when they are still alive, but inactive. +-- When groups are still alive and have become inactive due to damage and are unable to contribute anything, then this group will be removed at defined intervals in seconds. +-- @param #SPAWN self +-- @param #string SpawnCleanUpInterval The interval to check for inactive groups within seconds. +-- @return #SPAWN self +-- @usage Spawn_Helicopter:CleanUp( 20 ) -- CleanUp the spawning of the helicopters every 20 seconds when they become inactive. +function SPAWN:CleanUp( SpawnCleanUpInterval ) + self:F( { self.SpawnTemplatePrefix, SpawnCleanUpInterval } ) + + self.SpawnCleanUpInterval = SpawnCleanUpInterval + self.SpawnCleanUpTimeStamps = {} + --self.CleanUpFunction = routines.scheduleFunction( self._SpawnCleanUpScheduler, { self }, timer.getTime() + 1, SpawnCleanUpInterval ) + self.CleanUpScheduler = SCHEDULER:New( self, self._SpawnCleanUpScheduler, {}, 1, SpawnCleanUpInterval, 0.2 ) + return self +end + + + +--- Makes the groups visible before start (like a batallion). +-- The method will take the position of the group as the first position in the array. +-- @param #SPAWN self +-- @param #number SpawnAngle The angle in degrees how the groups and each unit of the group will be positioned. +-- @param #number SpawnWidth The amount of Groups that will be positioned on the X axis. +-- @param #number SpawnDeltaX The space between each Group on the X-axis. +-- @param #number SpawnDeltaY The space between each Group on the Y-axis. +-- @return #SPAWN self +-- @usage +-- -- Define an array of Groups. +-- Spawn_BE_Ground = SPAWN:New( 'BE Ground' ):Limit( 2, 24 ):Visible( 90, "Diamond", 10, 100, 50 ) +function SPAWN:Array( SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY ) + self:F( { self.SpawnTemplatePrefix, SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY } ) + + self.SpawnVisible = true -- When the first Spawn executes, all the Groups need to be made visible before start. + + local SpawnX = 0 + local SpawnY = 0 + local SpawnXIndex = 0 + local SpawnYIndex = 0 + + for SpawnGroupID = 1, self.SpawnMaxGroups do + self:T( { SpawnX, SpawnY, SpawnXIndex, SpawnYIndex } ) + + self.SpawnGroups[SpawnGroupID].Visible = true + self.SpawnGroups[SpawnGroupID].Spawned = false + + SpawnXIndex = SpawnXIndex + 1 + if SpawnWidth and SpawnWidth ~= 0 then + if SpawnXIndex >= SpawnWidth then + SpawnXIndex = 0 + SpawnYIndex = SpawnYIndex + 1 + end + end + + local SpawnRootX = self.SpawnGroups[SpawnGroupID].SpawnTemplate.x + local SpawnRootY = self.SpawnGroups[SpawnGroupID].SpawnTemplate.y + + self:_TranslateRotate( SpawnGroupID, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle ) + + self.SpawnGroups[SpawnGroupID].SpawnTemplate.lateActivation = true + self.SpawnGroups[SpawnGroupID].SpawnTemplate.visible = true + + self.SpawnGroups[SpawnGroupID].Visible = true + + _EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnBirth, self ) + _EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnDeadOrCrash, self ) + _EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnDeadOrCrash, self ) + + if self.Repeat then + _EVENTDISPATCHER:OnTakeOffForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnTakeOff, self ) + _EVENTDISPATCHER:OnLandForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnLand, self ) + end + if self.RepeatOnEngineShutDown then + _EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnEngineShutDown, self ) + end + + self.SpawnGroups[SpawnGroupID].Group = _DATABASE:Spawn( self.SpawnGroups[SpawnGroupID].SpawnTemplate ) + + SpawnX = SpawnXIndex * SpawnDeltaX + SpawnY = SpawnYIndex * SpawnDeltaY + end + + return self +end + + + +--- Will spawn a group based on the internal index. +-- Note: Uses @{DATABASE} module defined in MOOSE. +-- @param #SPAWN self +-- @return Group#GROUP The group that was spawned. You can use this group for further actions. +function SPAWN:Spawn() + self:F( { self.SpawnTemplatePrefix, self.SpawnIndex } ) + + return self:SpawnWithIndex( self.SpawnIndex + 1 ) +end + +--- Will re-spawn a group based on a given index. +-- Note: Uses @{DATABASE} module defined in MOOSE. +-- @param #SPAWN self +-- @param #string SpawnIndex The index of the group to be spawned. +-- @return Group#GROUP The group that was spawned. You can use this group for further actions. +function SPAWN:ReSpawn( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex } ) + + if not SpawnIndex then + SpawnIndex = 1 + end + +-- TODO: This logic makes DCS crash and i don't know why (yet). + local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) + if SpawnGroup then + local SpawnDCSGroup = SpawnGroup:GetDCSGroup() + if SpawnDCSGroup then + SpawnGroup:Destroy() + end + end + + return self:SpawnWithIndex( SpawnIndex ) +end + +--- Will spawn a group with a specified index number. +-- Uses @{DATABASE} global object defined in MOOSE. +-- @param #SPAWN self +-- @return Group#GROUP The group that was spawned. You can use this group for further actions. +function SPAWN:SpawnWithIndex( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups } ) + + if self:_GetSpawnIndex( SpawnIndex ) then + + if self.SpawnGroups[self.SpawnIndex].Visible then + self.SpawnGroups[self.SpawnIndex].Group:Activate() + else + self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate ) + _EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnBirth, self ) + _EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self ) + _EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self ) + + if self.Repeat then + _EVENTDISPATCHER:OnTakeOffForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnTakeOff, self ) + _EVENTDISPATCHER:OnLandForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnLand, self ) + end + if self.RepeatOnEngineShutDown then + _EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnEngineShutDown, self ) + end + + self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate ) + + self.SpawnGroups[self.SpawnIndex].Group = _DATABASE:Spawn( self.SpawnGroups[self.SpawnIndex].SpawnTemplate ) + + -- If there is a SpawnFunction hook defined, call it. + if self.SpawnFunctionHook then + self.SpawnFunctionHook( self.SpawnGroups[self.SpawnIndex].Group, unpack( self.SpawnFunctionArguments ) ) + end + -- TODO: Need to fix this by putting an "R" in the name of the group when the group repeats. + --if self.Repeat then + -- _DATABASE:SetStatusGroup( SpawnTemplate.name, "ReSpawn" ) + --end + end + + self.SpawnGroups[self.SpawnIndex].Spawned = true + return self.SpawnGroups[self.SpawnIndex].Group + else + --self:E( { self.SpawnTemplatePrefix, "No more Groups to Spawn:", SpawnIndex, self.SpawnMaxGroups } ) + end + + return nil +end + +--- Spawns new groups at varying time intervals. +-- This is useful if you want to have continuity within your missions of certain (AI) groups to be present (alive) within your missions. +-- @param #SPAWN self +-- @param #number SpawnTime The time interval defined in seconds between each new spawn of new groups. +-- @param #number SpawnTimeVariation The variation to be applied on the defined time interval between each new spawn. +-- The variation is a number between 0 and 1, representing the %-tage of variation to be applied on the time interval. +-- @return #SPAWN self +-- @usage +-- -- NATO helicopters engaging in the battle field. +-- -- The time interval is set to SPAWN new helicopters between each 600 seconds, with a time variation of 50%. +-- -- The time variation in this case will be between 450 seconds and 750 seconds. +-- -- This is calculated as follows: +-- -- Low limit: 600 * ( 1 - 0.5 / 2 ) = 450 +-- -- High limit: 600 * ( 1 + 0.5 / 2 ) = 750 +-- -- Between these two values, a random amount of seconds will be choosen for each new spawn of the helicopters. +-- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 ) +function SPAWN:SpawnScheduled( SpawnTime, SpawnTimeVariation ) + self:F( { SpawnTime, SpawnTimeVariation } ) + + if SpawnTime ~= nil and SpawnTimeVariation ~= nil then + self.SpawnScheduler = SCHEDULER:New( self, self._Scheduler, {}, 1, SpawnTime, SpawnTimeVariation ) + end + + return self +end + +--- Will re-start the spawning scheduler. +-- Note: This function is only required to be called when the schedule was stopped. +function SPAWN:SpawnScheduleStart() + self:F( { self.SpawnTemplatePrefix } ) + + self.SpawnScheduler:Start() +end + +--- Will stop the scheduled spawning scheduler. +function SPAWN:SpawnScheduleStop() + self:F( { self.SpawnTemplatePrefix } ) + + self.SpawnScheduler:Stop() +end + + +--- Allows to place a CallFunction hook when a new group spawns. +-- The provided function will be called when a new group is spawned, including its given parameters. +-- The first parameter of the SpawnFunction is the @{Group#GROUP} that was spawned. +-- @param #SPAWN self +-- @param #function SpawnFunctionHook The function to be called when a group spawns. +-- @param SpawnFunctionArguments A random amount of arguments to be provided to the function when the group spawns. +-- @return #SPAWN +function SPAWN:SpawnFunction( SpawnFunctionHook, ... ) + self:F( SpawnFunction ) + + self.SpawnFunctionHook = SpawnFunctionHook + self.SpawnFunctionArguments = {} + if arg then + self.SpawnFunctionArguments = arg + end + + return self +end + + + + +--- Will spawn a group from a hosting unit. This function is mostly advisable to be used if you want to simulate spawning from air units, like helicopters, which are dropping infantry into a defined Landing Zone. +-- Note that each point in the route assigned to the spawning group is reset to the point of the spawn. +-- You can use the returned group to further define the route to be followed. +-- @param #SPAWN self +-- @param Unit#UNIT HostUnit The air or ground unit dropping or unloading the group. +-- @param #number OuterRadius The outer radius in meters where the new group will be spawned. +-- @param #number InnerRadius The inner radius in meters where the new group will NOT be spawned. +-- @param #number SpawnIndex (Optional) The index which group to spawn within the given zone. +-- @return Group#GROUP that was spawned. +-- @return #nil Nothing was spawned. +function SPAWN:SpawnFromUnit( HostUnit, OuterRadius, InnerRadius, SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, HostUnit, OuterRadius, InnerRadius, SpawnIndex } ) + + if HostUnit and HostUnit:IsAlive() then -- and HostUnit:getUnit(1):inAir() == false then + + if SpawnIndex then + else + SpawnIndex = self.SpawnIndex + 1 + end + + if self:_GetSpawnIndex( SpawnIndex ) then + + local SpawnTemplate = self.SpawnGroups[self.SpawnIndex].SpawnTemplate + + if SpawnTemplate then + + local UnitPoint = HostUnit:GetPointVec2() + + self:T( { "Current point of ", self.SpawnTemplatePrefix, UnitPoint } ) + + --for PointID, Point in pairs( SpawnTemplate.route.points ) do + --Point.x = UnitPoint.x + --Point.y = UnitPoint.y + --Point.alt = nil + --Point.alt_type = nil + --end + + SpawnTemplate.route.points[1].x = UnitPoint.x + SpawnTemplate.route.points[1].y = UnitPoint.y + + if not InnerRadius then + InnerRadius = 10 + end + + if not OuterRadius then + OuterRadius = 50 + end + + -- Apply SpawnFormation + for UnitID = 1, #SpawnTemplate.units do + if InnerRadius == 0 then + SpawnTemplate.units[UnitID].x = UnitPoint.x + SpawnTemplate.units[UnitID].y = UnitPoint.y + else + local CirclePos = routines.getRandPointInCircle( UnitPoint, OuterRadius, InnerRadius ) + SpawnTemplate.units[UnitID].x = CirclePos.x + SpawnTemplate.units[UnitID].y = CirclePos.y + end + self:T( 'SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) + end + + local SpawnPos = routines.getRandPointInCircle( UnitPoint, OuterRadius, InnerRadius ) + local Point = {} + Point.type = "Turning Point" + Point.x = SpawnPos.x + Point.y = SpawnPos.y + Point.action = "Cone" + Point.speed = 5 + + table.insert( SpawnTemplate.route.points, 2, Point ) + + return self:SpawnWithIndex( self.SpawnIndex ) + end + end + end + + return nil +end + +--- Will spawn a Group within a given @{Zone#ZONE}. +-- Once the group is spawned within the zone, it will continue on its route. +-- The first waypoint (where the group is spawned) is replaced with the zone coordinates. +-- @param #SPAWN self +-- @param Zone#ZONE Zone The zone where the group is to be spawned. +-- @param #number ZoneRandomize (Optional) Set to true if you want to randomize the starting point in the zone. +-- @param #number SpawnIndex (Optional) The index which group to spawn within the given zone. +-- @return Group#GROUP that was spawned. +-- @return #nil when nothing was spawned. +function SPAWN:SpawnInZone( Zone, ZoneRandomize, SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, Zone, ZoneRandomize, SpawnIndex } ) + + if Zone then + + if SpawnIndex then + else + SpawnIndex = self.SpawnIndex + 1 + end + + if self:_GetSpawnIndex( SpawnIndex ) then + + local SpawnTemplate = self.SpawnGroups[self.SpawnIndex].SpawnTemplate + + if SpawnTemplate then + + local ZonePoint + + if ZoneRandomize == true then + ZonePoint = Zone:GetRandomVec2() + else + ZonePoint = Zone:GetPointVec2() + end + + SpawnTemplate.route.points[1].x = ZonePoint.x + SpawnTemplate.route.points[1].y = ZonePoint.y + + -- Apply SpawnFormation + for UnitID = 1, #SpawnTemplate.units do + local ZonePointUnit = Zone:GetRandomVec2() + SpawnTemplate.units[UnitID].x = ZonePointUnit.x + SpawnTemplate.units[UnitID].y = ZonePointUnit.y + self:T( 'SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) + end + + return self:SpawnWithIndex( self.SpawnIndex ) + end + end + end + + return nil +end + + + + +--- Will spawn a plane group in uncontrolled mode... +-- This will be similar to the uncontrolled flag setting in the ME. +-- @return #SPAWN self +function SPAWN:UnControlled() + self:F( { self.SpawnTemplatePrefix } ) + + self.SpawnUnControlled = true + + for SpawnGroupID = 1, self.SpawnMaxGroups do + self.SpawnGroups[SpawnGroupID].UnControlled = true + end + + return self +end + + + +--- Will return the SpawnGroupName either with with a specific count number or without any count. +-- @param #SPAWN self +-- @param #number SpawnIndex Is the number of the Group that is to be spawned. +-- @return #string SpawnGroupName +function SPAWN:SpawnGroupName( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex } ) + + local SpawnPrefix = self.SpawnTemplatePrefix + if self.SpawnAliasPrefix then + SpawnPrefix = self.SpawnAliasPrefix + end + + if SpawnIndex then + local SpawnName = string.format( '%s#%03d', SpawnPrefix, SpawnIndex ) + self:T( SpawnName ) + return SpawnName + else + self:T( SpawnPrefix ) + return SpawnPrefix + end + +end + +--- Find the first alive group. +-- @param #SPAWN self +-- @param #number SpawnCursor A number holding the index from where to find the first group from. +-- @return Group#GROUP, #number The group found, the new index where the group was found. +-- @return #nil, #nil When no group is found, #nil is returned. +function SPAWN:GetFirstAliveGroup( SpawnCursor ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnCursor } ) + + for SpawnIndex = 1, self.SpawnCount do + local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) + if SpawnGroup and SpawnGroup:IsAlive() then + SpawnCursor = SpawnIndex + return SpawnGroup, SpawnCursor + end + end + + return nil, nil +end + + +--- Find the next alive group. +-- @param #SPAWN self +-- @param #number SpawnCursor A number holding the last found previous index. +-- @return Group#GROUP, #number The group found, the new index where the group was found. +-- @return #nil, #nil When no group is found, #nil is returned. +function SPAWN:GetNextAliveGroup( SpawnCursor ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnCursor } ) + + SpawnCursor = SpawnCursor + 1 + for SpawnIndex = SpawnCursor, self.SpawnCount do + local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) + if SpawnGroup and SpawnGroup:IsAlive() then + SpawnCursor = SpawnIndex + return SpawnGroup, SpawnCursor + end + end + + return nil, nil +end + +--- Find the last alive group during runtime. +function SPAWN:GetLastAliveGroup() + self:F( { self.SpawnTemplatePrefixself.SpawnAliasPrefix } ) + + self.SpawnIndex = self:_GetLastIndex() + for SpawnIndex = self.SpawnIndex, 1, -1 do + local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) + if SpawnGroup and SpawnGroup:IsAlive() then + self.SpawnIndex = SpawnIndex + return SpawnGroup + end + end + + self.SpawnIndex = nil + return nil +end + + + +--- Get the group from an index. +-- Returns the group from the SpawnGroups list. +-- If no index is given, it will return the first group in the list. +-- @param #SPAWN self +-- @param #number SpawnIndex The index of the group to return. +-- @return Group#GROUP self +function SPAWN:GetGroupFromIndex( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } ) + + if not SpawnIndex then + SpawnIndex = 1 + end + + if self.SpawnGroups and self.SpawnGroups[SpawnIndex] then + local SpawnGroup = self.SpawnGroups[SpawnIndex].Group + return SpawnGroup + else + return nil + end +end + +--- Get the group index from a DCSUnit. +-- The method will search for a #-mark, and will return the index behind the #-mark of the DCSUnit. +-- It will return nil of no prefix was found. +-- @param #SPAWN self +-- @param DCSUnit The DCS unit to be searched. +-- @return #string The prefix +-- @return #nil Nothing found +function SPAWN:_GetGroupIndexFromDCSUnit( DCSUnit ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } ) + + if DCSUnit and DCSUnit:getName() then + local IndexString = string.match( DCSUnit:getName(), "#.*-" ):sub( 2, -2 ) + self:T( IndexString ) + + if IndexString then + local Index = tonumber( IndexString ) + self:T( { "Index:", IndexString, Index } ) + return Index + end + end + + return nil +end + +--- Return the prefix of a DCSUnit. +-- The method will search for a #-mark, and will return the text before the #-mark. +-- It will return nil of no prefix was found. +-- @param #SPAWN self +-- @param DCSUnit The DCS unit to be searched. +-- @return #string The prefix +-- @return #nil Nothing found +function SPAWN:_GetPrefixFromDCSUnit( DCSUnit ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } ) + + if DCSUnit and DCSUnit:getName() then + local SpawnPrefix = string.match( DCSUnit:getName(), ".*#" ) + if SpawnPrefix then + SpawnPrefix = SpawnPrefix:sub( 1, -2 ) + end + self:T( SpawnPrefix ) + return SpawnPrefix + end + + return nil +end + +--- Return the group within the SpawnGroups collection with input a DCSUnit. +function SPAWN:_GetGroupFromDCSUnit( DCSUnit ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } ) + + if DCSUnit then + local SpawnPrefix = self:_GetPrefixFromDCSUnit( DCSUnit ) + + if self.SpawnTemplatePrefix == SpawnPrefix or ( self.SpawnAliasPrefix and self.SpawnAliasPrefix == SpawnPrefix ) then + local SpawnGroupIndex = self:_GetGroupIndexFromDCSUnit( DCSUnit ) + local SpawnGroup = self.SpawnGroups[SpawnGroupIndex].Group + self:T( SpawnGroup ) + return SpawnGroup + end + end + + return nil +end + + +--- Get the index from a given group. +-- The function will search the name of the group for a #, and will return the number behind the #-mark. +function SPAWN:GetSpawnIndexFromGroup( SpawnGroup ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnGroup } ) + + local IndexString = string.match( SpawnGroup:GetName(), "#.*$" ):sub( 2 ) + local Index = tonumber( IndexString ) + + self:T( IndexString, Index ) + return Index + +end + +--- Return the last maximum index that can be used. +function SPAWN:_GetLastIndex() + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix } ) + + return self.SpawnMaxGroups +end + +--- Initalize the SpawnGroups collection. +function SPAWN:_InitializeSpawnGroups( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } ) + + if not self.SpawnGroups[SpawnIndex] then + self.SpawnGroups[SpawnIndex] = {} + self.SpawnGroups[SpawnIndex].Visible = false + self.SpawnGroups[SpawnIndex].Spawned = false + self.SpawnGroups[SpawnIndex].UnControlled = false + self.SpawnGroups[SpawnIndex].SpawnTime = 0 + + self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix = self.SpawnTemplatePrefix + self.SpawnGroups[SpawnIndex].SpawnTemplate = self:_Prepare( self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix, SpawnIndex ) + end + + self:_RandomizeTemplate( SpawnIndex ) + self:_RandomizeRoute( SpawnIndex ) + --self:_TranslateRotate( SpawnIndex ) + + return self.SpawnGroups[SpawnIndex] +end + + + +--- Gets the CategoryID of the Group with the given SpawnPrefix +function SPAWN:_GetGroupCategoryID( SpawnPrefix ) + local TemplateGroup = Group.getByName( SpawnPrefix ) + + if TemplateGroup then + return TemplateGroup:getCategory() + else + return nil + end +end + +--- Gets the CoalitionID of the Group with the given SpawnPrefix +function SPAWN:_GetGroupCoalitionID( SpawnPrefix ) + local TemplateGroup = Group.getByName( SpawnPrefix ) + + if TemplateGroup then + return TemplateGroup:getCoalition() + else + return nil + end +end + +--- Gets the CountryID of the Group with the given SpawnPrefix +function SPAWN:_GetGroupCountryID( SpawnPrefix ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnPrefix } ) + + local TemplateGroup = Group.getByName( SpawnPrefix ) + + if TemplateGroup then + local TemplateUnits = TemplateGroup:getUnits() + return TemplateUnits[1]:getCountry() + else + return nil + end +end + +--- Gets the Group Template from the ME environment definition. +-- This method used the @{DATABASE} object, which contains ALL initial and new spawned object in MOOSE. +-- @param #SPAWN self +-- @param #string SpawnTemplatePrefix +-- @return @SPAWN self +function SPAWN:_GetTemplate( SpawnTemplatePrefix ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnTemplatePrefix } ) + + local SpawnTemplate = nil + + SpawnTemplate = routines.utils.deepCopy( _DATABASE.Templates.Groups[SpawnTemplatePrefix].Template ) + + if SpawnTemplate == nil then + error( 'No Template returned for SpawnTemplatePrefix = ' .. SpawnTemplatePrefix ) + end + + SpawnTemplate.SpawnCoalitionID = self:_GetGroupCoalitionID( SpawnTemplatePrefix ) + SpawnTemplate.SpawnCategoryID = self:_GetGroupCategoryID( SpawnTemplatePrefix ) + SpawnTemplate.SpawnCountryID = self:_GetGroupCountryID( SpawnTemplatePrefix ) + + self:T( { SpawnTemplate } ) + return SpawnTemplate +end + +--- Prepares the new Group Template. +-- @param #SPAWN self +-- @param #string SpawnTemplatePrefix +-- @param #number SpawnIndex +-- @return #SPAWN self +function SPAWN:_Prepare( SpawnTemplatePrefix, SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix } ) + + local SpawnTemplate = self:_GetTemplate( SpawnTemplatePrefix ) + SpawnTemplate.name = self:SpawnGroupName( SpawnIndex ) + + SpawnTemplate.groupId = nil + --SpawnTemplate.lateActivation = false + SpawnTemplate.lateActivation = false -- TODO BUGFIX + + if SpawnTemplate.SpawnCategoryID == Group.Category.GROUND then + self:T( "For ground units, visible needs to be false..." ) + SpawnTemplate.visible = false -- TODO BUGFIX + end + + if SpawnTemplate.SpawnCategoryID == Group.Category.HELICOPTER or SpawnTemplate.SpawnCategoryID == Group.Category.AIRPLANE then + SpawnTemplate.uncontrolled = false + end + + for UnitID = 1, #SpawnTemplate.units do + SpawnTemplate.units[UnitID].name = string.format( SpawnTemplate.name .. '-%02d', UnitID ) + SpawnTemplate.units[UnitID].unitId = nil + SpawnTemplate.units[UnitID].x = SpawnTemplate.route.points[1].x + SpawnTemplate.units[UnitID].y = SpawnTemplate.route.points[1].y + end + + self:T( { "Template:", SpawnTemplate } ) + return SpawnTemplate + +end + +--- Private method randomizing the routes. +-- @param #SPAWN self +-- @param #number SpawnIndex The index of the group to be spawned. +-- @return #SPAWN +function SPAWN:_RandomizeRoute( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnRandomizeRoute, self.SpawnRandomizeRouteStartPoint, self.SpawnRandomizeRouteEndPoint, self.SpawnRandomizeRouteRadius } ) + + if self.SpawnRandomizeRoute then + local SpawnTemplate = self.SpawnGroups[SpawnIndex].SpawnTemplate + local RouteCount = #SpawnTemplate.route.points + + for t = self.SpawnRandomizeRouteStartPoint + 1, ( RouteCount - self.SpawnRandomizeRouteEndPoint ) do + SpawnTemplate.route.points[t].x = SpawnTemplate.route.points[t].x + math.random( self.SpawnRandomizeRouteRadius * -1, self.SpawnRandomizeRouteRadius ) + SpawnTemplate.route.points[t].y = SpawnTemplate.route.points[t].y + math.random( self.SpawnRandomizeRouteRadius * -1, self.SpawnRandomizeRouteRadius ) + -- TODO: manage altitude for airborne units ... + SpawnTemplate.route.points[t].alt = nil + --SpawnGroup.route.points[t].alt_type = nil + self:T( 'SpawnTemplate.route.points[' .. t .. '].x = ' .. SpawnTemplate.route.points[t].x .. ', SpawnTemplate.route.points[' .. t .. '].y = ' .. SpawnTemplate.route.points[t].y ) + end + end + + return self +end + +--- Private method that randomizes the template of the group. +-- @param #SPAWN self +-- @param #number SpawnIndex +-- @return #SPAWN self +function SPAWN:_RandomizeTemplate( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnRandomizeTemplate } ) + + if self.SpawnRandomizeTemplate then + self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix = self.SpawnTemplatePrefixTable[ math.random( 1, #self.SpawnTemplatePrefixTable ) ] + self.SpawnGroups[SpawnIndex].SpawnTemplate = self:_Prepare( self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix, SpawnIndex ) + self.SpawnGroups[SpawnIndex].SpawnTemplate.route = routines.utils.deepCopy( self.SpawnTemplate.route ) + self.SpawnGroups[SpawnIndex].SpawnTemplate.x = self.SpawnTemplate.x + self.SpawnGroups[SpawnIndex].SpawnTemplate.y = self.SpawnTemplate.y + self.SpawnGroups[SpawnIndex].SpawnTemplate.start_time = self.SpawnTemplate.start_time + for UnitID = 1, #self.SpawnGroups[SpawnIndex].SpawnTemplate.units do + self.SpawnGroups[SpawnIndex].SpawnTemplate.units[UnitID].heading = self.SpawnTemplate.units[1].heading + end + end + + self:_RandomizeRoute( SpawnIndex ) + + return self +end + +function SPAWN:_TranslateRotate( SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle } ) + + -- Translate + local TranslatedX = SpawnX + local TranslatedY = SpawnY + + -- Rotate + -- From Wikipedia: https://en.wikipedia.org/wiki/Rotation_matrix#Common_rotations + -- x' = x \cos \theta - y \sin \theta\ + -- y' = x \sin \theta + y \cos \theta\ + local RotatedX = - TranslatedX * math.cos( math.rad( SpawnAngle ) ) + + TranslatedY * math.sin( math.rad( SpawnAngle ) ) + local RotatedY = TranslatedX * math.sin( math.rad( SpawnAngle ) ) + + TranslatedY * math.cos( math.rad( SpawnAngle ) ) + + -- Assign + self.SpawnGroups[SpawnIndex].SpawnTemplate.x = SpawnRootX - RotatedX + self.SpawnGroups[SpawnIndex].SpawnTemplate.y = SpawnRootY + RotatedY + + + local SpawnUnitCount = table.getn( self.SpawnGroups[SpawnIndex].SpawnTemplate.units ) + for u = 1, SpawnUnitCount do + + -- Translate + local TranslatedX = SpawnX + local TranslatedY = SpawnY - 10 * ( u - 1 ) + + -- Rotate + local RotatedX = - TranslatedX * math.cos( math.rad( SpawnAngle ) ) + + TranslatedY * math.sin( math.rad( SpawnAngle ) ) + local RotatedY = TranslatedX * math.sin( math.rad( SpawnAngle ) ) + + TranslatedY * math.cos( math.rad( SpawnAngle ) ) + + -- Assign + self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].x = SpawnRootX - RotatedX + self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].y = SpawnRootY + RotatedY + self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].heading = self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].heading + math.rad( SpawnAngle ) + end + + return self +end + +--- Get the next index of the groups to be spawned. This function is complicated, as it is used at several spaces. +function SPAWN:_GetSpawnIndex( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive, self.AliveUnits, #self.SpawnTemplate.units } ) + + + if ( self.SpawnMaxGroups == 0 ) or ( SpawnIndex <= self.SpawnMaxGroups ) then + if ( self.SpawnMaxUnitsAlive == 0 ) or ( self.AliveUnits < self.SpawnMaxUnitsAlive * #self.SpawnTemplate.units ) or self.UnControlled then + if SpawnIndex and SpawnIndex >= self.SpawnCount + 1 then + self.SpawnCount = self.SpawnCount + 1 + SpawnIndex = self.SpawnCount + end + self.SpawnIndex = SpawnIndex + if not self.SpawnGroups[self.SpawnIndex] then + self:_InitializeSpawnGroups( self.SpawnIndex ) + end + else + return nil + end + else + return nil + end + + return self.SpawnIndex +end + + +-- TODO Need to delete this... _DATABASE does this now ... +function SPAWN:_OnBirth( event ) + + if timer.getTime0() < timer.getAbsTime() then -- dont need to add units spawned in at the start of the mission if mist is loaded in init line + if event.initiator and event.initiator:getName() then + local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator ) + if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then + self:T( { "Birth event: " .. event.initiator:getName(), event } ) + --MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " spawned." , 5, EventPrefix .. '/Event') + self.AliveUnits = self.AliveUnits + 1 + self:T( "Alive Units: " .. self.AliveUnits ) + end + end + end + +end + +--- Obscolete +-- @todo Need to delete this... _DATABASE does this now ... +function SPAWN:_OnDeadOrCrash( event ) + self:F( self.SpawnTemplatePrefix, event ) + + if event.initiator and event.initiator:getName() then + local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator ) + if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then + self:T( { "Dead event: " .. event.initiator:getName(), event } ) +-- local DestroyedUnit = Unit.getByName( EventPrefix ) +-- if DestroyedUnit and DestroyedUnit.getLife() <= 1.0 then + --MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " crashed." , 5, EventPrefix .. '/Event') + self.AliveUnits = self.AliveUnits - 1 + self:T( "Alive Units: " .. self.AliveUnits ) +-- end + end + end +end + +--- Will detect AIR Units taking off... When the event takes place, the spawned Group is registered as airborne... +-- This is needed to ensure that Re-SPAWNing only is done for landed AIR Groups. +-- @todo Need to test for AIR Groups only... +function SPAWN:_OnTakeOff( event ) + self:F( self.SpawnTemplatePrefix, event ) + + if event.initiator and event.initiator:getName() then + local SpawnGroup = self:_GetGroupFromDCSUnit( event.initiator ) + if SpawnGroup then + self:T( { "TakeOff event: " .. event.initiator:getName(), event } ) + self:T( "self.Landed = false" ) + self.Landed = false + end + end +end + +--- Will detect AIR Units landing... When the event takes place, the spawned Group is registered as landed. +-- This is needed to ensure that Re-SPAWNing is only done for landed AIR Groups. +-- @todo Need to test for AIR Groups only... +function SPAWN:_OnLand( event ) + self:F( self.SpawnTemplatePrefix, event ) + + local SpawnUnit = event.initiator + if SpawnUnit and SpawnUnit:isExist() and Object.getCategory(SpawnUnit) == Object.Category.UNIT then + local SpawnGroup = self:_GetGroupFromDCSUnit( SpawnUnit ) + if SpawnGroup then + self:T( { "Landed event:" .. SpawnUnit:getName(), event } ) + self.Landed = true + self:T( "self.Landed = true" ) + if self.Landed and self.RepeatOnLanding then + local SpawnGroupIndex = self:GetSpawnIndexFromGroup( SpawnGroup ) + self:T( { "Landed:", "ReSpawn:", SpawnGroup:GetName(), SpawnGroupIndex } ) + self:ReSpawn( SpawnGroupIndex ) + end + end + end +end + +--- Will detect AIR Units shutting down their engines ... +-- When the event takes place, and the method @{RepeatOnEngineShutDown} was called, the spawned Group will Re-SPAWN. +-- But only when the Unit was registered to have landed. +-- @param #SPAWN self +-- @see _OnTakeOff +-- @see _OnLand +-- @todo Need to test for AIR Groups only... +function SPAWN:_OnEngineShutDown( event ) + self:F( self.SpawnTemplatePrefix, event ) + + local SpawnUnit = event.initiator + if SpawnUnit and SpawnUnit:isExist() and Object.getCategory(SpawnUnit) == Object.Category.UNIT then + local SpawnGroup = self:_GetGroupFromDCSUnit( SpawnUnit ) + if SpawnGroup then + self:T( { "EngineShutDown event: " .. SpawnUnit:getName(), event } ) + if self.Landed and self.RepeatOnEngineShutDown then + local SpawnGroupIndex = self:GetSpawnIndexFromGroup( SpawnGroup ) + self:T( { "EngineShutDown: ", "ReSpawn:", SpawnGroup:GetName(), SpawnGroupIndex } ) + self:ReSpawn( SpawnGroupIndex ) + end + end + end +end + +--- This function is called automatically by the Spawning scheduler. +-- It is the internal worker method SPAWNing new Groups on the defined time intervals. +function SPAWN:_Scheduler() + self:F( { "_Scheduler", self.SpawnTemplatePrefix, self.SpawnAliasPrefix, self.SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive } ) + + -- Validate if there are still groups left in the batch... + self:Spawn() + + return true +end + +function SPAWN:_SpawnCleanUpScheduler() + self:F( { "CleanUp Scheduler:", self.SpawnTemplatePrefix } ) + + local SpawnCursor + local SpawnGroup, SpawnCursor = self:GetFirstAliveGroup( SpawnCursor ) + + self:T( { "CleanUp Scheduler:", SpawnGroup } ) + + while SpawnGroup do + + if SpawnGroup:AllOnGround() and SpawnGroup:GetMaxVelocity() < 1 then + if not self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] then + self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] = timer.getTime() + else + if self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] + self.SpawnCleanUpInterval < timer.getTime() then + self:T( { "CleanUp Scheduler:", "Cleaning:", SpawnGroup } ) + SpawnGroup:Destroy() + end + end + else + self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] = nil + end + + SpawnGroup, SpawnCursor = self:GetNextAliveGroup( SpawnCursor ) + + self:T( { "CleanUp Scheduler:", SpawnGroup } ) + + end + + return true -- Repeat + +end +--- Limit the simultaneous movement of Groups within a running Mission. +-- This module is defined to improve the performance in missions, and to bring additional realism for GROUND vehicles. +-- Performance: If in a DCSRTE there are a lot of moving GROUND units, then in a multi player mission, this WILL create lag if +-- the main DCS execution core of your CPU is fully utilized. So, this class will limit the amount of simultaneous moving GROUND units +-- on defined intervals (currently every minute). +-- @module MOVEMENT + +--- the MOVEMENT class +-- @type +MOVEMENT = { + ClassName = "MOVEMENT", +} + +--- Creates the main object which is handling the GROUND forces movement. +-- @param table{string,...}|string MovePrefixes is a table of the Prefixes (names) of the GROUND Groups that need to be controlled by the MOVEMENT Object. +-- @param number MoveMaximum is a number that defines the maximum amount of GROUND Units to be moving during one minute. +-- @return MOVEMENT +-- @usage +-- -- Limit the amount of simultaneous moving units on the ground to prevent lag. +-- Movement_US_Platoons = MOVEMENT:New( { 'US Tank Platoon Left', 'US Tank Platoon Middle', 'US Tank Platoon Right', 'US CH-47D Troops' }, 15 ) + +function MOVEMENT:New( MovePrefixes, MoveMaximum ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( { MovePrefixes, MoveMaximum } ) + + if type( MovePrefixes ) == 'table' then + self.MovePrefixes = MovePrefixes + else + self.MovePrefixes = { MovePrefixes } + end + self.MoveCount = 0 -- The internal counter of the amount of Moveing the has happened since MoveStart. + self.MoveMaximum = MoveMaximum -- Contains the Maximum amount of units that are allowed to move... + self.AliveUnits = 0 -- Contains the counter how many units are currently alive + self.MoveUnits = {} -- Reflects if the Moving for this MovePrefixes is going to be scheduled or not. + + _EVENTDISPATCHER:OnBirth( self.OnBirth, self ) + +-- self:AddEvent( world.event.S_EVENT_BIRTH, self.OnBirth ) +-- +-- self:EnableEvents() + + self:ScheduleStart() + + return self +end + +--- Call this function to start the MOVEMENT scheduling. +function MOVEMENT:ScheduleStart() + self:F() + --self.MoveFunction = routines.scheduleFunction( self._Scheduler, { self }, timer.getTime() + 1, 120 ) + self.MoveFunction = SCHEDULER:New( self, self._Scheduler, {}, 1, 120 ) +end + +--- Call this function to stop the MOVEMENT scheduling. +-- @todo need to implement it ... Forgot. +function MOVEMENT:ScheduleStop() + self:F() + +end + +--- Captures the birth events when new Units were spawned. +-- @todo This method should become obsolete. The new @{DATABASE} class will handle the collection administration. +function MOVEMENT:OnBirth( Event ) + self:F( { Event } ) + + if timer.getTime0() < timer.getAbsTime() then -- dont need to add units spawned in at the start of the mission if mist is loaded in init line + if Event.IniDCSUnit then + self:T( "Birth object : " .. Event.IniDCSUnitName ) + if Event.IniDCSGroup and Event.IniDCSGroup:isExist() then + for MovePrefixID, MovePrefix in pairs( self.MovePrefixes ) do + if string.find( Event.IniDCSUnitName, MovePrefix, 1, true ) then + self.AliveUnits = self.AliveUnits + 1 + self.MoveUnits[Event.IniDCSUnitName] = Event.IniDCSGroupName + self:T( self.AliveUnits ) + end + end + end + end + _EVENTDISPATCHER:OnCrashForUnit( Event.IniDCSUnitName, self.OnDeadOrCrash, self ) + _EVENTDISPATCHER:OnDeadForUnit( Event.IniDCSUnitName, self.OnDeadOrCrash, self ) + end + +end + +--- Captures the Dead or Crash events when Units crash or are destroyed. +-- @todo This method should become obsolete. The new @{DATABASE} class will handle the collection administration. +function MOVEMENT:OnDeadOrCrash( Event ) + self:F( { Event } ) + + if Event.IniDCSUnit then + self:T( "Dead object : " .. Event.IniDCSUnitName ) + for MovePrefixID, MovePrefix in pairs( self.MovePrefixes ) do + if string.find( Event.IniDCSUnitName, MovePrefix, 1, true ) then + self.AliveUnits = self.AliveUnits - 1 + self.MoveUnits[Event.IniDCSUnitName] = nil + self:T( self.AliveUnits ) + end + end + end +end + +--- This function is called automatically by the MOVEMENT scheduler. A new function is scheduled when MoveScheduled is true. +function MOVEMENT:_Scheduler() + self:F( { self.MovePrefixes, self.MoveMaximum, self.AliveUnits, self.MovementGroups } ) + + if self.AliveUnits > 0 then + local MoveProbability = ( self.MoveMaximum * 100 ) / self.AliveUnits + self:T( 'Move Probability = ' .. MoveProbability ) + + for MovementUnitName, MovementGroupName in pairs( self.MoveUnits ) do + local MovementGroup = Group.getByName( MovementGroupName ) + if MovementGroup and MovementGroup:isExist() then + local MoveOrStop = math.random( 1, 100 ) + self:T( 'MoveOrStop = ' .. MoveOrStop ) + if MoveOrStop <= MoveProbability then + self:T( 'Group continues moving = ' .. MovementGroupName ) + trigger.action.groupContinueMoving( MovementGroup ) + else + self:T( 'Group stops moving = ' .. MovementGroupName ) + trigger.action.groupStopMoving( MovementGroup ) + end + else + self.MoveUnits[MovementUnitName] = nil + end + end + end + return true +end +--- Provides defensive behaviour to a set of SAM sites within a running Mission. +-- @module Sead +-- @author to be searched on the forum +-- @author (co) Flightcontrol (Modified and enriched with functionality) + +--- The SEAD class +-- @type SEAD +-- @extends Base#BASE +SEAD = { + ClassName = "SEAD", + TargetSkill = { + Average = { Evade = 50, DelayOff = { 10, 25 }, DelayOn = { 10, 30 } } , + Good = { Evade = 30, DelayOff = { 8, 20 }, DelayOn = { 20, 40 } } , + High = { Evade = 15, DelayOff = { 5, 17 }, DelayOn = { 30, 50 } } , + Excellent = { Evade = 10, DelayOff = { 3, 10 }, DelayOn = { 30, 60 } } + }, + SEADGroupPrefixes = {} +} + +--- Creates the main object which is handling defensive actions for SA sites or moving SA vehicles. +-- When an anti radiation missile is fired (KH-58, KH-31P, KH-31A, KH-25MPU, HARM missiles), the SA will shut down their radars and will take evasive actions... +-- Chances are big that the missile will miss. +-- @param table{string,...}|string SEADGroupPrefixes which is a table of Prefixes of the SA Groups in the DCSRTE on which evasive actions need to be taken. +-- @return SEAD +-- @usage +-- -- CCCP SEAD Defenses +-- -- 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' } ) +function SEAD:New( SEADGroupPrefixes ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( SEADGroupPrefixes ) + if type( SEADGroupPrefixes ) == 'table' then + for SEADGroupPrefixID, SEADGroupPrefix in pairs( SEADGroupPrefixes ) do + self.SEADGroupPrefixes[SEADGroupPrefix] = SEADGroupPrefix + end + else + self.SEADGroupNames[SEADGroupPrefixes] = SEADGroupPrefixes + end + _EVENTDISPATCHER:OnShot( self.EventShot, self ) + + return self +end + +--- 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. +-- @see SEAD +function SEAD:EventShot( Event ) + self:F( { Event } ) + + local SEADUnit = Event.IniDCSUnit + local SEADUnitName = Event.IniDCSUnitName + local SEADWeapon = Event.Weapon -- Identify the weapon fired + local SEADWeaponName = Event.WeaponName -- return weapon type + --trigger.action.outText( string.format("Alerte, depart missile " ..string.format(SEADWeaponName)), 20) --debug message + -- Start of the 2nd loop + self:T( "Missile Launched = " .. SEADWeaponName ) + if SEADWeaponName == "KH-58" or SEADWeaponName == "KH-25MPU" or SEADWeaponName == "AGM-88" or SEADWeaponName == "KH-31A" or SEADWeaponName == "KH-31P" then -- Check if the missile is a SEAD + local _evade = math.random (1,100) -- random number for chance of evading action + local _targetMim = Event.Weapon:getTarget() -- Identify target + local _targetMimname = Unit.getName(_targetMim) + local _targetMimgroup = Unit.getGroup(Weapon.getTarget(SEADWeapon)) + local _targetMimgroupName = _targetMimgroup:getName() + local _targetMimcont= _targetMimgroup:getController() + local _targetskill = _DATABASE.Templates.Units[_targetMimname].Template.skill + self:T( self.SEADGroupPrefixes ) + self:T( _targetMimgroupName ) + local SEADGroupFound = false + for SEADGroupPrefixID, SEADGroupPrefix in pairs( self.SEADGroupPrefixes ) do + if string.find( _targetMimgroupName, SEADGroupPrefix, 1, true ) then + SEADGroupFound = true + self:T( 'Group Found' ) + break + end + end + if SEADGroupFound == true then + if _targetskill == "Random" then -- when skill is random, choose a skill + local Skills = { "Average", "Good", "High", "Excellent" } + _targetskill = Skills[ math.random(1,4) ] + end + self:T( _targetskill ) -- debug message for skill check + if self.TargetSkill[_targetskill] then + if (_evade > self.TargetSkill[_targetskill].Evade) then + self:T( string.format("Evading, target skill " ..string.format(_targetskill)) ) --debug message + local _targetMim = Weapon.getTarget(SEADWeapon) + local _targetMimname = Unit.getName(_targetMim) + local _targetMimgroup = Unit.getGroup(Weapon.getTarget(SEADWeapon)) + local _targetMimcont= _targetMimgroup:getController() + routines.groupRandomDistSelf(_targetMimgroup,300,'Diamond',250,20) -- move randomly + local SuppressedGroups1 = {} -- unit suppressed radar off for a random time + local function SuppressionEnd1(id) + id.ctrl:setOption(AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.GREEN) + SuppressedGroups1[id.groupName] = nil + end + local id = { + groupName = _targetMimgroup, + ctrl = _targetMimcont + } + local delay1 = math.random(self.TargetSkill[_targetskill].DelayOff[1], self.TargetSkill[_targetskill].DelayOff[2]) + if SuppressedGroups1[id.groupName] == nil then + SuppressedGroups1[id.groupName] = { + SuppressionEndTime1 = timer.getTime() + delay1, + SuppressionEndN1 = SuppressionEndCounter1 --Store instance of SuppressionEnd() scheduled function + } + Controller.setOption(_targetMimcont, AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.GREEN) + timer.scheduleFunction(SuppressionEnd1, id, SuppressedGroups1[id.groupName].SuppressionEndTime1) --Schedule the SuppressionEnd() function + --trigger.action.outText( string.format("Radar Off " ..string.format(delay1)), 20) + end + + local SuppressedGroups = {} + local function SuppressionEnd(id) + id.ctrl:setOption(AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.RED) + SuppressedGroups[id.groupName] = nil + end + local id = { + groupName = _targetMimgroup, + ctrl = _targetMimcont + } + local delay = math.random(self.TargetSkill[_targetskill].DelayOn[1], self.TargetSkill[_targetskill].DelayOn[2]) + if SuppressedGroups[id.groupName] == nil then + SuppressedGroups[id.groupName] = { + SuppressionEndTime = timer.getTime() + delay, + SuppressionEndN = SuppressionEndCounter --Store instance of SuppressionEnd() scheduled function + } + timer.scheduleFunction(SuppressionEnd, id, SuppressedGroups[id.groupName].SuppressionEndTime) --Schedule the SuppressionEnd() function + --trigger.action.outText( string.format("Radar On " ..string.format(delay)), 20) + end + end + end + end + end +end +--- Taking the lead of AI escorting your flight. +-- +-- @{#ESCORT} class +-- ================ +-- The @{#ESCORT} class allows you to interact with escorting AI on your flight and take the lead. +-- Each escorting group can be commanded with a whole set of radio commands (radio menu in your flight, and then F10). +-- +-- The radio commands will vary according the category of the group. The richest set of commands are with Helicopters and AirPlanes. +-- Ships and Ground troops will have a more limited set, but they can provide support through the bombing of targets designated by the other escorts. +-- +-- RADIO MENUs that can be created: +-- ================================ +-- Find a summary below of the current available commands: +-- +-- Navigation ...: +-- --------------- +-- Escort group navigation functions: +-- +-- * **"Join-Up and Follow at x meters":** The escort group fill follow you at about x meters, and they will follow you. +-- * **"Flare":** Provides menu commands to let the escort group shoot a flare in the air in a color. +-- * **"Smoke":** Provides menu commands to let the escort group smoke the air in a color. Note that smoking is only available for ground and naval troops. +-- +-- Hold position ...: +-- ------------------ +-- Escort group navigation functions: +-- +-- * **"At current location":** Stops the escort group and they will hover 30 meters above the ground at the position they stopped. +-- * **"At client location":** Stops the escort group and they will hover 30 meters above the ground at the position they stopped. +-- +-- Report targets ...: +-- ------------------- +-- Report targets will make the escort group to report any target that it identifies within a 8km range. Any detected target can be attacked using the 4. Attack nearby targets function. (see below). +-- +-- * **"Report now":** Will report the current detected targets. +-- * **"Report targets on":** Will make the escort group to report detected targets and will fill the "Attack nearby targets" menu list. +-- * **"Report targets off":** Will stop detecting targets. +-- +-- Scan targets ...: +-- ----------------- +-- Menu items to pop-up the escort group for target scanning. After scanning, the escort group will resume with the mission or defined task. +-- +-- * **"Scan targets 30 seconds":** Scan 30 seconds for targets. +-- * **"Scan targets 60 seconds":** Scan 60 seconds for targets. +-- +-- Attack targets ...: +-- ------------------- +-- This menu item will list all detected targets within a 15km range. Depending on the level of detection (known/unknown) and visuality, the targets type will also be listed. +-- +-- Request assistance from ...: +-- ---------------------------- +-- This menu item will list all detected targets within a 15km range, as with the menu item **Attack Targets**. +-- This menu item allows to request attack support from other escorts supporting the current client group. +-- eg. the function allows a player to request support from the Ship escort to attack a target identified by the Plane escort with its Tomahawk missiles. +-- eg. the function allows a player to request support from other Planes escorting to bomb the unit with illumination missiles or bombs, so that the main plane escort can attack the area. +-- +-- ROE ...: +-- -------- +-- Sets the Rules of Engagement (ROE) of the escort group when in flight. +-- +-- * **"Hold Fire":** The escort group will hold fire. +-- * **"Return Fire":** The escort group will return fire. +-- * **"Open Fire":** The escort group will open fire on designated targets. +-- * **"Weapon Free":** The escort group will engage with any target. +-- +-- Evasion ...: +-- ------------ +-- Will define the evasion techniques that the escort group will perform during flight or combat. +-- +-- * **"Fight until death":** The escort group will have no reaction to threats. +-- * **"Use flares, chaff and jammers":** The escort group will use passive defense using flares and jammers. No evasive manoeuvres are executed. +-- * **"Evade enemy fire":** The rescort group will evade enemy fire before firing. +-- * **"Go below radar and evade fire":** The escort group will perform evasive vertical manoeuvres. +-- +-- Resume Mission ...: +-- ------------------- +-- Escort groups can have their own mission. This menu item will allow the escort group to resume their Mission from a given waypoint. +-- Note that this is really fantastic, as you now have the dynamic of taking control of the escort groups, and allowing them to resume their path or mission. +-- +-- ESCORT construction methods. +-- ============================ +-- Create a new SPAWN object with the @{#ESCORT.New} method: +-- +-- * @{#ESCORT.New}: Creates a new ESCORT object from a @{Group#GROUP} for a @{Client#CLIENT}, with an optional briefing text. +-- +-- ESCORT initialization methods. +-- ============================== +-- The following menus are created within the RADIO MENU 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. +-- * @{#ESCORT.MenuHoldAtLeaderPosition}: Creates a menu to hold the escort at the client position. +-- * @{#ESCORT.MenuScanForTargets}: Creates a menu so that the escort scans targets. +-- * @{#ESCORT.MenuFlare}: Creates a menu to disperse flares. +-- * @{#ESCORT.MenuSmoke}: Creates a menu to disparse smoke. +-- * @{#ESCORT.MenuReportTargets}: Creates a menu so that the escort reports targets. +-- * @{#ESCORT.MenuReportPosition}: Creates a menu so that the escort reports its current position from bullseye. +-- * @{#ESCORT.MenuAssistedAttack: Creates a menu so that the escort supportes assisted attack from other escorts with the client. +-- * @{#ESCORT.MenuROE: Creates a menu structure to set the rules of engagement of the escort. +-- * @{#ESCORT.MenuEvasion: Creates a menu structure to set the evasion techniques when the escort is under threat. +-- * @{#ESCORT.MenuResumeMission}: Creates a menu structure so that the escort can resume from a waypoint. +-- +-- +-- @usage +-- -- Declare a new EscortPlanes object as follows: +-- +-- -- First find the GROUP object and the CLIENT object. +-- local EscortClient = CLIENT:FindByName( "Unit Name" ) -- The Unit Name is the name of the unit flagged with the skill Client in the mission editor. +-- local EscortGroup = GROUP:FindByName( "Group Name" ) -- The Group Name is the name of the group that will escort the Escort Client. +-- +-- -- 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." ) +-- +-- +-- +-- @module Escort +-- @author FlightControl + +--- ESCORT class +-- @type ESCORT +-- @extends Base#BASE +-- @field Client#CLIENT EscortClient +-- @field Group#GROUP EscortGroup +-- @field #string EscortName +-- @field #ESCORT.MODE EscortMode The mode the escort is in. +-- @field Scheduler#SCHEDULER FollowScheduler The instance of the SCHEDULER class. +-- @field #number FollowDistance The current follow distance. +-- @field #boolean ReportTargets If true, nearby targets are reported. +-- @Field DCSTypes#AI.Option.Air.val.ROE OptionROE Which ROE is set to the EscortGroup. +-- @field DCSTypes#AI.Option.Air.val.REACTION_ON_THREAT OptionReactionOnThreat Which REACTION_ON_THREAT is set to the EscortGroup. +-- @field Menu#MENU_CLIENT EscortMenuResumeMission +ESCORT = { + ClassName = "ESCORT", + EscortName = nil, -- The Escort Name + EscortClient = nil, + EscortGroup = nil, + EscortMode = 1, + MODE = { + FOLLOW = 1, + MISSION = 2, + }, + Targets = {}, -- The identified targets + FollowScheduler = nil, + ReportTargets = true, + OptionROE = AI.Option.Air.val.ROE.OPEN_FIRE, + OptionReactionOnThreat = AI.Option.Air.val.REACTION_ON_THREAT.ALLOW_ABORT_MISSION, + SmokeDirectionVector = false, + TaskPoints = {} +} + +--- ESCORT.Mode class +-- @type ESCORT.MODE +-- @field #number FOLLOW +-- @field #number MISSION + +--- MENUPARAM type +-- @type MENUPARAM +-- @field #ESCORT ParamSelf +-- @field #Distance ParamDistance +-- @field #function ParamFunction +-- @field #string ParamMessage + +--- ESCORT class constructor for an AI group +-- @param #ESCORT self +-- @param Client#CLIENT EscortClient The client escorted by the EscortGroup. +-- @param Group#GROUP EscortGroup The group AI escorting the EscortClient. +-- @param #string EscortName Name of the escort. +-- @return #ESCORT self +-- @usage +-- -- Declare a new EscortPlanes object as follows: +-- +-- -- First find the GROUP object and the CLIENT object. +-- local EscortClient = CLIENT:FindByName( "Unit Name" ) -- The Unit Name is the name of the unit flagged with the skill Client in the mission editor. +-- local EscortGroup = GROUP:FindByName( "Group Name" ) -- The Group Name is the name of the group that will escort the Escort Client. +-- +-- -- 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() ) + self:F( { EscortClient, EscortGroup, EscortName } ) + + self.EscortClient = EscortClient -- Client#CLIENT + self.EscortGroup = EscortGroup -- Group#GROUP + self.EscortName = EscortName + self.EscortBriefing = EscortBriefing + + -- Set EscortGroup known at EscortClient. + if not self.EscortClient._EscortGroups then + self.EscortClient._EscortGroups = {} + end + + if not self.EscortClient._EscortGroups[EscortGroup:GetName()] then + 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 = {} + end + + self.EscortMenu = MENU_CLIENT:New( self.EscortClient, self.EscortName ) + + self.EscortGroup:WayPointInitialize(1) + + self.EscortGroup:OptionROTVertical() + self.EscortGroup:OptionROEOpenFire() + + EscortGroup:MessageToClient( EscortGroup:GetCategoryName() .. " '" .. EscortName .. "' (" .. EscortGroup:GetCallsign() .. ") reporting! " .. + "We're escorting your flight. " .. + "Use the Radio Menu and F10 and use the options under + " .. EscortName .. "\n", + 60, EscortClient + ) + + self.FollowDistance = 100 + self.CT1 = 0 + self.GT1 = 0 + self.FollowScheduler = SCHEDULER:New( self, self._FollowScheduler, {}, 1, .5, .01 ) + self.EscortMode = ESCORT.MODE.MISSION + self.FollowScheduler:Stop() + + return self +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 +-- @param #boolean SmokeDirection If true, then the direction vector will be smoked. +function ESCORT:TestSmokeDirectionVector( SmokeDirection ) + self.SmokeDirectionVector = ( SmokeDirection == true ) and true or false +end + + +--- Defines the default menus +-- @param #ESCORT self +-- @return #ESCORT +function ESCORT:Menus() + self:F() + + self:MenuFollowAt( 100 ) + self:MenuFollowAt( 200 ) + self:MenuFollowAt( 300 ) + self:MenuFollowAt( 400 ) + + self:MenuScanForTargets( 100, 60 ) + + self:MenuHoldAtEscortPosition( 30 ) + self:MenuHoldAtLeaderPosition( 30 ) + + self:MenuFlare() + self:MenuSmoke() + + self:MenuReportTargets( 60 ) + self:MenuAssistedAttack() + self:MenuROE() + self:MenuEvasion() + self:MenuResumeMission() + + + return self +end + + + +--- Defines a menu slot to let the escort Join and Follow you at a certain distance. +-- This menu will appear under **Navigation**. +-- @param #ESCORT self +-- @param DCSTypes#Distance Distance The distance in meters that the escort needs to follow the client. +-- @return #ESCORT +function ESCORT:MenuFollowAt( Distance ) + self:F(Distance) + + if self.EscortGroup:IsAir() then + if not self.EscortMenuReportNavigation then + self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) + end + + if not self.EscortMenuJoinUpAndFollow then + 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.EscortMode = ESCORT.MODE.FOLLOW + end + + return self +end + +--- Defines a menu slot to let the escort hold at their current position and stay low with a specified height during a specified time in seconds. +-- This menu will appear under **Hold position**. +-- @param #ESCORT self +-- @param DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. +-- @param DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. +-- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. +-- @return #ESCORT +-- TODO: Implement Seconds parameter. Challenge is to first develop the "continue from last activity" function. +function ESCORT:MenuHoldAtEscortPosition( Height, Seconds, MenuTextFormat ) + self:F( { Height, Seconds, MenuTextFormat } ) + + if self.EscortGroup:IsAir() then + + if not self.EscortMenuHold then + self.EscortMenuHold = MENU_CLIENT:New( self.EscortClient, "Hold position", self.EscortMenu ) + end + + if not Height then + Height = 30 + end + + if not Seconds then + Seconds = 0 + end + + local MenuText = "" + if not MenuTextFormat then + if Seconds == 0 then + MenuText = string.format( "Hold at %d meter", Height ) + else + MenuText = string.format( "Hold at %d meter for %d seconds", Height, Seconds ) + end + else + if Seconds == 0 then + MenuText = string.format( MenuTextFormat, Height ) + else + MenuText = string.format( MenuTextFormat, Height, Seconds ) + end + end + + if not self.EscortMenuHoldPosition then + self.EscortMenuHoldPosition = {} + end + + self.EscortMenuHoldPosition[#self.EscortMenuHoldPosition+1] = MENU_CLIENT_COMMAND + :New( + self.EscortClient, + MenuText, + self.EscortMenuHold, + ESCORT._HoldPosition, + { ParamSelf = self, + ParamOrbitGroup = self.EscortGroup, + ParamHeight = Height, + ParamSeconds = Seconds + } + ) + end + + return self +end + + +--- Defines a menu slot to let the escort hold at the client position and stay low with a specified height during a specified time in seconds. +-- This menu will appear under **Navigation**. +-- @param #ESCORT self +-- @param DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. +-- @param DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. +-- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain one or two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. +-- @return #ESCORT +-- TODO: Implement Seconds parameter. Challenge is to first develop the "continue from last activity" function. +function ESCORT:MenuHoldAtLeaderPosition( Height, Seconds, MenuTextFormat ) + self:F( { Height, Seconds, MenuTextFormat } ) + + if self.EscortGroup:IsAir() then + + if not self.EscortMenuHold then + self.EscortMenuHold = MENU_CLIENT:New( self.EscortClient, "Hold position", self.EscortMenu ) + end + + if not Height then + Height = 30 + end + + if not Seconds then + Seconds = 0 + end + + local MenuText = "" + if not MenuTextFormat then + if Seconds == 0 then + MenuText = string.format( "Rejoin and hold at %d meter", Height ) + else + MenuText = string.format( "Rejoin and hold at %d meter for %d seconds", Height, Seconds ) + end + else + if Seconds == 0 then + MenuText = string.format( MenuTextFormat, Height ) + else + MenuText = string.format( MenuTextFormat, Height, Seconds ) + end + end + + if not self.EscortMenuHoldAtLeaderPosition then + self.EscortMenuHoldAtLeaderPosition = {} + end + + self.EscortMenuHoldAtLeaderPosition[#self.EscortMenuHoldAtLeaderPosition+1] = MENU_CLIENT_COMMAND + :New( + self.EscortClient, + MenuText, + self.EscortMenuHold, + ESCORT._HoldPosition, + { ParamSelf = self, + ParamOrbitGroup = self.EscortClient, + ParamHeight = Height, + ParamSeconds = Seconds + } + ) + end + + return self +end + +--- Defines a menu slot to let the escort scan for targets at a certain height for a certain time in seconds. +-- This menu will appear under **Scan targets**. +-- @param #ESCORT self +-- @param DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. +-- @param DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. +-- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain one or two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. +-- @return #ESCORT +function ESCORT:MenuScanForTargets( Height, Seconds, MenuTextFormat ) + self:F( { Height, Seconds, MenuTextFormat } ) + + if self.EscortGroup:IsAir() then + if not self.EscortMenuScan then + self.EscortMenuScan = MENU_CLIENT:New( self.EscortClient, "Scan for targets", self.EscortMenu ) + end + + if not Height then + Height = 100 + end + + if not Seconds then + Seconds = 30 + end + + local MenuText = "" + if not MenuTextFormat then + if Seconds == 0 then + MenuText = string.format( "At %d meter", Height ) + else + MenuText = string.format( "At %d meter for %d seconds", Height, Seconds ) + end + else + if Seconds == 0 then + MenuText = string.format( MenuTextFormat, Height ) + else + MenuText = string.format( MenuTextFormat, Height, Seconds ) + end + end + + if not self.EscortMenuScanForTargets then + self.EscortMenuScanForTargets = {} + end + + self.EscortMenuScanForTargets[#self.EscortMenuScanForTargets+1] = MENU_CLIENT_COMMAND + :New( + self.EscortClient, + MenuText, + self.EscortMenuScan, + ESCORT._ScanTargets, + { ParamSelf = self, + ParamScanDuration = 30 + } + ) + end + + return self +end + + + +--- Defines a menu slot to let the escort disperse a flare in a certain color. +-- This menu will appear under **Navigation**. +-- The flare will be fired from the first unit in the group. +-- @param #ESCORT self +-- @param #string MenuTextFormat Optional parameter that shows the menu option text. If no text is given, the default text will be displayed. +-- @return #ESCORT +function ESCORT:MenuFlare( MenuTextFormat ) + self:F() + + if not self.EscortMenuReportNavigation then + self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) + end + + local MenuText = "" + if not MenuTextFormat then + MenuText = "Flare" + else + MenuText = 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 = UNIT.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 = UNIT.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 = UNIT.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 = UNIT.FlareColor.Yellow, ParamMessage = "Released a yellow flare!" } ) + end + + return self +end + +--- Defines a menu slot to let the escort disperse a smoke in a certain color. +-- This menu will appear under **Navigation**. +-- Note that smoke menu options will only be displayed for ships and ground units. Not for air units. +-- The smoke will be fired from the first unit in the group. +-- @param #ESCORT self +-- @param #string MenuTextFormat Optional parameter that shows the menu option text. If no text is given, the default text will be displayed. +-- @return #ESCORT +function ESCORT:MenuSmoke( MenuTextFormat ) + self:F() + + if not self.EscortGroup:IsAir() then + if not self.EscortMenuReportNavigation then + self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) + end + + local MenuText = "" + if not MenuTextFormat then + MenuText = "Smoke" + else + MenuText = 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!" } ) + end + end + + return self +end + +--- Defines a menu slot to let the escort report their current detected targets with a specified time interval in seconds. +-- This menu will appear under **Report targets**. +-- Note that if a report targets menu is not specified, no targets will be detected by the escort, and the attack and assisted attack menus will not be displayed. +-- @param #ESCORT self +-- @param DCSTypes#Time Seconds Optional parameter that lets the escort report their current detected targets after specified time interval in seconds. The default time is 30 seconds. +-- @return #ESCORT +function ESCORT:MenuReportTargets( Seconds ) + self:F( { Seconds } ) + + if not self.EscortMenuReportNearbyTargets then + self.EscortMenuReportNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Report targets", self.EscortMenu ) + end + + if not Seconds then + Seconds = 30 + 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, } ) + + -- Attack Targets + self.EscortMenuAttackNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Attack targets", self.EscortMenu ) + + + --self.ReportTargetsScheduler = routines.scheduleFunction( self._ReportTargetsScheduler, { self }, timer.getTime() + 1, Seconds ) + self.ReportTargetsScheduler = SCHEDULER:New( self, self._ReportTargetsScheduler, {}, 1, Seconds ) + + return self +end + +--- Defines a menu slot to let the escort attack its detected targets using assisted attack from another escort joined also with the client. +-- This menu will appear under **Request assistance from**. +-- Note that this method needs to be preceded with the method MenuReportTargets. +-- @param #ESCORT self +-- @return #ESCORT +function ESCORT:MenuAssistedAttack() + self:F() + + -- Request assistance from other escorts. + -- This is very useful to let f.e. an escorting ship attack a target detected by an escorting plane... + self.EscortMenuTargetAssistance = MENU_CLIENT:New( self.EscortClient, "Request assistance from", self.EscortMenu ) + + return self +end + +--- Defines a menu to let the escort set its rules of engagement. +-- All rules of engagement will appear under the menu **ROE**. +-- @param #ESCORT self +-- @return #ESCORT +function ESCORT:MenuROE( MenuTextFormat ) + self:F( MenuTextFormat ) + + if not self.EscortMenuROE then + -- 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!" } ) + 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!" } ) + 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!!" } ) + 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!" } ) + end + end + + return self +end + + +--- Defines a menu to let the escort set its evasion when under threat. +-- All rules of engagement will appear under the menu **Evasion**. +-- @param #ESCORT self +-- @return #ESCORT +function ESCORT:MenuEvasion( MenuTextFormat ) + self:F( MenuTextFormat ) + + if self.EscortGroup:IsAir() then + if not self.EscortMenuEvasion then + -- 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!" } ) + 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!" } ) + 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!" } ) + 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!" } ) + end + end + end + + return self +end + +--- Defines a menu to let the escort resume its mission from a waypoint on its route. +-- All rules of engagement will appear under the menu **Resume mission from**. +-- @param #ESCORT self +-- @return #ESCORT +function ESCORT:MenuResumeMission() + self:F() + + if not self.EscortMenuResumeMission then + -- Mission Resume Menu Root + self.EscortMenuResumeMission = MENU_CLIENT:New( self.EscortClient, "Resume mission from", self.EscortMenu ) + end + + return self +end + + +--- @param #MENUPARAM MenuParam +function ESCORT._HoldPosition( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + local OrbitGroup = MenuParam.ParamOrbitGroup -- Group#GROUP + local OrbitUnit = OrbitGroup:GetUnit(1) -- Unit#UNIT + local OrbitHeight = MenuParam.ParamHeight + local OrbitSeconds = MenuParam.ParamSeconds -- Not implemented yet + + self.FollowScheduler:Stop() + + local PointFrom = {} + local GroupPoint = EscortGroup:GetUnit(1):GetPointVec3() + PointFrom = {} + PointFrom.x = GroupPoint.x + PointFrom.y = GroupPoint.z + PointFrom.speed = 250 + PointFrom.type = AI.Task.WaypointType.TURNING_POINT + PointFrom.alt = GroupPoint.y + PointFrom.alt_type = AI.Task.AltitudeType.BARO + + local OrbitPoint = OrbitUnit:GetPointVec2() + local PointTo = {} + PointTo.x = OrbitPoint.x + PointTo.y = OrbitPoint.y + PointTo.speed = 250 + PointTo.type = AI.Task.WaypointType.TURNING_POINT + PointTo.alt = OrbitHeight + PointTo.alt_type = AI.Task.AltitudeType.BARO + PointTo.task = EscortGroup:TaskOrbitCircleAtVec2( OrbitPoint, OrbitHeight, 0 ) + + local Points = { PointFrom, PointTo } + + EscortGroup:OptionROEHoldFire() + EscortGroup:OptionROTPassiveDefense() + + EscortGroup:SetTask( EscortGroup:TaskRoute( Points ) ) + EscortGroup:MessageToClient( "Orbiting at location.", 10, EscortClient ) + +end + +--- @param #MENUPARAM MenuParam +function ESCORT._JoinUpAndFollow( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + self.Distance = MenuParam.ParamDistance + + self:JoinUpAndFollow( EscortGroup, EscortClient, self.Distance ) +end + +--- JoinsUp and Follows a CLIENT. +-- @param Escort#ESCORT self +-- @param Group#GROUP EscortGroup +-- @param Client#CLIENT EscortClient +-- @param DCSTypes#Distance Distance +function ESCORT:JoinUpAndFollow( EscortGroup, EscortClient, Distance ) + self:F( { EscortGroup, EscortClient, Distance } ) + + self.FollowScheduler:Stop() + + EscortGroup:OptionROEHoldFire() + EscortGroup:OptionROTPassiveDefense() + + self.EscortMode = ESCORT.MODE.FOLLOW + + self.CT1 = 0 + self.GT1 = 0 + self.FollowScheduler:Start() + + EscortGroup:MessageToClient( "Rejoining and Following at " .. Distance .. "!", 30, EscortClient ) +end + +--- @param #MENUPARAM MenuParam +function ESCORT._Flare( MenuParam ) + + 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 ) + + 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 ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + self:_ReportTargetsScheduler() + +end + +function ESCORT._SwitchReportNearbyTargets( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + self.ReportTargets = MenuParam.ParamReportTargets + + if self.ReportTargets then + if not self.ReportTargetsScheduler then + --self.ReportTargetsScheduler = routines.scheduleFunction( self._ReportTargetsScheduler, { self }, timer.getTime() + 1, 30 ) + self.ReportTargetsScheduler = SCHEDULER:New( self, self._ReportTargetsScheduler, {}, 1, 30 ) + end + else + routines.removeFunction( self.ReportTargetsScheduler ) + self.ReportTargetsScheduler = nil + end +end + +--- @param #MENUPARAM MenuParam +function ESCORT._ScanTargets( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + local ScanDuration = MenuParam.ParamScanDuration + + self.FollowScheduler:Stop() + + if EscortGroup:IsHelicopter() then + SCHEDULER:New( EscortGroup, 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 + ) + end + + EscortGroup:MessageToClient( "Scanning targets for " .. ScanDuration .. " seconds.", ScanDuration, EscortClient ) + + if self.EscortMode == ESCORT.MODE.FOLLOW then + self.FollowScheduler:Start() + end + +end + +--- @param Group#GROUP EscortGroup +function _Resume( EscortGroup ) + env.info( '_Resume' ) + + local Escort = EscortGroup:GetState( EscortGroup, "Escort" ) + env.info( "EscortMode = " .. Escort.EscortMode ) + if Escort.EscortMode == ESCORT.MODE.FOLLOW then + Escort:JoinUpAndFollow( EscortGroup, Escort.EscortClient, Escort.Distance ) + end + +end + +--- @param #MENUPARAM MenuParam +function ESCORT._AttackTarget( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + + local EscortClient = self.EscortClient + local AttackUnit = MenuParam.ParamUnit -- Unit#UNIT + + self.FollowScheduler:Stop() + + self:T( AttackUnit ) + + if EscortGroup:IsAir() then + EscortGroup:OptionROEOpenFire() + EscortGroup:OptionROTPassiveDefense() + EscortGroup:SetState( EscortGroup, "Escort", self ) +-- routines.scheduleFunction( +-- EscortGroup.PushTask, +-- { EscortGroup, +-- EscortGroup:TaskCombo( +-- { EscortGroup:TaskAttackUnit( AttackUnit ), +-- EscortGroup:TaskFunction( 1, 2, "_Resume", {"''"} ) +-- } +-- ) +-- }, timer.getTime() + 10 +-- ) + SCHEDULER:New( EscortGroup, + EscortGroup.PushTask, + { EscortGroup:TaskCombo( + { EscortGroup:TaskAttackUnit( AttackUnit ), + EscortGroup:TaskFunction( 1, 2, "_Resume", { "''" } ) + } + ) + }, 10 + ) + else +-- routines.scheduleFunction( +-- EscortGroup.PushTask, +-- { EscortGroup, +-- EscortGroup:TaskCombo( +-- { EscortGroup:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) +-- } +-- ) +-- }, timer.getTime() + 10 +-- ) + SCHEDULER:New( EscortGroup, + EscortGroup.PushTask, + { EscortGroup:TaskCombo( + { EscortGroup:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) + } + ) + }, 10 + ) + end + + EscortGroup:MessageToClient( "Engaging Designated Unit!", 10, EscortClient ) + +end + +--- @param #MENUPARAM MenuParam +function ESCORT._AssistTarget( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + local EscortGroupAttack = MenuParam.ParamEscortGroup + local AttackUnit = MenuParam.ParamUnit -- Unit#UNIT + + self.FollowScheduler:Stop() + + self:T( AttackUnit ) + + if EscortGroupAttack:IsAir() then + EscortGroupAttack:OptionROEOpenFire() + EscortGroupAttack:OptionROTVertical() +-- routines.scheduleFunction( +-- EscortGroupAttack.PushTask, +-- { EscortGroupAttack, +-- EscortGroupAttack:TaskCombo( +-- { EscortGroupAttack:TaskAttackUnit( AttackUnit ), +-- EscortGroupAttack:TaskOrbitCircle( 500, 350 ) +-- } +-- ) +-- }, timer.getTime() + 10 +-- ) + SCHDULER:New( EscortGroupAttack, + EscortGroupAttack.PushTask, + { EscortGroupAttack:TaskCombo( + { EscortGroupAttack:TaskAttackUnit( AttackUnit ), + EscortGroupAttack:TaskOrbitCircle( 500, 350 ) + } + ) + }, 10 + ) + else +-- routines.scheduleFunction( +-- EscortGroupAttack.PushTask, +-- { EscortGroupAttack, +-- EscortGroupAttack:TaskCombo( +-- { EscortGroupAttack:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) +-- } +-- ) +-- }, timer.getTime() + 10 +-- ) + SCHEDULER:New( EscortGroupAttack, + EscortGroupAttack.PushTask, + { EscortGroupAttack:TaskCombo( + { EscortGroupAttack:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) + } + ) + }, 10 + ) + end + EscortGroupAttack:MessageToClient( "Assisting with the destroying the enemy unit!", 10, EscortClient ) + +end + +--- @param #MENUPARAM MenuParam +function ESCORT._ROE( MenuParam ) + + 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 ) + + 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 ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + local WayPoint = MenuParam.ParamWayPoint + + self.FollowScheduler:Stop() + + local WayPoints = EscortGroup:GetTaskRoute() + self:T( WayPoint, WayPoints ) + + for WayPointIgnore = 1, WayPoint do + table.remove( WayPoints, 1 ) + end + + --routines.scheduleFunction( EscortGroup.SetTask, {EscortGroup, EscortGroup:TaskRoute( WayPoints ) }, timer.getTime() + 1 ) + SCHEDULER:New( EscortGroup, EscortGroup.SetTask, { EscortGroup:TaskRoute( WayPoints ) }, 1 ) + + EscortGroup:MessageToClient( "Resuming mission from waypoint " .. WayPoint .. ".", 10, EscortClient ) +end + +--- Registers the waypoints +-- @param #ESCORT self +-- @return #table +function ESCORT:RegisterRoute() + self:F() + + local EscortGroup = self.EscortGroup -- Group#GROUP + + local TaskPoints = EscortGroup:GetTaskRoute() + + self:T( TaskPoints ) + + return TaskPoints +end + +--- @param Escort#ESCORT self +function ESCORT:_FollowScheduler() + self:F( { self.FollowDistance } ) + + self:T( {self.EscortClient.UnitName, self.EscortGroup.GroupName } ) + if self.EscortGroup:IsAlive() and self.EscortClient:IsAlive() then + + local ClientUnit = self.EscortClient:GetClientGroupUnit() + local GroupUnit = self.EscortGroup:GetUnit( 1 ) + local FollowDistance = self.FollowDistance + + self:T( {ClientUnit.UnitName, GroupUnit.UnitName } ) + + if self.CT1 == 0 and self.GT1 == 0 then + self.CV1 = ClientUnit:GetPointVec3() + self:T( { "self.CV1", self.CV1 } ) + self.CT1 = timer.getTime() + self.GV1 = GroupUnit:GetPointVec3() + self.GT1 = timer.getTime() + else + local CT1 = self.CT1 + local CT2 = timer.getTime() + local CV1 = self.CV1 + local CV2 = ClientUnit:GetPointVec3() + self.CT1 = CT2 + self.CV1 = CV2 + + local CD = ( ( CV2.x - CV1.x )^2 + ( CV2.y - CV1.y )^2 + ( CV2.z - CV1.z )^2 ) ^ 0.5 + local CT = CT2 - CT1 + + local CS = ( 3600 / CT ) * ( CD / 1000 ) + + self:T2( { "Client:", CS, CD, CT, CV2, CV1, CT2, CT1 } ) + + local GT1 = self.GT1 + local GT2 = timer.getTime() + local GV1 = self.GV1 + local GV2 = GroupUnit:GetPointVec3() + self.GT1 = GT2 + self.GV1 = GV2 + + local GD = ( ( GV2.x - GV1.x )^2 + ( GV2.y - GV1.y )^2 + ( GV2.z - GV1.z )^2 ) ^ 0.5 + local GT = GT2 - GT1 + + local GS = ( 3600 / GT ) * ( GD / 1000 ) + + self:T2( { "Group:", GS, GD, GT, GV2, GV1, GT2, GT1 } ) + + -- Calculate the group direction vector + local GV = { x = GV2.x - CV2.x, y = GV2.y - CV2.y, z = GV2.z - CV2.z } + + -- Calculate GH2, GH2 with the same height as CV2. + local GH2 = { x = GV2.x, y = CV2.y, z = GV2.z } + + -- Calculate the angle of GV to the orthonormal plane + local alpha = math.atan2( GV.z, GV.x ) + + -- Now we calculate the intersecting vector between the circle around CV2 with radius FollowDistance and GH2. + -- From the GeoGebra model: CVI = (x(CV2) + FollowDistance cos(alpha), y(GH2) + FollowDistance sin(alpha), z(CV2)) + local CVI = { x = CV2.x + FollowDistance * math.cos(alpha), + y = GH2.y, + z = CV2.z + FollowDistance * math.sin(alpha), + } + + -- Calculate the direction vector DV of the escort group. We use CVI as the base and CV2 as the direction. + local DV = { x = CV2.x - CVI.x, y = CV2.y - CVI.y, z = CV2.z - CVI.z } + + -- We now calculate the unary direction vector DVu, so that we can multiply DVu with the speed, which is expressed in meters / s. + -- We need to calculate this vector to predict the point the escort group needs to fly to according its speed. + -- The distance of the destination point should be far enough not to have the aircraft starting to swipe left to right... + local DVu = { x = DV.x / FollowDistance, y = DV.y / FollowDistance, z = DV.z / FollowDistance } + + -- Now we can calculate the group destination vector GDV. + local GDV = { x = DVu.x * CS * 8 + CVI.x, y = CVI.y, z = DVu.z * CS * 8 + CVI.z } + + if self.SmokeDirectionVector == true then + trigger.action.smoke( GDV, trigger.smokeColor.Red ) + end + + self:T2( { "CV2:", CV2 } ) + self:T2( { "CVI:", CVI } ) + self:T2( { "GDV:", GDV } ) + + -- Measure distance between client and group + local CatchUpDistance = ( ( GDV.x - GV2.x )^2 + ( GDV.y - GV2.y )^2 + ( GDV.z - GV2.z )^2 ) ^ 0.5 + + -- The calculation of the Speed would simulate that the group would take 30 seconds to overcome + -- the requested Distance). + local Time = 10 + local CatchUpSpeed = ( CatchUpDistance - ( CS * 8.4 ) ) / Time + + local Speed = CS + CatchUpSpeed + if Speed < 0 then + Speed = 0 + end + + self:T( { "Client Speed, Escort Speed, Speed, FollowDistance, Time:", CS, GS, Speed, FollowDistance, Time } ) + + -- Now route the escort to the desired point with the desired speed. + self.EscortGroup:TaskRouteToVec3( GDV, Speed / 3.6 ) -- DCS models speed in Mps (Miles per second) + end + + return true + end + + return false +end + + +--- Report Targets Scheduler. +-- @param #ESCORT self +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 + + 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 EscortTargetUnitPositionVec3 = EscortTargetUnit:GetPointVec3() + local EscortPositionVec3 = self.EscortGroup:GetPointVec3() + local Distance = ( ( EscortTargetUnitPositionVec3.x - EscortPositionVec3.x )^2 + + ( EscortTargetUnitPositionVec3.y - EscortPositionVec3.y )^2 + + ( EscortTargetUnitPositionVec3.z - EscortPositionVec3.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 EscortTargetUnitPositionVec3 = ClientEscortTargetData.AttackUnit:GetPointVec3() + local EscortPositionVec3 = self.EscortGroup:GetPointVec3() + local Distance = ( ( EscortTargetUnitPositionVec3.x - EscortPositionVec3.x )^2 + + ( EscortTargetUnitPositionVec3.y - EscortPositionVec3.y )^2 + + ( EscortTargetUnitPositionVec3.z - EscortPositionVec3.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 + 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 EscortPositionVec3 = self.EscortGroup:GetPointVec3() + local Distance = ( ( WayPoint.x - EscortPositionVec3.x )^2 + + ( WayPoint.y - EscortPositionVec3.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 +end +--- This module contains the MISSILETRAINER class. +-- +-- === +-- +-- 1) @{MissileTrainer#MISSILETRAINER} class, extends @{Base#BASE} +-- =============================================================== +-- The @{#MISSILETRAINER} class uses the DCS world messaging system to be alerted of any missiles fired, and when a missile would hit your aircraft, +-- the class will destroy the missile within a certain range, to avoid damage to your aircraft. +-- It suports the following functionality: +-- +-- * Track the missiles fired at you and other players, providing bearing and range information of the missiles towards the airplanes. +-- * Provide alerts of missile launches, including detailed information of the units launching, including bearing, range … +-- * Provide alerts when a missile would have killed your aircraft. +-- * Provide alerts when the missile self destructs. +-- * Enable / Disable and Configure the Missile Trainer using the various menu options. +-- +-- When running a mission where MISSILETRAINER is used, the following radio menu structure ( 'Radio Menu' -> 'Other (F10)' -> 'MissileTrainer' ) options are available for the players: +-- +-- * **Messages**: Menu to configure all messages. +-- * **Messages On**: Show all messages. +-- * **Messages Off**: Disable all messages. +-- * **Tracking**: Menu to configure missile tracking messages. +-- * **To All**: Shows missile tracking messages to all players. +-- * **To Target**: Shows missile tracking messages only to the player where the missile is targetted at. +-- * **Tracking On**: Show missile tracking messages. +-- * **Tracking Off**: Disable missile tracking messages. +-- * **Frequency Increase**: Increases the missile tracking message frequency with one second. +-- * **Frequency Decrease**: Decreases the missile tracking message frequency with one second. +-- * **Alerts**: Menu to configure alert messages. +-- * **To All**: Shows alert messages to all players. +-- * **To Target**: Shows alert messages only to the player where the missile is (was) targetted at. +-- * **Hits On**: Show missile hit alert messages. +-- * **Hits Off**: Disable missile hit alert messages. +-- * **Launches On**: Show missile launch messages. +-- * **Launches Off**: Disable missile launch messages. +-- * **Details**: Menu to configure message details. +-- * **Range On**: Shows range information when a missile is fired to a target. +-- * **Range Off**: Disable range information when a missile is fired to a target. +-- * **Bearing On**: Shows bearing information when a missile is fired to a target. +-- * **Bearing Off**: Disable bearing information when a missile is fired to a target. +-- * **Distance**: Menu to configure the distance when a missile needs to be destroyed when near to a player, during tracking. This will improve/influence hit calculation accuracy, but has the risk of damaging the aircraft when the missile reaches the aircraft before the distance is measured. +-- * **50 meter**: Destroys the missile when the distance to the aircraft is below or equal to 50 meter. +-- * **100 meter**: Destroys the missile when the distance to the aircraft is below or equal to 100 meter. +-- * **150 meter**: Destroys the missile when the distance to the aircraft is below or equal to 150 meter. +-- * **200 meter**: Destroys the missile when the distance to the aircraft is below or equal to 200 meter. +-- +-- +-- 1.1) MISSILETRAINER construction methods: +-- ----------------------------------------- +-- Create a new MISSILETRAINER object with the @{#MISSILETRAINER.New} method: +-- +-- * @{#MISSILETRAINER.New}: Creates a new MISSILETRAINER object taking the maximum distance to your aircraft to evaluate when a missile needs to be destroyed. +-- +-- MISSILETRAINER will collect each unit declared in the mission with a skill level "Client" and "Player", and will monitor the missiles shot at those. +-- +-- 1.2) MISSILETRAINER initialization methods: +-- ------------------------------------------- +-- A MISSILETRAINER object will behave differently based on the usage of initialization methods: +-- +-- * @{#MISSILETRAINER.InitMessagesOnOff}: Sets by default the display of any message to be ON or OFF. +-- * @{#MISSILETRAINER.InitTrackingToAll}: Sets by default the missile tracking report for all players or only for those missiles targetted to you. +-- * @{#MISSILETRAINER.InitTrackingOnOff}: Sets by default the display of missile tracking report to be ON or OFF. +-- * @{#MISSILETRAINER.InitTrackingFrequency}: Increases, decreases the missile tracking message display frequency with the provided time interval in seconds. +-- * @{#MISSILETRAINER.InitAlertsToAll}: Sets by default the display of alerts to be shown to all players or only to you. +-- * @{#MISSILETRAINER.InitAlertsHitsOnOff}: Sets by default the display of hit alerts ON or OFF. +-- * @{#MISSILETRAINER.InitAlertsLaunchesOnOff}: Sets by default the display of launch alerts ON or OFF. +-- * @{#MISSILETRAINER.InitRangeOnOff}: Sets by default the display of range information of missiles ON of OFF. +-- * @{#MISSILETRAINER.InitBearingOnOff}: Sets by default the display of bearing information of missiles ON of OFF. +-- * @{#MISSILETRAINER.InitMenusOnOff}: Allows to configure the options through the radio menu. +-- +-- === +-- +-- CREDITS +-- ======= +-- **Stuka (Danny)** Who you can search on the Eagle Dynamics Forums. +-- Working together with Danny has resulted in the MISSILETRAINER class. +-- Danny has shared his ideas and together we made a design. +-- Together with the **476 virtual team**, we tested the MISSILETRAINER class, and got much positive feedback! +-- +-- @module MissileTrainer +-- @author FlightControl + + +--- The MISSILETRAINER class +-- @type MISSILETRAINER +-- @field Set#SET_CLIENT DBClients +-- @extends Base#BASE +MISSILETRAINER = { + ClassName = "MISSILETRAINER", + TrackingMissiles = {}, +} + +function MISSILETRAINER._Alive( Client, self ) + + if self.Briefing then + Client:Message( self.Briefing, 15, "Trainer" ) + end + + if self.MenusOnOff == true then + Client:Message( "Use the 'Radio Menu' -> 'Other (F10)' -> 'Missile Trainer' menu options to change the Missile Trainer settings (for all players).", 15, "Trainer" ) + + Client.MainMenu = MENU_CLIENT:New( Client, "Missile Trainer", nil ) -- Menu#MENU_CLIENT + + Client.MenuMessages = MENU_CLIENT:New( Client, "Messages", Client.MainMenu ) + Client.MenuOn = MENU_CLIENT_COMMAND:New( Client, "Messages On", Client.MenuMessages, self._MenuMessages, { MenuSelf = self, MessagesOnOff = true } ) + Client.MenuOff = MENU_CLIENT_COMMAND:New( Client, "Messages Off", Client.MenuMessages, self._MenuMessages, { MenuSelf = self, MessagesOnOff = false } ) + + Client.MenuTracking = MENU_CLIENT:New( Client, "Tracking", Client.MainMenu ) + Client.MenuTrackingToAll = MENU_CLIENT_COMMAND:New( Client, "To All", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingToAll = true } ) + Client.MenuTrackingToTarget = MENU_CLIENT_COMMAND:New( Client, "To Target", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingToAll = false } ) + Client.MenuTrackOn = MENU_CLIENT_COMMAND:New( Client, "Tracking On", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingOnOff = true } ) + Client.MenuTrackOff = MENU_CLIENT_COMMAND:New( Client, "Tracking Off", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingOnOff = false } ) + Client.MenuTrackIncrease = MENU_CLIENT_COMMAND:New( Client, "Frequency Increase", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingFrequency = -1 } ) + Client.MenuTrackDecrease = MENU_CLIENT_COMMAND:New( Client, "Frequency Decrease", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingFrequency = 1 } ) + + Client.MenuAlerts = MENU_CLIENT:New( Client, "Alerts", Client.MainMenu ) + Client.MenuAlertsToAll = MENU_CLIENT_COMMAND:New( Client, "To All", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsToAll = true } ) + Client.MenuAlertsToTarget = MENU_CLIENT_COMMAND:New( Client, "To Target", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsToAll = false } ) + Client.MenuHitsOn = MENU_CLIENT_COMMAND:New( Client, "Hits On", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsHitsOnOff = true } ) + Client.MenuHitsOff = MENU_CLIENT_COMMAND:New( Client, "Hits Off", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsHitsOnOff = false } ) + Client.MenuLaunchesOn = MENU_CLIENT_COMMAND:New( Client, "Launches On", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsLaunchesOnOff = true } ) + Client.MenuLaunchesOff = MENU_CLIENT_COMMAND:New( Client, "Launches Off", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsLaunchesOnOff = false } ) + + Client.MenuDetails = MENU_CLIENT:New( Client, "Details", Client.MainMenu ) + Client.MenuDetailsDistanceOn = MENU_CLIENT_COMMAND:New( Client, "Range On", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsRangeOnOff = true } ) + Client.MenuDetailsDistanceOff = MENU_CLIENT_COMMAND:New( Client, "Range Off", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsRangeOnOff = false } ) + Client.MenuDetailsBearingOn = MENU_CLIENT_COMMAND:New( Client, "Bearing On", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsBearingOnOff = true } ) + Client.MenuDetailsBearingOff = MENU_CLIENT_COMMAND:New( Client, "Bearing Off", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsBearingOnOff = false } ) + + Client.MenuDistance = MENU_CLIENT:New( Client, "Set distance to plane", Client.MainMenu ) + Client.MenuDistance50 = MENU_CLIENT_COMMAND:New( Client, "50 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 50 / 1000 } ) + Client.MenuDistance100 = MENU_CLIENT_COMMAND:New( Client, "100 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 100 / 1000 } ) + Client.MenuDistance150 = MENU_CLIENT_COMMAND:New( Client, "150 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 150 / 1000 } ) + Client.MenuDistance200 = MENU_CLIENT_COMMAND:New( Client, "200 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 200 / 1000 } ) + else + if Client.MainMenu then + Client.MainMenu:Remove() + end + end + + local ClientID = Client:GetID() + self:T( ClientID ) + if not self.TrackingMissiles[ClientID] then + self.TrackingMissiles[ClientID] = {} + end + self.TrackingMissiles[ClientID].Client = Client + if not self.TrackingMissiles[ClientID].MissileData then + self.TrackingMissiles[ClientID].MissileData = {} + end +end + +--- Creates the main object which is handling missile tracking. +-- When a missile is fired a SCHEDULER is set off that follows the missile. When near a certain a client player, the missile will be destroyed. +-- @param #MISSILETRAINER self +-- @param #number Distance The distance in meters when a tracked missile needs to be destroyed when close to a player. +-- @param #string Briefing (Optional) Will show a text to the players when starting their mission. Can be used for briefing purposes. +-- @return #MISSILETRAINER +function MISSILETRAINER:New( Distance, Briefing ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( Distance ) + + if Briefing then + self.Briefing = Briefing + end + + self.Schedulers = {} + self.SchedulerID = 0 + + self.MessageInterval = 2 + self.MessageLastTime = timer.getTime() + + self.Distance = Distance / 1000 + + _EVENTDISPATCHER:OnShot( self._EventShot, self ) + + self.DBClients = SET_CLIENT:New():FilterStart() + + +-- for ClientID, Client in pairs( self.DBClients.Database ) do +-- self:E( "ForEach:" .. Client.UnitName ) +-- Client:Alive( self._Alive, self ) +-- end +-- + self.DBClients:ForEachClient( + function( Client ) + self:E( "ForEach:" .. Client.UnitName ) + Client:Alive( self._Alive, self ) + end + ) + + + +-- self.DB:ForEachClient( +-- --- @param Client#CLIENT Client +-- function( Client ) +-- +-- ... actions ... +-- +-- end +-- ) + + self.MessagesOnOff = true + + self.TrackingToAll = false + self.TrackingOnOff = true + self.TrackingFrequency = 3 + + self.AlertsToAll = true + self.AlertsHitsOnOff = true + self.AlertsLaunchesOnOff = true + + self.DetailsRangeOnOff = true + self.DetailsBearingOnOff = true + + self.MenusOnOff = true + + self.TrackingMissiles = {} + + self.TrackingScheduler = SCHEDULER:New( self, self._TrackMissiles, {}, 0.5, 0.05, 0 ) + + return self +end + +-- Initialization methods. + + + +--- Sets by default the display of any message to be ON or OFF. +-- @param #MISSILETRAINER self +-- @param #boolean MessagesOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitMessagesOnOff( MessagesOnOff ) + self:F( MessagesOnOff ) + + self.MessagesOnOff = MessagesOnOff + if self.MessagesOnOff == true then + MESSAGE:New( "Messages ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Messages OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the missile tracking report for all players or only for those missiles targetted to you. +-- @param #MISSILETRAINER self +-- @param #boolean TrackingToAll true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitTrackingToAll( TrackingToAll ) + self:F( TrackingToAll ) + + self.TrackingToAll = TrackingToAll + if self.TrackingToAll == true then + MESSAGE:New( "Missile tracking to all players ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Missile tracking to all players OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the display of missile tracking report to be ON or OFF. +-- @param #MISSILETRAINER self +-- @param #boolean TrackingOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitTrackingOnOff( TrackingOnOff ) + self:F( TrackingOnOff ) + + self.TrackingOnOff = TrackingOnOff + if self.TrackingOnOff == true then + MESSAGE:New( "Missile tracking ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Missile tracking OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Increases, decreases the missile tracking message display frequency with the provided time interval in seconds. +-- The default frequency is a 3 second interval, so the Tracking Frequency parameter specifies the increase or decrease from the default 3 seconds or the last frequency update. +-- @param #MISSILETRAINER self +-- @param #number TrackingFrequency Provide a negative or positive value in seconds to incraese or decrease the display frequency. +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitTrackingFrequency( TrackingFrequency ) + self:F( TrackingFrequency ) + + self.TrackingFrequency = self.TrackingFrequency + TrackingFrequency + if self.TrackingFrequency < 0.5 then + self.TrackingFrequency = 0.5 + end + if self.TrackingFrequency then + MESSAGE:New( "Missile tracking frequency is " .. self.TrackingFrequency .. " seconds.", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the display of alerts to be shown to all players or only to you. +-- @param #MISSILETRAINER self +-- @param #boolean AlertsToAll true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitAlertsToAll( AlertsToAll ) + self:F( AlertsToAll ) + + self.AlertsToAll = AlertsToAll + if self.AlertsToAll == true then + MESSAGE:New( "Alerts to all players ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Alerts to all players OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the display of hit alerts ON or OFF. +-- @param #MISSILETRAINER self +-- @param #boolean AlertsHitsOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitAlertsHitsOnOff( AlertsHitsOnOff ) + self:F( AlertsHitsOnOff ) + + self.AlertsHitsOnOff = AlertsHitsOnOff + if self.AlertsHitsOnOff == true then + MESSAGE:New( "Alerts Hits ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Alerts Hits OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the display of launch alerts ON or OFF. +-- @param #MISSILETRAINER self +-- @param #boolean AlertsLaunchesOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitAlertsLaunchesOnOff( AlertsLaunchesOnOff ) + self:F( AlertsLaunchesOnOff ) + + self.AlertsLaunchesOnOff = AlertsLaunchesOnOff + if self.AlertsLaunchesOnOff == true then + MESSAGE:New( "Alerts Launches ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Alerts Launches OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the display of range information of missiles ON of OFF. +-- @param #MISSILETRAINER self +-- @param #boolean DetailsRangeOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitRangeOnOff( DetailsRangeOnOff ) + self:F( DetailsRangeOnOff ) + + self.DetailsRangeOnOff = DetailsRangeOnOff + if self.DetailsRangeOnOff == true then + MESSAGE:New( "Range display ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Range display OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the display of bearing information of missiles ON of OFF. +-- @param #MISSILETRAINER self +-- @param #boolean DetailsBearingOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitBearingOnOff( DetailsBearingOnOff ) + self:F( DetailsBearingOnOff ) + + self.DetailsBearingOnOff = DetailsBearingOnOff + if self.DetailsBearingOnOff == true then + MESSAGE:New( "Bearing display OFF", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Bearing display OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Enables / Disables the menus. +-- @param #MISSILETRAINER self +-- @param #boolean MenusOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitMenusOnOff( MenusOnOff ) + self:F( MenusOnOff ) + + self.MenusOnOff = MenusOnOff + if self.MenusOnOff == true then + MESSAGE:New( "Menus are ENABLED (only when a player rejoins a slot)", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Menus are DISABLED", 15, "Menu" ):ToAll() + end + + return self +end + + +-- Menu functions + +function MISSILETRAINER._MenuMessages( MenuParameters ) + + local self = MenuParameters.MenuSelf + + if MenuParameters.MessagesOnOff ~= nil then + self:InitMessagesOnOff( MenuParameters.MessagesOnOff ) + end + + if MenuParameters.TrackingToAll ~= nil then + self:InitTrackingToAll( MenuParameters.TrackingToAll ) + end + + if MenuParameters.TrackingOnOff ~= nil then + self:InitTrackingOnOff( MenuParameters.TrackingOnOff ) + end + + if MenuParameters.TrackingFrequency ~= nil then + self:InitTrackingFrequency( MenuParameters.TrackingFrequency ) + end + + if MenuParameters.AlertsToAll ~= nil then + self:InitAlertsToAll( MenuParameters.AlertsToAll ) + end + + if MenuParameters.AlertsHitsOnOff ~= nil then + self:InitAlertsHitsOnOff( MenuParameters.AlertsHitsOnOff ) + end + + if MenuParameters.AlertsLaunchesOnOff ~= nil then + self:InitAlertsLaunchesOnOff( MenuParameters.AlertsLaunchesOnOff ) + end + + if MenuParameters.DetailsRangeOnOff ~= nil then + self:InitRangeOnOff( MenuParameters.DetailsRangeOnOff ) + end + + if MenuParameters.DetailsBearingOnOff ~= nil then + self:InitBearingOnOff( MenuParameters.DetailsBearingOnOff ) + end + + if MenuParameters.Distance ~= nil then + self.Distance = MenuParameters.Distance + MESSAGE:New( "Hit detection distance set to " .. self.Distance .. " meters", 15, "Menu" ):ToAll() + end + +end + +--- 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. +-- @param #MISSILETRAINER self +-- @param Event#EVENTDATA Event +function MISSILETRAINER:_EventShot( Event ) + self:F( { Event } ) + + local TrainerSourceDCSUnit = Event.IniDCSUnit + local TrainerSourceDCSUnitName = Event.IniDCSUnitName + local TrainerWeapon = Event.Weapon -- Identify the weapon fired + local TrainerWeaponName = Event.WeaponName -- return weapon type + + self:T( "Missile Launched = " .. TrainerWeaponName ) + + local TrainerTargetDCSUnit = TrainerWeapon:getTarget() -- Identify target + local TrainerTargetDCSUnitName = Unit.getName( TrainerTargetDCSUnit ) + local TrainerTargetSkill = _DATABASE.Templates.Units[TrainerTargetDCSUnitName].Template.skill + + self:T(TrainerTargetDCSUnitName ) + + local Client = self.DBClients:FindClient( TrainerTargetDCSUnitName ) + if Client then + + local TrainerSourceUnit = UNIT:Find( TrainerSourceDCSUnit ) + local TrainerTargetUnit = UNIT:Find( TrainerTargetDCSUnit ) + + if self.MessagesOnOff == true and self.AlertsLaunchesOnOff == true then + + local Message = MESSAGE:New( + string.format( "%s launched a %s", + TrainerSourceUnit:GetTypeName(), + TrainerWeaponName + ) .. self:_AddRange( Client, TrainerWeapon ) .. self:_AddBearing( Client, TrainerWeapon ), 5, "Launch Alert" ) + + if self.AlertsToAll then + Message:ToAll() + else + Message:ToClient( Client ) + end + end + + local ClientID = Client:GetID() + self:T( ClientID ) + local MissileData = {} + MissileData.TrainerSourceUnit = TrainerSourceUnit + MissileData.TrainerWeapon = TrainerWeapon + MissileData.TrainerTargetUnit = TrainerTargetUnit + MissileData.TrainerWeaponTypeName = TrainerWeapon:getTypeName() + MissileData.TrainerWeaponLaunched = true + table.insert( self.TrackingMissiles[ClientID].MissileData, MissileData ) + --self:T( self.TrackingMissiles ) + end +end + +function MISSILETRAINER:_AddRange( Client, TrainerWeapon ) + + local RangeText = "" + + if self.DetailsRangeOnOff then + + local PositionMissile = TrainerWeapon:getPoint() + local PositionTarget = Client:GetPointVec3() + + local Range = ( ( PositionMissile.x - PositionTarget.x )^2 + + ( PositionMissile.y - PositionTarget.y )^2 + + ( PositionMissile.z - PositionTarget.z )^2 + ) ^ 0.5 / 1000 + + RangeText = string.format( ", at %4.2fkm", Range ) + end + + return RangeText +end + +function MISSILETRAINER:_AddBearing( Client, TrainerWeapon ) + + local BearingText = "" + + if self.DetailsBearingOnOff then + + local PositionMissile = TrainerWeapon:getPoint() + local PositionTarget = Client:GetPointVec3() + + self:T2( { PositionTarget, PositionMissile }) + + local DirectionVector = { x = PositionMissile.x - PositionTarget.x, y = PositionMissile.y - PositionTarget.y, z = PositionMissile.z - PositionTarget.z } + local DirectionRadians = math.atan2( DirectionVector.z, DirectionVector.x ) + --DirectionRadians = DirectionRadians + routines.getNorthCorrection( PositionTarget ) + if DirectionRadians < 0 then + DirectionRadians = DirectionRadians + 2 * math.pi + end + local DirectionDegrees = DirectionRadians * 180 / math.pi + + BearingText = string.format( ", %d degrees", DirectionDegrees ) + end + + return BearingText +end + + +function MISSILETRAINER:_TrackMissiles() + self:F2() + + + local ShowMessages = false + if self.MessagesOnOff and self.MessageLastTime + self.TrackingFrequency <= timer.getTime() then + self.MessageLastTime = timer.getTime() + ShowMessages = true + end + + -- ALERTS PART + + -- Loop for all Player Clients to check the alerts and deletion of missiles. + for ClientDataID, ClientData in pairs( self.TrackingMissiles ) do + + local Client = ClientData.Client + self:T2( { Client:GetName() } ) + + for MissileDataID, MissileData in pairs( ClientData.MissileData ) do + self:T3( MissileDataID ) + + local TrainerSourceUnit = MissileData.TrainerSourceUnit + local TrainerWeapon = MissileData.TrainerWeapon + local TrainerTargetUnit = MissileData.TrainerTargetUnit + local TrainerWeaponTypeName = MissileData.TrainerWeaponTypeName + local TrainerWeaponLaunched = MissileData.TrainerWeaponLaunched + + if Client and Client:IsAlive() and TrainerSourceUnit and TrainerSourceUnit:IsAlive() and TrainerWeapon and TrainerWeapon:isExist() and TrainerTargetUnit and TrainerTargetUnit:IsAlive() then + local PositionMissile = TrainerWeapon:getPosition().p + local PositionTarget = Client:GetPointVec3() + + local Distance = ( ( PositionMissile.x - PositionTarget.x )^2 + + ( PositionMissile.y - PositionTarget.y )^2 + + ( PositionMissile.z - PositionTarget.z )^2 + ) ^ 0.5 / 1000 + + if Distance <= self.Distance then + -- Hit alert + TrainerWeapon:destroy() + if self.MessagesOnOff == true and self.AlertsHitsOnOff == true then + + self:T( "killed" ) + + local Message = MESSAGE:New( + string.format( "%s launched by %s killed %s", + TrainerWeapon:getTypeName(), + TrainerSourceUnit:GetTypeName(), + TrainerTargetUnit:GetPlayerName() + ), 15, "Hit Alert" ) + + if self.AlertsToAll == true then + Message:ToAll() + else + Message:ToClient( Client ) + end + + MissileData = nil + table.remove( ClientData.MissileData, MissileDataID ) + self:T(ClientData.MissileData) + end + end + else + if not ( TrainerWeapon and TrainerWeapon:isExist() ) then + if self.MessagesOnOff == true and self.AlertsLaunchesOnOff == true then + -- Weapon does not exist anymore. Delete from Table + local Message = MESSAGE:New( + string.format( "%s launched by %s self destructed!", + TrainerWeaponTypeName, + TrainerSourceUnit:GetTypeName() + ), 5, "Tracking" ) + + if self.AlertsToAll == true then + Message:ToAll() + else + Message:ToClient( Client ) + end + end + MissileData = nil + table.remove( ClientData.MissileData, MissileDataID ) + self:T( ClientData.MissileData ) + end + end + end + end + + if ShowMessages == true and self.MessagesOnOff == true and self.TrackingOnOff == true then -- Only do this when tracking information needs to be displayed. + + -- TRACKING PART + + -- For the current client, the missile range and bearing details are displayed To the Player Client. + -- For the other clients, the missile range and bearing details are displayed To the other Player Clients. + -- To achieve this, a cross loop is done for each Player Client <-> Other Player Client missile information. + + -- Main Player Client loop + for ClientDataID, ClientData in pairs( self.TrackingMissiles ) do + + local Client = ClientData.Client + self:T2( { Client:GetName() } ) + + + ClientData.MessageToClient = "" + ClientData.MessageToAll = "" + + -- Other Players Client loop + for TrackingDataID, TrackingData in pairs( self.TrackingMissiles ) do + + for MissileDataID, MissileData in pairs( TrackingData.MissileData ) do + self:T3( MissileDataID ) + + local TrainerSourceUnit = MissileData.TrainerSourceUnit + local TrainerWeapon = MissileData.TrainerWeapon + local TrainerTargetUnit = MissileData.TrainerTargetUnit + local TrainerWeaponTypeName = MissileData.TrainerWeaponTypeName + local TrainerWeaponLaunched = MissileData.TrainerWeaponLaunched + + if Client and Client:IsAlive() and TrainerSourceUnit and TrainerSourceUnit:IsAlive() and TrainerWeapon and TrainerWeapon:isExist() and TrainerTargetUnit and TrainerTargetUnit:IsAlive() then + + if ShowMessages == true then + local TrackingTo + TrackingTo = string.format( " -> %s", + TrainerWeaponTypeName + ) + + if ClientDataID == TrackingDataID then + if ClientData.MessageToClient == "" then + ClientData.MessageToClient = "Missiles to You:\n" + end + ClientData.MessageToClient = ClientData.MessageToClient .. TrackingTo .. self:_AddRange( ClientData.Client, TrainerWeapon ) .. self:_AddBearing( ClientData.Client, TrainerWeapon ) .. "\n" + else + if self.TrackingToAll == true then + if ClientData.MessageToAll == "" then + ClientData.MessageToAll = "Missiles to other Players:\n" + end + ClientData.MessageToAll = ClientData.MessageToAll .. TrackingTo .. self:_AddRange( ClientData.Client, TrainerWeapon ) .. self:_AddBearing( ClientData.Client, TrainerWeapon ) .. " ( " .. TrainerTargetUnit:GetPlayerName() .. " )\n" + end + end + end + end + end + end + + -- Once the Player Client and the Other Player Client tracking messages are prepared, show them. + if ClientData.MessageToClient ~= "" or ClientData.MessageToAll ~= "" then + local Message = MESSAGE:New( ClientData.MessageToClient .. ClientData.MessageToAll, 1, "Tracking" ):ToClient( Client ) + end + end + end + + return true +end +--- This module contains the PATROLZONE class. +-- +-- === +-- +-- 1) @{Patrol#PATROLZONE} class, extends @{Base#BASE} +-- =================================================== +-- The @{Patrol#PATROLZONE} class implements the core functions to patrol a @{Zone}. +-- +-- 1.1) PATROLZONE constructor: +-- ---------------------------- +-- @{PatrolZone#PATROLZONE.New}(): Creates a new PATROLZONE object. +-- +-- 1.2) Modify the PATROLZONE parameters: +-- -------------------------------------- +-- The following methods are available to modify the parameters of a PATROLZONE object: +-- +-- * @{PatrolZone#PATROLZONE.SetGroup}(): Set the AI Patrol Group. +-- * @{PatrolZone#PATROLZONE.SetSpeed}(): Set the patrol speed of the AI, for the next patrol. +-- * @{PatrolZone#PATROLZONE.SetAltitude}(): Set altitude of the AI, for the next patrol. +-- +-- 1.3) Manage the out of fuel in the PATROLZONE: +-- ---------------------------------------------- +-- When the PatrolGroup is out of fuel, it is required that a new PatrolGroup is started, before the old PatrolGroup can return to the home base. +-- Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. +-- When the fuel treshold is reached, the PatrolGroup will continue for a given time its patrol task in orbit, while a new PatrolGroup is targetted to the PATROLZONE. +-- Once the time is finished, the old PatrolGroup will return to the base. +-- Use the method @{PatrolZone#PATROLZONE.ManageFuel}() to have this proces in place. +-- +-- === +-- +-- @module PatrolZone +-- @author FlightControl + + +--- PATROLZONE class +-- @type PATROLZONE +-- @field Group#GROUP PatrolGroup The @{Group} patrolling. +-- @field Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. +-- @field DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. +-- @field DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. +-- @field DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Group} in km/h. +-- @field DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Group} in km/h. +-- @extends Base#BASE +PATROLZONE = { + ClassName = "PATROLZONE", +} + +--- Creates a new PATROLZONE object, taking a @{Group} object as a parameter. The GROUP needs to be alive. +-- @param #PATROLZONE self +-- @param Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. +-- @param DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. +-- @param DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. +-- @param DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Group} in km/h. +-- @param DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Group} in km/h. +-- @return #PATROLZONE self +-- @usage +-- -- Define a new PATROLZONE Object. This PatrolArea will patrol a group within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h. +-- PatrolZone = ZONE:New( 'PatrolZone' ) +-- PatrolGroup = GROUP:FindByName( "Patrol Group" ) +-- PatrolArea = PATROLZONE:New( PatrolGroup, PatrolZone, 3000, 6000, 600, 900 ) +function PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + self.PatrolZone = PatrolZone + self.PatrolFloorAltitude = PatrolFloorAltitude + self.PatrolCeilingAltitude = PatrolCeilingAltitude + self.PatrolMinSpeed = PatrolMinSpeed + self.PatrolMaxSpeed = PatrolMaxSpeed + + return self +end + +--- Set the @{Group} to act as the Patroller. +-- @param #PATROLZONE self +-- @param Group#GROUP PatrolGroup The @{Group} patrolling. +-- @return #PATROLZONE self +function PATROLZONE:SetGroup( PatrolGroup ) + + self.PatrolGroup = PatrolGroup + self.PatrolGroupTemplateName = PatrolGroup:GetName() + self:NewPatrolRoute() + + if not self.PatrolOutOfFuelMonitor then + self.PatrolOutOfFuelMonitor = SCHEDULER:New( nil, _MonitorOutOfFuelScheduled, { self }, 1, 120, 0 ) + self.SpawnPatrolGroup = SPAWN:New( self.PatrolGroupTemplateName ) + end + + return self +end + +--- Sets (modifies) the minimum and maximum speed of the patrol. +-- @param #PATROLZONE self +-- @param DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Group} in km/h. +-- @param DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Group} in km/h. +-- @return #PATROLZONE self +function PATROLZONE:SetSpeed( PatrolMinSpeed, PatrolMaxSpeed ) + self:F2( { PatrolMinSpeed, PatrolMaxSpeed } ) + + self.PatrolMinSpeed = PatrolMinSpeed + self.PatrolMaxSpeed = PatrolMaxSpeed +end + +--- Sets the floor and ceiling altitude of the patrol. +-- @param #PATROLZONE self +-- @param DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. +-- @param DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. +-- @return #PATROLZONE self +function PATROLZONE:SetAltitude( PatrolFloorAltitude, PatrolCeilingAltitude ) + self:F2( { PatrolFloorAltitude, PatrolCeilingAltitude } ) + + self.PatrolFloorAltitude = PatrolFloorAltitude + self.PatrolCeilingAltitude = PatrolCeilingAltitude +end + + + +--- @param Group#GROUP PatrolGroup +function _NewPatrolRoute( PatrolGroup ) + + PatrolGroup:T( "NewPatrolRoute" ) + local PatrolZone = PatrolGroup:GetState( PatrolGroup, "PatrolZone" ) -- PatrolZone#PATROLZONE + PatrolZone:NewPatrolRoute() +end + +--- Defines a new patrol route using the @{PatrolZone} parameters and settings. +-- @param #PATROLZONE self +-- @return #PATROLZONE self +function PATROLZONE:NewPatrolRoute() + + self:F2() + + local PatrolRoute = {} + + if self.PatrolGroup:IsAlive() then + --- Determine if the PatrolGroup is within the PatrolZone. + -- If not, make a waypoint within the to that the PatrolGroup will fly at maximum speed to that point. + +-- --- Calculate the current route point. +-- local CurrentVec2 = self.PatrolGroup:GetPointVec2() +-- local CurrentAltitude = self.PatrolGroup:GetUnit(1):GetAltitude() +-- local CurrentPointVec3 = POINT_VEC3:New( CurrentVec2.x, CurrentAltitude, CurrentVec2.y ) +-- local CurrentRoutePoint = CurrentPointVec3:RoutePointAir( +-- POINT_VEC3.RoutePointAltType.BARO, +-- POINT_VEC3.RoutePointType.TurningPoint, +-- POINT_VEC3.RoutePointAction.TurningPoint, +-- ToPatrolZoneSpeed, +-- true +-- ) +-- +-- PatrolRoute[#PatrolRoute+1] = CurrentRoutePoint + + self:T2( PatrolRoute ) + + if self.PatrolGroup:IsNotInZone( self.PatrolZone ) then + --- Find a random 2D point in PatrolZone. + local ToPatrolZoneVec2 = self.PatrolZone:GetRandomVec2() + self:T2( ToPatrolZoneVec2 ) + + --- Define Speed and Altitude. + local ToPatrolZoneAltitude = math.random( self.PatrolFloorAltitude, self.PatrolCeilingAltitude ) + local ToPatrolZoneSpeed = self.PatrolMaxSpeed + self:T2( ToPatrolZoneSpeed ) + + --- Obtain a 3D @{Point} from the 2D point + altitude. + local ToPatrolZonePointVec3 = POINT_VEC3:New( ToPatrolZoneVec2.x, ToPatrolZoneAltitude, ToPatrolZoneVec2.y ) + + --- Create a route point of type air. + local ToPatrolZoneRoutePoint = ToPatrolZonePointVec3:RoutePointAir( + POINT_VEC3.RoutePointAltType.BARO, + POINT_VEC3.RoutePointType.TurningPoint, + POINT_VEC3.RoutePointAction.TurningPoint, + ToPatrolZoneSpeed, + true + ) + + PatrolRoute[#PatrolRoute+1] = ToPatrolZoneRoutePoint + + end + + --- Define a random point in the @{Zone}. The AI will fly to that point within the zone. + + --- Find a random 2D point in PatrolZone. + local ToTargetVec2 = self.PatrolZone:GetRandomVec2() + self:T2( ToTargetVec2 ) + + --- Define Speed and Altitude. + local ToTargetAltitude = math.random( self.PatrolFloorAltitude, self.PatrolCeilingAltitude ) + local ToTargetSpeed = math.random( self.PatrolMinSpeed, self.PatrolMaxSpeed ) + self:T2( { self.PatrolMinSpeed, self.PatrolMaxSpeed, ToTargetSpeed } ) + + --- Obtain a 3D @{Point} from the 2D point + altitude. + local ToTargetPointVec3 = POINT_VEC3:New( ToTargetVec2.x, ToTargetAltitude, ToTargetVec2.y ) + + --- Create a route point of type air. + local ToTargetRoutePoint = ToTargetPointVec3:RoutePointAir( + POINT_VEC3.RoutePointAltType.BARO, + POINT_VEC3.RoutePointType.TurningPoint, + POINT_VEC3.RoutePointAction.TurningPoint, + ToTargetSpeed, + true + ) + + --ToTargetPointVec3:SmokeRed() + + PatrolRoute[#PatrolRoute+1] = ToTargetRoutePoint + + --- Now we're going to do something special, we're going to call a function from a waypoint action at the PatrolGroup... + self.PatrolGroup:WayPointInitialize( PatrolRoute ) + + --- Do a trick, link the NewPatrolRoute function of the PATROLGROUP object to the PatrolGroup in a temporary variable ... + self.PatrolGroup:SetState( self.PatrolGroup, "PatrolZone", self ) + self.PatrolGroup:WayPointFunction( #PatrolRoute, 1, "_NewPatrolRoute" ) + + --- NOW ROUTE THE GROUP! + self.PatrolGroup:WayPointExecute( 1, 2 ) + end + +end + +--- When the PatrolGroup is out of fuel, it is required that a new PatrolGroup is started, before the old PatrolGroup can return to the home base. +-- Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. +-- When the fuel treshold is reached, the PatrolGroup will continue for a given time its patrol task in orbit, while a new PatrolGroup is targetted to the PATROLZONE. +-- Once the time is finished, the old PatrolGroup will return to the base. +-- @param #PATROLZONE self +-- @param #number PatrolFuelTresholdPercentage The treshold in percentage (between 0 and 1) when the PatrolGroup is considered to get out of fuel. +-- @param #number PatrolOutOfFuelOrbitTime The amount of seconds the out of fuel PatrolGroup will orbit before returning to the base. +-- @return #PATROLZONE self +function PATROLZONE:ManageFuel( PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime ) + + self.PatrolManageFuel = true + self.PatrolFuelTresholdPercentage = PatrolFuelTresholdPercentage + self.PatrolOutOfFuelOrbitTime = PatrolOutOfFuelOrbitTime + + if self.PatrolGroup then + self.PatrolOutOfFuelMonitor = SCHEDULER:New( self, self._MonitorOutOfFuelScheduled, {}, 1, 120, 0 ) + self.SpawnPatrolGroup = SPAWN:New( self.PatrolGroupTemplateName ) + end + return self +end + +--- @param #PATROLZONE self +function _MonitorOutOfFuelScheduled( self ) + self:F2( "_MonitorOutOfFuelScheduled" ) + + if self.PatrolGroup and self.PatrolGroup:IsAlive() then + + local Fuel = self.PatrolGroup:GetUnit(1):GetFuel() + if Fuel < self.PatrolFuelTresholdPercentage then + local OldPatrolGroup = self.PatrolGroup + local PatrolGroupTemplate = self.PatrolGroup:GetTemplate() + + local OrbitTask = OldPatrolGroup:TaskOrbitCircle( math.random( self.PatrolFloorAltitude, self.PatrolCeilingAltitude ), self.PatrolMinSpeed ) + local TimedOrbitTask = OldPatrolGroup:TaskControlled( OrbitTask, OldPatrolGroup:TaskCondition(nil,nil,nil,nil,self.PatrolOutOfFuelOrbitTime,nil ) ) + OldPatrolGroup:SetTask( TimedOrbitTask, 10 ) + + local NewPatrolGroup = self.SpawnPatrolGroup:Spawn() + self.PatrolGroup = NewPatrolGroup + self:NewPatrolRoute() + end + else + self.PatrolOutOfFuelMonitor:Stop() + end +end--- This module contains the AIBALANCER class. +-- +-- === +-- +-- 1) @{AIBalancer#AIBALANCER} class, extends @{Base#BASE} +-- ================================================ +-- The @{AIBalancer#AIBALANCER} class controls the dynamic spawning of AI GROUPS depending on a SET_CLIENT. +-- There will be as many AI GROUPS spawned as there at CLIENTS in SET_CLIENT not spawned. +-- +-- 1.1) AIBALANCER construction method: +-- ------------------------------------ +-- Create a new AIBALANCER object with the @{#AIBALANCER.New} method: +-- +-- * @{#AIBALANCER.New}: Creates a new AIBALANCER object. +-- +-- 1.2) AIBALANCER returns AI to Airbases: +-- --------------------------------------- +-- You can configure to have the AI to return to: +-- +-- * @{#AIBALANCER.ReturnToHomeAirbase}: Returns the AI to the home @{Airbase#AIRBASE}. +-- * @{#AIBALANCER.ReturnToNearestAirbases}: Returns the AI to the nearest friendly @{Airbase#AIRBASE}. +-- +-- 1.3) AIBALANCER allows AI to patrol specific zones: +-- --------------------------------------------------- +-- Use @{AIBalancer#AIBALANCER.SetPatrolZone}() to specify a zone where the AI needs to patrol. +-- +-- +-- === +-- +-- CREDITS +-- ======= +-- **Dutch_Baron (James)** Who you can search on the Eagle Dynamics Forums. +-- Working together with James has resulted in the creation of the AIBALANCER class. +-- James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-) +-- +-- **SNAFU** +-- Had a couple of mails with the guys to validate, if the same concept in the GCI/CAP script could be reworked within MOOSE. +-- None of the script code has been used however within the new AIBALANCER moose class. +-- +-- @module AIBalancer +-- @author FlightControl + +--- AIBALANCER class +-- @type AIBALANCER +-- @field Set#SET_CLIENT SetClient +-- @field Spawn#SPAWN SpawnAI +-- @field #boolean ToNearestAirbase +-- @field Set#SET_AIRBASE ReturnAirbaseSet +-- @field DCSTypes#Distance ReturnTresholdRange +-- @field #boolean ToHomeAirbase +-- @field PatrolZone#PATROLZONE PatrolZone +-- @extends Base#BASE +AIBALANCER = { + ClassName = "AIBALANCER", + PatrolZones = {}, + AIGroups = {}, +} + +--- Creates a new AIBALANCER object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. +-- @param #AIBALANCER self +-- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they are alive or not (joined by a player). +-- @param SpawnAI A SPAWN object that will spawn the AI units required, balancing the SetClient. +-- @return #AIBALANCER self +function AIBALANCER:New( SetClient, SpawnAI ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + self.SetClient = SetClient + if type( SpawnAI ) == "table" then + if SpawnAI.ClassName and SpawnAI.ClassName == "SPAWN" then + self.SpawnAI = { SpawnAI } + else + local SpawnObjects = true + for SpawnObjectID, SpawnObject in pairs( SpawnAI ) do + if SpawnObject.ClassName and SpawnObject.ClassName == "SPAWN" then + self:E( SpawnObject.ClassName ) + else + self:E( "other object" ) + SpawnObjects = false + end + end + if SpawnObjects == true then + self.SpawnAI = SpawnAI + else + error( "No SPAWN object given in parameter SpawnAI, either as a single object or as a table of objects!" ) + end + end + end + + self.ToNearestAirbase = false + self.ReturnHomeAirbase = false + + self.AIMonitorSchedule = SCHEDULER:New( self, self._ClientAliveMonitorScheduler, {}, 1, 10, 0 ) + + return self +end + +--- Returns the AI to the nearest friendly @{Airbase#AIRBASE}. +-- @param #AIBALANCER self +-- @param DCSTypes#Distance ReturnTresholdRange If there is an enemy @{Client#CLIENT} within the ReturnTresholdRange given in meters, the AI will not return to the nearest @{Airbase#AIRBASE}. +-- @param Set#SET_AIRBASE ReturnAirbaseSet The SET of @{Set#SET_AIRBASE}s to evaluate where to return to. +function AIBALANCER:ReturnToNearestAirbases( ReturnTresholdRange, ReturnAirbaseSet ) + + self.ToNearestAirbase = true + self.ReturnTresholdRange = ReturnTresholdRange + self.ReturnAirbaseSet = ReturnAirbaseSet +end + +--- Returns the AI to the home @{Airbase#AIRBASE}. +-- @param #AIBALANCER self +-- @param DCSTypes#Distance ReturnTresholdRange If there is an enemy @{Client#CLIENT} within the ReturnTresholdRange given in meters, the AI will not return to the nearest @{Airbase#AIRBASE}. +function AIBALANCER:ReturnToHomeAirbase( ReturnTresholdRange ) + + self.ToHomeAirbase = true + self.ReturnTresholdRange = ReturnTresholdRange +end + +--- Let the AI patrol a @{Zone} with a given Speed range and Altitude range. +-- @param #AIBALANCER self +-- @param PatrolZone#PATROLZONE PatrolZone The @{PatrolZone} where the AI needs to patrol. +-- @return PatrolZone#PATROLZONE self +function AIBALANCER:SetPatrolZone( PatrolZone ) + + self.PatrolZone = PatrolZone +end + +--- @param #AIBALANCER self +function AIBALANCER:_ClientAliveMonitorScheduler() + + self.SetClient:ForEachClient( + --- @param Client#CLIENT Client + function( Client ) + local ClientAIAliveState = Client:GetState( self, 'AIAlive' ) + self:T( ClientAIAliveState ) + if Client:IsAlive() then + if ClientAIAliveState == true then + Client:SetState( self, 'AIAlive', false ) + + local AIGroup = self.AIGroups[Client.UnitName] -- Group#GROUP + +-- local PatrolZone = Client:GetState( self, "PatrolZone" ) +-- if PatrolZone then +-- PatrolZone = nil +-- Client:ClearState( self, "PatrolZone" ) +-- end + + if self.ToNearestAirbase == false and self.ToHomeAirbase == false then + AIGroup:Destroy() + else + -- We test if there is no other CLIENT within the self.ReturnTresholdRange of the first unit of the AI group. + -- If there is a CLIENT, the AI stays engaged and will not return. + -- If there is no CLIENT within the self.ReturnTresholdRange, then the unit will return to the Airbase return method selected. + + local PlayerInRange = { Value = false } + local RangeZone = ZONE_RADIUS:New( 'RangeZone', AIGroup:GetPointVec2(), self.ReturnTresholdRange ) + + self:E( RangeZone ) + + _DATABASE:ForEachPlayer( + --- @param Unit#UNIT RangeTestUnit + function( RangeTestUnit, RangeZone, AIGroup, PlayerInRange ) + self:E( { PlayerInRange, RangeTestUnit.UnitName, RangeZone.ZoneName } ) + if RangeTestUnit:IsInZone( RangeZone ) == true then + self:E( "in zone" ) + if RangeTestUnit:GetCoalition() ~= AIGroup:GetCoalition() then + self:E( "in range" ) + PlayerInRange.Value = true + end + end + end, + + --- @param Zone#ZONE_RADIUS RangeZone + -- @param Group#GROUP AIGroup + function( RangeZone, AIGroup, PlayerInRange ) + local AIGroupTemplate = AIGroup:GetTemplate() + if PlayerInRange.Value == false then + if self.ToHomeAirbase == true then + local WayPointCount = #AIGroupTemplate.route.points + local SwitchWayPointCommand = AIGroup:CommandSwitchWayPoint( 1, WayPointCount, 1 ) + AIGroup:SetCommand( SwitchWayPointCommand ) + AIGroup:MessageToRed( "Returning to home base ...", 30 ) + else + -- Okay, we need to send this Group back to the nearest base of the Coalition of the AI. + --TODO: i need to rework the POINT_VEC2 thing. + local PointVec2 = POINT_VEC2:New( AIGroup:GetPointVec2().x, AIGroup:GetPointVec2().y ) + local ClosestAirbase = self.ReturnAirbaseSet:FindNearestAirbaseFromPointVec2( PointVec2 ) + self:T( ClosestAirbase.AirbaseName ) + AIGroup:MessageToRed( "Returning to " .. ClosestAirbase:GetName().. " ...", 30 ) + local RTBRoute = AIGroup:RouteReturnToAirbase( ClosestAirbase ) + AIGroupTemplate.route = RTBRoute + AIGroup:Respawn( AIGroupTemplate ) + end + end + end + , RangeZone, AIGroup, PlayerInRange + ) + + end + end + else + if not ClientAIAliveState or ClientAIAliveState == false then + Client:SetState( self, 'AIAlive', true ) + + + -- OK, spawn a new group from the SpawnAI objects provided. + local SpawnAICount = #self.SpawnAI + local SpawnAIIndex = math.random( 1, SpawnAICount ) + local AIGroup = self.SpawnAI[SpawnAIIndex]:Spawn() + AIGroup:E( "spawning new AIGroup" ) + --TODO: need to rework UnitName thing ... + self.AIGroups[Client.UnitName] = AIGroup + + --- Now test if the AIGroup needs to patrol a zone, otherwise let it follow its route... + if self.PatrolZone then + self.PatrolZones[#self.PatrolZones+1] = PATROLZONE:New( + self.PatrolZone.PatrolZone, + self.PatrolZone.PatrolFloorAltitude, + self.PatrolZone.PatrolCeilingAltitude, + self.PatrolZone.PatrolMinSpeed, + self.PatrolZone.PatrolMaxSpeed + ) + + if self.PatrolZone.PatrolManageFuel == true then + self.PatrolZones[#self.PatrolZones]:ManageFuel( self.PatrolZone.PatrolFuelTresholdPercentage, self.PatrolZone.PatrolOutOfFuelOrbitTime ) + end + self.PatrolZones[#self.PatrolZones]:SetGroup( AIGroup ) + + --self.PatrolZones[#self.PatrolZones+1] = PatrolZone + + --Client:SetState( self, "PatrolZone", PatrolZone ) + end + end + end + end + ) + return true +end + + + +--- This module contains the AIRBASEPOLICE classes. +-- +-- === +-- +-- 1) @{AirbasePolice#AIRBASEPOLICE_BASE} class, extends @{Base#BASE} +-- ================================================================== +-- The @{AirbasePolice#AIRBASEPOLICE_BASE} class provides the main methods to monitor CLIENT behaviour at airbases. +-- CLIENTS should not be allowed to: +-- +-- * Don't taxi faster than 40 km/h. +-- * Don't take-off on taxiways. +-- * Avoid to hit other planes on the airbase. +-- * Obey ground control orders. +-- +-- 2) @{AirbasePolice#AIRBASEPOLICE_CAUCASUS} class, extends @{AirbasePolice#AIRBASEPOLICE_BASE} +-- ============================================================================================= +-- All the airbases on the caucasus map can be monitored using this class. +-- If you want to monitor specific airbases, you need to use the @{#AIRBASEPOLICE_BASE.Monitor}() method, which takes a table or airbase names. +-- The following names can be given: +-- * AnapaVityazevo +-- * Batumi +-- * Beslan +-- * Gelendzhik +-- * Gudauta +-- * Kobuleti +-- * KrasnodarCenter +-- * KrasnodarPashkovsky +-- * Krymsk +-- * Kutaisi +-- * MaykopKhanskaya +-- * MineralnyeVody +-- * Mozdok +-- * Nalchik +-- * Novorossiysk +-- * SenakiKolkhi +-- * SochiAdler +-- * Soganlug +-- * SukhumiBabushara +-- * TbilisiLochini +-- * Vaziani +-- +-- @module AirbasePolice +-- @author FlightControl + + +--- @type AIRBASEPOLICE_BASE +-- @field Set#SET_CLIENT SetClient +-- @extends Base#BASE + +AIRBASEPOLICE_BASE = { + ClassName = "AIRBASEPOLICE_BASE", + SetClient = nil, + Airbases = nil, + AirbaseNames = nil, +} + + +--- Creates a new AIRBASEPOLICE_BASE object. +-- @param #AIRBASEPOLICE_BASE self +-- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they follow the rules of the airbase. +-- @param Airbases A table of Airbase Names. +-- @return #AIRBASEPOLICE_BASE self +function AIRBASEPOLICE_BASE:New( SetClient, Airbases ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + self:E( { self.ClassName, SetClient, Airbases } ) + + self.SetClient = SetClient + self.Airbases = Airbases + + for AirbaseID, Airbase in pairs( self.Airbases ) do + Airbase.ZoneBoundary = ZONE_POLYGON_BASE:New( "Boundary", Airbase.PointsBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + for PointsRunwayID, PointsRunway in pairs( Airbase.PointsRunways ) do + Airbase.ZoneRunways[PointsRunwayID] = ZONE_POLYGON_BASE:New( "Runway " .. PointsRunwayID, PointsRunway ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + end + end + + -- -- Template + -- local TemplateBoundary = GROUP:FindByName( "Template Boundary" ) + -- self.Airbases.Template.ZoneBoundary = ZONE_POLYGON:New( "Template Boundary", TemplateBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local TemplateRunway1 = GROUP:FindByName( "Template Runway 1" ) + -- self.Airbases.Template.ZoneRunways[1] = ZONE_POLYGON:New( "Template Runway 1", TemplateRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + + self.SetClient:ForEachClient( + --- @param Client#CLIENT Client + function( Client ) + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0) + Client:SetState( self, "Taxi", false ) + end + ) + + self.AirbaseMonitor = SCHEDULER:New( self, self._AirbaseMonitor, {}, 0, 2, 0.05 ) + + return self +end + +--- @type AIRBASEPOLICE_BASE.AirbaseNames +-- @list <#string> + +--- Monitor a table of airbase names. +-- @param #AIRBASEPOLICE_BASE self +-- @param #AIRBASEPOLICE_BASE.AirbaseNames AirbaseNames A list of AirbaseNames to monitor. If this parameters is nil, then all airbases will be monitored. +-- @return #AIRBASEPOLICE_BASE self +function AIRBASEPOLICE_BASE:Monitor( AirbaseNames ) + + if AirbaseNames then + if type( AirbaseNames ) == "table" then + self.AirbaseNames = AirbaseNames + else + self.AirbaseNames = { AirbaseNames } + end + end +end + +--- @param #AIRBASEPOLICE_BASE self +function AIRBASEPOLICE_BASE:_AirbaseMonitor() + + for AirbaseID, Airbase in pairs( self.Airbases ) do + + if not self.AirbaseNames or self.AirbaseNames[AirbaseID] then + + self:E( AirbaseID ) + + self.SetClient:ForEachClientInZone( Airbase.ZoneBoundary, + + --- @param Client#CLIENT Client + function( Client ) + + self:E( Client.UnitName ) + if Client:IsAlive() then + local NotInRunwayZone = true + for ZoneRunwayID, ZoneRunway in pairs( Airbase.ZoneRunways ) do + NotInRunwayZone = ( Client:IsNotInZone( ZoneRunway ) == true ) and NotInRunwayZone or false + end + + if NotInRunwayZone then + local Taxi = self:GetState( self, "Taxi" ) + self:E( Taxi ) + if Taxi == false then + Client:Message( "Welcome at " .. AirbaseID .. ". The maximum taxiing speed is " .. Airbase.MaximumSpeed " km/h.", 20, "ATC" ) + self:SetState( self, "Taxi", true ) + end + + local VelocityVec3 = Client:GetVelocity() + local Velocity = math.abs(VelocityVec3.x) + math.abs(VelocityVec3.y) + math.abs(VelocityVec3.z) + local IsAboveRunway = Client:IsAboveRunway() + local IsOnGround = Client:InAir() == false + self:T( IsAboveRunway, IsOnGround ) + + if IsAboveRunway and IsOnGround then + + if Velocity > Airbase.MaximumSpeed then + local IsSpeeding = Client:GetState( self, "Speeding" ) + + if IsSpeeding == true then + local SpeedingWarnings = Client:GetState( self, "Warnings" ) + self:T( SpeedingWarnings ) + + if SpeedingWarnings <= 5 then + Client:Message( "You are speeding on the taxiway! Slow down or you will be removed from this airbase! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Warning " .. SpeedingWarnings .. " / 5" ) + Client:SetState( self, "Warnings", SpeedingWarnings + 1 ) + else + MESSAGE:New( "Player " .. Client:GetPlayerName() .. " has been removed from the airbase, due to a speeding violation ...", 10, "Airbase Police" ):ToAll() + Client:GetGroup():Destroy() + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0 ) + end + + else + Client:Message( "You are speeding on the taxiway! Slow down please ...! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Attention! " ) + Client:SetState( self, "Speeding", true ) + Client:SetState( self, "Warnings", 1 ) + end + + else + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0 ) + end + end + + else + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0 ) + local Taxi = self:GetState( self, "Taxi" ) + if Taxi == true then + Client:Message( "You have progressed to the runway ... Await take-off clearance ...", 20, "ATC" ) + self:SetState( self, "Taxi", false ) + end + end + end + end + ) + end + end + + return true +end + + +--- @type AIRBASEPOLICE_CAUCASUS +-- @field Set#SET_CLIENT SetClient +-- @extends #AIRBASEPOLICE_BASE + +AIRBASEPOLICE_CAUCASUS = { + ClassName = "AIRBASEPOLICE_CAUCASUS", + Airbases = { + AnapaVityazevo = { + PointsBoundary = { + [1]={["y"]=242234.85714287,["x"]=-6616.5714285726,}, + [2]={["y"]=241060.57142858,["x"]=-5585.142857144,}, + [3]={["y"]=243806.2857143,["x"]=-3962.2857142868,}, + [4]={["y"]=245240.57142858,["x"]=-4816.5714285726,}, + [5]={["y"]=244783.42857144,["x"]=-5630.8571428583,}, + [6]={["y"]=243800.57142858,["x"]=-5065.142857144,}, + [7]={["y"]=242232.00000001,["x"]=-6622.2857142868,}, + }, + PointsRunways = { + [1] = { + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Batumi = { + PointsBoundary = { + [1]={["y"]=617567.14285714,["x"]=-355313.14285715,}, + [2]={["y"]=616181.42857142,["x"]=-354800.28571429,}, + [3]={["y"]=616007.14285714,["x"]=-355128.85714286,}, + [4]={["y"]=618230,["x"]=-356914.57142858,}, + [5]={["y"]=618727.14285714,["x"]=-356166,}, + [6]={["y"]=617572.85714285,["x"]=-355308.85714286,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=616442.28571429,["x"]=-355090.28571429,}, + [2]={["y"]=618450.57142857,["x"]=-356522,}, + [3]={["y"]=618407.71428571,["x"]=-356584.85714286,}, + [4]={["y"]=618361.99999999,["x"]=-356554.85714286,}, + [5]={["y"]=618324.85714285,["x"]=-356599.14285715,}, + [6]={["y"]=618250.57142856,["x"]=-356543.42857143,}, + [7]={["y"]=618257.7142857,["x"]=-356496.28571429,}, + [8]={["y"]=618237.7142857,["x"]=-356459.14285715,}, + [9]={["y"]=616555.71428571,["x"]=-355258.85714286,}, + [10]={["y"]=616486.28571428,["x"]=-355280.57142858,}, + [11]={["y"]=616410.57142856,["x"]=-355227.71428572,}, + [12]={["y"]=616441.99999999,["x"]=-355179.14285715,}, + [13]={["y"]=616401.99999999,["x"]=-355147.71428572,}, + [14]={["y"]=616441.42857142,["x"]=-355092.57142858,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Beslan = { + PointsBoundary = { + [1]={["y"]=842082.57142857,["x"]=-148445.14285715,}, + [2]={["y"]=845237.71428572,["x"]=-148639.71428572,}, + [3]={["y"]=845232,["x"]=-148765.42857143,}, + [4]={["y"]=844220.57142857,["x"]=-149168.28571429,}, + [5]={["y"]=843274.85714286,["x"]=-149125.42857143,}, + [6]={["y"]=842077.71428572,["x"]=-148554,}, + [7]={["y"]=842083.42857143,["x"]=-148445.42857143,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=842104.57142857,["x"]=-148460.57142857,}, + [2]={["y"]=845225.71428572,["x"]=-148656,}, + [3]={["y"]=845220.57142858,["x"]=-148750,}, + [4]={["y"]=842098.85714286,["x"]=-148556.28571429,}, + [5]={["y"]=842104,["x"]=-148460.28571429,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Gelendzhik = { + PointsBoundary = { + [1]={["y"]=297856.00000001,["x"]=-51151.428571429,}, + [2]={["y"]=299044.57142858,["x"]=-49720.000000001,}, + [3]={["y"]=298861.71428572,["x"]=-49580.000000001,}, + [4]={["y"]=298198.85714286,["x"]=-49842.857142858,}, + [5]={["y"]=297990.28571429,["x"]=-50151.428571429,}, + [6]={["y"]=297696.00000001,["x"]=-51054.285714286,}, + [7]={["y"]=297850.28571429,["x"]=-51160.000000001,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=297834.00000001,["x"]=-51107.428571429,}, + [2]={["y"]=297786.57142858,["x"]=-51068.857142858,}, + [3]={["y"]=298946.57142858,["x"]=-49686.000000001,}, + [4]={["y"]=298993.14285715,["x"]=-49725.714285715,}, + [5]={["y"]=297835.14285715,["x"]=-51107.714285715,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Gudauta = { + PointsBoundary = { + [1]={["y"]=517246.57142857,["x"]=-197850.28571429,}, + [2]={["y"]=516749.42857142,["x"]=-198070.28571429,}, + [3]={["y"]=515755.14285714,["x"]=-197598.85714286,}, + [4]={["y"]=515369.42857142,["x"]=-196538.85714286,}, + [5]={["y"]=515623.71428571,["x"]=-195618.85714286,}, + [6]={["y"]=515946.57142857,["x"]=-195510.28571429,}, + [7]={["y"]=517243.71428571,["x"]=-197858.85714286,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=517096.57142857,["x"]=-197804.57142857,}, + [2]={["y"]=515880.85714285,["x"]=-195590.28571429,}, + [3]={["y"]=515812.28571428,["x"]=-195628.85714286,}, + [4]={["y"]=517036.57142857,["x"]=-197834.57142857,}, + [5]={["y"]=517097.99999999,["x"]=-197807.42857143,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Kobuleti = { + PointsBoundary = { + [1]={["y"]=634427.71428571,["x"]=-318290.28571429,}, + [2]={["y"]=635033.42857143,["x"]=-317550.2857143,}, + [3]={["y"]=635864.85714286,["x"]=-317333.14285715,}, + [4]={["y"]=636967.71428571,["x"]=-317261.71428572,}, + [5]={["y"]=637144.85714286,["x"]=-317913.14285715,}, + [6]={["y"]=634630.57142857,["x"]=-318687.42857144,}, + [7]={["y"]=634424.85714286,["x"]=-318290.2857143,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=634509.71428571,["x"]=-318339.42857144,}, + [2]={["y"]=636767.42857143,["x"]=-317516.57142858,}, + [3]={["y"]=636790,["x"]=-317575.71428572,}, + [4]={["y"]=634531.42857143,["x"]=-318398.00000001,}, + [5]={["y"]=634510.28571429,["x"]=-318339.71428572,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + KrasnodarCenter = { + PointsBoundary = { + [1]={["y"]=366680.28571429,["x"]=11699.142857142,}, + [2]={["y"]=366654.28571429,["x"]=11225.142857142,}, + [3]={["y"]=367497.14285715,["x"]=11082.285714285,}, + [4]={["y"]=368025.71428572,["x"]=10396.57142857,}, + [5]={["y"]=369854.28571429,["x"]=11367.999999999,}, + [6]={["y"]=369840.00000001,["x"]=11910.857142856,}, + [7]={["y"]=366682.57142858,["x"]=11697.999999999,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=369205.42857144,["x"]=11789.142857142,}, + [2]={["y"]=369209.71428572,["x"]=11714.857142856,}, + [3]={["y"]=366699.71428572,["x"]=11581.714285713,}, + [4]={["y"]=366698.28571429,["x"]=11659.142857142,}, + [5]={["y"]=369208.85714286,["x"]=11788.57142857,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + KrasnodarPashkovsky = { + PointsBoundary = { + [1]={["y"]=386754,["x"]=6476.5714285703,}, + [2]={["y"]=389182.57142858,["x"]=8722.2857142846,}, + [3]={["y"]=388832.57142858,["x"]=9086.5714285703,}, + [4]={["y"]=386961.14285715,["x"]=7707.9999999989,}, + [5]={["y"]=385404,["x"]=9179.4285714274,}, + [6]={["y"]=383239.71428572,["x"]=7386.5714285703,}, + [7]={["y"]=383954,["x"]=6486.5714285703,}, + [8]={["y"]=385775.42857143,["x"]=8097.9999999989,}, + [9]={["y"]=386804,["x"]=7319.4285714274,}, + [10]={["y"]=386375.42857143,["x"]=6797.9999999989,}, + [11]={["y"]=386746.85714286,["x"]=6472.2857142846,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=385891.14285715,["x"]=8416.5714285703,}, + [2]={["y"]=385842.28571429,["x"]=8467.9999999989,}, + [3]={["y"]=384180.85714286,["x"]=6917.1428571417,}, + [4]={["y"]=384228.57142858,["x"]=6867.7142857132,}, + [5]={["y"]=385891.14285715,["x"]=8416.5714285703,}, + }, + [2] = { + [1]={["y"]=386714.85714286,["x"]=6674.857142856,}, + [2]={["y"]=386757.71428572,["x"]=6627.7142857132,}, + [3]={["y"]=389028.57142858,["x"]=8741.4285714275,}, + [4]={["y"]=388981.71428572,["x"]=8790.5714285703,}, + [5]={["y"]=386714.57142858,["x"]=6674.5714285703,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Krymsk = { + PointsBoundary = { + [1]={["y"]=293338.00000001,["x"]=-7575.4285714297,}, + [2]={["y"]=295199.42857144,["x"]=-5434.0000000011,}, + [3]={["y"]=295595.14285715,["x"]=-6239.7142857154,}, + [4]={["y"]=294152.2857143,["x"]=-8325.4285714297,}, + [5]={["y"]=293345.14285715,["x"]=-7596.8571428582,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=293522.00000001,["x"]=-7567.4285714297,}, + [2]={["y"]=293578.57142858,["x"]=-7616.0000000011,}, + [3]={["y"]=295246.00000001,["x"]=-5591.142857144,}, + [4]={["y"]=295187.71428573,["x"]=-5546.0000000011,}, + [5]={["y"]=293523.14285715,["x"]=-7568.2857142868,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Kutaisi = { + PointsBoundary = { + [1]={["y"]=682087.42857143,["x"]=-284512.85714286,}, + [2]={["y"]=685387.42857143,["x"]=-283662.85714286,}, + [3]={["y"]=685294.57142857,["x"]=-284977.14285715,}, + [4]={["y"]=682744.57142857,["x"]=-286505.71428572,}, + [5]={["y"]=682094.57142857,["x"]=-284527.14285715,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=682638,["x"]=-285202.28571429,}, + [2]={["y"]=685050.28571429,["x"]=-284507.42857144,}, + [3]={["y"]=685068.85714286,["x"]=-284578.85714286,}, + [4]={["y"]=682657.42857143,["x"]=-285264.28571429,}, + [5]={["y"]=682638.28571429,["x"]=-285202.85714286,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + MaykopKhanskaya = { + PointsBoundary = { + [1]={["y"]=456876.28571429,["x"]=-27665.42857143,}, + [2]={["y"]=457800,["x"]=-28392.857142858,}, + [3]={["y"]=459368.57142857,["x"]=-26378.571428573,}, + [4]={["y"]=459425.71428572,["x"]=-25242.857142858,}, + [5]={["y"]=458961.42857143,["x"]=-24964.285714287,}, + [6]={["y"]=456878.57142857,["x"]=-27667.714285715,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=457005.42857143,["x"]=-27668.000000001,}, + [2]={["y"]=459028.85714286,["x"]=-25168.857142858,}, + [3]={["y"]=459082.57142857,["x"]=-25216.857142858,}, + [4]={["y"]=457060,["x"]=-27714.285714287,}, + [5]={["y"]=457004.57142857,["x"]=-27669.714285715,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + MineralnyeVody = { + PointsBoundary = { + [1]={["y"]=703857.14285714,["x"]=-50226.000000002,}, + [2]={["y"]=707385.71428571,["x"]=-51911.714285716,}, + [3]={["y"]=707595.71428571,["x"]=-51434.857142859,}, + [4]={["y"]=707900,["x"]=-51568.857142859,}, + [5]={["y"]=707542.85714286,["x"]=-52326.000000002,}, + [6]={["y"]=706628.57142857,["x"]=-52568.857142859,}, + [7]={["y"]=705142.85714286,["x"]=-51790.285714288,}, + [8]={["y"]=703678.57142857,["x"]=-50611.714285716,}, + [9]={["y"]=703857.42857143,["x"]=-50226.857142859,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=703904,["x"]=-50352.571428573,}, + [2]={["y"]=707596.28571429,["x"]=-52094.571428573,}, + [3]={["y"]=707560.57142858,["x"]=-52161.714285716,}, + [4]={["y"]=703871.71428572,["x"]=-50420.571428573,}, + [5]={["y"]=703902,["x"]=-50352.000000002,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Mozdok = { + PointsBoundary = { + [1]={["y"]=832123.42857143,["x"]=-83608.571428573,}, + [2]={["y"]=835916.28571429,["x"]=-83144.285714288,}, + [3]={["y"]=835474.28571429,["x"]=-84170.571428573,}, + [4]={["y"]=832911.42857143,["x"]=-84470.571428573,}, + [5]={["y"]=832487.71428572,["x"]=-85565.714285716,}, + [6]={["y"]=831573.42857143,["x"]=-85351.42857143,}, + [7]={["y"]=832123.71428572,["x"]=-83610.285714288,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=832201.14285715,["x"]=-83699.428571431,}, + [2]={["y"]=832212.57142857,["x"]=-83780.571428574,}, + [3]={["y"]=835730.28571429,["x"]=-83335.714285717,}, + [4]={["y"]=835718.85714286,["x"]=-83246.571428574,}, + [5]={["y"]=832200.57142857,["x"]=-83700.000000002,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Nalchik = { + PointsBoundary = { + [1]={["y"]=759370,["x"]=-125502.85714286,}, + [2]={["y"]=761384.28571429,["x"]=-124177.14285714,}, + [3]={["y"]=761472.85714286,["x"]=-124325.71428572,}, + [4]={["y"]=761092.85714286,["x"]=-125048.57142857,}, + [5]={["y"]=760295.71428572,["x"]=-125685.71428572,}, + [6]={["y"]=759444.28571429,["x"]=-125734.28571429,}, + [7]={["y"]=759375.71428572,["x"]=-125511.42857143,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=759454.28571429,["x"]=-125551.42857143,}, + [2]={["y"]=759492.85714286,["x"]=-125610.85714286,}, + [3]={["y"]=761406.28571429,["x"]=-124304.28571429,}, + [4]={["y"]=761361.14285714,["x"]=-124239.71428572,}, + [5]={["y"]=759456,["x"]=-125552.57142857,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Novorossiysk = { + PointsBoundary = { + [1]={["y"]=278677.71428573,["x"]=-41656.571428572,}, + [2]={["y"]=278446.2857143,["x"]=-41453.714285715,}, + [3]={["y"]=278989.14285716,["x"]=-40188.000000001,}, + [4]={["y"]=279717.71428573,["x"]=-39968.000000001,}, + [5]={["y"]=280020.57142859,["x"]=-40208.000000001,}, + [6]={["y"]=278674.85714287,["x"]=-41660.857142858,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=278673.14285716,["x"]=-41615.142857144,}, + [2]={["y"]=278625.42857144,["x"]=-41570.571428572,}, + [3]={["y"]=279835.42857144,["x"]=-40226.000000001,}, + [4]={["y"]=279882.2857143,["x"]=-40270.000000001,}, + [5]={["y"]=278672.00000001,["x"]=-41614.857142858,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + SenakiKolkhi = { + PointsBoundary = { + [1]={["y"]=646036.57142857,["x"]=-281778.85714286,}, + [2]={["y"]=646045.14285714,["x"]=-281191.71428571,}, + [3]={["y"]=647032.28571429,["x"]=-280598.85714285,}, + [4]={["y"]=647669.42857143,["x"]=-281273.14285714,}, + [5]={["y"]=648323.71428571,["x"]=-281370.28571428,}, + [6]={["y"]=648520.85714286,["x"]=-281978.85714285,}, + [7]={["y"]=646039.42857143,["x"]=-281783.14285714,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=646060.85714285,["x"]=-281736,}, + [2]={["y"]=646056.57142857,["x"]=-281631.71428571,}, + [3]={["y"]=648442.28571428,["x"]=-281840.28571428,}, + [4]={["y"]=648432.28571428,["x"]=-281918.85714286,}, + [5]={["y"]=646063.71428571,["x"]=-281738.85714286,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + SochiAdler = { + PointsBoundary = { + [1]={["y"]=460642.28571428,["x"]=-164861.71428571,}, + [2]={["y"]=462820.85714285,["x"]=-163368.85714286,}, + [3]={["y"]=463649.42857142,["x"]=-163340.28571429,}, + [4]={["y"]=463835.14285714,["x"]=-164040.28571429,}, + [5]={["y"]=462535.14285714,["x"]=-165654.57142857,}, + [6]={["y"]=460678,["x"]=-165247.42857143,}, + [7]={["y"]=460635.14285714,["x"]=-164876,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=460831.42857143,["x"]=-165180,}, + [2]={["y"]=460878.57142857,["x"]=-165257.14285714,}, + [3]={["y"]=463663.71428571,["x"]=-163793.14285714,}, + [4]={["y"]=463612.28571428,["x"]=-163697.42857143,}, + [5]={["y"]=460831.42857143,["x"]=-165177.14285714,}, + }, + [2] = { + [1]={["y"]=460831.42857143,["x"]=-165180,}, + [2]={["y"]=460878.57142857,["x"]=-165257.14285714,}, + [3]={["y"]=463663.71428571,["x"]=-163793.14285714,}, + [4]={["y"]=463612.28571428,["x"]=-163697.42857143,}, + [5]={["y"]=460831.42857143,["x"]=-165177.14285714,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Soganlug = { + PointsBoundary = { + [1]={["y"]=894530.85714286,["x"]=-316928.28571428,}, + [2]={["y"]=896422.28571428,["x"]=-318622.57142857,}, + [3]={["y"]=896090.85714286,["x"]=-318934,}, + [4]={["y"]=894019.42857143,["x"]=-317119.71428571,}, + [5]={["y"]=894533.71428571,["x"]=-316925.42857143,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=894525.71428571,["x"]=-316964,}, + [2]={["y"]=896363.14285714,["x"]=-318634.28571428,}, + [3]={["y"]=896299.14285714,["x"]=-318702.85714286,}, + [4]={["y"]=894464,["x"]=-317031.71428571,}, + [5]={["y"]=894524.57142857,["x"]=-316963.71428571,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + SukhumiBabushara = { + PointsBoundary = { + [1]={["y"]=562541.14285714,["x"]=-219852.28571429,}, + [2]={["y"]=562691.14285714,["x"]=-219395.14285714,}, + [3]={["y"]=564326.85714286,["x"]=-219523.71428571,}, + [4]={["y"]=566262.57142857,["x"]=-221166.57142857,}, + [5]={["y"]=566069.71428571,["x"]=-221580.85714286,}, + [6]={["y"]=562534,["x"]=-219873.71428571,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=562684,["x"]=-219779.71428571,}, + [2]={["y"]=562717.71428571,["x"]=-219718,}, + [3]={["y"]=566046.85714286,["x"]=-221376.57142857,}, + [4]={["y"]=566012.28571428,["x"]=-221446.57142857,}, + [5]={["y"]=562684.57142857,["x"]=-219782.57142857,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + TbilisiLochini = { + PointsBoundary = { + [1]={["y"]=895172.85714286,["x"]=-314667.42857143,}, + [2]={["y"]=895337.42857143,["x"]=-314143.14285714,}, + [3]={["y"]=895990.28571429,["x"]=-314036,}, + [4]={["y"]=897730.28571429,["x"]=-315284.57142857,}, + [5]={["y"]=897901.71428571,["x"]=-316284.57142857,}, + [6]={["y"]=897684.57142857,["x"]=-316618.85714286,}, + [7]={["y"]=895173.14285714,["x"]=-314667.42857143,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=895261.14285715,["x"]=-314652.28571428,}, + [2]={["y"]=897654.57142857,["x"]=-316523.14285714,}, + [3]={["y"]=897711.71428571,["x"]=-316450.28571429,}, + [4]={["y"]=895327.42857143,["x"]=-314568.85714286,}, + [5]={["y"]=895261.71428572,["x"]=-314656,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Vaziani = { + PointsBoundary = { + [1]={["y"]=902122,["x"]=-318163.71428572,}, + [2]={["y"]=902678.57142857,["x"]=-317594,}, + [3]={["y"]=903275.71428571,["x"]=-317405.42857143,}, + [4]={["y"]=903418.57142857,["x"]=-317891.14285714,}, + [5]={["y"]=904292.85714286,["x"]=-318748.28571429,}, + [6]={["y"]=904542,["x"]=-319740.85714286,}, + [7]={["y"]=904042,["x"]=-320166.57142857,}, + [8]={["y"]=902121.42857143,["x"]=-318164.85714286,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=902239.14285714,["x"]=-318190.85714286,}, + [2]={["y"]=904014.28571428,["x"]=-319994.57142857,}, + [3]={["y"]=904064.85714285,["x"]=-319945.14285715,}, + [4]={["y"]=902294.57142857,["x"]=-318146,}, + [5]={["y"]=902247.71428571,["x"]=-318190.85714286,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + }, +} + +--- Creates a new AIRBASEPOLICE_CAUCASUS object. +-- @param #AIRBASEPOLICE_CAUCASUS self +-- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they follow the rules of the airbase. +-- @return #AIRBASEPOLICE_CAUCASUS self +function AIRBASEPOLICE_CAUCASUS:New( SetClient ) + + -- Inherits from BASE + local self = BASE:Inherit( self, AIRBASEPOLICE_BASE:New( SetClient, self.Airbases ) ) + + -- -- AnapaVityazevo + -- local AnapaVityazevoBoundary = GROUP:FindByName( "AnapaVityazevo Boundary" ) + -- self.Airbases.AnapaVityazevo.ZoneBoundary = ZONE_POLYGON:New( "AnapaVityazevo Boundary", AnapaVityazevoBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local AnapaVityazevoRunway1 = GROUP:FindByName( "AnapaVityazevo Runway 1" ) + -- self.Airbases.AnapaVityazevo.ZoneRunways[1] = ZONE_POLYGON:New( "AnapaVityazevo Runway 1", AnapaVityazevoRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Batumi + -- local BatumiBoundary = GROUP:FindByName( "Batumi Boundary" ) + -- self.Airbases.Batumi.ZoneBoundary = ZONE_POLYGON:New( "Batumi Boundary", BatumiBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local BatumiRunway1 = GROUP:FindByName( "Batumi Runway 1" ) + -- self.Airbases.Batumi.ZoneRunways[1] = ZONE_POLYGON:New( "Batumi Runway 1", BatumiRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Beslan + -- local BeslanBoundary = GROUP:FindByName( "Beslan Boundary" ) + -- self.Airbases.Beslan.ZoneBoundary = ZONE_POLYGON:New( "Beslan Boundary", BeslanBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local BeslanRunway1 = GROUP:FindByName( "Beslan Runway 1" ) + -- self.Airbases.Beslan.ZoneRunways[1] = ZONE_POLYGON:New( "Beslan Runway 1", BeslanRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Gelendzhik + -- local GelendzhikBoundary = GROUP:FindByName( "Gelendzhik Boundary" ) + -- self.Airbases.Gelendzhik.ZoneBoundary = ZONE_POLYGON:New( "Gelendzhik Boundary", GelendzhikBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local GelendzhikRunway1 = GROUP:FindByName( "Gelendzhik Runway 1" ) + -- self.Airbases.Gelendzhik.ZoneRunways[1] = ZONE_POLYGON:New( "Gelendzhik Runway 1", GelendzhikRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Gudauta + -- local GudautaBoundary = GROUP:FindByName( "Gudauta Boundary" ) + -- self.Airbases.Gudauta.ZoneBoundary = ZONE_POLYGON:New( "Gudauta Boundary", GudautaBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local GudautaRunway1 = GROUP:FindByName( "Gudauta Runway 1" ) + -- self.Airbases.Gudauta.ZoneRunways[1] = ZONE_POLYGON:New( "Gudauta Runway 1", GudautaRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Kobuleti + -- local KobuletiBoundary = GROUP:FindByName( "Kobuleti Boundary" ) + -- self.Airbases.Kobuleti.ZoneBoundary = ZONE_POLYGON:New( "Kobuleti Boundary", KobuletiBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local KobuletiRunway1 = GROUP:FindByName( "Kobuleti Runway 1" ) + -- self.Airbases.Kobuleti.ZoneRunways[1] = ZONE_POLYGON:New( "Kobuleti Runway 1", KobuletiRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- KrasnodarCenter + -- local KrasnodarCenterBoundary = GROUP:FindByName( "KrasnodarCenter Boundary" ) + -- self.Airbases.KrasnodarCenter.ZoneBoundary = ZONE_POLYGON:New( "KrasnodarCenter Boundary", KrasnodarCenterBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local KrasnodarCenterRunway1 = GROUP:FindByName( "KrasnodarCenter Runway 1" ) + -- self.Airbases.KrasnodarCenter.ZoneRunways[1] = ZONE_POLYGON:New( "KrasnodarCenter Runway 1", KrasnodarCenterRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- KrasnodarPashkovsky + -- local KrasnodarPashkovskyBoundary = GROUP:FindByName( "KrasnodarPashkovsky Boundary" ) + -- self.Airbases.KrasnodarPashkovsky.ZoneBoundary = ZONE_POLYGON:New( "KrasnodarPashkovsky Boundary", KrasnodarPashkovskyBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local KrasnodarPashkovskyRunway1 = GROUP:FindByName( "KrasnodarPashkovsky Runway 1" ) + -- self.Airbases.KrasnodarPashkovsky.ZoneRunways[1] = ZONE_POLYGON:New( "KrasnodarPashkovsky Runway 1", KrasnodarPashkovskyRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- local KrasnodarPashkovskyRunway2 = GROUP:FindByName( "KrasnodarPashkovsky Runway 2" ) + -- self.Airbases.KrasnodarPashkovsky.ZoneRunways[2] = ZONE_POLYGON:New( "KrasnodarPashkovsky Runway 2", KrasnodarPashkovskyRunway2 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Krymsk + -- local KrymskBoundary = GROUP:FindByName( "Krymsk Boundary" ) + -- self.Airbases.Krymsk.ZoneBoundary = ZONE_POLYGON:New( "Krymsk Boundary", KrymskBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local KrymskRunway1 = GROUP:FindByName( "Krymsk Runway 1" ) + -- self.Airbases.Krymsk.ZoneRunways[1] = ZONE_POLYGON:New( "Krymsk Runway 1", KrymskRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Kutaisi + -- local KutaisiBoundary = GROUP:FindByName( "Kutaisi Boundary" ) + -- self.Airbases.Kutaisi.ZoneBoundary = ZONE_POLYGON:New( "Kutaisi Boundary", KutaisiBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local KutaisiRunway1 = GROUP:FindByName( "Kutaisi Runway 1" ) + -- self.Airbases.Kutaisi.ZoneRunways[1] = ZONE_POLYGON:New( "Kutaisi Runway 1", KutaisiRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- MaykopKhanskaya + -- local MaykopKhanskayaBoundary = GROUP:FindByName( "MaykopKhanskaya Boundary" ) + -- self.Airbases.MaykopKhanskaya.ZoneBoundary = ZONE_POLYGON:New( "MaykopKhanskaya Boundary", MaykopKhanskayaBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local MaykopKhanskayaRunway1 = GROUP:FindByName( "MaykopKhanskaya Runway 1" ) + -- self.Airbases.MaykopKhanskaya.ZoneRunways[1] = ZONE_POLYGON:New( "MaykopKhanskaya Runway 1", MaykopKhanskayaRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- MineralnyeVody + -- local MineralnyeVodyBoundary = GROUP:FindByName( "MineralnyeVody Boundary" ) + -- self.Airbases.MineralnyeVody.ZoneBoundary = ZONE_POLYGON:New( "MineralnyeVody Boundary", MineralnyeVodyBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local MineralnyeVodyRunway1 = GROUP:FindByName( "MineralnyeVody Runway 1" ) + -- self.Airbases.MineralnyeVody.ZoneRunways[1] = ZONE_POLYGON:New( "MineralnyeVody Runway 1", MineralnyeVodyRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Mozdok + -- local MozdokBoundary = GROUP:FindByName( "Mozdok Boundary" ) + -- self.Airbases.Mozdok.ZoneBoundary = ZONE_POLYGON:New( "Mozdok Boundary", MozdokBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local MozdokRunway1 = GROUP:FindByName( "Mozdok Runway 1" ) + -- self.Airbases.Mozdok.ZoneRunways[1] = ZONE_POLYGON:New( "Mozdok Runway 1", MozdokRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Nalchik + -- local NalchikBoundary = GROUP:FindByName( "Nalchik Boundary" ) + -- self.Airbases.Nalchik.ZoneBoundary = ZONE_POLYGON:New( "Nalchik Boundary", NalchikBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local NalchikRunway1 = GROUP:FindByName( "Nalchik Runway 1" ) + -- self.Airbases.Nalchik.ZoneRunways[1] = ZONE_POLYGON:New( "Nalchik Runway 1", NalchikRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Novorossiysk + -- local NovorossiyskBoundary = GROUP:FindByName( "Novorossiysk Boundary" ) + -- self.Airbases.Novorossiysk.ZoneBoundary = ZONE_POLYGON:New( "Novorossiysk Boundary", NovorossiyskBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local NovorossiyskRunway1 = GROUP:FindByName( "Novorossiysk Runway 1" ) + -- self.Airbases.Novorossiysk.ZoneRunways[1] = ZONE_POLYGON:New( "Novorossiysk Runway 1", NovorossiyskRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- SenakiKolkhi + -- local SenakiKolkhiBoundary = GROUP:FindByName( "SenakiKolkhi Boundary" ) + -- self.Airbases.SenakiKolkhi.ZoneBoundary = ZONE_POLYGON:New( "SenakiKolkhi Boundary", SenakiKolkhiBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local SenakiKolkhiRunway1 = GROUP:FindByName( "SenakiKolkhi Runway 1" ) + -- self.Airbases.SenakiKolkhi.ZoneRunways[1] = ZONE_POLYGON:New( "SenakiKolkhi Runway 1", SenakiKolkhiRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- SochiAdler + -- local SochiAdlerBoundary = GROUP:FindByName( "SochiAdler Boundary" ) + -- self.Airbases.SochiAdler.ZoneBoundary = ZONE_POLYGON:New( "SochiAdler Boundary", SochiAdlerBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local SochiAdlerRunway1 = GROUP:FindByName( "SochiAdler Runway 1" ) + -- self.Airbases.SochiAdler.ZoneRunways[1] = ZONE_POLYGON:New( "SochiAdler Runway 1", SochiAdlerRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- local SochiAdlerRunway2 = GROUP:FindByName( "SochiAdler Runway 2" ) + -- self.Airbases.SochiAdler.ZoneRunways[2] = ZONE_POLYGON:New( "SochiAdler Runway 2", SochiAdlerRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Soganlug + -- local SoganlugBoundary = GROUP:FindByName( "Soganlug Boundary" ) + -- self.Airbases.Soganlug.ZoneBoundary = ZONE_POLYGON:New( "Soganlug Boundary", SoganlugBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local SoganlugRunway1 = GROUP:FindByName( "Soganlug Runway 1" ) + -- self.Airbases.Soganlug.ZoneRunways[1] = ZONE_POLYGON:New( "Soganlug Runway 1", SoganlugRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- SukhumiBabushara + -- local SukhumiBabusharaBoundary = GROUP:FindByName( "SukhumiBabushara Boundary" ) + -- self.Airbases.SukhumiBabushara.ZoneBoundary = ZONE_POLYGON:New( "SukhumiBabushara Boundary", SukhumiBabusharaBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local SukhumiBabusharaRunway1 = GROUP:FindByName( "SukhumiBabushara Runway 1" ) + -- self.Airbases.SukhumiBabushara.ZoneRunways[1] = ZONE_POLYGON:New( "SukhumiBabushara Runway 1", SukhumiBabusharaRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- TbilisiLochini + -- local TbilisiLochiniBoundary = GROUP:FindByName( "TbilisiLochini Boundary" ) + -- self.Airbases.TbilisiLochini.ZoneBoundary = ZONE_POLYGON:New( "TbilisiLochini Boundary", TbilisiLochiniBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local TbilisiLochiniRunway1 = GROUP:FindByName( "TbilisiLochini Runway 1" ) + -- self.Airbases.TbilisiLochini.ZoneRunways[1] = ZONE_POLYGON:New( "TbilisiLochini Runway 1", TbilisiLochiniRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Vaziani + -- local VazianiBoundary = GROUP:FindByName( "Vaziani Boundary" ) + -- self.Airbases.Vaziani.ZoneBoundary = ZONE_POLYGON:New( "Vaziani Boundary", VazianiBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local VazianiRunway1 = GROUP:FindByName( "Vaziani Runway 1" ) + -- self.Airbases.Vaziani.ZoneRunways[1] = ZONE_POLYGON:New( "Vaziani Runway 1", VazianiRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + + + -- -- Template + -- local TemplateBoundary = GROUP:FindByName( "Template Boundary" ) + -- self.Airbases.Template.ZoneBoundary = ZONE_POLYGON:New( "Template Boundary", TemplateBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local TemplateRunway1 = GROUP:FindByName( "Template Runway 1" ) + -- self.Airbases.Template.ZoneRunways[1] = ZONE_POLYGON:New( "Template Runway 1", TemplateRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + + return self + +end + +--- This module contains the DETECTION classes. +-- +-- === +-- +-- 1) @{Detection#DETECTION_BASE} class, extends @{Base#BASE} +-- ========================================================== +-- The @{Detection#DETECTION_BASE} class defines the core functions to administer detected objects. +-- +-- 1.1) DETECTION_BASE constructor +-- ------------------------------- +-- Construct a new DETECTION_BASE instance using the @{Detection#DETECTION.New}() method. +-- +-- 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. +-- You can specify to apply multiple detection methods. +-- +-- 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. +-- +-- 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. +-- +-- === +-- +-- 2) @{Detection#DETECTION_UNITGROUPS} class, extends @{Detection#DETECTION_BASE} +-- =============================================================================== +-- The @{Detection#DETECTION_UNITGROUPS} class will detect units within the battle zone for a FAC group, +-- 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_UNITGROUPS}. +-- +-- 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. +-- +-- 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 +-- ---------------------------------- +-- Use the methods @{Detection#DETECTION_UNITGROUPS.FlareDetectedUnits}() or @{Detection#DETECTION_UNITGROUPS.SmokeDetectedUnits}() to flare or smoke the detected units when a new detection has taken place. +-- +-- 1.5) Flare or Smoke detected zones +-- ---------------------------------- +-- Use the methods @{Detection#DETECTION_UNITGROUPS.FlareDetectedZones}() or @{Detection#DETECTION_UNITGROUPS.SmokeDetectedZones}() to flare or smoke the detected zones when a new detection has taken place. +-- +-- === +-- +-- @module Detection +-- @author Mechanic : Concept & Testing +-- @author FlightControl : Design & Programming + + + +--- DETECTION_BASE class +-- @type DETECTION_BASE +-- @field Group#GROUP FACGroup The GROUP in the Forward Air Controller role. +-- @field DCSTypes#Distance DetectionRange The range till which targets are accepted to be detected. +-- @field #DETECTION_BASE.DetectedSets DetectedSets A list of @{Set#SET_BASE}s containing the objects in each set that were detected. The base class will not build the detected sets, but will leave that to the derived classes. +-- @extends Base#BASE +DETECTION_BASE = { + ClassName = "DETECTION_BASE", + DetectedSets = {}, + DetectedObjects = {}, + FACGroup = nil, + DetectionRange = nil, +} + +--- @type DETECTION_BASE.DetectedSets +-- @list + + +--- @type DETECTION_BASE.DetectedZones +-- @list + + +--- DETECTION constructor. +-- @param #DETECTION_BASE self +-- @param Group#GROUP FACGroup The GROUP in the Forward Air Controller role. +-- @param DCSTypes#Distance DetectionRange The range till which targets are accepted to be detected. +-- @return #DETECTION_BASE self +function DETECTION_BASE:New( FACGroup, DetectionRange ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + self.FACGroup = FACGroup + self.DetectionRange = DetectionRange + + self:InitDetectVisual( false ) + self:InitDetectOptical( false ) + self:InitDetectRadar( false ) + self:InitDetectRWR( false ) + self:InitDetectIRST( false ) + self:InitDetectDLINK( false ) + + 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 + +--- Gets the FAC group. +-- @param #DETECTION_BASE self +-- @return Group#GROUP self +function DETECTION_BASE:GetFACGroup() + self:F2() + + return self.FACGroup +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 Set#SET_BASE +function DETECTION_BASE:GetDetectedSet( Index ) + + local DetectionSet = self.DetectedSets[Index] + if DetectionSet then + return DetectionSet + end + + return nil +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.DetectedObjects = {} + self.DetectedSets = {} + self.DetectedZones = {} + + if self.FACGroup:IsAlive() then + local FACGroupName = self.FACGroup:GetName() + + local FACDetectedTargets = self.FACGroup:GetDetectedTargets( + self.DetectVisual, + self.DetectOptical, + self.DetectRadar, + self.DetectIRST, + self.DetectRWR, + self.DetectDLINK + ) + + for FACDetectedTargetID, FACDetectedTarget in pairs( FACDetectedTargets ) do + local FACObject = FACDetectedTarget.object -- DCSObject#Object + self:T2( FACObject ) + + if FACObject and FACObject:isExist() and FACObject.id_ < 50000000 then + + local FACDetectedObjectName = FACObject:getName() + + local FACDetectedObjectPositionVec3 = FACObject:getPoint() + local FACGroupPositionVec3 = self.FACGroup:GetPointVec3() + + local Distance = ( ( FACDetectedObjectPositionVec3.x - FACGroupPositionVec3.x )^2 + + ( FACDetectedObjectPositionVec3.y - FACGroupPositionVec3.y )^2 + + ( FACDetectedObjectPositionVec3.z - FACGroupPositionVec3.z )^2 + ) ^ 0.5 / 1000 + + self:T( { FACGroupName, FACDetectedObjectName, Distance } ) + + if Distance <= self.DetectionRange then + + if not self.DetectedObjects[FACDetectedObjectName] then + self.DetectedObjects[FACDetectedObjectName] = {} + end + self.DetectedObjects[FACDetectedObjectName].Name = FACDetectedObjectName + self.DetectedObjects[FACDetectedObjectName].Visible = FACDetectedTarget.visible + self.DetectedObjects[FACDetectedObjectName].Type = FACDetectedTarget.type + self.DetectedObjects[FACDetectedObjectName].Distance = FACDetectedTarget.distance + else + -- if beyond the DetectionRange then nullify... + if self.DetectedObjects[FACDetectedObjectName] then + self.DetectedObjects[FACDetectedObjectName] = 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 ... + self:T( { "Sorting DetectedObjects table:", self.DetectedObjects } ) + table.sort( self.DetectedObjects, function( a, b ) return a.Distance < b.Distance end ) + self:T( { "Sorted Targets Table:", self.DetectedObjects } ) + + -- Now group the DetectedObjects table into SET_BASEs, evaluating the DetectionZoneRange. + + if self.DetectedObjects then + self:CreateDetectionSets() + end + + + end +end + +--- @type DETECTION_UNITGROUPS.DetectedSets +-- @list +-- + + +--- @type DETECTION_UNITGROUPS.DetectedZones +-- @list +-- + + +--- DETECTION_UNITGROUPS class +-- @type DETECTION_UNITGROUPS +-- @param DCSTypes#Distance DetectionZoneRange The range till which targets are grouped upon the first detected target. +-- @field #DETECTION_UNITGROUPS.DetectedSets DetectedSets A list of @{Set#SET_UNIT}s containing the units in each set that were detected within a DetectionZoneRange. +-- @field #DETECTION_UNITGROUPS.DetectedZones DetectedZones A list of @{Zone#ZONE_UNIT}s containing the zones of the reference detected units. +-- @extends Detection#DETECTION_BASE +DETECTION_UNITGROUPS = { + ClassName = "DETECTION_UNITGROUPS", + DetectedZones = {}, +} + + + +--- DETECTION_UNITGROUPS constructor. +-- @param Detection#DETECTION_UNITGROUPS self +-- @param Group#GROUP FACGroup The GROUP in the Forward Air Controller role. +-- @param DCSTypes#Distance DetectionRange The range till which targets are accepted to be detected. +-- @param DCSTypes#Distance DetectionZoneRange The range till which targets are grouped upon the first detected target. +-- @return Detection#DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:New( FACGroup, DetectionRange, DetectionZoneRange ) + + -- Inherits from DETECTION_BASE + local self = BASE:Inherit( self, DETECTION_BASE:New( FACGroup, DetectionRange ) ) + self.DetectionZoneRange = DetectionZoneRange + + self:Schedule( 10, 30 ) + + return self +end + +--- Get the detected @{Zone#ZONE_UNIT}s. +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS.DetectedZones DetectedZones +function DETECTION_UNITGROUPS:GetDetectedZones() + + local DetectedZones = self.DetectedZones + return DetectedZones +end + +--- Get the amount of @{Zone#ZONE_UNIT}s with detected units. +-- @param #DETECTION_UNITGROUPS self +-- @return #number Count +function DETECTION_UNITGROUPS:GetDetectedZoneCount() + + local DetectedZoneCount = #self.DetectedZones + return DetectedZoneCount +end + +--- Get a SET of detected objects using a given numeric index. +-- @param #DETECTION_UNITGROUPS self +-- @param #number Index +-- @return Zone#ZONE_UNIT +function DETECTION_UNITGROUPS:GetDetectedZone( Index ) + + local DetectedZone = self.DetectedZones[Index] + if DetectedZone then + return DetectedZone + end + + return nil +end + +--- Smoke the detected units +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:SmokeDetectedUnits() + self:F2() + + self._SmokeDetectedUnits = true +end + +--- Flare the detected units +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:SmokeDetectedUnits() + self:F2() + + self._FlareDetectedUnits = true +end + +--- Smoke the detected zones +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:SmokeDetectedZones() + self:F2() + + self._SmokeDetectedZones = true +end + +--- Flare the detected zones +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:FlareDetectedZones() + self:F2() + + self._FlareDetectedZones = true +end + + +--- Make a DetectionSet table. This function will be overridden in the derived clsses. +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:CreateDetectionSets() + self:F2() + + for DetectedUnitName, DetectedUnitData in pairs( self.DetectedObjects ) do + self:T( DetectedUnitData.Name ) + local DetectedUnit = UNIT:FindByName( DetectedUnitData.Name ) -- Unit#UNIT + if DetectedUnit and DetectedUnit:IsAlive() then + self:T( DetectedUnit:GetName() ) + if #self.DetectedSets == 0 then + self:T( { "Adding Unit Set #", 1 } ) + self.DetectedZones[1] = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) + self.DetectedSets[1] = SET_UNIT:New() + self.DetectedSets[1]:AddUnit( DetectedUnit ) + else + local AddedToSet = false + for DetectedZoneIndex = 1, #self.DetectedZones do + self:T( "Detected Unit Set #" .. DetectedZoneIndex ) + local DetectedUnitSet = self.DetectedSets[DetectedZoneIndex] -- Set#SET_BASE + DetectedUnitSet:Flush() + local DetectedZone = self.DetectedZones[DetectedZoneIndex] -- Zone#ZONE_UNIT + if DetectedUnit:IsInZone( DetectedZone ) then + self:T( "Adding to Unit Set #" .. DetectedZoneIndex ) + DetectedUnitSet:AddUnit( DetectedUnit ) + AddedToSet = true + end + end + if AddedToSet == false then + local DetectedZoneIndex = #self.DetectedZones + 1 + self:T( "Adding new zone #" .. DetectedZoneIndex ) + self.DetectedZones[DetectedZoneIndex] = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) + self.DetectedSets[DetectedZoneIndex] = SET_UNIT:New() + self.DetectedSets[DetectedZoneIndex]:AddUnit( DetectedUnit ) + end + end + end + end + + -- Now all the tests should have been build, now make some smoke and flares... + + for DetectedZoneIndex = 1, #self.DetectedZones do + local DetectedUnitSet = self.DetectedSets[DetectedZoneIndex] -- Set#SET_BASE + local DetectedZone = self.DetectedZones[DetectedZoneIndex] -- Zone#ZONE_UNIT + self:T( "Detected Set #" .. DetectedZoneIndex ) + DetectedUnitSet:ForEachUnit( + --- @param Unit#UNIT DetectedUnit + function( DetectedUnit ) + self:T( DetectedUnit:GetName() ) + if self._FlareDetectedUnits then + DetectedUnit:FlareRed() + end + if self._SmokeDetectedUnits then + DetectedUnit:SmokeRed() + end + end + ) + if self._FlareDetectedZones then + DetectedZone:FlareZone( POINT_VEC3.SmokeColor.White, 30, math.random( 0,90 ) ) + end + if self._SmokeDetectedZones then + DetectedZone:SmokeZone( POINT_VEC3.SmokeColor.White, 30 ) + end + end + +end + + +--- This module contains the FAC classes. +-- +-- === +-- +-- 1) @{Fac#FAC_BASE} class, extends @{Base#BASE} +-- ============================================== +-- The @{Fac#FAC_BASE} class defines the core functions to report detected objects to clients. +-- Reportings can be done in several manners, and it is up to the derived classes if FAC_BASE to model the reporting behaviour. +-- +-- 1.1) FAC_BASE constructor: +-- ---------------------------- +-- * @{Fac#FAC_BASE.New}(): Create a new FAC_BASE instance. +-- +-- 1.2) FAC_BASE reporting: +-- ------------------------ +-- Derived FAC_BASE classes will reports detected units using the method @{Fac#FAC_BASE.ReportDetected}(). This method implements polymorphic behaviour. +-- +-- The time interval in seconds of the reporting can be changed using the methods @{Fac#FAC_BASE.SetReportInterval}(). +-- To control how long a reporting message is displayed, use @{Fac#FAC_BASE.SetReportDisplayTime}(). +-- Derived classes need to implement the method @{Fac#FAC_BASE.GetReportDisplayTime}() to use the correct display time for displayed messages during a report. +-- +-- Reporting can be started and stopped using the methods @{Fac#FAC_BASE.StartReporting}() and @{Fac#FAC_BASE.StopReporting}() respectively. +-- If an ad-hoc report is requested, use the method @{Fac#FAC_BASE#ReportNow}(). +-- +-- The default reporting interval is every 60 seconds. The reporting messages are displayed 15 seconds. +-- +-- === +-- +-- 2) @{Fac#FAC_REPORTING} class, extends @{Fac#FAC_BASE} +-- ====================================================== +-- The @{Fac#FAC_REPORTING} class implements detected units reporting. Reporting can be controlled using the reporting methods available in the @{Fac#FAC_BASE} class. +-- +-- 2.1) FAC_REPORTING constructor: +-- ------------------------------- +-- The @{Fac#FAC_REPORTING.New}() method creates a new FAC_REPORTING instance. +-- +-- === +-- +-- @module Fac +-- @author Mechanic, Prof_Hilactic, FlightControl : Concept & Testing +-- @author FlightControl : Design & Programming + + + +--- FAC_BASE class. +-- @type FAC_BASE +-- @field Set#SET_CLIENT ClientSet The clients to which the FAC will report to. +-- @field Detection#DETECTION_BASE Detection The DETECTION_BASE object that is used to report the detected objects. +-- @extends Base#BASE +FAC_BASE = { + ClassName = "FAC_BASE", + ClientSet = nil, + Detection = nil, +} + +--- FAC constructor. +-- @param #FAC_BASE self +-- @param Set#SET_CLIENT ClientSet +-- @param Detection#DETECTION_BASE Detection +-- @return #FAC_BASE self +function FAC_BASE:New( ClientSet, Detection ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) -- Fac#FAC_BASE + + self.ClientSet = ClientSet + self.Detection = Detection + + self:SetReportInterval( 60 ) + self:SetReportDisplayTime( 15 ) + + return self +end + +--- Set the reporting time interval. +-- @param #FAC_BASE self +-- @param #number ReportInterval The interval in seconds when a report needs to be done. +-- @return #FAC_BASE self +function FAC_BASE:SetReportInterval( ReportInterval ) + self:F2() + + self._ReportInterval = ReportInterval +end + + +--- Set the reporting message display time. +-- @param #FAC_BASE self +-- @param #number ReportDisplayTime The display time in seconds when a report needs to be done. +-- @return #FAC_BASE self +function FAC_BASE:SetReportDisplayTime( ReportDisplayTime ) + self:F2() + + self._ReportDisplayTime = ReportDisplayTime +end + +--- Get the reporting message display time. +-- @param #FAC_BASE self +-- @return #number ReportDisplayTime The display time in seconds when a report needs to be done. +function FAC_BASE:GetReportDisplayTime() + self:F2() + + return self._ReportDisplayTime +end + +--- Reports the detected items to the @{Set#SET_CLIENT}. +-- @param #FAC_BASE self +-- @param Set#SET_BASE DetectedSets The detected Sets created by the @{Detection#DETECTION_BASE} object. +-- @return #FAC_BASE self +function FAC_BASE:ReportDetected( DetectedSets ) + self:F2() + + + +end + +--- Schedule the FAC reporting. +-- @param #FAC_BASE self +-- @param #number DelayTime The delay in seconds to wait the reporting. +-- @param #number ReportInterval The repeat interval in seconds for the reporting to happen repeatedly. +-- @return #FAC_BASE self +function FAC_BASE:Schedule( DelayTime, ReportInterval ) + self:F2() + + self._ScheduleDelayTime = DelayTime + + self:SetReportInterval( ReportInterval ) + + self.FacScheduler = SCHEDULER:New(self, self._FacScheduler, { self, "Fac" }, self._ScheduleDelayTime, self._ReportInterval ) + return self +end + +--- Report the detected @{Unit#UNIT}s detected within the @{DetectION#DETECTION_BASE} object to the @{Set#SET_CLIENT}s. +-- @param #FAC_BASE self +function FAC_BASE:_FacScheduler( SchedulerName ) + self:F2( { SchedulerName } ) + + self.ClientSet:ForEachClient( + --- @param Client#CLIENT Client + function( Client ) + if Client:IsAlive() then + local DetectedSets = self.Detection:GetDetectedSets() + return self:ReportDetected( Client, DetectedSets ) + end + end + ) + + return true +end + +-- FAC_REPORTING + +--- FAC_REPORTING class. +-- @type FAC_REPORTING +-- @field Set#SET_CLIENT ClientSet The clients to which the FAC will report to. +-- @field Detection#DETECTION_BASE Detection The DETECTION_BASE object that is used to report the detected objects. +-- @extends #FAC_BASE +FAC_REPORTING = { + ClassName = "FAC_REPORTING", +} + + +--- FAC_REPORTING constructor. +-- @param #FAC_REPORTING self +-- @param Set#SET_CLIENT ClientSet +-- @param Detection#DETECTION_BASE Detection +-- @return #FAC_REPORTING self +function FAC_REPORTING:New( ClientSet, Detection ) + + -- Inherits from FAC_BASE + local self = BASE:Inherit( self, FAC_BASE:New( ClientSet, Detection ) ) -- #FAC_REPORTING + + self:Schedule( 5, 60 ) + return self +end + + +--- Reports the detected items to the @{Set#SET_CLIENT}. +-- @param #FAC_REPORTING self +-- @param Client#CLIENT Client The @{Client} object to where the report needs to go. +-- @param Set#SET_BASE DetectedSets The detected Sets created by the @{Detection#DETECTION_BASE} object. +-- @return #boolean Return true if you want the reporting to continue... false will cancel the reporting loop. +function FAC_REPORTING:ReportDetected( Client, DetectedSets ) + self:F2( Client ) + + local DetectedMsg = {} + for DetectedUnitSetID, DetectedUnitSet in pairs( DetectedSets ) do + local UnitSet = DetectedUnitSet -- Set#SET_UNIT + local MT = {} -- Message Text + local UnitTypes = {} + for DetectedUnitID, DetectedUnitData in pairs( UnitSet:GetSet() ) do + local DetectedUnit = DetectedUnitData -- Unit#UNIT + local UnitType = DetectedUnit:GetTypeName() + if not UnitTypes[UnitType] then + UnitTypes[UnitType] = 1 + else + UnitTypes[UnitType] = UnitTypes[UnitType] + 1 + end + end + for UnitTypeID, UnitType in pairs( UnitTypes ) do + MT[#MT+1] = UnitType .. " of " .. UnitTypeID + end + local MessageText = table.concat( MT, ", " ) + DetectedMsg[#DetectedMsg+1] = " - Group #" .. DetectedUnitSetID .. ": " .. MessageText + end + local FACGroup = self.Detection:GetFACGroup() + FACGroup:MessageToClient( "Reporting detected target groups:\n" .. table.concat( DetectedMsg, "\n" ), self:GetReportDisplayTime(), Client ) + + return true +end + + +BASE:TraceOnOff( false ) env.info( '*** MOOSE INCLUDE END *** ' ) diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index 518c25c8a..0a431f203 100644 --- a/Moose Mission Setup/Moose.lua +++ b/Moose Mission Setup/Moose.lua @@ -1,45 +1,23809 @@ -env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20160624_1231' ) - +env.info( '*** MOOSE STATIC INCLUDE START *** ' ) +env.info( 'Moose Generation Timestamp: 20160625_0851' ) local base = _G Include = {} - -Include.Path = function() - local str = debug.getinfo(2, "S").source - return str:match("(.*/)"):sub(1,-2):gsub("\\","/") +Include.Files = {} +Include.File = function( IncludeFile ) end -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 - env.info( "Include:" .. IncludeFile .. " from " .. Include.MissionPath ) - local f = assert( base.loadfile( Include.MissionPath .. IncludeFile .. ".lua" ) ) - if f == nil then - error ("Could not load MOOSE file " .. IncludeFile .. ".lua" ) - else - env.info( "Include:" .. IncludeFile .. " loaded from " .. Include.MissionPath ) - return f() +--- Various routines +-- @module routines +-- @author Flightcontrol + +env.setErrorMessageBoxEnabled(false) + +--- Extract of MIST functions. +-- @author Grimes + +routines = {} + + +-- don't change these +routines.majorVersion = 3 +routines.minorVersion = 3 +routines.build = 22 + +----------------------------------------------------------------------------------------------------------------- + +---------------------------------------------------------------------------------------------- +-- Utils- conversion, Lua utils, etc. +routines.utils = {} + +--from http://lua-users.org/wiki/CopyTable +routines.utils.deepCopy = function(object) + local lookup_table = {} + local function _copy(object) + if type(object) ~= "table" then + return object + elseif lookup_table[object] then + return lookup_table[object] + end + local new_table = {} + lookup_table[object] = new_table + for index, value in pairs(object) do + new_table[_copy(index)] = _copy(value) + end + return setmetatable(new_table, getmetatable(object)) + end + local objectreturn = _copy(object) + return objectreturn +end + + +-- porting in Slmod's serialize_slmod2 +routines.utils.oneLineSerialize = function(tbl) -- serialization of a table all on a single line, no comments, made to replace old get_table_string function + + lookup_table = {} + + local function _Serialize( tbl ) + + if type(tbl) == 'table' then --function only works for tables! + + if lookup_table[tbl] then + return lookup_table[object] end + + local tbl_str = {} + + lookup_table[tbl] = tbl_str + + tbl_str[#tbl_str + 1] = '{' + + for ind,val in pairs(tbl) do -- serialize its fields + local ind_str = {} + if type(ind) == "number" then + ind_str[#ind_str + 1] = '[' + ind_str[#ind_str + 1] = tostring(ind) + ind_str[#ind_str + 1] = ']=' + else --must be a string + ind_str[#ind_str + 1] = '[' + ind_str[#ind_str + 1] = routines.utils.basicSerialize(ind) + ind_str[#ind_str + 1] = ']=' + end + + local val_str = {} + if ((type(val) == 'number') or (type(val) == 'boolean')) then + val_str[#val_str + 1] = tostring(val) + val_str[#val_str + 1] = ',' + tbl_str[#tbl_str + 1] = table.concat(ind_str) + tbl_str[#tbl_str + 1] = table.concat(val_str) + elseif type(val) == 'string' then + val_str[#val_str + 1] = routines.utils.basicSerialize(val) + val_str[#val_str + 1] = ',' + tbl_str[#tbl_str + 1] = table.concat(ind_str) + tbl_str[#tbl_str + 1] = table.concat(val_str) + elseif type(val) == 'nil' then -- won't ever happen, right? + val_str[#val_str + 1] = 'nil,' + tbl_str[#tbl_str + 1] = table.concat(ind_str) + tbl_str[#tbl_str + 1] = table.concat(val_str) + elseif type(val) == 'table' then + if ind == "__index" then + -- tbl_str[#tbl_str + 1] = "__index" + -- tbl_str[#tbl_str + 1] = ',' --I think this is right, I just added it + else + + val_str[#val_str + 1] = _Serialize(val) + val_str[#val_str + 1] = ',' --I think this is right, I just added it + tbl_str[#tbl_str + 1] = table.concat(ind_str) + tbl_str[#tbl_str + 1] = table.concat(val_str) + end + elseif type(val) == 'function' then + -- tbl_str[#tbl_str + 1] = "function " .. tostring(ind) + -- tbl_str[#tbl_str + 1] = ',' --I think this is right, I just added it + else +-- env.info('unable to serialize value type ' .. routines.utils.basicSerialize(type(val)) .. ' at index ' .. tostring(ind)) +-- env.info( debug.traceback() ) + end + + end + tbl_str[#tbl_str + 1] = '}' + return table.concat(tbl_str) else - env.info( "Include:" .. IncludeFile .. " loaded from " .. Include.ProgramPath ) - return f() + return tostring(tbl) + end + end + + local objectreturn = _Serialize(tbl) + return objectreturn +end + +--porting in Slmod's "safestring" basic serialize +routines.utils.basicSerialize = function(s) + if s == nil then + return "\"\"" + else + if ((type(s) == 'number') or (type(s) == 'boolean') or (type(s) == 'function') or (type(s) == 'table') or (type(s) == 'userdata') ) then + return tostring(s) + elseif type(s) == 'string' then + s = string.format('%q', s) + return s end end end -Include.ProgramPath = "Scripts/Moose/" -Include.MissionPath = Include.Path() -env.info( "Include.ProgramPath = " .. Include.ProgramPath) -env.info( "Include.MissionPath = " .. Include.MissionPath) +routines.utils.toDegree = function(angle) + return angle*180/math.pi +end -Include.Files = {} +routines.utils.toRadian = function(angle) + return angle*math.pi/180 +end +routines.utils.metersToNM = function(meters) + return meters/1852 +end + +routines.utils.metersToFeet = function(meters) + return meters/0.3048 +end + +routines.utils.NMToMeters = function(NM) + return NM*1852 +end + +routines.utils.feetToMeters = function(feet) + return feet*0.3048 +end + +routines.utils.mpsToKnots = function(mps) + return mps*3600/1852 +end + +routines.utils.mpsToKmph = function(mps) + return mps*3.6 +end + +routines.utils.knotsToMps = function(knots) + return knots*1852/3600 +end + +routines.utils.kmphToMps = function(kmph) + return kmph/3.6 +end + +function routines.utils.makeVec2(Vec3) + if Vec3.z then + return {x = Vec3.x, y = Vec3.z} + else + return {x = Vec3.x, y = Vec3.y} -- it was actually already vec2. + end +end + +function routines.utils.makeVec3(Vec2, y) + if not Vec2.z then + if not y then + y = 0 + end + return {x = Vec2.x, y = y, z = Vec2.y} + else + return {x = Vec2.x, y = Vec2.y, z = Vec2.z} -- it was already Vec3, actually. + end +end + +function routines.utils.makeVec3GL(Vec2, offset) + local adj = offset or 0 + + if not Vec2.z then + return {x = Vec2.x, y = (land.getHeight(Vec2) + adj), z = Vec2.y} + else + return {x = Vec2.x, y = (land.getHeight({x = Vec2.x, y = Vec2.z}) + adj), z = Vec2.z} + end +end + +routines.utils.zoneToVec3 = function(zone) + local new = {} + if type(zone) == 'table' and zone.point then + new.x = zone.point.x + new.y = zone.point.y + new.z = zone.point.z + return new + elseif type(zone) == 'string' then + zone = trigger.misc.getZone(zone) + if zone then + new.x = zone.point.x + new.y = zone.point.y + new.z = zone.point.z + return new + end + end +end + +-- gets heading-error corrected direction from point along vector vec. +function routines.utils.getDir(vec, point) + local dir = math.atan2(vec.z, vec.x) + dir = dir + routines.getNorthCorrection(point) + if dir < 0 then + dir = dir + 2*math.pi -- put dir in range of 0 to 2*pi + end + return dir +end + +-- gets distance in meters between two points (2 dimensional) +function routines.utils.get2DDist(point1, point2) + point1 = routines.utils.makeVec3(point1) + point2 = routines.utils.makeVec3(point2) + return routines.vec.mag({x = point1.x - point2.x, y = 0, z = point1.z - point2.z}) +end + +-- gets distance in meters between two points (3 dimensional) +function routines.utils.get3DDist(point1, point2) + return routines.vec.mag({x = point1.x - point2.x, y = point1.y - point2.y, z = point1.z - point2.z}) +end + + + +-- From http://lua-users.org/wiki/SimpleRound +-- use negative idp for rounding ahead of decimal place, positive for rounding after decimal place +routines.utils.round = function(num, idp) + local mult = 10^(idp or 0) + return math.floor(num * mult + 0.5) / mult +end + +-- porting in Slmod's dostring +routines.utils.dostring = function(s) + local f, err = loadstring(s) + if f then + return true, f() + else + return false, err + end +end + + +--3D Vector manipulation +routines.vec = {} + +routines.vec.add = function(vec1, vec2) + return {x = vec1.x + vec2.x, y = vec1.y + vec2.y, z = vec1.z + vec2.z} +end + +routines.vec.sub = function(vec1, vec2) + return {x = vec1.x - vec2.x, y = vec1.y - vec2.y, z = vec1.z - vec2.z} +end + +routines.vec.scalarMult = function(vec, mult) + return {x = vec.x*mult, y = vec.y*mult, z = vec.z*mult} +end + +routines.vec.scalar_mult = routines.vec.scalarMult + +routines.vec.dp = function(vec1, vec2) + return vec1.x*vec2.x + vec1.y*vec2.y + vec1.z*vec2.z +end + +routines.vec.cp = function(vec1, vec2) + return { x = vec1.y*vec2.z - vec1.z*vec2.y, y = vec1.z*vec2.x - vec1.x*vec2.z, z = vec1.x*vec2.y - vec1.y*vec2.x} +end + +routines.vec.mag = function(vec) + return (vec.x^2 + vec.y^2 + vec.z^2)^0.5 +end + +routines.vec.getUnitVec = function(vec) + local mag = routines.vec.mag(vec) + return { x = vec.x/mag, y = vec.y/mag, z = vec.z/mag } +end + +routines.vec.rotateVec2 = function(vec2, theta) + return { x = vec2.x*math.cos(theta) - vec2.y*math.sin(theta), y = vec2.x*math.sin(theta) + vec2.y*math.cos(theta)} +end +--------------------------------------------------------------------------------------------------------------------------- + + + + +-- acc- the accuracy of each easting/northing. 0, 1, 2, 3, 4, or 5. +routines.tostringMGRS = function(MGRS, acc) + if acc == 0 then + return MGRS.UTMZone .. ' ' .. MGRS.MGRSDigraph + else + return MGRS.UTMZone .. ' ' .. MGRS.MGRSDigraph .. ' ' .. string.format('%0' .. acc .. 'd', routines.utils.round(MGRS.Easting/(10^(5-acc)), 0)) + .. ' ' .. string.format('%0' .. acc .. 'd', routines.utils.round(MGRS.Northing/(10^(5-acc)), 0)) + end +end + +--[[acc: +in DM: decimal point of minutes. +In DMS: decimal point of seconds. +position after the decimal of the least significant digit: +So: +42.32 - acc of 2. +]] +routines.tostringLL = function(lat, lon, acc, DMS) + + local latHemi, lonHemi + if lat > 0 then + latHemi = 'N' + else + latHemi = 'S' + end + + if lon > 0 then + lonHemi = 'E' + else + lonHemi = 'W' + end + + lat = math.abs(lat) + lon = math.abs(lon) + + local latDeg = math.floor(lat) + local latMin = (lat - latDeg)*60 + + local lonDeg = math.floor(lon) + local lonMin = (lon - lonDeg)*60 + + if DMS then -- degrees, minutes, and seconds. + local oldLatMin = latMin + latMin = math.floor(latMin) + local latSec = routines.utils.round((oldLatMin - latMin)*60, acc) + + local oldLonMin = lonMin + lonMin = math.floor(lonMin) + local lonSec = routines.utils.round((oldLonMin - lonMin)*60, acc) + + if latSec == 60 then + latSec = 0 + latMin = latMin + 1 + end + + if lonSec == 60 then + lonSec = 0 + lonMin = lonMin + 1 + end + + local secFrmtStr -- create the formatting string for the seconds place + if acc <= 0 then -- no decimal place. + secFrmtStr = '%02d' + else + local width = 3 + acc -- 01.310 - that's a width of 6, for example. + secFrmtStr = '%0' .. width .. '.' .. acc .. 'f' + end + + return string.format('%02d', latDeg) .. ' ' .. string.format('%02d', latMin) .. '\' ' .. string.format(secFrmtStr, latSec) .. '"' .. latHemi .. ' ' + .. string.format('%02d', lonDeg) .. ' ' .. string.format('%02d', lonMin) .. '\' ' .. string.format(secFrmtStr, lonSec) .. '"' .. lonHemi + + else -- degrees, decimal minutes. + latMin = routines.utils.round(latMin, acc) + lonMin = routines.utils.round(lonMin, acc) + + if latMin == 60 then + latMin = 0 + latDeg = latDeg + 1 + end + + if lonMin == 60 then + lonMin = 0 + lonDeg = lonDeg + 1 + end + + local minFrmtStr -- create the formatting string for the minutes place + if acc <= 0 then -- no decimal place. + minFrmtStr = '%02d' + else + local width = 3 + acc -- 01.310 - that's a width of 6, for example. + minFrmtStr = '%0' .. width .. '.' .. acc .. 'f' + end + + return string.format('%02d', latDeg) .. ' ' .. string.format(minFrmtStr, latMin) .. '\'' .. latHemi .. ' ' + .. string.format('%02d', lonDeg) .. ' ' .. string.format(minFrmtStr, lonMin) .. '\'' .. lonHemi + + end +end + +--[[ required: az - radian + required: dist - meters + optional: alt - meters (set to false or nil if you don't want to use it). + optional: metric - set true to get dist and alt in km and m. + precision will always be nearest degree and NM or km.]] +routines.tostringBR = function(az, dist, alt, metric) + az = routines.utils.round(routines.utils.toDegree(az), 0) + + if metric then + dist = routines.utils.round(dist/1000, 2) + else + dist = routines.utils.round(routines.utils.metersToNM(dist), 2) + end + + local s = string.format('%03d', az) .. ' for ' .. dist + + if alt then + if metric then + s = s .. ' at ' .. routines.utils.round(alt, 0) + else + s = s .. ' at ' .. routines.utils.round(routines.utils.metersToFeet(alt), 0) + end + end + return s +end + +routines.getNorthCorrection = function(point) --gets the correction needed for true north + if not point.z then --Vec2; convert to Vec3 + point.z = point.y + point.y = 0 + end + local lat, lon = coord.LOtoLL(point) + local north_posit = coord.LLtoLO(lat + 1, lon) + return math.atan2(north_posit.z - point.z, north_posit.x - point.x) +end + + +-- the main area +do + -- THE MAIN FUNCTION -- Accessed 100 times/sec. + routines.main = function() + timer.scheduleFunction(routines.main, {}, timer.getTime() + 2) --reschedule first in case of Lua error + ---------------------------------------------------------------------------------------------------------- + --area to add new stuff in + + routines.do_scheduled_functions() + end -- end of routines.main + + timer.scheduleFunction(routines.main, {}, timer.getTime() + 2) + +end + + +do + local idNum = 0 + + --Simplified event handler + routines.addEventHandler = function(f) --id is optional! + local handler = {} + idNum = idNum + 1 + handler.id = idNum + handler.f = f + handler.onEvent = function(self, event) + self.f(event) + end + world.addEventHandler(handler) + end + + routines.removeEventHandler = function(id) + for key, handler in pairs(world.eventHandlers) do + if handler.id and handler.id == id then + world.eventHandlers[key] = nil + return true + end + end + return false + end +end + +-- need to return a Vec3 or Vec2? +function routines.getRandPointInCircle(point, radius, innerRadius) + local theta = 2*math.pi*math.random() + local rad = math.random() + math.random() + if rad > 1 then + rad = 2 - rad + end + + local radMult + if innerRadius and innerRadius <= radius then + radMult = (radius - innerRadius)*rad + innerRadius + else + radMult = radius*rad + end + + if not point.z then --might as well work with vec2/3 + point.z = point.y + end + + local rndCoord + if radius > 0 then + rndCoord = {x = math.cos(theta)*radMult + point.x, y = math.sin(theta)*radMult + point.z} + else + rndCoord = {x = point.x, y = point.z} + end + return rndCoord +end + +routines.goRoute = function(group, path) + local misTask = { + id = 'Mission', + params = { + route = { + points = routines.utils.deepCopy(path), + }, + }, + } + if type(group) == 'string' then + group = Group.getByName(group) + end + local groupCon = group:getController() + if groupCon then + groupCon:setTask(misTask) + return true + end + + Controller.setTask(groupCon, misTask) + return false +end + + +-- Useful atomic functions from mist, ported. + +routines.ground = {} +routines.fixedWing = {} +routines.heli = {} + +routines.ground.buildWP = function(point, overRideForm, overRideSpeed) + + local wp = {} + wp.x = point.x + + if point.z then + wp.y = point.z + else + wp.y = point.y + end + local form, speed + + if point.speed and not overRideSpeed then + wp.speed = point.speed + elseif type(overRideSpeed) == 'number' then + wp.speed = overRideSpeed + else + wp.speed = routines.utils.kmphToMps(20) + end + + if point.form and not overRideForm then + form = point.form + else + form = overRideForm + end + + if not form then + wp.action = 'Cone' + else + form = string.lower(form) + if form == 'off_road' or form == 'off road' then + wp.action = 'Off Road' + elseif form == 'on_road' or form == 'on road' then + wp.action = 'On Road' + elseif form == 'rank' or form == 'line_abrest' or form == 'line abrest' or form == 'lineabrest'then + wp.action = 'Rank' + elseif form == 'cone' then + wp.action = 'Cone' + elseif form == 'diamond' then + wp.action = 'Diamond' + elseif form == 'vee' then + wp.action = 'Vee' + elseif form == 'echelon_left' or form == 'echelon left' or form == 'echelonl' then + wp.action = 'EchelonL' + elseif form == 'echelon_right' or form == 'echelon right' or form == 'echelonr' then + wp.action = 'EchelonR' + else + wp.action = 'Cone' -- if nothing matched + end + end + + wp.type = 'Turning Point' + + return wp + +end + +routines.fixedWing.buildWP = function(point, WPtype, speed, alt, altType) + + local wp = {} + wp.x = point.x + + if point.z then + wp.y = point.z + else + wp.y = point.y + end + + if alt and type(alt) == 'number' then + wp.alt = alt + else + wp.alt = 2000 + end + + if altType then + altType = string.lower(altType) + if altType == 'radio' or 'agl' then + wp.alt_type = 'RADIO' + elseif altType == 'baro' or 'asl' then + wp.alt_type = 'BARO' + end + else + wp.alt_type = 'RADIO' + end + + if point.speed then + speed = point.speed + end + + if point.type then + WPtype = point.type + end + + if not speed then + wp.speed = routines.utils.kmphToMps(500) + else + wp.speed = speed + end + + if not WPtype then + wp.action = 'Turning Point' + else + WPtype = string.lower(WPtype) + if WPtype == 'flyover' or WPtype == 'fly over' or WPtype == 'fly_over' then + wp.action = 'Fly Over Point' + elseif WPtype == 'turningpoint' or WPtype == 'turning point' or WPtype == 'turning_point' then + wp.action = 'Turning Point' + else + wp.action = 'Turning Point' + end + end + + wp.type = 'Turning Point' + return wp +end + +routines.heli.buildWP = function(point, WPtype, speed, alt, altType) + + local wp = {} + wp.x = point.x + + if point.z then + wp.y = point.z + else + wp.y = point.y + end + + if alt and type(alt) == 'number' then + wp.alt = alt + else + wp.alt = 500 + end + + if altType then + altType = string.lower(altType) + if altType == 'radio' or 'agl' then + wp.alt_type = 'RADIO' + elseif altType == 'baro' or 'asl' then + wp.alt_type = 'BARO' + end + else + wp.alt_type = 'RADIO' + end + + if point.speed then + speed = point.speed + end + + if point.type then + WPtype = point.type + end + + if not speed then + wp.speed = routines.utils.kmphToMps(200) + else + wp.speed = speed + end + + if not WPtype then + wp.action = 'Turning Point' + else + WPtype = string.lower(WPtype) + if WPtype == 'flyover' or WPtype == 'fly over' or WPtype == 'fly_over' then + wp.action = 'Fly Over Point' + elseif WPtype == 'turningpoint' or WPtype == 'turning point' or WPtype == 'turning_point' then + wp.action = 'Turning Point' + else + wp.action = 'Turning Point' + end + end + + wp.type = 'Turning Point' + return wp +end + +routines.groupToRandomPoint = function(vars) + local group = vars.group --Required + local point = vars.point --required + local radius = vars.radius or 0 + local innerRadius = vars.innerRadius + local form = vars.form or 'Cone' + local heading = vars.heading or math.random()*2*math.pi + local headingDegrees = vars.headingDegrees + local speed = vars.speed or routines.utils.kmphToMps(20) + + + local useRoads + if not vars.disableRoads then + useRoads = true + else + useRoads = false + end + + local path = {} + + if headingDegrees then + heading = headingDegrees*math.pi/180 + end + + if heading >= 2*math.pi then + heading = heading - 2*math.pi + end + + local rndCoord = routines.getRandPointInCircle(point, radius, innerRadius) + + local offset = {} + local posStart = routines.getLeadPos(group) + + offset.x = routines.utils.round(math.sin(heading - (math.pi/2)) * 50 + rndCoord.x, 3) + offset.z = routines.utils.round(math.cos(heading + (math.pi/2)) * 50 + rndCoord.y, 3) + path[#path + 1] = routines.ground.buildWP(posStart, form, speed) + + + if useRoads == true and ((point.x - posStart.x)^2 + (point.z - posStart.z)^2)^0.5 > radius * 1.3 then + path[#path + 1] = routines.ground.buildWP({['x'] = posStart.x + 11, ['z'] = posStart.z + 11}, 'off_road', speed) + path[#path + 1] = routines.ground.buildWP(posStart, 'on_road', speed) + path[#path + 1] = routines.ground.buildWP(offset, 'on_road', speed) + else + path[#path + 1] = routines.ground.buildWP({['x'] = posStart.x + 25, ['z'] = posStart.z + 25}, form, speed) + end + + path[#path + 1] = routines.ground.buildWP(offset, form, speed) + path[#path + 1] = routines.ground.buildWP(rndCoord, form, speed) + + routines.goRoute(group, path) + + return +end + +routines.groupRandomDistSelf = function(gpData, dist, form, heading, speed) + local pos = routines.getLeadPos(gpData) + local fakeZone = {} + fakeZone.radius = dist or math.random(300, 1000) + fakeZone.point = {x = pos.x, y, pos.y, z = pos.z} + routines.groupToRandomZone(gpData, fakeZone, form, heading, speed) + + return +end + +routines.groupToRandomZone = function(gpData, zone, form, heading, speed) + if type(gpData) == 'string' then + gpData = Group.getByName(gpData) + end + + if type(zone) == 'string' then + zone = trigger.misc.getZone(zone) + elseif type(zone) == 'table' and not zone.radius then + zone = trigger.misc.getZone(zone[math.random(1, #zone)]) + end + + if speed then + speed = routines.utils.kmphToMps(speed) + end + + local vars = {} + vars.group = gpData + vars.radius = zone.radius + vars.form = form + vars.headingDegrees = heading + vars.speed = speed + vars.point = routines.utils.zoneToVec3(zone) + + routines.groupToRandomPoint(vars) + + return +end + +routines.isTerrainValid = function(coord, terrainTypes) -- vec2/3 and enum or table of acceptable terrain types + if coord.z then + coord.y = coord.z + end + local typeConverted = {} + + if type(terrainTypes) == 'string' then -- if its a string it does this check + for constId, constData in pairs(land.SurfaceType) do + if string.lower(constId) == string.lower(terrainTypes) or string.lower(constData) == string.lower(terrainTypes) then + table.insert(typeConverted, constId) + end + end + elseif type(terrainTypes) == 'table' then -- if its a table it does this check + for typeId, typeData in pairs(terrainTypes) do + for constId, constData in pairs(land.SurfaceType) do + if string.lower(constId) == string.lower(typeData) or string.lower(constData) == string.lower(typeId) then + table.insert(typeConverted, constId) + end + end + end + end + for validIndex, validData in pairs(typeConverted) do + if land.getSurfaceType(coord) == land.SurfaceType[validData] then + return true + end + end + return false +end + +routines.groupToPoint = function(gpData, point, form, heading, speed, useRoads) + if type(point) == 'string' then + point = trigger.misc.getZone(point) + end + if speed then + speed = routines.utils.kmphToMps(speed) + end + + local vars = {} + vars.group = gpData + vars.form = form + vars.headingDegrees = heading + vars.speed = speed + vars.disableRoads = useRoads + vars.point = routines.utils.zoneToVec3(point) + routines.groupToRandomPoint(vars) + + return +end + + +routines.getLeadPos = function(group) + if type(group) == 'string' then -- group name + group = Group.getByName(group) + end + + local units = group:getUnits() + + local leader = units[1] + if not leader then -- SHOULD be good, but if there is a bug, this code future-proofs it then. + local lowestInd = math.huge + for ind, unit in pairs(units) do + if ind < lowestInd then + lowestInd = ind + leader = unit + end + end + end + if leader and Unit.isExist(leader) then -- maybe a little too paranoid now... + return leader:getPosition().p + end +end + +--[[ vars for routines.getMGRSString: +vars.units - table of unit names (NOT unitNameTable- maybe this should change). +vars.acc - integer between 0 and 5, inclusive +]] +routines.getMGRSString = function(vars) + local units = vars.units + local acc = vars.acc or 5 + local avgPos = routines.getAvgPos(units) + if avgPos then + return routines.tostringMGRS(coord.LLtoMGRS(coord.LOtoLL(avgPos)), acc) + end +end + +--[[ vars for routines.getLLString +vars.units - table of unit names (NOT unitNameTable- maybe this should change). +vars.acc - integer, number of numbers after decimal place +vars.DMS - if true, output in degrees, minutes, seconds. Otherwise, output in degrees, minutes. + + +]] +routines.getLLString = function(vars) + local units = vars.units + local acc = vars.acc or 3 + local DMS = vars.DMS + local avgPos = routines.getAvgPos(units) + if avgPos then + local lat, lon = coord.LOtoLL(avgPos) + return routines.tostringLL(lat, lon, acc, DMS) + end +end + +--[[ +vars.zone - table of a zone name. +vars.ref - vec3 ref point, maybe overload for vec2 as well? +vars.alt - boolean, if used, includes altitude in string +vars.metric - boolean, gives distance in km instead of NM. +]] +routines.getBRStringZone = function(vars) + local zone = trigger.misc.getZone( vars.zone ) + local ref = routines.utils.makeVec3(vars.ref, 0) -- turn it into Vec3 if it is not already. + local alt = vars.alt + local metric = vars.metric + if zone then + local vec = {x = zone.point.x - ref.x, y = zone.point.y - ref.y, z = zone.point.z - ref.z} + local dir = routines.utils.getDir(vec, ref) + local dist = routines.utils.get2DDist(zone.point, ref) + if alt then + alt = zone.y + end + return routines.tostringBR(dir, dist, alt, metric) + else + env.info( 'routines.getBRStringZone: error: zone is nil' ) + end +end + +--[[ +vars.units- table of unit names (NOT unitNameTable- maybe this should change). +vars.ref - vec3 ref point, maybe overload for vec2 as well? +vars.alt - boolean, if used, includes altitude in string +vars.metric - boolean, gives distance in km instead of NM. +]] +routines.getBRString = function(vars) + local units = vars.units + local ref = routines.utils.makeVec3(vars.ref, 0) -- turn it into Vec3 if it is not already. + local alt = vars.alt + local metric = vars.metric + local avgPos = routines.getAvgPos(units) + if avgPos then + local vec = {x = avgPos.x - ref.x, y = avgPos.y - ref.y, z = avgPos.z - ref.z} + local dir = routines.utils.getDir(vec, ref) + local dist = routines.utils.get2DDist(avgPos, ref) + if alt then + alt = avgPos.y + end + return routines.tostringBR(dir, dist, alt, metric) + end +end + + +-- Returns the Vec3 coordinates of the average position of the concentration of units most in the heading direction. +--[[ vars for routines.getLeadingPos: +vars.units - table of unit names +vars.heading - direction +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees +]] +routines.getLeadingPos = function(vars) + local units = vars.units + local heading = vars.heading + local radius = vars.radius + if vars.headingDegrees then + heading = routines.utils.toRadian(vars.headingDegrees) + end + + local unitPosTbl = {} + for i = 1, #units do + local unit = Unit.getByName(units[i]) + if unit and unit:isExist() then + unitPosTbl[#unitPosTbl + 1] = unit:getPosition().p + end + end + if #unitPosTbl > 0 then -- one more more units found. + -- first, find the unit most in the heading direction + local maxPos = -math.huge + + local maxPosInd -- maxPos - the furthest in direction defined by heading; maxPosInd = + for i = 1, #unitPosTbl do + local rotatedVec2 = routines.vec.rotateVec2(routines.utils.makeVec2(unitPosTbl[i]), heading) + if (not maxPos) or maxPos < rotatedVec2.x then + maxPos = rotatedVec2.x + maxPosInd = i + end + end + + --now, get all the units around this unit... + local avgPos + if radius then + local maxUnitPos = unitPosTbl[maxPosInd] + local avgx, avgy, avgz, totNum = 0, 0, 0, 0 + for i = 1, #unitPosTbl do + if routines.utils.get2DDist(maxUnitPos, unitPosTbl[i]) <= radius then + avgx = avgx + unitPosTbl[i].x + avgy = avgy + unitPosTbl[i].y + avgz = avgz + unitPosTbl[i].z + totNum = totNum + 1 + end + end + avgPos = { x = avgx/totNum, y = avgy/totNum, z = avgz/totNum} + else + avgPos = unitPosTbl[maxPosInd] + end + + return avgPos + end +end + + +--[[ vars for routines.getLeadingMGRSString: +vars.units - table of unit names +vars.heading - direction +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees +vars.acc - number, 0 to 5. +]] +routines.getLeadingMGRSString = function(vars) + local pos = routines.getLeadingPos(vars) + if pos then + local acc = vars.acc or 5 + return routines.tostringMGRS(coord.LLtoMGRS(coord.LOtoLL(pos)), acc) + end +end + +--[[ vars for routines.getLeadingLLString: +vars.units - table of unit names +vars.heading - direction, number +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees +vars.acc - number of digits after decimal point (can be negative) +vars.DMS - boolean, true if you want DMS. +]] +routines.getLeadingLLString = function(vars) + local pos = routines.getLeadingPos(vars) + if pos then + local acc = vars.acc or 3 + local DMS = vars.DMS + local lat, lon = coord.LOtoLL(pos) + return routines.tostringLL(lat, lon, acc, DMS) + end +end + + + +--[[ vars for routines.getLeadingBRString: +vars.units - table of unit names +vars.heading - direction, number +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees +vars.metric - boolean, if true, use km instead of NM. +vars.alt - boolean, if true, include altitude. +vars.ref - vec3/vec2 reference point. +]] +routines.getLeadingBRString = function(vars) + local pos = routines.getLeadingPos(vars) + if pos then + local ref = vars.ref + local alt = vars.alt + local metric = vars.metric + + local vec = {x = pos.x - ref.x, y = pos.y - ref.y, z = pos.z - ref.z} + local dir = routines.utils.getDir(vec, ref) + local dist = routines.utils.get2DDist(pos, ref) + if alt then + alt = pos.y + end + return routines.tostringBR(dir, dist, alt, metric) + end +end + +--[[ vars for routines.message.add + vars.text = 'Hello World' + vars.displayTime = 20 + vars.msgFor = {coa = {'red'}, countries = {'Ukraine', 'Georgia'}, unitTypes = {'A-10C'}} + +]] + +--[[ vars for routines.msgMGRS +vars.units - table of unit names (NOT unitNameTable- maybe this should change). +vars.acc - integer between 0 and 5, inclusive +vars.text - text in the message +vars.displayTime - self explanatory +vars.msgFor - scope +]] +routines.msgMGRS = function(vars) + local units = vars.units + local acc = vars.acc + local text = vars.text + local displayTime = vars.displayTime + local msgFor = vars.msgFor + + local s = routines.getMGRSString{units = units, acc = acc} + local newText + if string.find(text, '%%s') then -- look for %s + newText = string.format(text, s) -- insert the coordinates into the message + else -- else, just append to the end. + newText = text .. s + end + + routines.message.add{ + text = newText, + displayTime = displayTime, + msgFor = msgFor + } +end + +--[[ vars for routines.msgLL +vars.units - table of unit names (NOT unitNameTable- maybe this should change) (Yes). +vars.acc - integer, number of numbers after decimal place +vars.DMS - if true, output in degrees, minutes, seconds. Otherwise, output in degrees, minutes. +vars.text - text in the message +vars.displayTime - self explanatory +vars.msgFor - scope +]] +routines.msgLL = function(vars) + local units = vars.units -- technically, I don't really need to do this, but it helps readability. + local acc = vars.acc + local DMS = vars.DMS + local text = vars.text + local displayTime = vars.displayTime + local msgFor = vars.msgFor + + local s = routines.getLLString{units = units, acc = acc, DMS = DMS} + local newText + if string.find(text, '%%s') then -- look for %s + newText = string.format(text, s) -- insert the coordinates into the message + else -- else, just append to the end. + newText = text .. s + end + + routines.message.add{ + text = newText, + displayTime = displayTime, + msgFor = msgFor + } + +end + + +--[[ +vars.units- table of unit names (NOT unitNameTable- maybe this should change). +vars.ref - vec3 ref point, maybe overload for vec2 as well? +vars.alt - boolean, if used, includes altitude in string +vars.metric - boolean, gives distance in km instead of NM. +vars.text - text of the message +vars.displayTime +vars.msgFor - scope +]] +routines.msgBR = function(vars) + local units = vars.units -- technically, I don't really need to do this, but it helps readability. + local ref = vars.ref -- vec2/vec3 will be handled in routines.getBRString + local alt = vars.alt + local metric = vars.metric + local text = vars.text + local displayTime = vars.displayTime + local msgFor = vars.msgFor + + local s = routines.getBRString{units = units, ref = ref, alt = alt, metric = metric} + local newText + if string.find(text, '%%s') then -- look for %s + newText = string.format(text, s) -- insert the coordinates into the message + else -- else, just append to the end. + newText = text .. s + end + + routines.message.add{ + text = newText, + displayTime = displayTime, + msgFor = msgFor + } + +end + + +-------------------------------------------------------------------------------------------- +-- basically, just sub-types of routines.msgBR... saves folks the work of getting the ref point. +--[[ +vars.units- table of unit names (NOT unitNameTable- maybe this should change). +vars.ref - string red, blue +vars.alt - boolean, if used, includes altitude in string +vars.metric - boolean, gives distance in km instead of NM. +vars.text - text of the message +vars.displayTime +vars.msgFor - scope +]] +routines.msgBullseye = function(vars) + if string.lower(vars.ref) == 'red' then + vars.ref = routines.DBs.missionData.bullseye.red + routines.msgBR(vars) + elseif string.lower(vars.ref) == 'blue' then + vars.ref = routines.DBs.missionData.bullseye.blue + routines.msgBR(vars) + end +end + +--[[ +vars.units- table of unit names (NOT unitNameTable- maybe this should change). +vars.ref - unit name of reference point +vars.alt - boolean, if used, includes altitude in string +vars.metric - boolean, gives distance in km instead of NM. +vars.text - text of the message +vars.displayTime +vars.msgFor - scope +]] + +routines.msgBRA = function(vars) + if Unit.getByName(vars.ref) then + vars.ref = Unit.getByName(vars.ref):getPosition().p + if not vars.alt then + vars.alt = true + end + routines.msgBR(vars) + end +end +-------------------------------------------------------------------------------------------- + +--[[ vars for routines.msgLeadingMGRS: +vars.units - table of unit names +vars.heading - direction +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees (optional) +vars.acc - number, 0 to 5. +vars.text - text of the message +vars.displayTime +vars.msgFor - scope +]] +routines.msgLeadingMGRS = function(vars) + local units = vars.units -- technically, I don't really need to do this, but it helps readability. + local heading = vars.heading + local radius = vars.radius + local headingDegrees = vars.headingDegrees + local acc = vars.acc + local text = vars.text + local displayTime = vars.displayTime + local msgFor = vars.msgFor + + local s = routines.getLeadingMGRSString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, acc = acc} + local newText + if string.find(text, '%%s') then -- look for %s + newText = string.format(text, s) -- insert the coordinates into the message + else -- else, just append to the end. + newText = text .. s + end + + routines.message.add{ + text = newText, + displayTime = displayTime, + msgFor = msgFor + } + + +end +--[[ vars for routines.msgLeadingLL: +vars.units - table of unit names +vars.heading - direction, number +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees (optional) +vars.acc - number of digits after decimal point (can be negative) +vars.DMS - boolean, true if you want DMS. (optional) +vars.text - text of the message +vars.displayTime +vars.msgFor - scope +]] +routines.msgLeadingLL = function(vars) + local units = vars.units -- technically, I don't really need to do this, but it helps readability. + local heading = vars.heading + local radius = vars.radius + local headingDegrees = vars.headingDegrees + local acc = vars.acc + local DMS = vars.DMS + local text = vars.text + local displayTime = vars.displayTime + local msgFor = vars.msgFor + + local s = routines.getLeadingLLString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, acc = acc, DMS = DMS} + local newText + if string.find(text, '%%s') then -- look for %s + newText = string.format(text, s) -- insert the coordinates into the message + else -- else, just append to the end. + newText = text .. s + end + + routines.message.add{ + text = newText, + displayTime = displayTime, + msgFor = msgFor + } + +end + +--[[ +vars.units - table of unit names +vars.heading - direction, number +vars.radius - number +vars.headingDegrees - boolean, switches heading to degrees (optional) +vars.metric - boolean, if true, use km instead of NM. (optional) +vars.alt - boolean, if true, include altitude. (optional) +vars.ref - vec3/vec2 reference point. +vars.text - text of the message +vars.displayTime +vars.msgFor - scope +]] +routines.msgLeadingBR = function(vars) + local units = vars.units -- technically, I don't really need to do this, but it helps readability. + local heading = vars.heading + local radius = vars.radius + local headingDegrees = vars.headingDegrees + local metric = vars.metric + local alt = vars.alt + local ref = vars.ref -- vec2/vec3 will be handled in routines.getBRString + local text = vars.text + local displayTime = vars.displayTime + local msgFor = vars.msgFor + + local s = routines.getLeadingBRString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, metric = metric, alt = alt, ref = ref} + local newText + if string.find(text, '%%s') then -- look for %s + newText = string.format(text, s) -- insert the coordinates into the message + else -- else, just append to the end. + newText = text .. s + end + + routines.message.add{ + text = newText, + displayTime = displayTime, + msgFor = msgFor + } +end + + +function spairs(t, order) + -- collect the keys + local keys = {} + for k in pairs(t) do keys[#keys+1] = k end + + -- if order function given, sort by it by passing the table and keys a, b, + -- otherwise just sort the keys + if order then + table.sort(keys, function(a,b) return order(t, a, b) end) + else + table.sort(keys) + end + + -- return the iterator function + local i = 0 + return function() + i = i + 1 + if keys[i] then + return keys[i], t[keys[i]] + end + end +end + + +function routines.IsPartOfGroupInZones( CargoGroup, LandingZones ) +--trace.f() + + local CurrentZoneID = nil + + if CargoGroup then + local CargoUnits = CargoGroup:getUnits() + for CargoUnitID, CargoUnit in pairs( CargoUnits ) do + if CargoUnit and CargoUnit:getLife() >= 1.0 then + CurrentZoneID = routines.IsUnitInZones( CargoUnit, LandingZones ) + if CurrentZoneID then + break + end + end + end + end + +--trace.r( "", "", { CurrentZoneID } ) + return CurrentZoneID +end + + + +function routines.IsUnitInZones( TransportUnit, LandingZones ) +--trace.f("", "routines.IsUnitInZones" ) + + local TransportZoneResult = nil + local TransportZonePos = nil + local TransportZone = nil + + -- fill-up some local variables to support further calculations to determine location of units within the zone. + if TransportUnit then + local TransportUnitPos = TransportUnit:getPosition().p + if type( LandingZones ) == "table" then + for LandingZoneID, LandingZoneName in pairs( LandingZones ) do + TransportZone = trigger.misc.getZone( LandingZoneName ) + if TransportZone then + TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} + if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then + TransportZoneResult = LandingZoneID + break + end + end + end + else + TransportZone = trigger.misc.getZone( LandingZones ) + TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} + if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then + TransportZoneResult = 1 + end + end + if TransportZoneResult then + --trace.i( "routines", "TransportZone:" .. TransportZoneResult ) + else + --trace.i( "routines", "TransportZone:nil logic" ) + end + return TransportZoneResult + else + --trace.i( "routines", "TransportZone:nil hard" ) + return nil + end +end + +function routines.IsUnitNearZonesRadius( TransportUnit, LandingZones, ZoneRadius ) +--trace.f("", "routines.IsUnitInZones" ) + + local TransportZoneResult = nil + local TransportZonePos = nil + local TransportZone = nil + + -- fill-up some local variables to support further calculations to determine location of units within the zone. + if TransportUnit then + local TransportUnitPos = TransportUnit:getPosition().p + if type( LandingZones ) == "table" then + for LandingZoneID, LandingZoneName in pairs( LandingZones ) do + TransportZone = trigger.misc.getZone( LandingZoneName ) + if TransportZone then + TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} + if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= ZoneRadius ) then + TransportZoneResult = LandingZoneID + break + end + end + end + else + TransportZone = trigger.misc.getZone( LandingZones ) + TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} + if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= ZoneRadius ) then + TransportZoneResult = 1 + end + end + if TransportZoneResult then + --trace.i( "routines", "TransportZone:" .. TransportZoneResult ) + else + --trace.i( "routines", "TransportZone:nil logic" ) + end + return TransportZoneResult + else + --trace.i( "routines", "TransportZone:nil hard" ) + return nil + end +end + + +function routines.IsStaticInZones( TransportStatic, LandingZones ) +--trace.f() + + local TransportZoneResult = nil + local TransportZonePos = nil + local TransportZone = nil + + -- fill-up some local variables to support further calculations to determine location of units within the zone. + local TransportStaticPos = TransportStatic:getPosition().p + if type( LandingZones ) == "table" then + for LandingZoneID, LandingZoneName in pairs( LandingZones ) do + TransportZone = trigger.misc.getZone( LandingZoneName ) + if TransportZone then + TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} + if ((( TransportStaticPos.x - TransportZonePos.x)^2 + (TransportStaticPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then + TransportZoneResult = LandingZoneID + break + end + end + end + else + TransportZone = trigger.misc.getZone( LandingZones ) + TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} + if ((( TransportStaticPos.x - TransportZonePos.x)^2 + (TransportStaticPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then + TransportZoneResult = 1 + end + end + +--trace.r( "", "", { TransportZoneResult } ) + return TransportZoneResult +end + + +function routines.IsUnitInRadius( CargoUnit, ReferencePosition, Radius ) +--trace.f() + + local Valid = true + + -- fill-up some local variables to support further calculations to determine location of units within the zone. + local CargoPos = CargoUnit:getPosition().p + local ReferenceP = ReferencePosition.p + + if (((CargoPos.x - ReferenceP.x)^2 + (CargoPos.z - ReferenceP.z)^2)^0.5 <= Radius) then + else + Valid = false + end + + return Valid +end + +function routines.IsPartOfGroupInRadius( CargoGroup, ReferencePosition, Radius ) +--trace.f() + + local Valid = true + + Valid = routines.ValidateGroup( CargoGroup, "CargoGroup", Valid ) + + -- fill-up some local variables to support further calculations to determine location of units within the zone + local CargoUnits = CargoGroup:getUnits() + for CargoUnitId, CargoUnit in pairs( CargoUnits ) do + local CargoUnitPos = CargoUnit:getPosition().p +-- env.info( 'routines.IsPartOfGroupInRadius: CargoUnitPos.x = ' .. CargoUnitPos.x .. ' CargoUnitPos.z = ' .. CargoUnitPos.z ) + local ReferenceP = ReferencePosition.p +-- env.info( 'routines.IsPartOfGroupInRadius: ReferenceGroupPos.x = ' .. ReferenceGroupPos.x .. ' ReferenceGroupPos.z = ' .. ReferenceGroupPos.z ) + + if ((( CargoUnitPos.x - ReferenceP.x)^2 + (CargoUnitPos.z - ReferenceP.z)^2)^0.5 <= Radius) then + else + Valid = false + break + end + end + + return Valid +end + + +function routines.ValidateString( Variable, VariableName, Valid ) +--trace.f() + + if type( Variable ) == "string" then + if Variable == "" then + error( "routines.ValidateString: error: " .. VariableName .. " must be filled out!" ) + Valid = false + end + else + error( "routines.ValidateString: error: " .. VariableName .. " is not a string." ) + Valid = false + end + +--trace.r( "", "", { Valid } ) + return Valid +end + +function routines.ValidateNumber( Variable, VariableName, Valid ) +--trace.f() + + if type( Variable ) == "number" then + else + error( "routines.ValidateNumber: error: " .. VariableName .. " is not a number." ) + Valid = false + end + +--trace.r( "", "", { Valid } ) + return Valid + +end + +function routines.ValidateGroup( Variable, VariableName, Valid ) +--trace.f() + + if Variable == nil then + error( "routines.ValidateGroup: error: " .. VariableName .. " is a nil value!" ) + Valid = false + end + +--trace.r( "", "", { Valid } ) + return Valid +end + +function routines.ValidateZone( LandingZones, VariableName, Valid ) +--trace.f() + + if LandingZones == nil then + error( "routines.ValidateGroup: error: " .. VariableName .. " is a nil value!" ) + Valid = false + end + + if type( LandingZones ) == "table" then + for LandingZoneID, LandingZoneName in pairs( LandingZones ) do + if trigger.misc.getZone( LandingZoneName ) == nil then + error( "routines.ValidateGroup: error: Zone " .. LandingZoneName .. " does not exist!" ) + Valid = false + break + end + end + else + if trigger.misc.getZone( LandingZones ) == nil then + error( "routines.ValidateGroup: error: Zone " .. LandingZones .. " does not exist!" ) + Valid = false + end + end + +--trace.r( "", "", { Valid } ) + return Valid +end + +function routines.ValidateEnumeration( Variable, VariableName, Enum, Valid ) +--trace.f() + + local ValidVariable = false + + for EnumId, EnumData in pairs( Enum ) do + if Variable == EnumData then + ValidVariable = true + break + end + end + + if ValidVariable then + else + error( 'TransportValidateEnum: " .. VariableName .. " is not a valid type.' .. Variable ) + Valid = false + end + +--trace.r( "", "", { Valid } ) + return Valid +end + +function routines.getGroupRoute(groupIdent, task) -- same as getGroupPoints but returns speed and formation type along with vec2 of point} + -- refactor to search by groupId and allow groupId and groupName as inputs + local gpId = groupIdent + if type(groupIdent) == 'string' and not tonumber(groupIdent) then + gpId = _DATABASE.Templates.Groups[groupIdent].groupId + end + + for coa_name, coa_data in pairs(env.mission.coalition) do + if (coa_name == 'red' or coa_name == 'blue') and type(coa_data) == 'table' then + if coa_data.country then --there is a country table + for cntry_id, cntry_data in pairs(coa_data.country) do + for obj_type_name, obj_type_data in pairs(cntry_data) do + if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" then -- only these types have points + if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then --there's a group! + for group_num, group_data in pairs(obj_type_data.group) do + if group_data and group_data.groupId == gpId then -- this is the group we are looking for + if group_data.route and group_data.route.points and #group_data.route.points > 0 then + local points = {} + + for point_num, point in pairs(group_data.route.points) do + local routeData = {} + if not point.point then + routeData.x = point.x + routeData.y = point.y + else + routeData.point = point.point --it's possible that the ME could move to the point = Vec2 notation. + end + routeData.form = point.action + routeData.speed = point.speed + routeData.alt = point.alt + routeData.alt_type = point.alt_type + routeData.airdromeId = point.airdromeId + routeData.helipadId = point.helipadId + routeData.type = point.type + routeData.action = point.action + if task then + routeData.task = point.task + end + points[point_num] = routeData + end + + return points + end + return + end --if group_data and group_data.name and group_data.name == 'groupname' + end --for group_num, group_data in pairs(obj_type_data.group) do + end --if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then + end --if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then + end --for obj_type_name, obj_type_data in pairs(cntry_data) do + end --for cntry_id, cntry_data in pairs(coa_data.country) do + end --if coa_data.country then --there is a country table + end --if coa_name == 'red' or coa_name == 'blue' and type(coa_data) == 'table' then + end --for coa_name, coa_data in pairs(mission.coalition) do +end + +routines.ground.patrolRoute = function(vars) + + + local tempRoute = {} + local useRoute = {} + local gpData = vars.gpData + if type(gpData) == 'string' then + gpData = Group.getByName(gpData) + end + + local useGroupRoute + if not vars.useGroupRoute then + useGroupRoute = vars.gpData + else + useGroupRoute = vars.useGroupRoute + end + local routeProvided = false + if not vars.route then + if useGroupRoute then + tempRoute = routines.getGroupRoute(useGroupRoute) + end + else + useRoute = vars.route + local posStart = routines.getLeadPos(gpData) + useRoute[1] = routines.ground.buildWP(posStart, useRoute[1].action, useRoute[1].speed) + routeProvided = true + end + + + local overRideSpeed = vars.speed or 'default' + local pType = vars.pType + local offRoadForm = vars.offRoadForm or 'default' + local onRoadForm = vars.onRoadForm or 'default' + + if routeProvided == false and #tempRoute > 0 then + local posStart = routines.getLeadPos(gpData) + + + useRoute[#useRoute + 1] = routines.ground.buildWP(posStart, offRoadForm, overRideSpeed) + for i = 1, #tempRoute do + local tempForm = tempRoute[i].action + local tempSpeed = tempRoute[i].speed + + if offRoadForm == 'default' then + tempForm = tempRoute[i].action + end + if onRoadForm == 'default' then + onRoadForm = 'On Road' + end + if (string.lower(tempRoute[i].action) == 'on road' or string.lower(tempRoute[i].action) == 'onroad' or string.lower(tempRoute[i].action) == 'on_road') then + tempForm = onRoadForm + else + tempForm = offRoadForm + end + + if type(overRideSpeed) == 'number' then + tempSpeed = overRideSpeed + end + + + useRoute[#useRoute + 1] = routines.ground.buildWP(tempRoute[i], tempForm, tempSpeed) + end + + if pType and string.lower(pType) == 'doubleback' then + local curRoute = routines.utils.deepCopy(useRoute) + for i = #curRoute, 2, -1 do + useRoute[#useRoute + 1] = routines.ground.buildWP(curRoute[i], curRoute[i].action, curRoute[i].speed) + end + end + + useRoute[1].action = useRoute[#useRoute].action -- make it so the first WP matches the last WP + end + + local cTask3 = {} + local newPatrol = {} + newPatrol.route = useRoute + newPatrol.gpData = gpData:getName() + cTask3[#cTask3 + 1] = 'routines.ground.patrolRoute(' + cTask3[#cTask3 + 1] = routines.utils.oneLineSerialize(newPatrol) + cTask3[#cTask3 + 1] = ')' + cTask3 = table.concat(cTask3) + local tempTask = { + id = 'WrappedAction', + params = { + action = { + id = 'Script', + params = { + command = cTask3, + + }, + }, + }, + } + + + useRoute[#useRoute].task = tempTask + routines.goRoute(gpData, useRoute) + + return +end + +routines.ground.patrol = function(gpData, pType, form, speed) + local vars = {} + + if type(gpData) == 'table' and gpData:getName() then + gpData = gpData:getName() + end + + vars.useGroupRoute = gpData + vars.gpData = gpData + vars.pType = pType + vars.offRoadForm = form + vars.speed = speed + + routines.ground.patrolRoute(vars) + + return +end + +function routines.GetUnitHeight( CheckUnit ) +--trace.f( "routines" ) + + local UnitPoint = CheckUnit:getPoint() + local UnitPosition = { x = UnitPoint.x, y = UnitPoint.z } + local UnitHeight = UnitPoint.y + + local LandHeight = land.getHeight( UnitPosition ) + + --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) + + --trace.f( "routines", "Unit Height = " .. UnitHeight - LandHeight ) + + return UnitHeight - LandHeight + +end + + + +Su34Status = { status = {} } +boardMsgRed = { statusMsg = "" } +boardMsgAll = { timeMsg = "" } +SpawnSettings = {} +Su34MenuPath = {} +Su34Menus = 0 + + +function Su34AttackCarlVinson(groupName) +--trace.menu("", "Su34AttackCarlVinson") + local groupSu34 = Group.getByName( groupName ) + local controllerSu34 = groupSu34.getController(groupSu34) + local groupCarlVinson = Group.getByName("US Carl Vinson #001") + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) + if groupCarlVinson ~= nil then + controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupCarlVinson:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) + end + Su34Status.status[groupName] = 1 + MessageToRed( string.format('%s: ',groupName) .. 'Attacking carrier Carl Vinson. ', 10, 'RedStatus' .. groupName ) +end + +function Su34AttackWest(groupName) +--trace.f("","Su34AttackWest") + local groupSu34 = Group.getByName( groupName ) + local controllerSu34 = groupSu34.getController(groupSu34) + local groupShipWest1 = Group.getByName("US Ship West #001") + local groupShipWest2 = Group.getByName("US Ship West #002") + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) + if groupShipWest1 ~= nil then + controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipWest1:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) + end + if groupShipWest2 ~= nil then + controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipWest2:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) + end + Su34Status.status[groupName] = 2 + MessageToRed( string.format('%s: ',groupName) .. 'Attacking invading ships in the west. ', 10, 'RedStatus' .. groupName ) +end + +function Su34AttackNorth(groupName) +--trace.menu("","Su34AttackNorth") + local groupSu34 = Group.getByName( groupName ) + local controllerSu34 = groupSu34.getController(groupSu34) + local groupShipNorth1 = Group.getByName("US Ship North #001") + local groupShipNorth2 = Group.getByName("US Ship North #002") + local groupShipNorth3 = Group.getByName("US Ship North #003") + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) + if groupShipNorth1 ~= nil then + controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth1:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) + end + if groupShipNorth2 ~= nil then + controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth2:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) + end + if groupShipNorth3 ~= nil then + controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth3:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) + end + Su34Status.status[groupName] = 3 + MessageToRed( string.format('%s: ',groupName) .. 'Attacking invading ships in the north. ', 10, 'RedStatus' .. groupName ) +end + +function Su34Orbit(groupName) +--trace.menu("","Su34Orbit") + local groupSu34 = Group.getByName( groupName ) + local controllerSu34 = groupSu34:getController() + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) + controllerSu34:pushTask( {id = 'ControlledTask', params = { task = { id = 'Orbit', params = { pattern = AI.Task.OrbitPattern.RACE_TRACK } }, stopCondition = { duration = 600 } } } ) + Su34Status.status[groupName] = 4 + MessageToRed( string.format('%s: ',groupName) .. 'In orbit and awaiting further instructions. ', 10, 'RedStatus' .. groupName ) +end + +function Su34TakeOff(groupName) +--trace.menu("","Su34TakeOff") + local groupSu34 = Group.getByName( groupName ) + local controllerSu34 = groupSu34:getController() + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) + Su34Status.status[groupName] = 8 + MessageToRed( string.format('%s: ',groupName) .. 'Take-Off. ', 10, 'RedStatus' .. groupName ) +end + +function Su34Hold(groupName) +--trace.menu("","Su34Hold") + local groupSu34 = Group.getByName( groupName ) + local controllerSu34 = groupSu34:getController() + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) + controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) + Su34Status.status[groupName] = 5 + MessageToRed( string.format('%s: ',groupName) .. 'Holding Weapons. ', 10, 'RedStatus' .. groupName ) +end + +function Su34RTB(groupName) +--trace.menu("","Su34RTB") + Su34Status.status[groupName] = 6 + MessageToRed( string.format('%s: ',groupName) .. 'Return to Krasnodar. ', 10, 'RedStatus' .. groupName ) +end + +function Su34Destroyed(groupName) +--trace.menu("","Su34Destroyed") + Su34Status.status[groupName] = 7 + MessageToRed( string.format('%s: ',groupName) .. 'Destroyed. ', 30, 'RedStatus' .. groupName ) +end + +function GroupAlive( groupName ) +--trace.menu("","GroupAlive") + local groupTest = Group.getByName( groupName ) + + local groupExists = false + + if groupTest then + groupExists = groupTest:isExist() + end + + --trace.r( "", "", { groupExists } ) + return groupExists +end + +function Su34IsDead() +--trace.f() + +end + +function Su34OverviewStatus() +--trace.menu("","Su34OverviewStatus") + local msg = "" + local currentStatus = 0 + local Exists = false + + for groupName, currentStatus in pairs(Su34Status.status) do + + env.info(('Su34 Overview Status: GroupName = ' .. groupName )) + Alive = GroupAlive( groupName ) + + if Alive then + if currentStatus == 1 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Attacking carrier Carl Vinson. " + elseif currentStatus == 2 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Attacking supporting ships in the west. " + elseif currentStatus == 3 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Attacking invading ships in the north. " + elseif currentStatus == 4 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "In orbit and awaiting further instructions. " + elseif currentStatus == 5 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Holding Weapons. " + elseif currentStatus == 6 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Return to Krasnodar. " + elseif currentStatus == 7 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Destroyed. " + elseif currentStatus == 8 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Take-Off. " + end + else + if currentStatus == 7 then + msg = msg .. string.format("%s: ",groupName) + msg = msg .. "Destroyed. " + else + Su34Destroyed(groupName) + end + end + end + + boardMsgRed.statusMsg = msg +end + + +function UpdateBoardMsg() +--trace.f() + Su34OverviewStatus() + MessageToRed( boardMsgRed.statusMsg, 15, 'RedStatus' ) +end + +function MusicReset( flg ) +--trace.f() + trigger.action.setUserFlag(95,flg) +end + +function PlaneActivate(groupNameFormat, flg) +--trace.f() + local groupName = groupNameFormat .. string.format("#%03d", trigger.misc.getUserFlag(flg)) + --trigger.action.outText(groupName,10) + trigger.action.activateGroup(Group.getByName(groupName)) +end + +function Su34Menu(groupName) +--trace.f() + + --env.info(( 'Su34Menu(' .. groupName .. ')' )) + local groupSu34 = Group.getByName( groupName ) + + if Su34Status.status[groupName] == 1 or + Su34Status.status[groupName] == 2 or + Su34Status.status[groupName] == 3 or + Su34Status.status[groupName] == 4 or + Su34Status.status[groupName] == 5 then + if Su34MenuPath[groupName] == nil then + if planeMenuPath == nil then + planeMenuPath = missionCommands.addSubMenuForCoalition( + coalition.side.RED, + "SU-34 anti-ship flights", + nil + ) + end + Su34MenuPath[groupName] = missionCommands.addSubMenuForCoalition( + coalition.side.RED, + "Flight " .. groupName, + planeMenuPath + ) + + missionCommands.addCommandForCoalition( + coalition.side.RED, + "Attack carrier Carl Vinson", + Su34MenuPath[groupName], + Su34AttackCarlVinson, + groupName + ) + + missionCommands.addCommandForCoalition( + coalition.side.RED, + "Attack ships in the west", + Su34MenuPath[groupName], + Su34AttackWest, + groupName + ) + + missionCommands.addCommandForCoalition( + coalition.side.RED, + "Attack ships in the north", + Su34MenuPath[groupName], + Su34AttackNorth, + groupName + ) + + missionCommands.addCommandForCoalition( + coalition.side.RED, + "Hold position and await instructions", + Su34MenuPath[groupName], + Su34Orbit, + groupName + ) + + missionCommands.addCommandForCoalition( + coalition.side.RED, + "Report status", + Su34MenuPath[groupName], + Su34OverviewStatus + ) + end + else + if Su34MenuPath[groupName] then + missionCommands.removeItemForCoalition(coalition.side.RED, Su34MenuPath[groupName]) + end + end +end + +--- Obsolete function, but kept to rework in framework. + +function ChooseInfantry ( TeleportPrefixTable, TeleportMax ) +--trace.f("Spawn") + --env.info(( 'ChooseInfantry: ' )) + + TeleportPrefixTableCount = #TeleportPrefixTable + TeleportPrefixTableIndex = math.random( 1, TeleportPrefixTableCount ) + + --env.info(( 'ChooseInfantry: TeleportPrefixTableIndex = ' .. TeleportPrefixTableIndex .. ' TeleportPrefixTableCount = ' .. TeleportPrefixTableCount .. ' TeleportMax = ' .. TeleportMax )) + + local TeleportFound = false + local TeleportLoop = true + local Index = TeleportPrefixTableIndex + local TeleportPrefix = '' + + while TeleportLoop do + TeleportPrefix = TeleportPrefixTable[Index] + if SpawnSettings[TeleportPrefix] then + if SpawnSettings[TeleportPrefix]['SpawnCount'] - 1 < TeleportMax then + SpawnSettings[TeleportPrefix]['SpawnCount'] = SpawnSettings[TeleportPrefix]['SpawnCount'] + 1 + TeleportFound = true + else + TeleportFound = false + end + else + SpawnSettings[TeleportPrefix] = {} + SpawnSettings[TeleportPrefix]['SpawnCount'] = 0 + TeleportFound = true + end + if TeleportFound then + TeleportLoop = false + else + if Index < TeleportPrefixTableCount then + Index = Index + 1 + else + TeleportLoop = false + end + end + --env.info(( 'ChooseInfantry: Loop 1 - TeleportPrefix = ' .. TeleportPrefix .. ' Index = ' .. Index )) + end + + if TeleportFound == false then + TeleportLoop = true + Index = 1 + while TeleportLoop do + TeleportPrefix = TeleportPrefixTable[Index] + if SpawnSettings[TeleportPrefix] then + if SpawnSettings[TeleportPrefix]['SpawnCount'] - 1 < TeleportMax then + SpawnSettings[TeleportPrefix]['SpawnCount'] = SpawnSettings[TeleportPrefix]['SpawnCount'] + 1 + TeleportFound = true + else + TeleportFound = false + end + else + SpawnSettings[TeleportPrefix] = {} + SpawnSettings[TeleportPrefix]['SpawnCount'] = 0 + TeleportFound = true + end + if TeleportFound then + TeleportLoop = false + else + if Index < TeleportPrefixTableIndex then + Index = Index + 1 + else + TeleportLoop = false + end + end + --env.info(( 'ChooseInfantry: Loop 2 - TeleportPrefix = ' .. TeleportPrefix .. ' Index = ' .. Index )) + end + end + + local TeleportGroupName = '' + if TeleportFound == true then + TeleportGroupName = TeleportPrefix .. string.format("#%03d", SpawnSettings[TeleportPrefix]['SpawnCount'] ) + else + TeleportGroupName = '' + end + + --env.info(('ChooseInfantry: TeleportGroupName = ' .. TeleportGroupName )) + --env.info(('ChooseInfantry: return')) + + return TeleportGroupName +end + +SpawnedInfantry = 0 + +function LandCarrier ( CarrierGroup, LandingZonePrefix ) +--trace.f() + --env.info(( 'LandCarrier: ' )) + --env.info(( 'LandCarrier: CarrierGroup = ' .. CarrierGroup:getName() )) + --env.info(( 'LandCarrier: LandingZone = ' .. LandingZonePrefix )) + + local controllerGroup = CarrierGroup:getController() + + local LandingZone = trigger.misc.getZone(LandingZonePrefix) + local LandingZonePos = {} + LandingZonePos.x = LandingZone.point.x + math.random(LandingZone.radius * -1, LandingZone.radius) + LandingZonePos.y = LandingZone.point.z + math.random(LandingZone.radius * -1, LandingZone.radius) + + controllerGroup:pushTask( { id = 'Land', params = { point = LandingZonePos, durationFlag = true, duration = 10 } } ) + + --env.info(( 'LandCarrier: end' )) +end + +EscortCount = 0 +function EscortCarrier ( CarrierGroup, EscortPrefix, EscortLastWayPoint, EscortEngagementDistanceMax, EscortTargetTypes ) +--trace.f() + --env.info(( 'EscortCarrier: ' )) + --env.info(( 'EscortCarrier: CarrierGroup = ' .. CarrierGroup:getName() )) + --env.info(( 'EscortCarrier: EscortPrefix = ' .. EscortPrefix )) + + local CarrierName = CarrierGroup:getName() + + local EscortMission = {} + local CarrierMission = {} + + local EscortMission = SpawnMissionGroup( EscortPrefix ) + local CarrierMission = SpawnMissionGroup( CarrierGroup:getName() ) + + if EscortMission ~= nil and CarrierMission ~= nil then + + EscortCount = EscortCount + 1 + EscortMissionName = string.format( EscortPrefix .. '#Escort %s', CarrierName ) + EscortMission.name = EscortMissionName + EscortMission.groupId = nil + EscortMission.lateActivation = false + EscortMission.taskSelected = false + + local EscortUnits = #EscortMission.units + for u = 1, EscortUnits do + EscortMission.units[u].name = string.format( EscortPrefix .. '#Escort %s %02d', CarrierName, u ) + EscortMission.units[u].unitId = nil + end + + + EscortMission.route.points[1].task = { id = "ComboTask", + params = + { + tasks = + { + [1] = + { + enabled = true, + auto = false, + id = "Escort", + number = 1, + params = + { + lastWptIndexFlagChangedManually = false, + groupId = CarrierGroup:getID(), + lastWptIndex = nil, + lastWptIndexFlag = false, + engagementDistMax = EscortEngagementDistanceMax, + targetTypes = EscortTargetTypes, + pos = + { + y = 20, + x = 20, + z = 0, + } -- end of ["pos"] + } -- end of ["params"] + } -- end of [1] + } -- end of ["tasks"] + } -- end of ["params"] + } -- end of ["task"] + + SpawnGroupAdd( EscortPrefix, EscortMission ) + + end +end + +function SendMessageToCarrier( CarrierGroup, CarrierMessage ) +--trace.f() + + if CarrierGroup ~= nil then + MessageToGroup( CarrierGroup, CarrierMessage, 30, 'Carrier/' .. CarrierGroup:getName() ) + end + +end + +function MessageToGroup( MsgGroup, MsgText, MsgTime, MsgName ) +--trace.f() + + if type(MsgGroup) == 'string' then + --env.info( 'MessageToGroup: Converted MsgGroup string "' .. MsgGroup .. '" into a Group structure.' ) + MsgGroup = Group.getByName( MsgGroup ) + end + + if MsgGroup ~= nil then + local MsgTable = {} + MsgTable.text = MsgText + MsgTable.displayTime = MsgTime + MsgTable.msgFor = { units = { MsgGroup:getUnits()[1]:getName() } } + MsgTable.name = MsgName + --routines.message.add( MsgTable ) + --env.info(('MessageToGroup: Message sent to ' .. MsgGroup:getUnits()[1]:getName() .. ' -> ' .. MsgText )) + end +end + +function MessageToUnit( UnitName, MsgText, MsgTime, MsgName ) +--trace.f() + + if UnitName ~= nil then + local MsgTable = {} + MsgTable.text = MsgText + MsgTable.displayTime = MsgTime + MsgTable.msgFor = { units = { UnitName } } + MsgTable.name = MsgName + --routines.message.add( MsgTable ) + end +end + +function MessageToAll( MsgText, MsgTime, MsgName ) +--trace.f() + + MESSAGE:New( MsgText, MsgTime, "Message" ):ToCoalition( coalition.side.RED ):ToCoalition( coalition.side.BLUE ) +end + +function MessageToRed( MsgText, MsgTime, MsgName ) +--trace.f() + + MESSAGE:New( MsgText, MsgTime, "To Red Coalition" ):ToCoalition( coalition.side.RED ) +end + +function MessageToBlue( MsgText, MsgTime, MsgName ) +--trace.f() + + MESSAGE:New( MsgText, MsgTime, "To Blue Coalition" ):ToCoalition( coalition.side.RED ) +end + +function getCarrierHeight( CarrierGroup ) +--trace.f() + + if CarrierGroup ~= nil then + if table.getn(CarrierGroup:getUnits()) == 1 then + local CarrierUnit = CarrierGroup:getUnits()[1] + local CurrentPoint = CarrierUnit:getPoint() + + local CurrentPosition = { x = CurrentPoint.x, y = CurrentPoint.z } + local CarrierHeight = CurrentPoint.y + + local LandHeight = land.getHeight( CurrentPosition ) + + --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) + + return CarrierHeight - LandHeight + else + return 999999 + end + else + return 999999 + end + +end + +function GetUnitHeight( CheckUnit ) +--trace.f() + + local UnitPoint = CheckUnit:getPoint() + local UnitPosition = { x = CurrentPoint.x, y = CurrentPoint.z } + local UnitHeight = CurrentPoint.y + + local LandHeight = land.getHeight( CurrentPosition ) + + --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) + + return UnitHeight - LandHeight + +end + + +_MusicTable = {} +_MusicTable.Files = {} +_MusicTable.Queue = {} +_MusicTable.FileCnt = 0 + + +function MusicRegister( SndRef, SndFile, SndTime ) +--trace.f() + + env.info(( 'MusicRegister: SndRef = ' .. SndRef )) + env.info(( 'MusicRegister: SndFile = ' .. SndFile )) + env.info(( 'MusicRegister: SndTime = ' .. SndTime )) + + + _MusicTable.FileCnt = _MusicTable.FileCnt + 1 + + _MusicTable.Files[_MusicTable.FileCnt] = {} + _MusicTable.Files[_MusicTable.FileCnt].Ref = SndRef + _MusicTable.Files[_MusicTable.FileCnt].File = SndFile + _MusicTable.Files[_MusicTable.FileCnt].Time = SndTime + + if not _MusicTable.Function then + _MusicTable.Function = routines.scheduleFunction( MusicScheduler, { }, timer.getTime() + 10, 10) + end + +end + +function MusicToPlayer( SndRef, PlayerName, SndContinue ) +--trace.f() + + --env.info(( 'MusicToPlayer: SndRef = ' .. SndRef )) + + local PlayerUnits = AlivePlayerUnits() + for PlayerUnitIdx, PlayerUnit in pairs(PlayerUnits) do + local PlayerUnitName = PlayerUnit:getPlayerName() + --env.info(( 'MusicToPlayer: PlayerUnitName = ' .. PlayerUnitName )) + if PlayerName == PlayerUnitName then + PlayerGroup = PlayerUnit:getGroup() + if PlayerGroup then + --env.info(( 'MusicToPlayer: PlayerGroup = ' .. PlayerGroup:getName() )) + MusicToGroup( SndRef, PlayerGroup, SndContinue ) + end + break + end + end + + --env.info(( 'MusicToPlayer: end' )) + +end + +function MusicToGroup( SndRef, SndGroup, SndContinue ) +--trace.f() + + --env.info(( 'MusicToGroup: SndRef = ' .. SndRef )) + + if SndGroup ~= nil then + if _MusicTable and _MusicTable.FileCnt > 0 then + if SndGroup:isExist() then + if MusicCanStart(SndGroup:getUnit(1):getPlayerName()) then + --env.info(( 'MusicToGroup: OK for Sound.' )) + local SndIdx = 0 + if SndRef == '' then + --env.info(( 'MusicToGroup: SndRef as empty. Queueing at random.' )) + SndIdx = math.random( 1, _MusicTable.FileCnt ) + else + for SndIdx = 1, _MusicTable.FileCnt do + if _MusicTable.Files[SndIdx].Ref == SndRef then + break + end + end + end + --env.info(( 'MusicToGroup: SndIdx = ' .. SndIdx )) + --env.info(( 'MusicToGroup: Queueing Music ' .. _MusicTable.Files[SndIdx].File .. ' for Group ' .. SndGroup:getID() )) + trigger.action.outSoundForGroup( SndGroup:getID(), _MusicTable.Files[SndIdx].File ) + MessageToGroup( SndGroup, 'Playing ' .. _MusicTable.Files[SndIdx].File, 15, 'Music-' .. SndGroup:getUnit(1):getPlayerName() ) + + local SndQueueRef = SndGroup:getUnit(1):getPlayerName() + if _MusicTable.Queue[SndQueueRef] == nil then + _MusicTable.Queue[SndQueueRef] = {} + end + _MusicTable.Queue[SndQueueRef].Start = timer.getTime() + _MusicTable.Queue[SndQueueRef].PlayerName = SndGroup:getUnit(1):getPlayerName() + _MusicTable.Queue[SndQueueRef].Group = SndGroup + _MusicTable.Queue[SndQueueRef].ID = SndGroup:getID() + _MusicTable.Queue[SndQueueRef].Ref = SndIdx + _MusicTable.Queue[SndQueueRef].Continue = SndContinue + _MusicTable.Queue[SndQueueRef].Type = Group + end + end + end + end +end + +function MusicCanStart(PlayerName) +--trace.f() + + --env.info(( 'MusicCanStart:' )) + + local MusicOut = false + + if _MusicTable['Queue'] ~= nil and _MusicTable.FileCnt > 0 then + --env.info(( 'MusicCanStart: PlayerName = ' .. PlayerName )) + local PlayerFound = false + local MusicStart = 0 + local MusicTime = 0 + for SndQueueIdx, SndQueue in pairs( _MusicTable.Queue ) do + if SndQueue.PlayerName == PlayerName then + PlayerFound = true + MusicStart = SndQueue.Start + MusicTime = _MusicTable.Files[SndQueue.Ref].Time + break + end + end + if PlayerFound then + --env.info(( 'MusicCanStart: MusicStart = ' .. MusicStart )) + --env.info(( 'MusicCanStart: MusicTime = ' .. MusicTime )) + --env.info(( 'MusicCanStart: timer.getTime() = ' .. timer.getTime() )) + + if MusicStart + MusicTime <= timer.getTime() then + MusicOut = true + end + else + MusicOut = true + end + end + + if MusicOut then + --env.info(( 'MusicCanStart: true' )) + else + --env.info(( 'MusicCanStart: false' )) + end + + return MusicOut +end + +function MusicScheduler() +--trace.scheduled("", "MusicScheduler") + + --env.info(( 'MusicScheduler:' )) + if _MusicTable['Queue'] ~= nil and _MusicTable.FileCnt > 0 then + --env.info(( 'MusicScheduler: Walking Sound Queue.')) + for SndQueueIdx, SndQueue in pairs( _MusicTable.Queue ) do + if SndQueue.Continue then + if MusicCanStart(SndQueue.PlayerName) then + --env.info(('MusicScheduler: MusicToGroup')) + MusicToPlayer( '', SndQueue.PlayerName, true ) + end + end + end + end + +end + + +env.info(( 'Init: Scripts Loaded v1.1' )) + +--- This module contains the BASE class. +-- +-- 1) @{#BASE} class +-- ================= +-- The @{#BASE} class is the super class for all the classes defined within MOOSE. +-- +-- It handles: +-- +-- * The construction and inheritance of child classes. +-- * The tracing of objects during mission execution within the **DCS.log** file, under the **"Saved Games\DCS\Logs"** folder. +-- +-- Note: Normally you would not use the BASE class unless you are extending the MOOSE framework with new classes. +-- +-- 1.1) BASE constructor +-- --------------------- +-- Any class derived from BASE, must use the @{Base#BASE.New) constructor within the @{Base#BASE.Inherit) method. +-- See an example at the @{Base#BASE.New} method how this is done. +-- +-- 1.2) BASE Trace functionality +-- ----------------------------- +-- The BASE class contains trace methods to trace progress within a mission execution of a certain object. +-- Note that these trace methods are inherited by each MOOSE class interiting BASE. +-- As such, each object created from derived class from BASE can use the tracing functions to trace its execution. +-- +-- 1.2.1) Tracing functions +-- ------------------------ +-- There are basically 3 types of tracing methods available within BASE: +-- +-- * @{#BASE.F}: Trace the beginning of a function and its given parameters. An F is indicated at column 44 in the DCS.log file. +-- * @{#BASE.T}: Trace further logic within a function giving optional variables or parameters. A T is indicated at column 44 in the DCS.log file. +-- * @{#BASE.E}: Trace an exception within a function giving optional variables or parameters. An E is indicated at column 44 in the DCS.log file. An exception will always be traced. +-- +-- 1.2.2) Tracing levels +-- --------------------- +-- There are 3 tracing levels within MOOSE. +-- These tracing levels were defined to avoid bulks of tracing to be generated by lots of objects. +-- +-- As such, the F and T methods have additional variants to trace level 2 and 3 respectively: +-- +-- * @{#BASE.F2}: Trace the beginning of a function and its given parameters with tracing level 2. +-- * @{#BASE.F3}: Trace the beginning of a function and its given parameters with tracing level 3. +-- * @{#BASE.T2}: Trace further logic within a function giving optional variables or parameters with tracing level 2. +-- * @{#BASE.T3}: Trace further logic within a function giving optional variables or parameters with tracing level 3. +-- +-- 1.3) BASE Inheritance support +-- =========================== +-- The following methods are available to support inheritance: +-- +-- * @{#BASE.Inherit}: Inherits from a class. +-- * @{#BASE.Inherited}: Returns the parent class from the class. +-- +-- Future +-- ====== +-- Further methods may be added to BASE whenever there is a need to make "overall" functions available within MOOSE. +-- +-- ==== +-- +-- @module Base +-- @author FlightControl + + + +local _TraceOnOff = true +local _TraceLevel = 1 +local _TraceAll = false +local _TraceClass = {} +local _TraceClassMethod = {} + +local _ClassID = 0 + +--- The BASE Class +-- @type BASE +-- @field ClassName The name of the class. +-- @field ClassID The ID number of the class. +-- @field ClassNameAndID The name of the class concatenated with the ID number of the class. +BASE = { + ClassName = "BASE", + ClassID = 0, + Events = {}, + States = {} +} + +--- The Formation Class +-- @type FORMATION +-- @field Cone A cone formation. +FORMATION = { + Cone = "Cone" +} + + + +--- The base constructor. This is the top top class of all classed defined within the MOOSE. +-- Any new class needs to be derived from this class for proper inheritance. +-- @param #BASE self +-- @return #BASE The new instance of the BASE class. +-- @usage +-- -- This declares the constructor of the class TASK, inheriting from BASE. +-- --- TASK constructor +-- -- @param #TASK self +-- -- @param Parameter The parameter of the New constructor. +-- -- @return #TASK self +-- function TASK:New( Parameter ) +-- +-- local self = BASE:Inherit( self, BASE:New() ) +-- +-- self.Variable = Parameter +-- +-- return self +-- end +-- @todo need to investigate if the deepCopy is really needed... Don't think so. +function BASE:New() + local self = routines.utils.deepCopy( self ) -- Create a new self instance + local MetaTable = {} + setmetatable( self, MetaTable ) + self.__index = self + _ClassID = _ClassID + 1 + self.ClassID = _ClassID + self.ClassNameAndID = string.format( '%s#%09d', self.ClassName, self.ClassID ) + return self +end + +--- This is the worker method to inherit from a parent class. +-- @param #BASE self +-- @param Child is the Child class that inherits. +-- @param #BASE Parent is the Parent class that the Child inherits from. +-- @return #BASE Child +function BASE:Inherit( Child, Parent ) + local Child = routines.utils.deepCopy( Child ) + --local Parent = routines.utils.deepCopy( Parent ) + --local Parent = Parent + if Child ~= nil then + setmetatable( Child, Parent ) + Child.__index = Child + end + --Child.ClassName = Child.ClassName .. '.' .. Child.ClassID + self:T( 'Inherited from ' .. Parent.ClassName ) + return Child +end + +--- This is the worker method to retrieve the Parent class. +-- @param #BASE self +-- @param #BASE Child is the Child class from which the Parent class needs to be retrieved. +-- @return #BASE +function BASE:Inherited( Child ) + local Parent = getmetatable( Child ) +-- env.info('Inherited class of ' .. Child.ClassName .. ' is ' .. Parent.ClassName ) + return Parent +end + +--- Get the ClassName + ClassID of the class instance. +-- The ClassName + ClassID is formatted as '%s#%09d'. +-- @param #BASE self +-- @return #string The ClassName + ClassID of the class instance. +function BASE:GetClassNameAndID() + return self.ClassNameAndID +end + +--- Get the ClassName of the class instance. +-- @param #BASE self +-- @return #string The ClassName of the class instance. +function BASE:GetClassName() + return self.ClassName +end + +--- Get the ClassID of the class instance. +-- @param #BASE self +-- @return #string The ClassID of the class instance. +function BASE:GetClassID() + return self.ClassID +end + +--- Set a new listener for the class. +-- @param self +-- @param DCSTypes#Event Event +-- @param #function EventFunction +-- @return #BASE +function BASE:AddEvent( Event, EventFunction ) + self:F( Event ) + + self.Events[#self.Events+1] = {} + self.Events[#self.Events].Event = Event + self.Events[#self.Events].EventFunction = EventFunction + self.Events[#self.Events].EventEnabled = false + + return self +end + +--- Returns the event dispatcher +-- @param #BASE self +-- @return Event#EVENT +function BASE:Event() + + return _EVENTDISPATCHER +end + + + + + +--- Enable the event listeners for the class. +-- @param #BASE self +-- @return #BASE +function BASE:EnableEvents() + self:F( #self.Events ) + + for EventID, Event in pairs( self.Events ) do + Event.Self = self + Event.EventEnabled = true + end + self.Events.Handler = world.addEventHandler( self ) + + return self +end + + +--- Disable the event listeners for the class. +-- @param #BASE self +-- @return #BASE +function BASE:DisableEvents() + self:F() + + world.removeEventHandler( self ) + for EventID, Event in pairs( self.Events ) do + Event.Self = nil + Event.EventEnabled = false + end + + return self +end + + +local BaseEventCodes = { + "S_EVENT_SHOT", + "S_EVENT_HIT", + "S_EVENT_TAKEOFF", + "S_EVENT_LAND", + "S_EVENT_CRASH", + "S_EVENT_EJECTION", + "S_EVENT_REFUELING", + "S_EVENT_DEAD", + "S_EVENT_PILOT_DEAD", + "S_EVENT_BASE_CAPTURED", + "S_EVENT_MISSION_START", + "S_EVENT_MISSION_END", + "S_EVENT_TOOK_CONTROL", + "S_EVENT_REFUELING_STOP", + "S_EVENT_BIRTH", + "S_EVENT_HUMAN_FAILURE", + "S_EVENT_ENGINE_STARTUP", + "S_EVENT_ENGINE_SHUTDOWN", + "S_EVENT_PLAYER_ENTER_UNIT", + "S_EVENT_PLAYER_LEAVE_UNIT", + "S_EVENT_PLAYER_COMMENT", + "S_EVENT_SHOOTING_START", + "S_EVENT_SHOOTING_END", + "S_EVENT_MAX", +} + +--onEvent( {[1]="S_EVENT_BIRTH",[2]={["subPlace"]=5,["time"]=0,["initiator"]={["id_"]=16884480,},["place"]={["id_"]=5000040,},["id"]=15,["IniUnitName"]="US F-15C@RAMP-Air Support Mountains#001-01",},} +-- Event = { +-- id = enum world.event, +-- time = Time, +-- initiator = Unit, +-- target = Unit, +-- place = Unit, +-- subPlace = enum world.BirthPlace, +-- weapon = Weapon +-- } + +--- Creation of a Birth Event. +-- @param #BASE self +-- @param DCSTypes#Time EventTime The time stamp of the event. +-- @param DCSObject#Object Initiator The initiating object of the event. +-- @param #string IniUnitName The initiating unit name. +-- @param place +-- @param subplace +function BASE:CreateEventBirth( EventTime, Initiator, IniUnitName, place, subplace ) + self:F( { EventTime, Initiator, IniUnitName, place, subplace } ) + + local Event = { + id = world.event.S_EVENT_BIRTH, + time = EventTime, + initiator = Initiator, + IniUnitName = IniUnitName, + place = place, + subplace = subplace + } + + world.onEvent( Event ) +end + +--- Creation of a Crash Event. +-- @param #BASE self +-- @param DCSTypes#Time EventTime The time stamp of the event. +-- @param DCSObject#Object Initiator The initiating object of the event. +function BASE:CreateEventCrash( EventTime, Initiator ) + self:F( { EventTime, Initiator } ) + + local Event = { + id = world.event.S_EVENT_CRASH, + time = EventTime, + initiator = Initiator, + } + + world.onEvent( Event ) +end + +-- TODO: Complete DCSTypes#Event structure. +--- The main event handling function... This function captures all events generated for the class. +-- @param #BASE self +-- @param DCSTypes#Event event +function BASE:onEvent(event) + --self:F( { BaseEventCodes[event.id], event } ) + + if self then + for EventID, EventObject in pairs( self.Events ) do + if EventObject.EventEnabled then + --env.info( 'onEvent Table EventObject.Self = ' .. tostring(EventObject.Self) ) + --env.info( 'onEvent event.id = ' .. tostring(event.id) ) + --env.info( 'onEvent EventObject.Event = ' .. tostring(EventObject.Event) ) + if event.id == EventObject.Event then + if self == EventObject.Self then + if event.initiator and event.initiator:isExist() then + event.IniUnitName = event.initiator:getName() + end + if event.target and event.target:isExist() then + event.TgtUnitName = event.target:getName() + end + --self:T( { BaseEventCodes[event.id], event } ) + --EventObject.EventFunction( self, event ) + end + end + end + end + end +end + +function BASE:SetState( Object, StateName, State ) + + local ClassNameAndID = Object:GetClassNameAndID() + + if not self.States[ClassNameAndID] then + self.States[ClassNameAndID] = {} + end + self.States[ClassNameAndID][StateName] = State + self:F2( { ClassNameAndID, StateName, State } ) + + return self.States[ClassNameAndID][StateName] +end + +function BASE:GetState( Object, StateName ) + + local ClassNameAndID = Object:GetClassNameAndID() + + if self.States[ClassNameAndID] then + local State = self.States[ClassNameAndID][StateName] + self:F2( { ClassNameAndID, StateName, State } ) + return State + end + + return nil +end + +function BASE:ClearState( Object, StateName ) + + local ClassNameAndID = Object:GetClassNameAndID() + if self.States[ClassNameAndID] then + self.States[ClassNameAndID][StateName] = nil + end +end + +-- Trace section + +-- Log a trace (only shown when trace is on) +-- TODO: Make trace function using variable parameters. + +--- Set trace on or off +-- Note that when trace is off, no debug statement is performed, increasing performance! +-- When Moose is loaded statically, (as one file), tracing is switched off by default. +-- So tracing must be switched on manually in your mission if you are using Moose statically. +-- When moose is loading dynamically (for moose class development), tracing is switched on by default. +-- @param BASE self +-- @param #boolean TraceOnOff Switch the tracing on or off. +-- @usage +-- -- Switch the tracing On +-- BASE:TraceOn( true ) +-- +-- -- Switch the tracing Off +-- BASE:TraceOn( false ) +function BASE:TraceOnOff( TraceOnOff ) + _TraceOnOff = TraceOnOff +end + +--- Set trace level +-- @param #BASE self +-- @param #number Level +function BASE:TraceLevel( Level ) + _TraceLevel = Level + self:E( "Tracing level " .. Level ) +end + +--- Trace all methods in MOOSE +-- @param #BASE self +-- @param #boolean TraceAll true = trace all methods in MOOSE. +function BASE:TraceAll( TraceAll ) + + _TraceAll = TraceAll + + if _TraceAll then + self:E( "Tracing all methods in MOOSE " ) + else + self:E( "Switched off tracing all methods in MOOSE" ) + end +end + +--- Set tracing for a class +-- @param #BASE self +-- @param #string Class +function BASE:TraceClass( Class ) + _TraceClass[Class] = true + _TraceClassMethod[Class] = {} + self:E( "Tracing class " .. Class ) +end + +--- Set tracing for a specific method of class +-- @param #BASE self +-- @param #string Class +-- @param #string Method +function BASE:TraceClassMethod( Class, Method ) + if not _TraceClassMethod[Class] then + _TraceClassMethod[Class] = {} + _TraceClassMethod[Class].Method = {} + end + _TraceClassMethod[Class].Method[Method] = true + self:E( "Tracing method " .. Method .. " of class " .. Class ) +end + +--- Trace a function call. This function is private. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:_F( Arguments, DebugInfoCurrentParam, DebugInfoFromParam ) + + if ( _TraceAll == true ) or ( _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName] ) then + + local DebugInfoCurrent = DebugInfoCurrentParam and DebugInfoCurrentParam or debug.getinfo( 2, "nl" ) + local DebugInfoFrom = DebugInfoFromParam and DebugInfoFromParam or debug.getinfo( 3, "l" ) + + local Function = "function" + if DebugInfoCurrent.name then + Function = DebugInfoCurrent.name + end + + if _TraceAll == true or _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName].Method[Function] then + local LineCurrent = 0 + if DebugInfoCurrent.currentline then + LineCurrent = DebugInfoCurrent.currentline + end + local LineFrom = 0 + if DebugInfoFrom then + LineFrom = DebugInfoFrom.currentline + end + env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s(%s)" , LineCurrent, LineFrom, "F", self.ClassName, self.ClassID, Function, routines.utils.oneLineSerialize( Arguments ) ) ) + end + end +end + +--- Trace a function call. Must be at the beginning of the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:F( Arguments ) + + if _TraceOnOff then + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + if _TraceLevel >= 1 then + self:_F( Arguments, DebugInfoCurrent, DebugInfoFrom ) + end + end +end + + +--- Trace a function call level 2. Must be at the beginning of the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:F2( Arguments ) + + if _TraceOnOff then + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + if _TraceLevel >= 2 then + self:_F( Arguments, DebugInfoCurrent, DebugInfoFrom ) + end + end +end + +--- Trace a function call level 3. Must be at the beginning of the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:F3( Arguments ) + + if _TraceOnOff then + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + if _TraceLevel >= 3 then + self:_F( Arguments, DebugInfoCurrent, DebugInfoFrom ) + end + end +end + +--- Trace a function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:_T( Arguments, DebugInfoCurrentParam, DebugInfoFromParam ) + + if ( _TraceAll == true ) or ( _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName] ) then + + local DebugInfoCurrent = DebugInfoCurrentParam and DebugInfoCurrentParam or debug.getinfo( 2, "nl" ) + local DebugInfoFrom = DebugInfoFromParam and DebugInfoFromParam or debug.getinfo( 3, "l" ) + + local Function = "function" + if DebugInfoCurrent.name then + Function = DebugInfoCurrent.name + end + + if _TraceAll == true or _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName].Method[Function] then + local LineCurrent = 0 + if DebugInfoCurrent.currentline then + LineCurrent = DebugInfoCurrent.currentline + end + local LineFrom = 0 + if DebugInfoFrom then + LineFrom = DebugInfoFrom.currentline + end + env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s" , LineCurrent, LineFrom, "T", self.ClassName, self.ClassID, routines.utils.oneLineSerialize( Arguments ) ) ) + end + end +end + +--- Trace a function logic level 1. Can be anywhere within the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:T( Arguments ) + + if _TraceOnOff then + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + if _TraceLevel >= 1 then + self:_T( Arguments, DebugInfoCurrent, DebugInfoFrom ) + end + end +end + + +--- Trace a function logic level 2. Can be anywhere within the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:T2( Arguments ) + + if _TraceOnOff then + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + if _TraceLevel >= 2 then + self:_T( Arguments, DebugInfoCurrent, DebugInfoFrom ) + end + end +end + +--- Trace a function logic level 3. Can be anywhere within the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:T3( Arguments ) + + if _TraceOnOff then + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + if _TraceLevel >= 3 then + self:_T( Arguments, DebugInfoCurrent, DebugInfoFrom ) + end + end +end + +--- Log an exception which will be traced always. Can be anywhere within the function logic. +-- @param #BASE self +-- @param Arguments A #table or any field. +function BASE:E( Arguments ) + + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + + local Function = "function" + if DebugInfoCurrent.name then + Function = DebugInfoCurrent.name + end + + local LineCurrent = DebugInfoCurrent.currentline + local LineFrom = -1 + if DebugInfoFrom then + LineFrom = DebugInfoFrom.currentline + end + + env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s(%s)" , LineCurrent, LineFrom, "E", self.ClassName, self.ClassID, Function, routines.utils.oneLineSerialize( Arguments ) ) ) +end + + + +--- This module contains the OBJECT class. +-- +-- 1) @{Object#OBJECT} class, extends @{Base#BASE} +-- =========================================================== +-- The @{Object#OBJECT} class is a wrapper class to handle the DCS Object objects: +-- +-- * Support all DCS Object APIs. +-- * Enhance with Object specific APIs not in the DCS Object API set. +-- * Manage the "state" of the DCS Object. +-- +-- 1.1) OBJECT constructor: +-- ------------------------------ +-- The OBJECT class provides the following functions to construct a OBJECT instance: +-- +-- * @{Object#OBJECT.New}(): Create a OBJECT instance. +-- +-- 1.2) OBJECT methods: +-- -------------------------- +-- The following methods can be used to identify an Object object: +-- +-- * @{Object#OBJECT.GetID}(): Returns the ID of the Object object. +-- +-- === +-- +-- @module Object +-- @author FlightControl + +--- The OBJECT class +-- @type OBJECT +-- @extends Base#BASE +-- @field #string ObjectName The name of the Object. +OBJECT = { + ClassName = "OBJECT", + ObjectName = "", +} + + +--- A DCSObject +-- @type DCSObject +-- @field id_ The ID of the controllable in DCS + +--- Create a new OBJECT from a DCSObject +-- @param #OBJECT self +-- @param DCSObject#Object ObjectName The Object name +-- @return #OBJECT self +function OBJECT:New( ObjectName ) + local self = BASE:Inherit( self, BASE:New() ) + self:F2( ObjectName ) + self.ObjectName = ObjectName + return self +end + + +--- Returns if the Object is alive. +-- @param Object#OBJECT self +-- @return #boolean true if Object is alive. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:IsAlive() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectIsAlive = DCSObject:isExist() + return ObjectIsAlive + end + + return false +end + + + + +--- Returns DCS Object object name. +-- The function provides access to non-activated objects too. +-- @param Object#OBJECT self +-- @return #string The name of the DCS Object. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:GetName() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectName = self.ObjectName + return ObjectName + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + + +--- Returns the type name of the DCS Object. +-- @param Object#OBJECT self +-- @return #string The type name of the DCS Object. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:GetTypeName() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectTypeName = DCSObject:getTypeName() + self:T3( ObjectTypeName ) + return ObjectTypeName + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + +--- Returns the Object's callsign - the localized string. +-- @param Object#OBJECT self +-- @return #string The Callsign of the Object. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:GetCallSign() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectCallSign = DCSObject:getCallsign() + return ObjectCallSign + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + + +--- Returns the DCS Object category name as defined within the DCS Object Descriptor. +-- @param Object#OBJECT self +-- @return #string The DCS Object Category Name +function OBJECT:GetCategoryName() + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectCategoryName = _CategoryName[ self:GetDesc().category ] + return ObjectCategoryName + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + +--- Returns coalition of the Object. +-- @param Object#OBJECT self +-- @return DCSCoalitionObject#coalition.side The side of the coalition. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:GetCoalition() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectCoalition = DCSObject:getCoalition() + self:T3( ObjectCoalition ) + return ObjectCoalition + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + +--- Returns country of the Object. +-- @param Object#OBJECT self +-- @return DCScountry#country.id The country identifier. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:GetCountry() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectCountry = DCSObject:getCountry() + self:T3( ObjectCountry ) + return ObjectCountry + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + + + +--- Returns Object descriptor. Descriptor type depends on Object category. +-- @param Object#OBJECT self +-- @return DCSObject#Object.Desc The Object descriptor. +-- @return #nil The DCS Object is not existing or alive. +function OBJECT:GetDesc() + self:F2( self.ObjectName ) + + local DCSObject = self:GetDCSObject() + + if DCSObject then + local ObjectDesc = DCSObject:getDesc() + self:T2( ObjectDesc ) + return ObjectDesc + end + + self:E( self.ClassName .. " " .. self.ObjectName .. " not found!" ) + return nil +end + + + + + + + + + +--- This module contains the IDENTIFIABLE class. +-- +-- 1) @{Identifiable#IDENTIFIABLE} class, extends @{Object#OBJECT} +-- =============================================================== +-- The @{Identifiable#IDENTIFIABLE} class is a wrapper class to handle the DCS Identifiable objects: +-- +-- * Support all DCS Identifiable APIs. +-- * Enhance with Identifiable specific APIs not in the DCS Identifiable API set. +-- * Manage the "state" of the DCS Identifiable. +-- +-- 1.1) IDENTIFIABLE constructor: +-- ------------------------------ +-- The IDENTIFIABLE class provides the following functions to construct a IDENTIFIABLE instance: +-- +-- * @{Identifiable#IDENTIFIABLE.New}(): Create a IDENTIFIABLE instance. +-- +-- 1.2) IDENTIFIABLE methods: +-- -------------------------- +-- The following methods can be used to identify an identifiable object: +-- +-- * @{Identifiable#IDENTIFIABLE.GetName}(): Returns the name of the Identifiable. +-- * @{Identifiable#IDENTIFIABLE.IsAlive}(): Returns if the Identifiable is alive. +-- * @{Identifiable#IDENTIFIABLE.GetTypeName}(): Returns the type name of the Identifiable. +-- * @{Identifiable#IDENTIFIABLE.GetCoalition}(): Returns the coalition of the Identifiable. +-- * @{Identifiable#IDENTIFIABLE.GetCountry}(): Returns the country of the Identifiable. +-- * @{Identifiable#IDENTIFIABLE.GetDesc}(): Returns the descriptor structure of the Identifiable. +-- +-- +-- === +-- +-- @module Identifiable +-- @author FlightControl + +--- The IDENTIFIABLE class +-- @type IDENTIFIABLE +-- @extends Object#OBJECT +-- @field #string IdentifiableName The name of the identifiable. +IDENTIFIABLE = { + ClassName = "IDENTIFIABLE", + IdentifiableName = "", +} + +local _CategoryName = { + [Unit.Category.AIRPLANE] = "Airplane", + [Unit.Category.HELICOPTER] = "Helicoper", + [Unit.Category.GROUND_UNIT] = "Ground Identifiable", + [Unit.Category.SHIP] = "Ship", + [Unit.Category.STRUCTURE] = "Structure", + } + +--- Create a new IDENTIFIABLE from a DCSIdentifiable +-- @param #IDENTIFIABLE self +-- @param DCSIdentifiable#Identifiable IdentifiableName The DCS Identifiable name +-- @return #IDENTIFIABLE self +function IDENTIFIABLE:New( IdentifiableName ) + local self = BASE:Inherit( self, BASE:New() ) + self:F2( IdentifiableName ) + self.IdentifiableName = IdentifiableName + return self +end + +--- Returns if the Identifiable is alive. +-- @param Identifiable#IDENTIFIABLE self +-- @return #boolean true if Identifiable is alive. +-- @return #nil The DCS Identifiable is not existing or alive. +function IDENTIFIABLE:IsAlive() + self:F2( self.IdentifiableName ) + + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableIsAlive = DCSIdentifiable:isExist() + return IdentifiableIsAlive + end + + return false +end + + + + +--- Returns DCS Identifiable object name. +-- The function provides access to non-activated objects too. +-- @param Identifiable#IDENTIFIABLE self +-- @return #string The name of the DCS Identifiable. +-- @return #nil The DCS Identifiable is not existing or alive. +function IDENTIFIABLE:GetName() + self:F2( self.IdentifiableName ) + + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableName = self.IdentifiableName + return IdentifiableName + end + + self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) + return nil +end + + +--- Returns the type name of the DCS Identifiable. +-- @param Identifiable#IDENTIFIABLE self +-- @return #string The type name of the DCS Identifiable. +-- @return #nil The DCS Identifiable is not existing or alive. +function IDENTIFIABLE:GetTypeName() + self:F2( self.IdentifiableName ) + + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableTypeName = DCSIdentifiable:getTypeName() + self:T3( IdentifiableTypeName ) + return IdentifiableTypeName + end + + self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) + return nil +end + + + + +--- Returns the DCS Identifiable category name as defined within the DCS Identifiable Descriptor. +-- @param Identifiable#IDENTIFIABLE self +-- @return #string The DCS Identifiable Category Name +function IDENTIFIABLE:GetCategoryName() + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableCategoryName = _CategoryName[ self:GetDesc().category ] + return IdentifiableCategoryName + end + + self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) + return nil +end + +--- Returns coalition of the Identifiable. +-- @param Identifiable#IDENTIFIABLE self +-- @return DCSCoalitionObject#coalition.side The side of the coalition. +-- @return #nil The DCS Identifiable is not existing or alive. +function IDENTIFIABLE:GetCoalition() + self:F2( self.IdentifiableName ) + + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableCoalition = DCSIdentifiable:getCoalition() + self:T3( IdentifiableCoalition ) + return IdentifiableCoalition + end + + self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) + return nil +end + +--- Returns country of the Identifiable. +-- @param Identifiable#IDENTIFIABLE self +-- @return DCScountry#country.id The country identifier. +-- @return #nil The DCS Identifiable is not existing or alive. +function IDENTIFIABLE:GetCountry() + self:F2( self.IdentifiableName ) + + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableCountry = DCSIdentifiable:getCountry() + self:T3( IdentifiableCountry ) + return IdentifiableCountry + end + + self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) + return nil +end + + + +--- Returns Identifiable descriptor. Descriptor type depends on Identifiable category. +-- @param Identifiable#IDENTIFIABLE self +-- @return DCSIdentifiable#Identifiable.Desc The Identifiable descriptor. +-- @return #nil The DCS Identifiable is not existing or alive. +function IDENTIFIABLE:GetDesc() + self:F2( self.IdentifiableName ) + + local DCSIdentifiable = self:GetDCSObject() + + if DCSIdentifiable then + local IdentifiableDesc = DCSIdentifiable:getDesc() + self:T2( IdentifiableDesc ) + return IdentifiableDesc + end + + self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) + return nil +end + + + + + + + + + +--- This module contains the POSITIONABLE class. +-- +-- 1) @{Positionable#POSITIONABLE} class, extends @{Identifiable#IDENTIFIABLE} +-- =========================================================== +-- The @{Positionable#POSITIONABLE} class is a wrapper class to handle the DCS Positionable objects: +-- +-- * Support all DCS Positionable APIs. +-- * Enhance with Positionable specific APIs not in the DCS Positionable API set. +-- * Manage the "state" of the DCS Positionable. +-- +-- 1.1) POSITIONABLE constructor: +-- ------------------------------ +-- The POSITIONABLE class provides the following functions to construct a POSITIONABLE instance: +-- +-- * @{Positionable#POSITIONABLE.New}(): Create a POSITIONABLE instance. +-- +-- 1.2) POSITIONABLE methods: +-- -------------------------- +-- The following methods can be used to identify an measurable object: +-- +-- * @{Positionable#POSITIONABLE.GetID}(): Returns the ID of the measurable object. +-- * @{Positionable#POSITIONABLE.GetName}(): Returns the name of the measurable object. +-- +-- === +-- +-- @module Positionable +-- @author FlightControl + +--- The POSITIONABLE class +-- @type POSITIONABLE +-- @extends Identifiable#IDENTIFIABLE +-- @field #string PositionableName The name of the measurable. +POSITIONABLE = { + ClassName = "POSITIONABLE", + PositionableName = "", +} + +--- A DCSPositionable +-- @type DCSPositionable +-- @field id_ The ID of the controllable in DCS + +--- Create a new POSITIONABLE from a DCSPositionable +-- @param #POSITIONABLE self +-- @param DCSPositionable#Positionable PositionableName The DCS Positionable name +-- @return #POSITIONABLE self +function POSITIONABLE:New( PositionableName ) + local self = BASE:Inherit( self, IDENTIFIABLE:New( PositionableName ) ) + + return self +end + +--- Returns the @{DCSTypes#Position3} position vectors indicating the point and direction vectors in 3D of the DCS Positionable within the mission. +-- @param Positionable#POSITIONABLE self +-- @return DCSTypes#Position The 3D position vectors of the DCS Positionable. +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:GetPositionVec3() + self:F2( self.PositionableName ) + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + local PositionablePosition = DCSPositionable:getPosition() + self:T3( PositionablePosition ) + return PositionablePosition + end + + return nil +end + +--- Returns the @{DCSTypes#Vec2} vector indicating the point in 2D of the DCS Positionable within the mission. +-- @param Positionable#POSITIONABLE self +-- @return DCSTypes#Vec2 The 2D point vector of the DCS Positionable. +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:GetPointVec2() + self:F2( self.PositionableName ) + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + local PositionablePointVec3 = DCSPositionable:getPosition().p + + local PositionablePointVec2 = {} + PositionablePointVec2.x = PositionablePointVec3.x + PositionablePointVec2.y = PositionablePointVec3.z + + self:T2( PositionablePointVec2 ) + return PositionablePointVec2 + end + + return nil +end + + +--- Returns the @{DCSTypes#Vec3} vector indicating the point in 3D of the DCS Positionable within the mission. +-- @param Positionable#POSITIONABLE self +-- @return DCSTypes#Vec3 The 3D point vector of the DCS Positionable. +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:GetPointVec3() + self:F2( self.PositionableName ) + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + local PositionablePointVec3 = DCSPositionable:getPosition().p + self:T3( PositionablePointVec3 ) + return PositionablePointVec3 + end + + return nil +end + +--- Returns the altitude of the DCS Positionable. +-- @param Positionable#POSITIONABLE self +-- @return DCSTypes#Distance The altitude of the DCS Positionable. +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:GetAltitude() + self:F2() + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + local PositionablePointVec3 = DCSPositionable:getPoint() --DCSTypes#Vec3 + return PositionablePointVec3.y + end + + return nil +end + +--- Returns if the Positionable is located above a runway. +-- @param Positionable#POSITIONABLE self +-- @return #boolean true if Positionable is above a runway. +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:IsAboveRunway() + self:F2( self.PositionableName ) + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + + local PointVec2 = self:GetPointVec2() + local SurfaceType = land.getSurfaceType( PointVec2 ) + local IsAboveRunway = SurfaceType == land.SurfaceType.RUNWAY + + self:T2( IsAboveRunway ) + return IsAboveRunway + end + + return nil +end + + + +--- Returns the DCS Positionable heading. +-- @param Positionable#POSITIONABLE self +-- @return #number The DCS Positionable heading +function POSITIONABLE:GetHeading() + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + + local PositionablePosition = DCSPositionable:getPosition() + if PositionablePosition then + local PositionableHeading = math.atan2( PositionablePosition.x.z, PositionablePosition.x.x ) + if PositionableHeading < 0 then + PositionableHeading = PositionableHeading + 2 * math.pi + end + self:T2( PositionableHeading ) + return PositionableHeading + end + end + + return nil +end + + +--- Returns true if the DCS Positionable is in the air. +-- @param Positionable#POSITIONABLE self +-- @return #boolean true if in the air. +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:InAir() + self:F2( self.PositionableName ) + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + local PositionableInAir = DCSPositionable:inAir() + self:T3( PositionableInAir ) + return PositionableInAir + end + + return nil +end + +--- Returns the DCS Positionable velocity vector. +-- @param Positionable#POSITIONABLE self +-- @return DCSTypes#Vec3 The velocity vector +-- @return #nil The DCS Positionable is not existing or alive. +function POSITIONABLE:GetVelocity() + self:F2( self.PositionableName ) + + local DCSPositionable = self:GetDCSObject() + + if DCSPositionable then + local PositionableVelocityVec3 = DCSPositionable:getVelocity() + self:T3( PositionableVelocityVec3 ) + return PositionableVelocityVec3 + end + + return nil +end + + + +--- This module contains the CONTROLLABLE class. +-- +-- 1) @{Controllable#CONTROLLABLE} class, extends @{Positionable#POSITIONABLE} +-- =========================================================== +-- The @{Controllable#CONTROLLABLE} class is a wrapper class to handle the DCS Controllable objects: +-- +-- * Support all DCS Controllable APIs. +-- * Enhance with Controllable specific APIs not in the DCS Controllable API set. +-- * Handle local Controllable Controller. +-- * Manage the "state" of the DCS Controllable. +-- +-- 1.1) CONTROLLABLE constructor +-- ----------------------------- +-- The CONTROLLABLE class provides the following functions to construct a CONTROLLABLE instance: +-- +-- * @{#CONTROLLABLE.New}(): Create a CONTROLLABLE instance. +-- +-- 1.2) CONTROLLABLE task methods +-- ------------------------------ +-- Several controllable task methods are available that help you to prepare tasks. +-- These methods return a string consisting of the task description, which can then be given to either a @{Controllable#CONTROLLABLE.PushTask} or @{Controllable#SetTask} method to assign the task to the CONTROLLABLE. +-- Tasks are specific for the category of the CONTROLLABLE, more specific, for AIR, GROUND or AIR and GROUND. +-- Each task description where applicable indicates for which controllable category the task is valid. +-- There are 2 main subdivisions of tasks: Assigned tasks and EnRoute tasks. +-- +-- ### 1.2.1) Assigned task methods +-- +-- Assigned task methods make the controllable execute the task where the location of the (possible) targets of the task are known before being detected. +-- This is different from the EnRoute tasks, where the targets of the task need to be detected before the task can be executed. +-- +-- Find below a list of the **assigned task** methods: +-- +-- * @{#CONTROLLABLE.TaskAttackControllable}: (AIR) Attack a Controllable. +-- * @{#CONTROLLABLE.TaskAttackMapObject}: (AIR) Attacking the map object (building, structure, e.t.c). +-- * @{#CONTROLLABLE.TaskAttackUnit}: (AIR) Attack the Unit. +-- * @{#CONTROLLABLE.TaskBombing}: (AIR) Delivering weapon at the point on the ground. +-- * @{#CONTROLLABLE.TaskBombingRunway}: (AIR) Delivering weapon on the runway. +-- * @{#CONTROLLABLE.TaskEmbarking}: (AIR) Move the controllable to a Vec2 Point, wait for a defined duration and embark a controllable. +-- * @{#CONTROLLABLE.TaskEmbarkToTransport}: (GROUND) Embark to a Transport landed at a location. +-- * @{#CONTROLLABLE.TaskEscort}: (AIR) Escort another airborne controllable. +-- * @{#CONTROLLABLE.TaskFAC_AttackControllable}: (AIR + GROUND) The task makes the controllable/unit a FAC and orders the FAC to control the target (enemy ground controllable) destruction. +-- * @{#CONTROLLABLE.TaskFireAtPoint}: (GROUND) Fire at a VEC2 point until ammunition is finished. +-- * @{#CONTROLLABLE.TaskFollow}: (AIR) Following another airborne controllable. +-- * @{#CONTROLLABLE.TaskHold}: (GROUND) Hold ground controllable from moving. +-- * @{#CONTROLLABLE.TaskHoldPosition}: (AIR) Hold position at the current position of the first unit of the controllable. +-- * @{#CONTROLLABLE.TaskLand}: (AIR HELICOPTER) Landing at the ground. For helicopters only. +-- * @{#CONTROLLABLE.TaskLandAtZone}: (AIR) Land the controllable at a @{Zone#ZONE_RADIUS). +-- * @{#CONTROLLABLE.TaskOrbitCircle}: (AIR) Orbit at the current position of the first unit of the controllable at a specified alititude. +-- * @{#CONTROLLABLE.TaskOrbitCircleAtVec2}: (AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed. +-- * @{#CONTROLLABLE.TaskRefueling}: (AIR) Refueling from the nearest tanker. No parameters. +-- * @{#CONTROLLABLE.TaskRoute}: (AIR + GROUND) Return a Misson task to follow a given route defined by Points. +-- * @{#CONTROLLABLE.TaskRouteToVec2}: (AIR + GROUND) Make the Controllable move to a given point. +-- * @{#CONTROLLABLE.TaskRouteToVec3}: (AIR + GROUND) Make the Controllable move to a given point. +-- * @{#CONTROLLABLE.TaskRouteToZone}: (AIR + GROUND) Route the controllable to a given zone. +-- * @{#CONTROLLABLE.TaskReturnToBase}: (AIR) Route the controllable to an airbase. +-- +-- ### 1.2.2) EnRoute task methods +-- +-- EnRoute tasks require the targets of the task need to be detected by the controllable (using its sensors) before the task can be executed: +-- +-- * @{#CONTROLLABLE.EnRouteTaskAWACS}: (AIR) Aircraft will act as an AWACS for friendly units (will provide them with information about contacts). No parameters. +-- * @{#CONTROLLABLE.EnRouteTaskEngageControllable}: (AIR) Engaging a controllable. The task does not assign the target controllable to the unit/controllable to attack now; it just allows the unit/controllable to engage the target controllable as well as other assigned targets. +-- * @{#CONTROLLABLE.EnRouteTaskEngageTargets}: (AIR) Engaging targets of defined types. +-- * @{#CONTROLLABLE.EnRouteTaskEWR}: (AIR) Attack the Unit. +-- * @{#CONTROLLABLE.EnRouteTaskFAC}: (AIR + GROUND) The task makes the controllable/unit a FAC and lets the FAC to choose a targets (enemy ground controllable) around as well as other assigned targets. +-- * @{#CONTROLLABLE.EnRouteTaskFAC_EngageControllable}: (AIR + GROUND) The task makes the controllable/unit a FAC and lets the FAC to choose the target (enemy ground controllable) as well as other assigned targets. +-- * @{#CONTROLLABLE.EnRouteTaskTanker}: (AIR) Aircraft will act as a tanker for friendly units. No parameters. +-- +-- ### 1.2.3) Preparation task methods +-- +-- There are certain task methods that allow to tailor the task behaviour: +-- +-- * @{#CONTROLLABLE.TaskWrappedAction}: Return a WrappedAction Task taking a Command. +-- * @{#CONTROLLABLE.TaskCombo}: Return a Combo Task taking an array of Tasks. +-- * @{#CONTROLLABLE.TaskCondition}: Return a condition section for a controlled task. +-- * @{#CONTROLLABLE.TaskControlled}: Return a Controlled Task taking a Task and a TaskCondition. +-- +-- ### 1.2.4) Obtain the mission from controllable templates +-- +-- Controllable templates contain complete mission descriptions. Sometimes you want to copy a complete mission from a controllable and assign it to another: +-- +-- * @{#CONTROLLABLE.TaskMission}: (AIR + GROUND) Return a mission task from a mission template. +-- +-- 1.3) CONTROLLABLE Command methods +-- -------------------------- +-- Controllable **command methods** prepare the execution of commands using the @{#CONTROLLABLE.SetCommand} method: +-- +-- * @{#CONTROLLABLE.CommandDoScript}: Do Script command. +-- * @{#CONTROLLABLE.CommandSwitchWayPoint}: Perform a switch waypoint command. +-- +-- 1.4) CONTROLLABLE Option methods +-- ------------------------- +-- Controllable **Option methods** change the behaviour of the Controllable while being alive. +-- +-- ### 1.4.1) Rule of Engagement: +-- +-- * @{#CONTROLLABLE.OptionROEWeaponFree} +-- * @{#CONTROLLABLE.OptionROEOpenFire} +-- * @{#CONTROLLABLE.OptionROEReturnFire} +-- * @{#CONTROLLABLE.OptionROEEvadeFire} +-- +-- To check whether an ROE option is valid for a specific controllable, use: +-- +-- * @{#CONTROLLABLE.OptionROEWeaponFreePossible} +-- * @{#CONTROLLABLE.OptionROEOpenFirePossible} +-- * @{#CONTROLLABLE.OptionROEReturnFirePossible} +-- * @{#CONTROLLABLE.OptionROEEvadeFirePossible} +-- +-- ### 1.4.2) Rule on thread: +-- +-- * @{#CONTROLLABLE.OptionROTNoReaction} +-- * @{#CONTROLLABLE.OptionROTPassiveDefense} +-- * @{#CONTROLLABLE.OptionROTEvadeFire} +-- * @{#CONTROLLABLE.OptionROTVertical} +-- +-- To test whether an ROT option is valid for a specific controllable, use: +-- +-- * @{#CONTROLLABLE.OptionROTNoReactionPossible} +-- * @{#CONTROLLABLE.OptionROTPassiveDefensePossible} +-- * @{#CONTROLLABLE.OptionROTEvadeFirePossible} +-- * @{#CONTROLLABLE.OptionROTVerticalPossible} +-- +-- === +-- +-- @module Controllable +-- @author FlightControl + +--- The CONTROLLABLE class +-- @type CONTROLLABLE +-- @extends Positionable#POSITIONABLE +-- @field DCSControllable#Controllable DCSControllable The DCS controllable class. +-- @field #string ControllableName The name of the controllable. +CONTROLLABLE = { + ClassName = "CONTROLLABLE", + ControllableName = "", + WayPointFunctions = {}, +} + +--- Create a new CONTROLLABLE from a DCSControllable +-- @param #CONTROLLABLE self +-- @param DCSControllable#Controllable ControllableName The DCS Controllable name +-- @return #CONTROLLABLE self +function CONTROLLABLE:New( ControllableName ) + local self = BASE:Inherit( self, POSITIONABLE:New( ControllableName ) ) + self:F2( ControllableName ) + self.ControllableName = ControllableName + return self +end + +-- DCS Controllable methods support. + +--- Get the controller for the CONTROLLABLE. +-- @param #CONTROLLABLE self +-- @return DCSController#Controller +function CONTROLLABLE:_GetController() + self:F2( { self.ControllableName } ) + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + local ControllableController = DCSControllable:getController() + self:T3( ControllableController ) + return ControllableController + end + + return nil +end + + + +-- Tasks + +--- Popping current Task from the controllable. +-- @param #CONTROLLABLE self +-- @return Controllable#CONTROLLABLE self +function CONTROLLABLE:PopCurrentTask() + self:F2() + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + local Controller = self:_GetController() + Controller:popTask() + return self + end + + return nil +end + +--- Pushing Task on the queue from the controllable. +-- @param #CONTROLLABLE self +-- @return Controllable#CONTROLLABLE self +function CONTROLLABLE:PushTask( DCSTask, WaitTime ) + self:F2() + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + local Controller = self:_GetController() + + -- When a controllable SPAWNs, it takes about a second to get the controllable in the simulator. Setting tasks to unspawned controllables provides unexpected results. + -- Therefore we schedule the functions to set the mission and options for the Controllable. + -- Controller:pushTask( DCSTask ) + + if WaitTime then + --routines.scheduleFunction( Controller.pushTask, { Controller, DCSTask }, timer.getTime() + WaitTime ) + SCHEDULER:New( Controller, Controller.pushTask, { DCSTask }, WaitTime ) + else + Controller:pushTask( DCSTask ) + end + + return self + end + + return nil +end + +--- Clearing the Task Queue and Setting the Task on the queue from the controllable. +-- @param #CONTROLLABLE self +-- @return Controllable#CONTROLLABLE self +function CONTROLLABLE:SetTask( DCSTask, WaitTime ) + self:F2( { DCSTask } ) + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + + local Controller = self:_GetController() + + -- When a controllable SPAWNs, it takes about a second to get the controllable in the simulator. Setting tasks to unspawned controllables provides unexpected results. + -- Therefore we schedule the functions to set the mission and options for the Controllable. + -- Controller.setTask( Controller, DCSTask ) + + if not WaitTime then + WaitTime = 1 + end + --routines.scheduleFunction( Controller.setTask, { Controller, DCSTask }, timer.getTime() + WaitTime ) + SCHEDULER:New( Controller, Controller.setTask, { DCSTask }, WaitTime ) + + return self + end + + return nil +end + + +--- Return a condition section for a controlled task. +-- @param #CONTROLLABLE self +-- @param DCSTime#Time time +-- @param #string userFlag +-- @param #boolean userFlagValue +-- @param #string condition +-- @param DCSTime#Time duration +-- @param #number lastWayPoint +-- return DCSTask#Task +function CONTROLLABLE:TaskCondition( time, userFlag, userFlagValue, condition, duration, lastWayPoint ) + self:F2( { time, userFlag, userFlagValue, condition, duration, lastWayPoint } ) + + local DCSStopCondition = {} + DCSStopCondition.time = time + DCSStopCondition.userFlag = userFlag + DCSStopCondition.userFlagValue = userFlagValue + DCSStopCondition.condition = condition + DCSStopCondition.duration = duration + DCSStopCondition.lastWayPoint = lastWayPoint + + self:T3( { DCSStopCondition } ) + return DCSStopCondition +end + +--- Return a Controlled Task taking a Task and a TaskCondition. +-- @param #CONTROLLABLE self +-- @param DCSTask#Task DCSTask +-- @param #DCSStopCondition DCSStopCondition +-- @return DCSTask#Task +function CONTROLLABLE:TaskControlled( DCSTask, DCSStopCondition ) + self:F2( { DCSTask, DCSStopCondition } ) + + local DCSTaskControlled + + DCSTaskControlled = { + id = 'ControlledTask', + params = { + task = DCSTask, + stopCondition = DCSStopCondition + } + } + + self:T3( { DCSTaskControlled } ) + return DCSTaskControlled +end + +--- Return a Combo Task taking an array of Tasks. +-- @param #CONTROLLABLE self +-- @param DCSTask#TaskArray DCSTasks Array of @{DCSTask#Task} +-- @return DCSTask#Task +function CONTROLLABLE:TaskCombo( DCSTasks ) + self:F2( { DCSTasks } ) + + local DCSTaskCombo + + DCSTaskCombo = { + id = 'ComboTask', + params = { + tasks = DCSTasks + } + } + + self:T3( { DCSTaskCombo } ) + return DCSTaskCombo +end + +--- Return a WrappedAction Task taking a Command. +-- @param #CONTROLLABLE self +-- @param DCSCommand#Command DCSCommand +-- @return DCSTask#Task +function CONTROLLABLE:TaskWrappedAction( DCSCommand, Index ) + self:F2( { DCSCommand } ) + + local DCSTaskWrappedAction + + DCSTaskWrappedAction = { + id = "WrappedAction", + enabled = true, + number = Index, + auto = false, + params = { + action = DCSCommand, + }, + } + + self:T3( { DCSTaskWrappedAction } ) + return DCSTaskWrappedAction +end + +--- Executes a command action +-- @param #CONTROLLABLE self +-- @param DCSCommand#Command DCSCommand +-- @return #CONTROLLABLE self +function CONTROLLABLE:SetCommand( DCSCommand ) + self:F2( DCSCommand ) + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + local Controller = self:_GetController() + Controller:setCommand( DCSCommand ) + return self + end + + return nil +end + +--- Perform a switch waypoint command +-- @param #CONTROLLABLE self +-- @param #number FromWayPoint +-- @param #number ToWayPoint +-- @return DCSTask#Task +function CONTROLLABLE:CommandSwitchWayPoint( FromWayPoint, ToWayPoint, Index ) + self:F2( { FromWayPoint, ToWayPoint, Index } ) + + local CommandSwitchWayPoint = { + id = 'SwitchWaypoint', + params = { + fromWaypointIndex = FromWayPoint, + goToWaypointIndex = ToWayPoint, + }, + } + + self:T3( { CommandSwitchWayPoint } ) + return CommandSwitchWayPoint +end + +--- Perform stop route command +-- @param #CONTROLLABLE self +-- @param #boolean StopRoute +-- @return DCSTask#Task +function CONTROLLABLE:CommandStopRoute( StopRoute, Index ) + self:F2( { StopRoute, Index } ) + + local CommandStopRoute = { + id = 'StopRoute', + params = { + value = StopRoute, + }, + } + + self:T3( { CommandStopRoute } ) + return CommandStopRoute +end + + +-- TASKS FOR AIR CONTROLLABLES + + +--- (AIR) Attack a Controllable. +-- @param #CONTROLLABLE self +-- @param Controllable#CONTROLLABLE AttackControllable The Controllable to be attacked. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (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. +-- @param DCSTypes#Azimuth Direction (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. +-- @param DCSTypes#Distance Altitude (optional) Desired attack start altitude. Controllable/aircraft will make its attacks from the altitude. If the altitude is too low or too high to use weapon aircraft/controllable will choose closest altitude to the desired attack start altitude. If the desired altitude is defined controllable/aircraft will not attack from safe altitude. +-- @param #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. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskAttackControllable( AttackControllable, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit ) + self:F2( { self.ControllableName, AttackControllable, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit } ) + + -- AttackControllable = { + -- id = 'AttackControllable', + -- params = { + -- controllableId = Controllable.ID, + -- weaponType = number, + -- expend = enum AI.Task.WeaponExpend, + -- attackQty = number, + -- directionEnabled = boolean, + -- direction = Azimuth, + -- altitudeEnabled = boolean, + -- altitude = Distance, + -- attackQtyLimit = boolean, + -- } + -- } + + local DirectionEnabled = nil + if Direction then + DirectionEnabled = true + end + + local AltitudeEnabled = nil + if Altitude then + AltitudeEnabled = true + end + + local DCSTask + DCSTask = { id = 'AttackControllable', + params = { + controllableId = AttackControllable:GetID(), + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + directionEnabled = DirectionEnabled, + direction = Direction, + altitudeEnabled = AltitudeEnabled, + altitude = Altitude, + attackQtyLimit = AttackQtyLimit, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Attack the Unit. +-- @param #CONTROLLABLE self +-- @param Unit#UNIT AttackUnit The unit. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (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. +-- @param DCSTypes#Azimuth Direction (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. +-- @param #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. +-- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskAttackUnit( AttackUnit, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, ControllableAttack ) + self:F2( { self.ControllableName, AttackUnit, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, ControllableAttack } ) + + -- AttackUnit = { + -- id = 'AttackUnit', + -- params = { + -- unitId = Unit.ID, + -- weaponType = number, + -- expend = enum AI.Task.WeaponExpend + -- attackQty = number, + -- direction = Azimuth, + -- attackQtyLimit = boolean, + -- controllableAttack = boolean, + -- } + -- } + + local DCSTask + DCSTask = { id = 'AttackUnit', + params = { + unitId = AttackUnit:GetID(), + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + direction = Direction, + attackQtyLimit = AttackQtyLimit, + controllableAttack = ControllableAttack, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Delivering weapon at the point on the ground. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 PointVec2 2D-coordinates of the point to deliver weapon at. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (optional) Desired quantity of passes. The parameter is not the same in AttackControllable and AttackUnit tasks. +-- @param DCSTypes#Azimuth Direction (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. +-- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskBombing( PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack ) + self:F2( { self.ControllableName, PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack } ) + +-- Bombing = { +-- id = 'Bombing', +-- params = { +-- point = Vec2, +-- weaponType = number, +-- expend = enum AI.Task.WeaponExpend, +-- attackQty = number, +-- direction = Azimuth, +-- controllableAttack = boolean, +-- } +-- } + + local DCSTask + DCSTask = { id = 'Bombing', + params = { + point = PointVec2, + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + direction = Direction, + controllableAttack = ControllableAttack, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + +--- (AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 Point The point to hold the position. +-- @param #number Altitude The altitude to hold the position. +-- @param #number Speed The speed flying when holding the position. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskOrbitCircleAtVec2( Point, Altitude, Speed ) + self:F2( { self.ControllableName, Point, Altitude, Speed } ) + + -- pattern = enum AI.Task.OribtPattern, + -- point = Vec2, + -- point2 = Vec2, + -- speed = Distance, + -- altitude = Distance + + local LandHeight = land.getHeight( Point ) + + self:T3( { LandHeight } ) + + local DCSTask = { id = 'Orbit', + params = { pattern = AI.Task.OrbitPattern.CIRCLE, + point = Point, + speed = Speed, + altitude = Altitude + LandHeight + } + } + + + -- local AITask = { id = 'ControlledTask', + -- params = { task = { id = 'Orbit', + -- params = { pattern = AI.Task.OrbitPattern.CIRCLE, + -- point = Point, + -- speed = Speed, + -- altitude = Altitude + LandHeight + -- } + -- }, + -- stopCondition = { duration = Duration + -- } + -- } + -- } + -- ) + + return DCSTask +end + +--- (AIR) Orbit at the current position of the first unit of the controllable at a specified alititude. +-- @param #CONTROLLABLE self +-- @param #number Altitude The altitude to hold the position. +-- @param #number Speed The speed flying when holding the position. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskOrbitCircle( Altitude, Speed ) + self:F2( { self.ControllableName, Altitude, Speed } ) + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + local ControllablePoint = self:GetPointVec2() + return self:TaskOrbitCircleAtVec2( ControllablePoint, Altitude, Speed ) + end + + return nil +end + + + +--- (AIR) Hold position at the current position of the first unit of the controllable. +-- @param #CONTROLLABLE self +-- @param #number Duration The maximum duration in seconds to hold the position. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskHoldPosition() + self:F2( { self.ControllableName } ) + + return self:TaskOrbitCircle( 30, 10 ) +end + + + + +--- (AIR) Attacking the map object (building, structure, e.t.c). +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 PointVec2 2D-coordinates of the point the map object is closest to. The distance between the point and the map object must not be greater than 2000 meters. Object id is not used here because Mission Editor doesn't support map object identificators. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (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. +-- @param DCSTypes#Azimuth Direction (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. +-- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskAttackMapObject( PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack ) + self:F2( { self.ControllableName, PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack } ) + +-- AttackMapObject = { +-- id = 'AttackMapObject', +-- params = { +-- point = Vec2, +-- weaponType = number, +-- expend = enum AI.Task.WeaponExpend, +-- attackQty = number, +-- direction = Azimuth, +-- controllableAttack = boolean, +-- } +-- } + + local DCSTask + DCSTask = { id = 'AttackMapObject', + params = { + point = PointVec2, + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + direction = Direction, + controllableAttack = ControllableAttack, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Delivering weapon on the runway. +-- @param #CONTROLLABLE self +-- @param Airbase#AIRBASE Airbase Airbase to attack. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (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. +-- @param DCSTypes#Azimuth Direction (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. +-- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskBombingRunway( Airbase, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack ) + self:F2( { self.ControllableName, Airbase, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack } ) + +-- BombingRunway = { +-- id = 'BombingRunway', +-- params = { +-- runwayId = AirdromeId, +-- weaponType = number, +-- expend = enum AI.Task.WeaponExpend, +-- attackQty = number, +-- direction = Azimuth, +-- controllableAttack = boolean, +-- } +-- } + + local DCSTask + DCSTask = { id = 'BombingRunway', + params = { + point = Airbase:GetID(), + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + direction = Direction, + controllableAttack = ControllableAttack, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Refueling from the nearest tanker. No parameters. +-- @param #CONTROLLABLE self +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskRefueling() + self:F2( { self.ControllableName } ) + +-- Refueling = { +-- id = 'Refueling', +-- params = {} +-- } + + local DCSTask + DCSTask = { id = 'Refueling', + params = { + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR HELICOPTER) Landing at the ground. For helicopters only. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 Point The point where to land. +-- @param #number Duration The duration in seconds to stay on the ground. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskLandAtVec2( Point, Duration ) + self:F2( { self.ControllableName, Point, Duration } ) + +-- Land = { +-- id= 'Land', +-- params = { +-- point = Vec2, +-- durationFlag = boolean, +-- duration = Time +-- } +-- } + + local DCSTask + if Duration and Duration > 0 then + DCSTask = { id = 'Land', + params = { + point = Point, + durationFlag = true, + duration = Duration, + }, + } + else + DCSTask = { id = 'Land', + params = { + point = Point, + durationFlag = false, + }, + } + end + + self:T3( DCSTask ) + return DCSTask +end + +--- (AIR) Land the controllable at a @{Zone#ZONE_RADIUS). +-- @param #CONTROLLABLE self +-- @param Zone#ZONE Zone The zone where to land. +-- @param #number Duration The duration in seconds to stay on the ground. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskLandAtZone( Zone, Duration, RandomPoint ) + self:F2( { self.ControllableName, Zone, Duration, RandomPoint } ) + + local Point + if RandomPoint then + Point = Zone:GetRandomVec2() + else + Point = Zone:GetPointVec2() + end + + local DCSTask = self:TaskLandAtVec2( Point, Duration ) + + self:T3( DCSTask ) + return DCSTask +end + + + +--- (AIR) Following another airborne controllable. +-- The unit / controllable will follow lead unit of another controllable, wingmens of both controllables will continue following their leaders. +-- If another controllable is on land the unit / controllable will orbit around. +-- @param #CONTROLLABLE self +-- @param Controllable#CONTROLLABLE FollowControllable The controllable to be followed. +-- @param DCSTypes#Vec3 PointVec3 Position of the unit / lead unit of the controllable relative lead unit of another controllable in frame reference oriented by course of lead unit of another controllable. If another controllable is on land the unit / controllable will orbit around. +-- @param #number LastWaypointIndex Detach waypoint of another controllable. Once reached the unit / controllable Follow task is finished. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskFollow( FollowControllable, PointVec3, LastWaypointIndex ) + self:F2( { self.ControllableName, FollowControllable, PointVec3, LastWaypointIndex } ) + +-- Follow = { +-- id = 'Follow', +-- params = { +-- controllableId = Controllable.ID, +-- pos = Vec3, +-- lastWptIndexFlag = boolean, +-- lastWptIndex = number +-- } +-- } + + local LastWaypointIndexFlag = nil + if LastWaypointIndex then + LastWaypointIndexFlag = true + end + + local DCSTask + DCSTask = { id = 'Follow', + params = { + controllableId = FollowControllable:GetID(), + pos = PointVec3, + lastWptIndexFlag = LastWaypointIndexFlag, + lastWptIndex = LastWaypointIndex, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Escort another airborne controllable. +-- The unit / controllable will follow lead unit of another controllable, wingmens of both controllables will continue following their leaders. +-- The unit / controllable will also protect that controllable from threats of specified types. +-- @param #CONTROLLABLE self +-- @param Controllable#CONTROLLABLE EscortControllable The controllable to be escorted. +-- @param DCSTypes#Vec3 PointVec3 Position of the unit / lead unit of the controllable relative lead unit of another controllable in frame reference oriented by course of lead unit of another controllable. If another controllable is on land the unit / controllable will orbit around. +-- @param #number LastWaypointIndex Detach waypoint of another controllable. Once reached the unit / controllable Follow task is finished. +-- @param #number EngagementDistanceMax Maximal distance from escorted controllable to threat. If the threat is already engaged by escort escort will disengage if the distance becomes greater than 1.5 * engagementDistMax. +-- @param DCSTypes#AttributeNameArray TargetTypes Array of AttributeName that is contains threat categories allowed to engage. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskEscort( FollowControllable, PointVec3, LastWaypointIndex, EngagementDistance, TargetTypes ) + self:F2( { self.ControllableName, FollowControllable, PointVec3, LastWaypointIndex, EngagementDistance, TargetTypes } ) + +-- Escort = { +-- id = 'Escort', +-- params = { +-- controllableId = Controllable.ID, +-- pos = Vec3, +-- lastWptIndexFlag = boolean, +-- lastWptIndex = number, +-- engagementDistMax = Distance, +-- targetTypes = array of AttributeName, +-- } +-- } + + local LastWaypointIndexFlag = nil + if LastWaypointIndex then + LastWaypointIndexFlag = true + end + + local DCSTask + DCSTask = { id = 'Follow', + params = { + controllableId = FollowControllable:GetID(), + pos = PointVec3, + lastWptIndexFlag = LastWaypointIndexFlag, + lastWptIndex = LastWaypointIndex, + engagementDistMax = EngagementDistance, + targetTypes = TargetTypes, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +-- GROUND TASKS + +--- (GROUND) Fire at a VEC2 point until ammunition is finished. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 PointVec2 The point to fire at. +-- @param DCSTypes#Distance Radius The radius of the zone to deploy the fire at. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskFireAtPoint( PointVec2, Radius ) + self:F2( { self.ControllableName, PointVec2, Radius } ) + + -- FireAtPoint = { + -- id = 'FireAtPoint', + -- params = { + -- point = Vec2, + -- radius = Distance, + -- } + -- } + + local DCSTask + DCSTask = { id = 'FireAtPoint', + params = { + point = PointVec2, + radius = Radius, + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + +--- (GROUND) Hold ground controllable from moving. +-- @param #CONTROLLABLE self +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskHold() + self:F2( { self.ControllableName } ) + +-- Hold = { +-- id = 'Hold', +-- params = { +-- } +-- } + + local DCSTask + DCSTask = { id = 'Hold', + params = { + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + +-- TASKS FOR AIRBORNE AND GROUND UNITS/CONTROLLABLES + +--- (AIR + GROUND) The task makes the controllable/unit a FAC and orders the FAC to control the target (enemy ground controllable) destruction. +-- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. +-- If the task is assigned to the controllable lead unit will be a FAC. +-- @param #CONTROLLABLE self +-- @param Controllable#CONTROLLABLE AttackControllable Target CONTROLLABLE. +-- @param #number WeaponType Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.Designation Designation (optional) Designation type. +-- @param #boolean Datalink (optional) Allows to use datalink to send the target information to attack aircraft. Enabled by default. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskFAC_AttackControllable( AttackControllable, WeaponType, Designation, Datalink ) + self:F2( { self.ControllableName, AttackControllable, WeaponType, Designation, Datalink } ) + +-- FAC_AttackControllable = { +-- id = 'FAC_AttackControllable', +-- params = { +-- controllableId = Controllable.ID, +-- weaponType = number, +-- designation = enum AI.Task.Designation, +-- datalink = boolean +-- } +-- } + + local DCSTask + DCSTask = { id = 'FAC_AttackControllable', + params = { + controllableId = AttackControllable:GetID(), + weaponType = WeaponType, + designation = Designation, + datalink = Datalink, + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + +-- EN-ROUTE TASKS FOR AIRBORNE CONTROLLABLES + +--- (AIR) Engaging targets of defined types. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Distance Distance Maximal distance from the target to a route leg. If the target is on a greater distance it will be ignored. +-- @param DCSTypes#AttributeNameArray TargetTypes Array of target categories allowed to engage. +-- @param #number Priority All enroute tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskEngageTargets( Distance, TargetTypes, Priority ) + self:F2( { self.ControllableName, Distance, TargetTypes, Priority } ) + +-- EngageTargets ={ +-- id = 'EngageTargets', +-- params = { +-- maxDist = Distance, +-- targetTypes = array of AttributeName, +-- priority = number +-- } +-- } + + local DCSTask + DCSTask = { id = 'EngageTargets', + params = { + maxDist = Distance, + targetTypes = TargetTypes, + priority = Priority + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + + +--- (AIR) Engaging a targets of defined types at circle-shaped zone. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 PointVec2 2D-coordinates of the zone. +-- @param DCSTypes#Distance Radius Radius of the zone. +-- @param DCSTypes#AttributeNameArray TargetTypes Array of target categories allowed to engage. +-- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskEngageTargets( PointVec2, Radius, TargetTypes, Priority ) + self:F2( { self.ControllableName, PointVec2, Radius, TargetTypes, Priority } ) + +-- EngageTargetsInZone = { +-- id = 'EngageTargetsInZone', +-- params = { +-- point = Vec2, +-- zoneRadius = Distance, +-- targetTypes = array of AttributeName, +-- priority = number +-- } +-- } + + local DCSTask + DCSTask = { id = 'EngageTargetsInZone', + params = { + point = PointVec2, + zoneRadius = Radius, + targetTypes = TargetTypes, + priority = Priority + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Engaging a controllable. The task does not assign the target controllable to the unit/controllable to attack now; it just allows the unit/controllable to engage the target controllable as well as other assigned targets. +-- @param #CONTROLLABLE self +-- @param Controllable#CONTROLLABLE AttackControllable The Controllable to be attacked. +-- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (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. +-- @param DCSTypes#Azimuth Direction (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. +-- @param DCSTypes#Distance Altitude (optional) Desired attack start altitude. Controllable/aircraft will make its attacks from the altitude. If the altitude is too low or too high to use weapon aircraft/controllable will choose closest altitude to the desired attack start altitude. If the desired altitude is defined controllable/aircraft will not attack from safe altitude. +-- @param #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. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskEngageControllable( AttackControllable, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit ) + self:F2( { self.ControllableName, AttackControllable, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit } ) + + -- EngageControllable = { + -- id = 'EngageControllable ', + -- params = { + -- controllableId = Controllable.ID, + -- weaponType = number, + -- expend = enum AI.Task.WeaponExpend, + -- attackQty = number, + -- directionEnabled = boolean, + -- direction = Azimuth, + -- altitudeEnabled = boolean, + -- altitude = Distance, + -- attackQtyLimit = boolean, + -- priority = number, + -- } + -- } + + local DirectionEnabled = nil + if Direction then + DirectionEnabled = true + end + + local AltitudeEnabled = nil + if Altitude then + AltitudeEnabled = true + end + + local DCSTask + DCSTask = { id = 'EngageControllable', + params = { + controllableId = AttackControllable:GetID(), + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + directionEnabled = DirectionEnabled, + direction = Direction, + altitudeEnabled = AltitudeEnabled, + altitude = Altitude, + attackQtyLimit = AttackQtyLimit, + priority = Priority, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Attack the Unit. +-- @param #CONTROLLABLE self +-- @param Unit#UNIT AttackUnit The UNIT. +-- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. +-- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (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. +-- @param #number AttackQty (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. +-- @param DCSTypes#Azimuth Direction (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. +-- @param #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. +-- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskEngageUnit( AttackUnit, Priority, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, ControllableAttack ) + self:F2( { self.ControllableName, AttackUnit, Priority, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, ControllableAttack } ) + + -- EngageUnit = { + -- id = 'EngageUnit', + -- params = { + -- unitId = Unit.ID, + -- weaponType = number, + -- expend = enum AI.Task.WeaponExpend + -- attackQty = number, + -- direction = Azimuth, + -- attackQtyLimit = boolean, + -- controllableAttack = boolean, + -- priority = number, + -- } + -- } + + local DCSTask + DCSTask = { id = 'EngageUnit', + params = { + unitId = AttackUnit:GetID(), + weaponType = WeaponType, + expend = WeaponExpend, + attackQty = AttackQty, + direction = Direction, + attackQtyLimit = AttackQtyLimit, + controllableAttack = ControllableAttack, + priority = Priority, + }, + }, + + self:T3( { DCSTask } ) + return DCSTask +end + + + +--- (AIR) Aircraft will act as an AWACS for friendly units (will provide them with information about contacts). No parameters. +-- @param #CONTROLLABLE self +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskAWACS( ) + self:F2( { self.ControllableName } ) + +-- AWACS = { +-- id = 'AWACS', +-- params = { +-- } +-- } + + local DCSTask + DCSTask = { id = 'AWACS', + params = { + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR) Aircraft will act as a tanker for friendly units. No parameters. +-- @param #CONTROLLABLE self +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskTanker( ) + self:F2( { self.ControllableName } ) + +-- Tanker = { +-- id = 'Tanker', +-- params = { +-- } +-- } + + local DCSTask + DCSTask = { id = 'Tanker', + params = { + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + +-- En-route tasks for ground units/controllables + +--- (GROUND) Ground unit (EW-radar) will act as an EWR for friendly units (will provide them with information about contacts). No parameters. +-- @param #CONTROLLABLE self +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskEWR( ) + self:F2( { self.ControllableName } ) + +-- EWR = { +-- id = 'EWR', +-- params = { +-- } +-- } + + local DCSTask + DCSTask = { id = 'EWR', + params = { + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + +-- En-route tasks for airborne and ground units/controllables + +--- (AIR + GROUND) The task makes the controllable/unit a FAC and lets the FAC to choose the target (enemy ground controllable) as well as other assigned targets. +-- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. +-- If the task is assigned to the controllable lead unit will be a FAC. +-- @param #CONTROLLABLE self +-- @param Controllable#CONTROLLABLE AttackControllable Target CONTROLLABLE. +-- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. +-- @param #number WeaponType Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. +-- @param DCSTypes#AI.Task.Designation Designation (optional) Designation type. +-- @param #boolean Datalink (optional) Allows to use datalink to send the target information to attack aircraft. Enabled by default. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskFAC_EngageControllable( AttackControllable, Priority, WeaponType, Designation, Datalink ) + self:F2( { self.ControllableName, AttackControllable, WeaponType, Priority, Designation, Datalink } ) + +-- FAC_EngageControllable = { +-- id = 'FAC_EngageControllable', +-- params = { +-- controllableId = Controllable.ID, +-- weaponType = number, +-- designation = enum AI.Task.Designation, +-- datalink = boolean, +-- priority = number, +-- } +-- } + + local DCSTask + DCSTask = { id = 'FAC_EngageControllable', + params = { + controllableId = AttackControllable:GetID(), + weaponType = WeaponType, + designation = Designation, + datalink = Datalink, + priority = Priority, + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + +--- (AIR + GROUND) The task makes the controllable/unit a FAC and lets the FAC to choose a targets (enemy ground controllable) around as well as other assigned targets. +-- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. +-- If the task is assigned to the controllable lead unit will be a FAC. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Distance Radius The maximal distance from the FAC to a target. +-- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:EnRouteTaskFAC( Radius, Priority ) + self:F2( { self.ControllableName, Radius, Priority } ) + +-- FAC = { +-- id = 'FAC', +-- params = { +-- radius = Distance, +-- priority = number +-- } +-- } + + local DCSTask + DCSTask = { id = 'FAC', + params = { + radius = Radius, + priority = Priority + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + + + +--- (AIR) Move the controllable to a Vec2 Point, wait for a defined duration and embark a controllable. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 Point The point where to wait. +-- @param #number Duration The duration in seconds to wait. +-- @param #CONTROLLABLE EmbarkingControllable The controllable to be embarked. +-- @return DCSTask#Task The DCS task structure +function CONTROLLABLE:TaskEmbarking( Point, Duration, EmbarkingControllable ) + self:F2( { self.ControllableName, Point, Duration, EmbarkingControllable.DCSControllable } ) + + local DCSTask + DCSTask = { id = 'Embarking', + params = { x = Point.x, + y = Point.y, + duration = Duration, + controllablesForEmbarking = { EmbarkingControllable.ControllableID }, + durationFlag = true, + distributionFlag = false, + distribution = {}, + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + +--- (GROUND) Embark to a Transport landed at a location. + +--- Move to a defined Vec2 Point, and embark to a controllable when arrived within a defined Radius. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec2 Point The point where to wait. +-- @param #number Radius The radius of the embarking zone around the Point. +-- @return DCSTask#Task The DCS task structure. +function CONTROLLABLE:TaskEmbarkToTransport( Point, Radius ) + self:F2( { self.ControllableName, Point, Radius } ) + + local DCSTask --DCSTask#Task + DCSTask = { id = 'EmbarkToTransport', + params = { x = Point.x, + y = Point.y, + zoneRadius = Radius, + } + } + + self:T3( { DCSTask } ) + return DCSTask +end + + + +--- (AIR + GROUND) Return a mission task from a mission template. +-- @param #CONTROLLABLE self +-- @param #table TaskMission A table containing the mission task. +-- @return DCSTask#Task +function CONTROLLABLE:TaskMission( TaskMission ) + self:F2( Points ) + + local DCSTask + DCSTask = { id = 'Mission', params = { TaskMission, }, } + + self:T3( { DCSTask } ) + return DCSTask +end + +--- Return a Misson task to follow a given route defined by Points. +-- @param #CONTROLLABLE self +-- @param #table Points A table of route points. +-- @return DCSTask#Task +function CONTROLLABLE:TaskRoute( Points ) + self:F2( Points ) + + local DCSTask + DCSTask = { id = 'Mission', params = { route = { points = Points, }, }, } + + self:T3( { DCSTask } ) + return DCSTask +end + +--- (AIR + GROUND) Make the Controllable move to fly to a given point. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec3 Point The destination point in Vec3 format. +-- @param #number Speed The speed to travel. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskRouteToVec2( Point, Speed ) + self:F2( { Point, Speed } ) + + local ControllablePoint = self:GetUnit( 1 ):GetPointVec2() + + local PointFrom = {} + PointFrom.x = ControllablePoint.x + PointFrom.y = ControllablePoint.y + PointFrom.type = "Turning Point" + PointFrom.action = "Turning Point" + PointFrom.speed = Speed + PointFrom.speed_locked = true + PointFrom.properties = { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + } + + + local PointTo = {} + PointTo.x = Point.x + PointTo.y = Point.y + PointTo.type = "Turning Point" + PointTo.action = "Fly Over Point" + PointTo.speed = Speed + PointTo.speed_locked = true + PointTo.properties = { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + } + + + local Points = { PointFrom, PointTo } + + self:T3( Points ) + + self:Route( Points ) + + return self +end + +--- (AIR + GROUND) Make the Controllable move to a given point. +-- @param #CONTROLLABLE self +-- @param DCSTypes#Vec3 Point The destination point in Vec3 format. +-- @param #number Speed The speed to travel. +-- @return #CONTROLLABLE self +function CONTROLLABLE:TaskRouteToVec3( Point, Speed ) + self:F2( { Point, Speed } ) + + local ControllablePoint = self:GetUnit( 1 ):GetPointVec3() + + local PointFrom = {} + PointFrom.x = ControllablePoint.x + PointFrom.y = ControllablePoint.z + PointFrom.alt = ControllablePoint.y + PointFrom.alt_type = "BARO" + PointFrom.type = "Turning Point" + PointFrom.action = "Turning Point" + PointFrom.speed = Speed + PointFrom.speed_locked = true + PointFrom.properties = { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + } + + + local PointTo = {} + PointTo.x = Point.x + PointTo.y = Point.z + PointTo.alt = Point.y + PointTo.alt_type = "BARO" + PointTo.type = "Turning Point" + PointTo.action = "Fly Over Point" + PointTo.speed = Speed + PointTo.speed_locked = true + PointTo.properties = { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + } + + + local Points = { PointFrom, PointTo } + + self:T3( Points ) + + self:Route( Points ) + + return self +end + + + +--- Make the controllable to follow a given route. +-- @param #CONTROLLABLE self +-- @param #table GoPoints A table of Route Points. +-- @return #CONTROLLABLE self +function CONTROLLABLE:Route( GoPoints ) + self:F2( GoPoints ) + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + local Points = routines.utils.deepCopy( GoPoints ) + local MissionTask = { id = 'Mission', params = { route = { points = Points, }, }, } + local Controller = self:_GetController() + --Controller.setTask( Controller, MissionTask ) + --routines.scheduleFunction( Controller.setTask, { Controller, MissionTask}, timer.getTime() + 1 ) + SCHEDULER:New( Controller, Controller.setTask, { MissionTask }, 1 ) + return self + end + + return nil +end + + + +--- (AIR + GROUND) Route the controllable to a given zone. +-- The controllable final destination point can be randomized. +-- A speed can be given in km/h. +-- A given formation can be given. +-- @param #CONTROLLABLE self +-- @param Zone#ZONE Zone The zone where to route to. +-- @param #boolean Randomize Defines whether to target point gets randomized within the Zone. +-- @param #number Speed The speed. +-- @param Base#FORMATION Formation The formation string. +function CONTROLLABLE:TaskRouteToZone( Zone, Randomize, Speed, Formation ) + self:F2( Zone ) + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + + local ControllablePoint = self:GetPointVec2() + + local PointFrom = {} + PointFrom.x = ControllablePoint.x + PointFrom.y = ControllablePoint.y + PointFrom.type = "Turning Point" + PointFrom.action = "Cone" + PointFrom.speed = 20 / 1.6 + + + local PointTo = {} + local ZonePoint + + if Randomize then + ZonePoint = Zone:GetRandomVec2() + else + ZonePoint = Zone:GetPointVec2() + end + + PointTo.x = ZonePoint.x + PointTo.y = ZonePoint.y + PointTo.type = "Turning Point" + + if Formation then + PointTo.action = Formation + else + PointTo.action = "Cone" + end + + if Speed then + PointTo.speed = Speed + else + PointTo.speed = 20 / 1.6 + end + + local Points = { PointFrom, PointTo } + + self:T3( Points ) + + self:Route( Points ) + + return self + end + + return nil +end + +--- (AIR) Return the Controllable to an @{Airbase#AIRBASE} +-- A speed can be given in km/h. +-- A given formation can be given. +-- @param #CONTROLLABLE self +-- @param Airbase#AIRBASE ReturnAirbase The @{Airbase#AIRBASE} to return to. +-- @param #number Speed (optional) The speed. +-- @return #string The route +function CONTROLLABLE:RouteReturnToAirbase( ReturnAirbase, Speed ) + self:F2( { ReturnAirbase, Speed } ) + +-- Example +-- [4] = +-- { +-- ["alt"] = 45, +-- ["type"] = "Land", +-- ["action"] = "Landing", +-- ["alt_type"] = "BARO", +-- ["formation_template"] = "", +-- ["properties"] = +-- { +-- ["vnav"] = 1, +-- ["scale"] = 0, +-- ["angle"] = 0, +-- ["vangle"] = 0, +-- ["steer"] = 2, +-- }, -- end of ["properties"] +-- ["ETA"] = 527.81058817743, +-- ["airdromeId"] = 12, +-- ["y"] = 243127.2973737, +-- ["x"] = -5406.2803440839, +-- ["name"] = "DictKey_WptName_53", +-- ["speed"] = 138.88888888889, +-- ["ETA_locked"] = false, +-- ["task"] = +-- { +-- ["id"] = "ComboTask", +-- ["params"] = +-- { +-- ["tasks"] = +-- { +-- }, -- end of ["tasks"] +-- }, -- end of ["params"] +-- }, -- end of ["task"] +-- ["speed_locked"] = true, +-- }, -- end of [4] + + + local DCSControllable = self:GetDCSObject() + + if DCSControllable then + + local ControllablePoint = self:GetPointVec2() + local ControllableVelocity = self:GetMaxVelocity() + + local PointFrom = {} + PointFrom.x = ControllablePoint.x + PointFrom.y = ControllablePoint.y + PointFrom.type = "Turning Point" + PointFrom.action = "Turning Point" + PointFrom.speed = ControllableVelocity + + + local PointTo = {} + local AirbasePoint = ReturnAirbase:GetPointVec2() + + PointTo.x = AirbasePoint.x + PointTo.y = AirbasePoint.y + PointTo.type = "Land" + PointTo.action = "Landing" + PointTo.airdromeId = ReturnAirbase:GetID()-- Airdrome ID + self:T(PointTo.airdromeId) + --PointTo.alt = 0 + + local Points = { PointFrom, PointTo } + + self:T3( Points ) + + local Route = { points = Points, } + + return Route + end + + return nil +end + +-- Commands + +--- Do Script command +-- @param #CONTROLLABLE self +-- @param #string DoScript +-- @return #DCSCommand +function CONTROLLABLE:CommandDoScript( DoScript ) + + local DCSDoScript = { + id = "Script", + params = { + command = DoScript, + }, + } + + self:T3( DCSDoScript ) + return DCSDoScript +end + + +--- Return the mission template of the controllable. +-- @param #CONTROLLABLE self +-- @return #table The MissionTemplate +-- TODO: Rework the method how to retrieve a template ... +function CONTROLLABLE:GetTaskMission() + self:F2( self.ControllableName ) + + return routines.utils.deepCopy( _DATABASE.Templates.Controllables[self.ControllableName].Template ) +end + +--- Return the mission route of the controllable. +-- @param #CONTROLLABLE self +-- @return #table The mission route defined by points. +function CONTROLLABLE:GetTaskRoute() + self:F2( self.ControllableName ) + + return routines.utils.deepCopy( _DATABASE.Templates.Controllables[self.ControllableName].Template.route.points ) +end + +--- Return the route of a controllable by using the @{Database#DATABASE} class. +-- @param #CONTROLLABLE self +-- @param #number Begin The route point from where the copy will start. The base route point is 0. +-- @param #number End The route point where the copy will end. The End point is the last point - the End point. The last point has base 0. +-- @param #boolean Randomize Randomization of the route, when true. +-- @param #number Radius When randomization is on, the randomization is within the radius. +function CONTROLLABLE:CopyRoute( Begin, End, Randomize, Radius ) + self:F2( { Begin, End } ) + + local Points = {} + + -- Could be a Spawned Controllable + local ControllableName = string.match( self:GetName(), ".*#" ) + if ControllableName then + ControllableName = ControllableName:sub( 1, -2 ) + else + ControllableName = self:GetName() + end + + self:T3( { ControllableName } ) + + local Template = _DATABASE.Templates.Controllables[ControllableName].Template + + if Template then + if not Begin then + Begin = 0 + end + if not End then + End = 0 + end + + for TPointID = Begin + 1, #Template.route.points - End do + if Template.route.points[TPointID] then + Points[#Points+1] = routines.utils.deepCopy( Template.route.points[TPointID] ) + if Randomize then + if not Radius then + Radius = 500 + end + Points[#Points].x = Points[#Points].x + math.random( Radius * -1, Radius ) + Points[#Points].y = Points[#Points].y + math.random( Radius * -1, Radius ) + end + end + end + return Points + else + error( "Template not found for Controllable : " .. ControllableName ) + end + + return nil +end + + +--- Return the detected targets of the controllable. +-- The optional parametes specify the detection methods that can be applied. +-- If no detection method is given, the detection will use all the available methods by default. +-- @param Controllable#CONTROLLABLE self +-- @param #boolean DetectVisual (optional) +-- @param #boolean DetectOptical (optional) +-- @param #boolean DetectRadar (optional) +-- @param #boolean DetectIRST (optional) +-- @param #boolean DetectRWR (optional) +-- @param #boolean DetectDLINK (optional) +-- @return #table DetectedTargets +function CONTROLLABLE:GetDetectedTargets( DetectVisual, DetectOptical, DetectRadar, DetectIRST, DetectRWR, DetectDLINK ) + self:F2( self.ControllableName ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local DetectionVisual = ( DetectVisual and DetectVisual == true ) and Controller.Detection.VISUAL or nil + local DetectionOptical = ( DetectOptical and DetectOptical == true ) and Controller.Detection.OPTICAL or nil + local DetectionRadar = ( DetectRadar and DetectRadar == true ) and Controller.Detection.RADAR or nil + local DetectionIRST = ( DetectIRST and DetectIRST == true ) and Controller.Detection.IRST or nil + local DetectionRWR = ( DetectRWR and DetectRWR == true ) and Controller.Detection.RWR or nil + local DetectionDLINK = ( DetectDLINK and DetectDLINK == true ) and Controller.Detection.DLINK or nil + + + return self:_GetController():getDetectedTargets( DetectionVisual, DetectionOptical, DetectionRadar, DetectionIRST, DetectionRWR, DetectionDLINK ) + end + + return nil +end + +function CONTROLLABLE:IsTargetDetected( DCSObject ) + self:F2( self.ControllableName ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + + local TargetIsDetected, TargetIsVisible, TargetLastTime, TargetKnowType, TargetKnowDistance, TargetLastPos, TargetLastVelocity + = self:_GetController().isTargetDetected( self:_GetController(), DCSObject, + Controller.Detection.VISUAL, + Controller.Detection.OPTIC, + Controller.Detection.RADAR, + Controller.Detection.IRST, + Controller.Detection.RWR, + Controller.Detection.DLINK + ) + return TargetIsDetected, TargetIsVisible, TargetLastTime, TargetKnowType, TargetKnowDistance, TargetLastPos, TargetLastVelocity + end + + return nil +end + +-- Options + +--- Can the CONTROLLABLE hold their weapons? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROEHoldFirePossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() or self:IsGround() or self:IsShip() then + return true + end + + return false + end + + return nil +end + +--- Holding weapons. +-- @param Controllable#CONTROLLABLE self +-- @return Controllable#CONTROLLABLE self +function CONTROLLABLE:OptionROEHoldFire() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) + elseif self:IsGround() then + Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.WEAPON_HOLD ) + elseif self:IsShip() then + Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.WEAPON_HOLD ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE attack returning on enemy fire? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROEReturnFirePossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() or self:IsGround() or self:IsShip() then + return true + end + + return false + end + + return nil +end + +--- Return fire. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROEReturnFire() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.RETURN_FIRE ) + elseif self:IsGround() then + Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.RETURN_FIRE ) + elseif self:IsShip() then + Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.RETURN_FIRE ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE attack designated targets? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROEOpenFirePossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() or self:IsGround() or self:IsShip() then + return true + end + + return false + end + + return nil +end + +--- Openfire. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROEOpenFire() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) + elseif self:IsGround() then + Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.OPEN_FIRE ) + elseif self:IsShip() then + Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.OPEN_FIRE ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE attack targets of opportunity? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROEWeaponFreePossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() then + return true + end + + return false + end + + return nil +end + +--- Weapon free. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROEWeaponFree() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_FREE ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE ignore enemy fire? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROTNoReactionPossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() then + return true + end + + return false + end + + return nil +end + + +--- No evasion on enemy threats. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROTNoReaction() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.NO_REACTION ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE evade using passive defenses? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROTPassiveDefensePossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() then + return true + end + + return false + end + + return nil +end + +--- Evasion passive defense. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROTPassiveDefense() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.PASSIVE_DEFENCE ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE evade on enemy fire? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROTEvadeFirePossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() then + return true + end + + return false + end + + return nil +end + + +--- Evade on fire. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROTEvadeFire() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) + end + + return self + end + + return nil +end + +--- Can the CONTROLLABLE evade on fire using vertical manoeuvres? +-- @param #CONTROLLABLE self +-- @return #boolean +function CONTROLLABLE:OptionROTVerticalPossible() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + if self:IsAir() then + return true + end + + return false + end + + return nil +end + + +--- Evade on fire using vertical manoeuvres. +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionROTVertical() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) + end + + return self + end + + return nil +end + +--- Retrieve the controllable mission and allow to place function hooks within the mission waypoint plan. +-- Use the method @{Controllable#CONTROLLABLE:WayPointFunction} to define the hook functions for specific waypoints. +-- Use the method @{Controllable@CONTROLLABLE:WayPointExecute) to start the execution of the new mission plan. +-- Note that when WayPointInitialize is called, the Mission of the controllable is RESTARTED! +-- @param #CONTROLLABLE self +-- @param #table WayPoints If WayPoints is given, then use the route. +-- @return #CONTROLLABLE +function CONTROLLABLE:WayPointInitialize( WayPoints ) + + if WayPoints then + self.WayPoints = WayPoints + else + self.WayPoints = self:GetTaskRoute() + end + + return self +end + + +--- Registers a waypoint function that will be executed when the controllable moves over the WayPoint. +-- @param #CONTROLLABLE self +-- @param #number WayPoint The waypoint number. Note that the start waypoint on the route is WayPoint 1! +-- @param #number WayPointIndex When defining multiple WayPoint functions for one WayPoint, use WayPointIndex to set the sequence of actions. +-- @param #function WayPointFunction The waypoint function to be called when the controllable moves over the waypoint. The waypoint function takes variable parameters. +-- @return #CONTROLLABLE +function CONTROLLABLE:WayPointFunction( WayPoint, WayPointIndex, WayPointFunction, ... ) + self:F2( { WayPoint, WayPointIndex, WayPointFunction } ) + + table.insert( self.WayPoints[WayPoint].task.params.tasks, WayPointIndex ) + self.WayPoints[WayPoint].task.params.tasks[WayPointIndex] = self:TaskFunction( WayPoint, WayPointIndex, WayPointFunction, arg ) + return self +end + + +function CONTROLLABLE:TaskFunction( WayPoint, WayPointIndex, FunctionString, FunctionArguments ) + self:F2( { WayPoint, WayPointIndex, FunctionString, FunctionArguments } ) + + local DCSTask + + local DCSScript = {} + DCSScript[#DCSScript+1] = "local MissionControllable = CONTROLLABLE:Find( ... ) " + + if FunctionArguments and #FunctionArguments > 0 then + DCSScript[#DCSScript+1] = FunctionString .. "( MissionControllable, " .. table.concat( FunctionArguments, "," ) .. ")" + else + DCSScript[#DCSScript+1] = FunctionString .. "( MissionControllable )" + end + + DCSTask = self:TaskWrappedAction( + self:CommandDoScript( + table.concat( DCSScript ) + ), WayPointIndex + ) + + self:T3( DCSTask ) + + return DCSTask + +end + +--- Executes the WayPoint plan. +-- The function gets a WayPoint parameter, that you can use to restart the mission at a specific WayPoint. +-- Note that when the WayPoint parameter is used, the new start mission waypoint of the controllable will be 1! +-- @param #CONTROLLABLE self +-- @param #number WayPoint The WayPoint from where to execute the mission. +-- @param #number WaitTime The amount seconds to wait before initiating the mission. +-- @return #CONTROLLABLE +function CONTROLLABLE:WayPointExecute( WayPoint, WaitTime ) + + if not WayPoint then + WayPoint = 1 + end + + -- When starting the mission from a certain point, the TaskPoints need to be deleted before the given WayPoint. + for TaskPointID = 1, WayPoint - 1 do + table.remove( self.WayPoints, 1 ) + end + + self:T3( self.WayPoints ) + + self:SetTask( self:TaskRoute( self.WayPoints ), WaitTime ) + + return self +end + + +--- This module contains the SCHEDULER class. +-- +-- 1) @{Scheduler#SCHEDULER} class, extends @{Base#BASE} +-- ===================================================== +-- The @{Scheduler#SCHEDULER} class models time events calling given event handling functions. +-- +-- 1.1) SCHEDULER constructor +-- -------------------------- +-- The SCHEDULER class is quite easy to use: +-- +-- * @{Scheduler#SCHEDULER.New}: Setup a new scheduler and start it with the specified parameters. +-- +-- 1.2) SCHEDULER timer stop and start +-- ----------------------------------- +-- The SCHEDULER can be stopped and restarted with the following methods: +-- +-- * @{Scheduler#SCHEDULER.Start}: (Re-)Start the scheduler. +-- * @{Scheduler#SCHEDULER.Stop}: Stop the scheduler. +-- +-- @module Scheduler +-- @author FlightControl + + +--- The SCHEDULER class +-- @type SCHEDULER +-- @field #number ScheduleID the ID of the scheduler. +-- @extends Base#BASE +SCHEDULER = { + ClassName = "SCHEDULER", +} + +--- SCHEDULER constructor. +-- @param #SCHEDULER self +-- @param #table TimeEventObject Specified for which Moose object the timer is setup. If a value of nil is provided, a scheduler will be setup without an object reference. +-- @param #function TimeEventFunction The event function to be called when a timer event occurs. The event function needs to accept the parameters specified in TimeEventFunctionArguments. +-- @param #table TimeEventFunctionArguments Optional arguments that can be given as part of scheduler. The arguments need to be given as a table { param1, param 2, ... }. +-- @param #number StartSeconds Specifies the amount of seconds that will be waited before the scheduling is started, and the event function is called. +-- @param #number RepeatSecondsInterval Specifies the interval in seconds when the scheduler will call the event function. +-- @param #number RandomizationFactor Specifies a randomization factor between 0 and 1 to randomize the RepeatSecondsInterval. +-- @param #number StopSeconds Specifies the amount of seconds when the scheduler will be stopped. +-- @return #SCHEDULER self +function SCHEDULER:New( TimeEventObject, TimeEventFunction, TimeEventFunctionArguments, StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds ) + local self = BASE:Inherit( self, BASE:New() ) + self:F2( { TimeEventObject, TimeEventFunction, TimeEventFunctionArguments, StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds } ) + + self.TimeEventObject = TimeEventObject + self.TimeEventFunction = TimeEventFunction + self.TimeEventFunctionArguments = TimeEventFunctionArguments + self.StartSeconds = StartSeconds + self.Repeat = false + + if RepeatSecondsInterval then + self.RepeatSecondsInterval = RepeatSecondsInterval + else + self.RepeatSecondsInterval = 0 + end + + if RandomizationFactor then + self.RandomizationFactor = RandomizationFactor + else + self.RandomizationFactor = 0 + end + + if StopSeconds then + self.StopSeconds = StopSeconds + end + + + self.StartTime = timer.getTime() + + self:Start() + + return self +end + +--- (Re-)Starts the scheduler. +-- @param #SCHEDULER self +-- @return #SCHEDULER self +function SCHEDULER:Start() + self:F2( self.TimeEventObject ) + + if self.RepeatSecondsInterval ~= 0 then + self.Repeat = true + end + self.ScheduleID = timer.scheduleFunction( self._Scheduler, self, timer.getTime() + self.StartSeconds + .01 ) + + return self +end + +--- Stops the scheduler. +-- @param #SCHEDULER self +-- @return #SCHEDULER self +function SCHEDULER:Stop() + self:F2( self.TimeEventObject ) + + self.Repeat = false + if self.ScheduleID then + timer.removeFunction( self.ScheduleID ) + end + self.ScheduleID = nil + + return self +end + +-- Private Functions + +--- @param #SCHEDULER self +function SCHEDULER:_Scheduler() + self:F2( self.TimeEventFunctionArguments ) + + local ErrorHandler = function( errmsg ) + + env.info( "Error in SCHEDULER function:" .. errmsg ) + env.info( debug.traceback() ) + + return errmsg + end + + local Status, Result + if self.TimeEventObject then + Status, Result = xpcall( function() return self.TimeEventFunction( self.TimeEventObject, unpack( self.TimeEventFunctionArguments ) ) end, ErrorHandler ) + else + Status, Result = xpcall( function() return self.TimeEventFunction( unpack( self.TimeEventFunctionArguments ) ) end, ErrorHandler ) + end + + self:T( { self.TimeEventFunctionArguments, Status, Result, self.StartTime, self.RepeatSecondsInterval, self.RandomizationFactor, self.StopSeconds } ) + + if Status and ( ( Result == nil ) or ( Result and Result ~= false ) ) then + if self.Repeat and ( not self.StopSeconds or ( self.StopSeconds and timer.getTime() <= self.StartTime + self.StopSeconds ) ) then + local ScheduleTime = + timer.getTime() + + self.RepeatSecondsInterval + + math.random( + - ( self.RandomizationFactor * self.RepeatSecondsInterval / 2 ), + ( self.RandomizationFactor * self.RepeatSecondsInterval / 2 ) + ) + + 0.01 + self:T( { self.TimeEventFunctionArguments, "Repeat:", timer.getTime(), ScheduleTime } ) + return ScheduleTime -- returns the next time the function needs to be called. + else + timer.removeFunction( self.ScheduleID ) + self.ScheduleID = nil + end + else + timer.removeFunction( self.ScheduleID ) + self.ScheduleID = nil + end + + return nil +end + + + + + + + + + + + + + + + + +--- The EVENT class models an efficient event handling process between other classes and its units, weapons. +-- @module Event +-- @author FlightControl + +--- The EVENT structure +-- @type EVENT +-- @field #EVENT.Events Events +EVENT = { + ClassName = "EVENT", + ClassID = 0, +} + +local _EVENTCODES = { + "S_EVENT_SHOT", + "S_EVENT_HIT", + "S_EVENT_TAKEOFF", + "S_EVENT_LAND", + "S_EVENT_CRASH", + "S_EVENT_EJECTION", + "S_EVENT_REFUELING", + "S_EVENT_DEAD", + "S_EVENT_PILOT_DEAD", + "S_EVENT_BASE_CAPTURED", + "S_EVENT_MISSION_START", + "S_EVENT_MISSION_END", + "S_EVENT_TOOK_CONTROL", + "S_EVENT_REFUELING_STOP", + "S_EVENT_BIRTH", + "S_EVENT_HUMAN_FAILURE", + "S_EVENT_ENGINE_STARTUP", + "S_EVENT_ENGINE_SHUTDOWN", + "S_EVENT_PLAYER_ENTER_UNIT", + "S_EVENT_PLAYER_LEAVE_UNIT", + "S_EVENT_PLAYER_COMMENT", + "S_EVENT_SHOOTING_START", + "S_EVENT_SHOOTING_END", + "S_EVENT_MAX", +} + +--- The Event structure +-- @type EVENTDATA +-- @field id +-- @field initiator +-- @field target +-- @field weapon +-- @field IniDCSUnit +-- @field IniDCSUnitName +-- @field Unit#UNIT IniUnit +-- @field #string IniUnitName +-- @field IniDCSGroup +-- @field IniDCSGroupName +-- @field TgtDCSUnit +-- @field TgtDCSUnitName +-- @field Unit#UNIT TgtUnit +-- @field #string TgtUnitName +-- @field TgtDCSGroup +-- @field TgtDCSGroupName +-- @field Weapon +-- @field WeaponName +-- @field WeaponTgtDCSUnit + +--- The Events structure +-- @type EVENT.Events +-- @field #number IniUnit + +function EVENT:New() + local self = BASE:Inherit( self, BASE:New() ) + self:F2() + self.EventHandler = world.addEventHandler( self ) + return self +end + +function EVENT:EventText( EventID ) + + local EventText = _EVENTCODES[EventID] + + return EventText +end + + +--- Initializes the Events structure for the event +-- @param #EVENT self +-- @param DCSWorld#world.event EventID +-- @param #string EventClass +-- @return #EVENT.Events +function EVENT:Init( EventID, EventClass ) + self:F3( { _EVENTCODES[EventID], EventClass } ) + if not self.Events[EventID] then + self.Events[EventID] = {} + end + if not self.Events[EventID][EventClass] then + self.Events[EventID][EventClass] = {} + end + return self.Events[EventID][EventClass] +end + + +--- Create an OnDead event handler for a group +-- @param #EVENT self +-- @param #table EventTemplate +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @param #function OnEventFunction +-- @return #EVENT +function EVENT:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, OnEventFunction ) + self:F2( EventTemplate.name ) + + for EventUnitID, EventUnit in pairs( EventTemplate.units ) do + OnEventFunction( self, EventUnit.name, EventFunction, EventSelf ) + end + return self +end + +--- Set a new listener for an S_EVENT_X event independent from a unit or a weapon. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @param EventID +-- @return #EVENT +function EVENT:OnEventGeneric( EventFunction, EventSelf, EventID ) + self:F2( { EventID } ) + + local Event = self:Init( EventID, EventSelf:GetClassNameAndID() ) + Event.EventFunction = EventFunction + Event.EventSelf = EventSelf + return self +end + + +--- Set a new listener for an S_EVENT_X event +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @param EventID +-- @return #EVENT +function EVENT:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, EventID ) + self:F2( EventDCSUnitName ) + + local Event = self:Init( EventID, EventSelf:GetClassNameAndID() ) + if not Event.IniUnit then + Event.IniUnit = {} + end + Event.IniUnit[EventDCSUnitName] = {} + Event.IniUnit[EventDCSUnitName].EventFunction = EventFunction + Event.IniUnit[EventDCSUnitName].EventSelf = EventSelf + return self +end + + +--- Create an OnBirth event handler for a group +-- @param #EVENT self +-- @param Group#GROUP EventGroup +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnBirthForTemplate( EventTemplate, EventFunction, EventSelf ) + self:F2( EventTemplate.name ) + + self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnBirthForUnit ) + + return self +end + +--- Set a new listener for an S_EVENT_BIRTH event, and registers the unit born. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf +-- @return #EVENT +function EVENT:OnBirth( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_BIRTH ) + + return self +end + +--- Set a new listener for an S_EVENT_BIRTH event. +-- @param #EVENT self +-- @param #string EventDCSUnitName The id of the unit for the event to be handled. +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf +-- @return #EVENT +function EVENT:OnBirthForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_BIRTH ) + + return self +end + +--- Create an OnCrash event handler for a group +-- @param #EVENT self +-- @param Group#GROUP EventGroup +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnCrashForTemplate( EventTemplate, EventFunction, EventSelf ) + self:F2( EventTemplate.name ) + + self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnCrashForUnit ) + + return self +end + +--- Set a new listener for an S_EVENT_CRASH event. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf +-- @return #EVENT +function EVENT:OnCrash( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_CRASH ) + + return self +end + +--- Set a new listener for an S_EVENT_CRASH event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnCrashForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_CRASH ) + + return self +end + +--- Create an OnDead event handler for a group +-- @param #EVENT self +-- @param Group#GROUP EventGroup +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnDeadForTemplate( EventTemplate, EventFunction, EventSelf ) + self:F2( EventTemplate.name ) + + self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnDeadForUnit ) + + return self +end + +--- Set a new listener for an S_EVENT_DEAD event. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf +-- @return #EVENT +function EVENT:OnDead( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_DEAD ) + + return self +end + + +--- Set a new listener for an S_EVENT_DEAD event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnDeadForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_DEAD ) + + return self +end + +--- Set a new listener for an S_EVENT_PILOT_DEAD event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnPilotDeadForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_PILOT_DEAD ) + + return self +end + +--- Create an OnDead event handler for a group +-- @param #EVENT self +-- @param #table EventTemplate +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnLandForTemplate( EventTemplate, EventFunction, EventSelf ) + self:F2( EventTemplate.name ) + + self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnLandForUnit ) + + return self +end + +--- Set a new listener for an S_EVENT_LAND event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnLandForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_LAND ) + + return self +end + +--- Create an OnDead event handler for a group +-- @param #EVENT self +-- @param #table EventTemplate +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnTakeOffForTemplate( EventTemplate, EventFunction, EventSelf ) + self:F2( EventTemplate.name ) + + self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnTakeOffForUnit ) + + return self +end + +--- Set a new listener for an S_EVENT_TAKEOFF event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnTakeOffForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_TAKEOFF ) + + return self +end + +--- Create an OnDead event handler for a group +-- @param #EVENT self +-- @param #table EventTemplate +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnEngineShutDownForTemplate( EventTemplate, EventFunction, EventSelf ) + self:F2( EventTemplate.name ) + + self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnEngineShutDownForUnit ) + + return self +end + +--- Set a new listener for an S_EVENT_ENGINE_SHUTDOWN event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnEngineShutDownForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_ENGINE_SHUTDOWN ) + + return self +end + +--- Set a new listener for an S_EVENT_ENGINE_STARTUP event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnEngineStartUpForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_ENGINE_STARTUP ) + + return self +end + +--- Set a new listener for an S_EVENT_SHOT event. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnShot( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_SHOT ) + + return self +end + +--- Set a new listener for an S_EVENT_SHOT event for a unit. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnShotForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_SHOT ) + + return self +end + +--- Set a new listener for an S_EVENT_HIT event. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnHit( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_HIT ) + + return self +end + +--- Set a new listener for an S_EVENT_HIT event. +-- @param #EVENT self +-- @param #string EventDCSUnitName +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnHitForUnit( EventDCSUnitName, EventFunction, EventSelf ) + self:F2( EventDCSUnitName ) + + self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_HIT ) + + return self +end + +--- Set a new listener for an S_EVENT_PLAYER_ENTER_UNIT event. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnPlayerEnterUnit( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_PLAYER_ENTER_UNIT ) + + return self +end + +--- Set a new listener for an S_EVENT_PLAYER_LEAVE_UNIT event. +-- @param #EVENT self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @param Base#BASE EventSelf The self instance of the class for which the event is. +-- @return #EVENT +function EVENT:OnPlayerLeaveUnit( EventFunction, EventSelf ) + self:F2() + + self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_PLAYER_LEAVE_UNIT ) + + return self +end + + + +function EVENT:onEvent( Event ) + self:F2( { _EVENTCODES[Event.id], Event } ) + + if self and self.Events and self.Events[Event.id] then + if Event.initiator and Event.initiator:getCategory() == Object.Category.UNIT then + Event.IniDCSUnit = Event.initiator + Event.IniDCSGroup = Event.IniDCSUnit:getGroup() + Event.IniDCSUnitName = Event.IniDCSUnit:getName() + Event.IniUnitName = Event.IniDCSUnitName + Event.IniUnit = UNIT:FindByName( Event.IniDCSUnitName ) + Event.IniDCSGroupName = "" + if Event.IniDCSGroup and Event.IniDCSGroup:isExist() then + Event.IniDCSGroupName = Event.IniDCSGroup:getName() + end + end + if Event.target then + if Event.target and Event.target:getCategory() == Object.Category.UNIT then + Event.TgtDCSUnit = Event.target + Event.TgtDCSGroup = Event.TgtDCSUnit:getGroup() + Event.TgtDCSUnitName = Event.TgtDCSUnit:getName() + Event.TgtUnitName = Event.TgtDCSUnitName + Event.TgtUnit = UNIT:FindByName( Event.TgtDCSUnitName ) + Event.TgtDCSGroupName = "" + if Event.TgtDCSGroup and Event.TgtDCSGroup:isExist() then + Event.TgtDCSGroupName = Event.TgtDCSGroup:getName() + end + end + end + if Event.weapon then + Event.Weapon = Event.weapon + Event.WeaponName = Event.Weapon:getTypeName() + --Event.WeaponTgtDCSUnit = Event.Weapon:getTarget() + end + self:E( { _EVENTCODES[Event.id], Event } ) + for ClassName, EventData in pairs( self.Events[Event.id] ) do + if Event.IniDCSUnitName and EventData.IniUnit and EventData.IniUnit[Event.IniDCSUnitName] then + self:E( { "Calling event function for class ", ClassName, " unit ", Event.IniDCSUnitName } ) + EventData.IniUnit[Event.IniDCSUnitName].EventFunction( EventData.IniUnit[Event.IniDCSUnitName].EventSelf, Event ) + else + if Event.IniDCSUnit and not EventData.IniUnit then + self:E( { "Calling event function for class ", ClassName } ) + EventData.EventFunction( EventData.EventSelf, Event ) + end + end + end + end +end + +--- Encapsulation of DCS World Menu system in a set of MENU classes. +-- @module Menu + +--- The MENU class +-- @type MENU +-- @extends Base#BASE +MENU = { + ClassName = "MENU", + MenuPath = nil, + MenuText = "", + MenuParentPath = nil +} + +--- +function MENU:New( MenuText, MenuParentPath ) + + -- Arrange meta tables + local Child = BASE:Inherit( self, BASE:New() ) + + Child.MenuPath = nil + Child.MenuText = MenuText + Child.MenuParentPath = MenuParentPath + return Child +end + +--- The COMMANDMENU class +-- @type COMMANDMENU +-- @extends Menu#MENU +COMMANDMENU = { + ClassName = "COMMANDMENU", + CommandMenuFunction = nil, + CommandMenuArgument = nil +} + +function COMMANDMENU:New( MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument ) + + -- Arrange meta tables + + local MenuParentPath = nil + if ParentMenu ~= nil then + MenuParentPath = ParentMenu.MenuPath + end + + local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) + + Child.MenuPath = missionCommands.addCommand( MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument ) + Child.CommandMenuFunction = CommandMenuFunction + Child.CommandMenuArgument = CommandMenuArgument + return Child +end + +--- The SUBMENU class +-- @type SUBMENU +-- @extends Menu#MENU +SUBMENU = { + ClassName = "SUBMENU" +} + +function SUBMENU:New( MenuText, ParentMenu ) + + -- Arrange meta tables + local MenuParentPath = nil + if ParentMenu ~= nil then + MenuParentPath = ParentMenu.MenuPath + end + + local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) + + Child.MenuPath = missionCommands.addSubMenu( MenuText, MenuParentPath ) + return Child +end + +-- This local variable is used to cache the menus registered under clients. +-- Menus don't dissapear when clients are destroyed and restarted. +-- So every menu for a client created must be tracked so that program logic accidentally does not create +-- the same menus twice during initialization logic. +-- These menu classes are handling this logic with this variable. +local _MENUCLIENTS = {} + +--- The MENU_CLIENT class +-- @type MENU_CLIENT +-- @extends Menu#MENU +MENU_CLIENT = { + ClassName = "MENU_CLIENT" +} + +--- Creates a new menu item for a group +-- @param self +-- @param Client#CLIENT MenuClient The Client owning the menu. +-- @param #string MenuText The text for the menu. +-- @param #table ParentMenu The parent menu. +-- @return #MENU_CLIENT self +function MENU_CLIENT:New( MenuClient, MenuText, ParentMenu ) + + -- Arrange meta tables + local MenuParentPath = {} + if ParentMenu ~= nil then + MenuParentPath = ParentMenu.MenuPath + end + + local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) + self:F( { MenuClient, MenuText, ParentMenu } ) + + self.MenuClient = MenuClient + self.MenuClientGroupID = MenuClient:GetClientGroupID() + self.MenuParentPath = MenuParentPath + self.MenuText = MenuText + self.ParentMenu = ParentMenu + + self.Menus = {} + + if not _MENUCLIENTS[self.MenuClientGroupID] then + _MENUCLIENTS[self.MenuClientGroupID] = {} + end + + local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] + + self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText } ) + + local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText + if MenuPath[MenuPathID] then + missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), MenuPath[MenuPathID] ) + end + + self.MenuPath = missionCommands.addSubMenuForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath ) + MenuPath[MenuPathID] = self.MenuPath + + self:T( { MenuClient:GetClientGroupName(), self.MenuPath } ) + + if ParentMenu and ParentMenu.Menus then + ParentMenu.Menus[self.MenuPath] = self + end + return self +end + +--- Removes the sub menus recursively of this MENU_CLIENT. +-- @param #MENU_CLIENT self +-- @return #MENU_CLIENT self +function MENU_CLIENT:RemoveSubMenus() + self:F( self.MenuPath ) + + for MenuID, Menu in pairs( self.Menus ) do + Menu:Remove() + end + +end + +--- Removes the sub menus recursively of this MENU_CLIENT. +-- @param #MENU_CLIENT self +-- @return #MENU_CLIENT self +function MENU_CLIENT:Remove() + self:F( self.MenuPath ) + + self:RemoveSubMenus() + + if not _MENUCLIENTS[self.MenuClientGroupID] then + _MENUCLIENTS[self.MenuClientGroupID] = {} + end + + local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] + + if MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] then + MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] = nil + end + + missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), self.MenuPath ) + self.ParentMenu.Menus[self.MenuPath] = nil + return nil +end + + +--- The MENU_CLIENT_COMMAND class +-- @type MENU_CLIENT_COMMAND +-- @extends Menu#MENU +MENU_CLIENT_COMMAND = { + ClassName = "MENU_CLIENT_COMMAND" +} + +--- Creates a new radio command item for a group +-- @param self +-- @param Client#CLIENT MenuClient The Client owning the menu. +-- @param MenuText The text for the menu. +-- @param ParentMenu The parent menu. +-- @param CommandMenuFunction A function that is called when the menu key is pressed. +-- @param CommandMenuArgument An argument for the function. +-- @return Menu#MENU_CLIENT_COMMAND self +function MENU_CLIENT_COMMAND:New( MenuClient, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument ) + + -- Arrange meta tables + + local MenuParentPath = {} + if ParentMenu ~= nil then + MenuParentPath = ParentMenu.MenuPath + end + + local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) + + self.MenuClient = MenuClient + self.MenuClientGroupID = MenuClient:GetClientGroupID() + self.MenuParentPath = MenuParentPath + self.MenuText = MenuText + self.ParentMenu = ParentMenu + + if not _MENUCLIENTS[self.MenuClientGroupID] then + _MENUCLIENTS[self.MenuClientGroupID] = {} + end + + local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] + + self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } ) + + local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText + if MenuPath[MenuPathID] then + missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), MenuPath[MenuPathID] ) + end + + self.MenuPath = missionCommands.addCommandForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument ) + MenuPath[MenuPathID] = self.MenuPath + + self.CommandMenuFunction = CommandMenuFunction + self.CommandMenuArgument = CommandMenuArgument + + ParentMenu.Menus[self.MenuPath] = self + + return self +end + +function MENU_CLIENT_COMMAND:Remove() + self:F( self.MenuPath ) + + if not _MENUCLIENTS[self.MenuClientGroupID] then + _MENUCLIENTS[self.MenuClientGroupID] = {} + end + + local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] + + if MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] then + MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] = nil + end + + missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), self.MenuPath ) + self.ParentMenu.Menus[self.MenuPath] = nil + return nil +end + + +--- The MENU_COALITION class +-- @type MENU_COALITION +-- @extends Menu#MENU +MENU_COALITION = { + ClassName = "MENU_COALITION" +} + +--- Creates a new coalition menu item +-- @param #MENU_COALITION self +-- @param DCSCoalition#coalition.side MenuCoalition The coalition owning the menu. +-- @param #string MenuText The text for the menu. +-- @param #table ParentMenu The parent menu. +-- @return #MENU_COALITION self +function MENU_COALITION:New( MenuCoalition, MenuText, ParentMenu ) + + -- Arrange meta tables + local MenuParentPath = {} + if ParentMenu ~= nil then + MenuParentPath = ParentMenu.MenuPath + end + + local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) + self:F( { MenuCoalition, MenuText, ParentMenu } ) + + self.MenuCoalition = MenuCoalition + self.MenuParentPath = MenuParentPath + self.MenuText = MenuText + self.ParentMenu = ParentMenu + + self.Menus = {} + + self:T( { MenuParentPath, MenuText } ) + + self.MenuPath = missionCommands.addSubMenuForCoalition( self.MenuCoalition, MenuText, MenuParentPath ) + + self:T( { self.MenuPath } ) + + if ParentMenu and ParentMenu.Menus then + ParentMenu.Menus[self.MenuPath] = self + end + return self +end + +--- Removes the sub menus recursively of this MENU_COALITION. +-- @param #MENU_COALITION self +-- @return #MENU_COALITION self +function MENU_COALITION:RemoveSubMenus() + self:F( self.MenuPath ) + + for MenuID, Menu in pairs( self.Menus ) do + Menu:Remove() + end + +end + +--- Removes the sub menus recursively of this MENU_COALITION. +-- @param #MENU_COALITION self +-- @return #MENU_COALITION self +function MENU_COALITION:Remove() + self:F( self.MenuPath ) + + self:RemoveSubMenus() + missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath ) + self.ParentMenu.Menus[self.MenuPath] = nil + + return nil +end + + +--- The MENU_COALITION_COMMAND class +-- @type MENU_COALITION_COMMAND +-- @extends Menu#MENU +MENU_COALITION_COMMAND = { + ClassName = "MENU_COALITION_COMMAND" +} + +--- Creates a new radio command item for a group +-- @param #MENU_COALITION_COMMAND self +-- @param DCSCoalition#coalition.side MenuCoalition The coalition owning the menu. +-- @param MenuText The text for the menu. +-- @param ParentMenu The parent menu. +-- @param CommandMenuFunction A function that is called when the menu key is pressed. +-- @param CommandMenuArgument An argument for the function. +-- @return #MENU_COALITION_COMMAND self +function MENU_COALITION_COMMAND:New( MenuCoalition, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument ) + + -- Arrange meta tables + + local MenuParentPath = {} + if ParentMenu ~= nil then + MenuParentPath = ParentMenu.MenuPath + end + + local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) + + self.MenuCoalition = MenuCoalition + self.MenuParentPath = MenuParentPath + self.MenuText = MenuText + self.ParentMenu = ParentMenu + + self:T( { MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } ) + + self.MenuPath = missionCommands.addCommandForCoalition( self.MenuCoalition, MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument ) + + self.CommandMenuFunction = CommandMenuFunction + self.CommandMenuArgument = CommandMenuArgument + + ParentMenu.Menus[self.MenuPath] = self + + return self +end + +--- Removes a radio command item for a coalition +-- @param #MENU_COALITION_COMMAND self +-- @return #MENU_COALITION_COMMAND self +function MENU_COALITION_COMMAND:Remove() + self:F( self.MenuPath ) + + missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath ) + self.ParentMenu.Menus[self.MenuPath] = nil + return nil +end +--- This module contains the GROUP class. +-- +-- 1) @{Group#GROUP} class, extends @{Controllable#CONTROLLABLE} +-- ============================================================= +-- The @{Group#GROUP} class is a wrapper class to handle the DCS Group objects: +-- +-- * Support all DCS Group APIs. +-- * Enhance with Group specific APIs not in the DCS Group API set. +-- * Handle local Group Controller. +-- * Manage the "state" of the DCS Group. +-- +-- **IMPORTANT: ONE SHOULD NEVER SANATIZE these GROUP OBJECT REFERENCES! (make the GROUP object references nil).** +-- +-- 1.1) GROUP reference methods +-- ----------------------- +-- For each DCS Group object alive within a running mission, a GROUP wrapper object (instance) will be created within the _@{DATABASE} object. +-- This is done at the beginning of the mission (when the mission starts), and dynamically when new DCS Group objects are spawned (using the @{SPAWN} class). +-- +-- The GROUP class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference +-- using the DCS Group or the DCS GroupName. +-- +-- Another thing to know is that GROUP objects do not "contain" the DCS Group object. +-- The GROUP methods will reference the DCS Group object by name when it is needed during API execution. +-- If the DCS Group object does not exist or is nil, the GROUP methods will return nil and log an exception in the DCS.log file. +-- +-- The GROUP class provides the following functions to retrieve quickly the relevant GROUP instance: +-- +-- * @{#GROUP.Find}(): Find a GROUP instance from the _DATABASE object using a DCS Group object. +-- * @{#GROUP.FindByName}(): Find a GROUP instance from the _DATABASE object using a DCS Group name. +-- +-- 1.2) GROUP task methods +-- ----------------------- +-- Several group task methods are available that help you to prepare tasks. +-- These methods return a string consisting of the task description, which can then be given to either a @{Group#GROUP.PushTask} or @{Group#SetTask} method to assign the task to the GROUP. +-- Tasks are specific for the category of the GROUP, more specific, for AIR, GROUND or AIR and GROUND. +-- Each task description where applicable indicates for which group category the task is valid. +-- There are 2 main subdivisions of tasks: Assigned tasks and EnRoute tasks. +-- +-- ### 1.2.1) Assigned task methods +-- +-- Assigned task methods make the group execute the task where the location of the (possible) targets of the task are known before being detected. +-- This is different from the EnRoute tasks, where the targets of the task need to be detected before the task can be executed. +-- +-- Find below a list of the **assigned task** methods: +-- +-- * @{#GROUP.TaskAttackGroup}: (AIR) Attack a Group. +-- * @{#GROUP.TaskAttackMapObject}: (AIR) Attacking the map object (building, structure, e.t.c). +-- * @{#GROUP.TaskAttackUnit}: (AIR) Attack the Unit. +-- * @{#GROUP.TaskBombing}: (AIR) Delivering weapon at the point on the ground. +-- * @{#GROUP.TaskBombingRunway}: (AIR) Delivering weapon on the runway. +-- * @{#GROUP.TaskEmbarking}: (AIR) Move the group to a Vec2 Point, wait for a defined duration and embark a group. +-- * @{#GROUP.TaskEmbarkToTransport}: (GROUND) Embark to a Transport landed at a location. +-- * @{#GROUP.TaskEscort}: (AIR) Escort another airborne group. +-- * @{#GROUP.TaskFAC_AttackGroup}: (AIR + GROUND) The task makes the group/unit a FAC and orders the FAC to control the target (enemy ground group) destruction. +-- * @{#GROUP.TaskFireAtPoint}: (GROUND) Fire at a VEC2 point until ammunition is finished. +-- * @{#GROUP.TaskFollow}: (AIR) Following another airborne group. +-- * @{#GROUP.TaskHold}: (GROUND) Hold ground group from moving. +-- * @{#GROUP.TaskHoldPosition}: (AIR) Hold position at the current position of the first unit of the group. +-- * @{#GROUP.TaskLand}: (AIR HELICOPTER) Landing at the ground. For helicopters only. +-- * @{#GROUP.TaskLandAtZone}: (AIR) Land the group at a @{Zone#ZONE_RADIUS). +-- * @{#GROUP.TaskOrbitCircle}: (AIR) Orbit at the current position of the first unit of the group at a specified alititude. +-- * @{#GROUP.TaskOrbitCircleAtVec2}: (AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed. +-- * @{#GROUP.TaskRefueling}: (AIR) Refueling from the nearest tanker. No parameters. +-- * @{#GROUP.TaskRoute}: (AIR + GROUND) Return a Misson task to follow a given route defined by Points. +-- * @{#GROUP.TaskRouteToVec2}: (AIR + GROUND) Make the Group move to a given point. +-- * @{#GROUP.TaskRouteToVec3}: (AIR + GROUND) Make the Group move to a given point. +-- * @{#GROUP.TaskRouteToZone}: (AIR + GROUND) Route the group to a given zone. +-- * @{#GROUP.TaskReturnToBase}: (AIR) Route the group to an airbase. +-- +-- ### 1.2.2) EnRoute task methods +-- +-- EnRoute tasks require the targets of the task need to be detected by the group (using its sensors) before the task can be executed: +-- +-- * @{#GROUP.EnRouteTaskAWACS}: (AIR) Aircraft will act as an AWACS for friendly units (will provide them with information about contacts). No parameters. +-- * @{#GROUP.EnRouteTaskEngageGroup}: (AIR) Engaging a group. The task does not assign the target group to the unit/group to attack now; it just allows the unit/group to engage the target group as well as other assigned targets. +-- * @{#GROUP.EnRouteTaskEngageTargets}: (AIR) Engaging targets of defined types. +-- * @{#GROUP.EnRouteTaskEWR}: (AIR) Attack the Unit. +-- * @{#GROUP.EnRouteTaskFAC}: (AIR + GROUND) The task makes the group/unit a FAC and lets the FAC to choose a targets (enemy ground group) around as well as other assigned targets. +-- * @{#GROUP.EnRouteTaskFAC_EngageGroup}: (AIR + GROUND) The task makes the group/unit a FAC and lets the FAC to choose the target (enemy ground group) as well as other assigned targets. +-- * @{#GROUP.EnRouteTaskTanker}: (AIR) Aircraft will act as a tanker for friendly units. No parameters. +-- +-- ### 1.2.3) Preparation task methods +-- +-- There are certain task methods that allow to tailor the task behaviour: +-- +-- * @{#GROUP.TaskWrappedAction}: Return a WrappedAction Task taking a Command. +-- * @{#GROUP.TaskCombo}: Return a Combo Task taking an array of Tasks. +-- * @{#GROUP.TaskCondition}: Return a condition section for a controlled task. +-- * @{#GROUP.TaskControlled}: Return a Controlled Task taking a Task and a TaskCondition. +-- +-- ### 1.2.4) Obtain the mission from group templates +-- +-- Group templates contain complete mission descriptions. Sometimes you want to copy a complete mission from a group and assign it to another: +-- +-- * @{#GROUP.TaskMission}: (AIR + GROUND) Return a mission task from a mission template. +-- +-- 1.3) GROUP Command methods +-- -------------------------- +-- Group **command methods** prepare the execution of commands using the @{#GROUP.SetCommand} method: +-- +-- * @{#GROUP.CommandDoScript}: Do Script command. +-- * @{#GROUP.CommandSwitchWayPoint}: Perform a switch waypoint command. +-- +-- 1.4) GROUP Option methods +-- ------------------------- +-- Group **Option methods** change the behaviour of the Group while being alive. +-- +-- ### 1.4.1) Rule of Engagement: +-- +-- * @{#GROUP.OptionROEWeaponFree} +-- * @{#GROUP.OptionROEOpenFire} +-- * @{#GROUP.OptionROEReturnFire} +-- * @{#GROUP.OptionROEEvadeFire} +-- +-- To check whether an ROE option is valid for a specific group, use: +-- +-- * @{#GROUP.OptionROEWeaponFreePossible} +-- * @{#GROUP.OptionROEOpenFirePossible} +-- * @{#GROUP.OptionROEReturnFirePossible} +-- * @{#GROUP.OptionROEEvadeFirePossible} +-- +-- ### 1.4.2) Rule on thread: +-- +-- * @{#GROUP.OptionROTNoReaction} +-- * @{#GROUP.OptionROTPassiveDefense} +-- * @{#GROUP.OptionROTEvadeFire} +-- * @{#GROUP.OptionROTVertical} +-- +-- To test whether an ROT option is valid for a specific group, use: +-- +-- * @{#GROUP.OptionROTNoReactionPossible} +-- * @{#GROUP.OptionROTPassiveDefensePossible} +-- * @{#GROUP.OptionROTEvadeFirePossible} +-- * @{#GROUP.OptionROTVerticalPossible} +-- +-- 1.5) GROUP Zone validation methods +-- ---------------------------------- +-- The group can be validated whether it is completely, partly or not within a @{Zone}. +-- Use the following Zone validation methods on the group: +-- +-- * @{#GROUP.IsCompletelyInZone}: Returns true if all units of the group are within a @{Zone}. +-- * @{#GROUP.IsPartlyInZone}: Returns true if some units of the group are within a @{Zone}. +-- * @{#GROUP.IsNotInZone}: Returns true if none of the group units of the group are within a @{Zone}. +-- +-- The zone can be of any @{Zone} class derived from @{Zone#ZONE_BASE}. So, these methods are polymorphic to the zones tested on. +-- +-- @module Group +-- @author FlightControl + +--- The GROUP class +-- @type GROUP +-- @extends Controllable#CONTROLLABLE +-- @field #string GroupName The name of the group. +GROUP = { + ClassName = "GROUP", +} + +--- Create a new GROUP from a DCSGroup +-- @param #GROUP self +-- @param DCSGroup#Group GroupName The DCS Group name +-- @return #GROUP self +function GROUP:Register( GroupName ) + local self = BASE:Inherit( self, CONTROLLABLE:New( GroupName ) ) + self:F2( GroupName ) + self.GroupName = GroupName + return self +end + +-- Reference methods. + +--- Find the GROUP wrapper class instance using the DCS Group. +-- @param #GROUP self +-- @param DCSGroup#Group DCSGroup The DCS Group. +-- @return #GROUP The GROUP. +function GROUP:Find( DCSGroup ) + + local GroupName = DCSGroup:getName() -- Group#GROUP + local GroupFound = _DATABASE:FindGroup( GroupName ) + GroupFound:E( { GroupName, GroupFound:GetClassNameAndID() } ) + return GroupFound +end + +--- Find the created GROUP using the DCS Group Name. +-- @param #GROUP self +-- @param #string GroupName The DCS Group Name. +-- @return #GROUP The GROUP. +function GROUP:FindByName( GroupName ) + + local GroupFound = _DATABASE:FindGroup( GroupName ) + return GroupFound +end + +-- DCS Group methods support. + +--- Returns the DCS Group. +-- @param #GROUP self +-- @return DCSGroup#Group The DCS Group. +function GROUP:GetDCSObject() + local DCSGroup = Group.getByName( self.GroupName ) + + if DCSGroup then + return DCSGroup + end + + return nil +end + + +--- Returns if the DCS Group is alive. +-- When the group exists at run-time, this method will return true, otherwise false. +-- @param #GROUP self +-- @return #boolean true if the DCS Group is alive. +function GROUP:IsAlive() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupIsAlive = DCSGroup:isExist() + self:T3( GroupIsAlive ) + return GroupIsAlive + end + + return nil +end + +--- Destroys the DCS Group and all of its DCS Units. +-- Note that this destroy method also raises a destroy event at run-time. +-- So all event listeners will catch the destroy event of this DCS Group. +-- @param #GROUP self +function GROUP:Destroy() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + for Index, UnitData in pairs( DCSGroup:getUnits() ) do + self:CreateEventCrash( timer.getTime(), UnitData ) + end + DCSGroup:destroy() + DCSGroup = nil + end + + return nil +end + +--- Returns category of the DCS Group. +-- @param #GROUP self +-- @return DCSGroup#Group.Category The category ID +function GROUP:GetCategory() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + local GroupCategory = DCSGroup:getCategory() + self:T3( GroupCategory ) + return GroupCategory + end + + return nil +end + +--- Returns the category name of the DCS Group. +-- @param #GROUP self +-- @return #string Category name = Helicopter, Airplane, Ground Unit, Ship +function GROUP:GetCategoryName() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + local CategoryNames = { + [Group.Category.AIRPLANE] = "Airplane", + [Group.Category.HELICOPTER] = "Helicopter", + [Group.Category.GROUND] = "Ground Unit", + [Group.Category.SHIP] = "Ship", + } + local GroupCategory = DCSGroup:getCategory() + self:T3( GroupCategory ) + + return CategoryNames[GroupCategory] + end + + return nil +end + + +--- Returns the coalition of the DCS Group. +-- @param #GROUP self +-- @return DCSCoalitionObject#coalition.side The coalition side of the DCS Group. +function GROUP:GetCoalition() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + local GroupCoalition = DCSGroup:getCoalition() + self:T3( GroupCoalition ) + return GroupCoalition + end + + return nil +end + +--- Returns the country of the DCS Group. +-- @param #GROUP self +-- @return DCScountry#country.id The country identifier. +-- @return #nil The DCS Group is not existing or alive. +function GROUP:GetCountry() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + local GroupCountry = DCSGroup:getUnit(1):getCountry() + self:T3( GroupCountry ) + return GroupCountry + end + + return nil +end + +--- Returns the UNIT wrapper class with number UnitNumber. +-- If the underlying DCS Unit does not exist, the method will return nil. . +-- @param #GROUP self +-- @param #number UnitNumber The number of the UNIT wrapper class to be returned. +-- @return Unit#UNIT The UNIT wrapper class. +function GROUP:GetUnit( UnitNumber ) + self:F2( { self.GroupName, UnitNumber } ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local UnitFound = UNIT:Find( DCSGroup:getUnit( UnitNumber ) ) + self:T3( UnitFound.UnitName ) + self:T2( UnitFound ) + return UnitFound + end + + return nil +end + +--- Returns the DCS Unit with number UnitNumber. +-- If the underlying DCS Unit does not exist, the method will return nil. . +-- @param #GROUP self +-- @param #number UnitNumber The number of the DCS Unit to be returned. +-- @return DCSUnit#Unit The DCS Unit. +function GROUP:GetDCSUnit( UnitNumber ) + self:F2( { self.GroupName, UnitNumber } ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local DCSUnitFound = DCSGroup:getUnit( UnitNumber ) + self:T3( DCSUnitFound ) + return DCSUnitFound + end + + return nil +end + +--- Returns current size of the DCS Group. +-- If some of the DCS Units of the DCS Group are destroyed the size of the DCS Group is changed. +-- @param #GROUP self +-- @return #number The DCS Group size. +function GROUP:GetSize() + self:F2( { self.GroupName } ) + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupSize = DCSGroup:getSize() + self:T3( GroupSize ) + return GroupSize + end + + return nil +end + +--- +--- Returns the initial size of the DCS Group. +-- If some of the DCS Units of the DCS Group are destroyed, the initial size of the DCS Group is unchanged. +-- @param #GROUP self +-- @return #number The DCS Group initial size. +function GROUP:GetInitialSize() + self:F2( { self.GroupName } ) + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupInitialSize = DCSGroup:getInitialSize() + self:T3( GroupInitialSize ) + return GroupInitialSize + end + + return nil +end + +--- Returns the UNITs wrappers of the DCS Units of the DCS Group. +-- @param #GROUP self +-- @return #table The UNITs wrappers. +function GROUP:GetUnits() + self:F2( { self.GroupName } ) + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local DCSUnits = DCSGroup:getUnits() + local Units = {} + for Index, UnitData in pairs( DCSUnits ) do + Units[#Units+1] = UNIT:Find( UnitData ) + end + self:T3( Units ) + return Units + end + + return nil +end + + +--- Returns the DCS Units of the DCS Group. +-- @param #GROUP self +-- @return #table The DCS Units. +function GROUP:GetDCSUnits() + self:F2( { self.GroupName } ) + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local DCSUnits = DCSGroup:getUnits() + self:T3( DCSUnits ) + return DCSUnits + end + + return nil +end + + +--- Activates a GROUP. +-- @param #GROUP self +function GROUP:Activate() + self:F2( { self.GroupName } ) + trigger.action.activateGroup( self:GetDCSObject() ) + return self:GetDCSObject() +end + + +--- Gets the type name of the group. +-- @param #GROUP self +-- @return #string The type name of the group. +function GROUP:GetTypeName() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupTypeName = DCSGroup:getUnit(1):getTypeName() + self:T3( GroupTypeName ) + return( GroupTypeName ) + end + + return nil +end + +--- Gets the CallSign of the first DCS Unit of the DCS Group. +-- @param #GROUP self +-- @return #string The CallSign of the first DCS Unit of the DCS Group. +function GROUP:GetCallsign() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupCallSign = DCSGroup:getUnit(1):getCallsign() + self:T3( GroupCallSign ) + return GroupCallSign + end + + return nil +end + +--- Returns the current point (Vec2 vector) of the first DCS Unit in the DCS Group. +-- @param #GROUP self +-- @return DCSTypes#Vec2 Current Vec2 point of the first DCS Unit of the DCS Group. +function GROUP:GetPointVec2() + self:F2( self.GroupName ) + + local UnitPoint = self:GetUnit(1) + UnitPoint:GetPointVec2() + local GroupPointVec2 = UnitPoint:GetPointVec2() + self:T3( GroupPointVec2 ) + return GroupPointVec2 +end + +--- Returns the current point (Vec3 vector) of the first DCS Unit in the DCS Group. +-- @return DCSTypes#Vec3 Current Vec3 point of the first DCS Unit of the DCS Group. +function GROUP:GetPointVec3() + self:F2( self.GroupName ) + + local GroupPointVec3 = self:GetUnit(1):GetPointVec3() + self:T3( GroupPointVec3 ) + return GroupPointVec3 +end + + + +-- Is Zone Functions + +--- Returns true if all units of the group are within a @{Zone}. +-- @param #GROUP self +-- @param Zone#ZONE_BASE Zone The zone to test. +-- @return #boolean Returns true if the Group is completely within the @{Zone#ZONE_BASE} +function GROUP:IsCompletelyInZone( Zone ) + self:F2( { self.GroupName, Zone } ) + + for UnitID, UnitData in pairs( self:GetUnits() ) do + local Unit = UnitData -- Unit#UNIT + if Zone:IsPointVec3InZone( Unit:GetPointVec3() ) then + else + return false + end + end + + return true +end + +--- Returns true if some units of the group are within a @{Zone}. +-- @param #GROUP self +-- @param Zone#ZONE_BASE Zone The zone to test. +-- @return #boolean Returns true if the Group is completely within the @{Zone#ZONE_BASE} +function GROUP:IsPartlyInZone( Zone ) + self:F2( { self.GroupName, Zone } ) + + for UnitID, UnitData in pairs( self:GetUnits() ) do + local Unit = UnitData -- Unit#UNIT + if Zone:IsPointVec3InZone( Unit:GetPointVec3() ) then + return true + end + end + + return false +end + +--- Returns true if none of the group units of the group are within a @{Zone}. +-- @param #GROUP self +-- @param Zone#ZONE_BASE Zone The zone to test. +-- @return #boolean Returns true if the Group is completely within the @{Zone#ZONE_BASE} +function GROUP:IsNotInZone( Zone ) + self:F2( { self.GroupName, Zone } ) + + for UnitID, UnitData in pairs( self:GetUnits() ) do + local Unit = UnitData -- Unit#UNIT + if Zone:IsPointVec3InZone( Unit:GetPointVec3() ) then + return false + end + end + + return true +end + +--- Returns if the group is of an air category. +-- If the group is a helicopter or a plane, then this method will return true, otherwise false. +-- @param #GROUP self +-- @return #boolean Air category evaluation result. +function GROUP:IsAir() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local IsAirResult = DCSGroup:getCategory() == Group.Category.AIRPLANE or DCSGroup:getCategory() == Group.Category.HELICOPTER + self:T3( IsAirResult ) + return IsAirResult + end + + return nil +end + +--- Returns if the DCS Group contains Helicopters. +-- @param #GROUP self +-- @return #boolean true if DCS Group contains Helicopters. +function GROUP:IsHelicopter() + self:F2( self.GroupName ) + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupCategory = DCSGroup:getCategory() + self:T2( GroupCategory ) + return GroupCategory == Group.Category.HELICOPTER + end + + return nil +end + +--- Returns if the DCS Group contains AirPlanes. +-- @param #GROUP self +-- @return #boolean true if DCS Group contains AirPlanes. +function GROUP:IsAirPlane() + self:F2() + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupCategory = DCSGroup:getCategory() + self:T2( GroupCategory ) + return GroupCategory == Group.Category.AIRPLANE + end + + return nil +end + +--- Returns if the DCS Group contains Ground troops. +-- @param #GROUP self +-- @return #boolean true if DCS Group contains Ground troops. +function GROUP:IsGround() + self:F2() + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupCategory = DCSGroup:getCategory() + self:T2( GroupCategory ) + return GroupCategory == Group.Category.GROUND + end + + return nil +end + +--- Returns if the DCS Group contains Ships. +-- @param #GROUP self +-- @return #boolean true if DCS Group contains Ships. +function GROUP:IsShip() + self:F2() + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local GroupCategory = DCSGroup:getCategory() + self:T2( GroupCategory ) + return GroupCategory == Group.Category.SHIP + end + + return nil +end + +--- Returns if all units of the group are on the ground or landed. +-- If all units of this group are on the ground, this function will return true, otherwise false. +-- @param #GROUP self +-- @return #boolean All units on the ground result. +function GROUP:AllOnGround() + self:F2() + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local AllOnGroundResult = true + + for Index, UnitData in pairs( DCSGroup:getUnits() ) do + if UnitData:inAir() then + AllOnGroundResult = false + end + end + + self:T3( AllOnGroundResult ) + return AllOnGroundResult + end + + return nil +end + +--- Returns the current maximum velocity of the group. +-- Each unit within the group gets evaluated, and the maximum velocity (= the unit which is going the fastest) is returned. +-- @param #GROUP self +-- @return #number Maximum velocity found. +function GROUP:GetMaxVelocity() + self:F2() + + local DCSGroup = self:GetDCSObject() + + if DCSGroup then + local MaxVelocity = 0 + + for Index, UnitData in pairs( DCSGroup:getUnits() ) do + + local Velocity = UnitData:getVelocity() + local VelocityTotal = math.abs( Velocity.x ) + math.abs( Velocity.y ) + math.abs( Velocity.z ) + + if VelocityTotal < MaxVelocity then + MaxVelocity = VelocityTotal + end + end + + return MaxVelocity + end + + return nil +end + +--- Returns the current minimum height of the group. +-- Each unit within the group gets evaluated, and the minimum height (= the unit which is the lowest elevated) is returned. +-- @param #GROUP self +-- @return #number Minimum height found. +function GROUP:GetMinHeight() + self:F2() + +end + +--- Returns the current maximum height of the group. +-- Each unit within the group gets evaluated, and the maximum height (= the unit which is the highest elevated) is returned. +-- @param #GROUP self +-- @return #number Maximum height found. +function GROUP:GetMaxHeight() + self:F2() + +end + +--- @param Group#GROUP self +function GROUP:Respawn( Template ) + + local Vec3 = self:GetPointVec3() + --Template.x = Vec3.x + --Template.y = Vec3.z + Template.x = nil + Template.y = nil + + self:E( #Template.units ) + for UnitID, UnitData in pairs( self:GetUnits() ) do + local GroupUnit = UnitData -- Unit#UNIT + self:E( GroupUnit:GetName() ) + if GroupUnit:IsAlive() then + local GroupUnitVec3 = GroupUnit:GetPointVec3() + local GroupUnitHeading = GroupUnit:GetHeading() + Template.units[UnitID].alt = GroupUnitVec3.y + Template.units[UnitID].x = GroupUnitVec3.x + Template.units[UnitID].y = GroupUnitVec3.z + Template.units[UnitID].heading = GroupUnitHeading + self:E( { UnitID, Template.units[UnitID], Template.units[UnitID] } ) + end + end + + _DATABASE:Spawn( Template ) + +end + +function GROUP:GetTemplate() + + return _DATABASE.Templates.Groups[self:GetName()].Template + +end + +--- Return the mission template of the group. +-- @param #GROUP self +-- @return #table The MissionTemplate +function GROUP:GetTaskMission() + self:F2( self.GroupName ) + + return routines.utils.deepCopy( _DATABASE.Templates.Groups[self.GroupName].Template ) +end + +--- Return the mission route of the group. +-- @param #GROUP self +-- @return #table The mission route defined by points. +function GROUP:GetTaskRoute() + self:F2( self.GroupName ) + + return routines.utils.deepCopy( _DATABASE.Templates.Groups[self.GroupName].Template.route.points ) +end + +--- Return the route of a group by using the @{Database#DATABASE} class. +-- @param #GROUP self +-- @param #number Begin The route point from where the copy will start. The base route point is 0. +-- @param #number End The route point where the copy will end. The End point is the last point - the End point. The last point has base 0. +-- @param #boolean Randomize Randomization of the route, when true. +-- @param #number Radius When randomization is on, the randomization is within the radius. +function GROUP:CopyRoute( Begin, End, Randomize, Radius ) + self:F2( { Begin, End } ) + + local Points = {} + + -- Could be a Spawned Group + local GroupName = string.match( self:GetName(), ".*#" ) + if GroupName then + GroupName = GroupName:sub( 1, -2 ) + else + GroupName = self:GetName() + end + + self:T3( { GroupName } ) + + local Template = _DATABASE.Templates.Groups[GroupName].Template + + if Template then + if not Begin then + Begin = 0 + end + if not End then + End = 0 + end + + for TPointID = Begin + 1, #Template.route.points - End do + if Template.route.points[TPointID] then + Points[#Points+1] = routines.utils.deepCopy( Template.route.points[TPointID] ) + if Randomize then + if not Radius then + Radius = 500 + end + Points[#Points].x = Points[#Points].x + math.random( Radius * -1, Radius ) + Points[#Points].y = Points[#Points].y + math.random( Radius * -1, Radius ) + end + end + end + return Points + else + error( "Template not found for Group : " .. GroupName ) + end + + return nil +end + + +-- Message APIs + +--- Returns a message for a coalition or a client. +-- @param #GROUP self +-- @param #string Message The message text +-- @param DCSTypes#Duration Duration The duration of the message. +-- @return Message#MESSAGE +function GROUP:Message( Message, Duration ) + self:F2( { Message, Duration } ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + return MESSAGE:New( Message, Duration, self:GetCallsign() .. " (" .. self:GetTypeName() .. ")" ) + end + + return nil +end + +--- Send a message to all coalitions. +-- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. +-- @param #GROUP self +-- @param #string Message The message text +-- @param DCSTypes#Duration Duration The duration of the message. +function GROUP:MessageToAll( Message, Duration ) + self:F2( { Message, Duration } ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + self:Message( Message, Duration ):ToAll() + end + + return nil +end + +--- Send a message to the red coalition. +-- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. +-- @param #GROUP self +-- @param #string Message The message text +-- @param DCSTYpes#Duration Duration The duration of the message. +function GROUP:MessageToRed( Message, Duration ) + self:F2( { Message, Duration } ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + self:Message( Message, Duration ):ToRed() + end + + return nil +end + +--- Send a message to the blue coalition. +-- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. +-- @param #GROUP self +-- @param #string Message The message text +-- @param DCSTypes#Duration Duration The duration of the message. +function GROUP:MessageToBlue( Message, Duration ) + self:F2( { Message, Duration } ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + self:Message( Message, Duration ):ToBlue() + end + + return nil +end + +--- Send a message to a client. +-- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. +-- @param #GROUP self +-- @param #string Message The message text +-- @param DCSTypes#Duration Duration The duration of the message. +-- @param Client#CLIENT Client The client object receiving the message. +function GROUP:MessageToClient( Message, Duration, Client ) + self:F2( { Message, Duration } ) + + local DCSGroup = self:GetDCSObject() + if DCSGroup then + self:Message( Message, Duration ):ToClient( Client ) + end + + return nil +end +--- This module contains the UNIT class. +-- +-- 1) @{Unit#UNIT} class, extends @{Controllable#CONTROLLABLE} +-- =========================================================== +-- The @{Unit#UNIT} class is a wrapper class to handle the DCS Unit objects: +-- +-- * Support all DCS Unit APIs. +-- * Enhance with Unit specific APIs not in the DCS Unit API set. +-- * Handle local Unit Controller. +-- * Manage the "state" of the DCS Unit. +-- +-- +-- 1.1) UNIT reference methods +-- ---------------------- +-- For each DCS Unit object alive within a running mission, a UNIT wrapper object (instance) will be created within the _@{DATABASE} object. +-- This is done at the beginning of the mission (when the mission starts), and dynamically when new DCS Unit objects are spawned (using the @{SPAWN} class). +-- +-- The UNIT class **does not contain a :New()** method, rather it provides **:Find()** methods to retrieve the object reference +-- using the DCS Unit or the DCS UnitName. +-- +-- Another thing to know is that UNIT objects do not "contain" the DCS Unit object. +-- The UNIT methods will reference the DCS Unit object by name when it is needed during API execution. +-- If the DCS Unit object does not exist or is nil, the UNIT methods will return nil and log an exception in the DCS.log file. +-- +-- The UNIT class provides the following functions to retrieve quickly the relevant UNIT instance: +-- +-- * @{#UNIT.Find}(): Find a UNIT instance from the _DATABASE object using a DCS Unit object. +-- * @{#UNIT.FindByName}(): Find a UNIT instance from the _DATABASE object using a DCS Unit name. +-- +-- IMPORTANT: ONE SHOULD NEVER SANATIZE these UNIT OBJECT REFERENCES! (make the UNIT object references nil). +-- +-- 1.2) DCS UNIT APIs +-- ------------------ +-- The DCS Unit APIs are used extensively within MOOSE. The UNIT class has for each DCS Unit API a corresponding method. +-- To be able to distinguish easily in your code the difference between a UNIT API call and a DCS Unit API call, +-- the first letter of the method is also capitalized. So, by example, the DCS Unit method @{DCSUnit#Unit.getName}() +-- is implemented in the UNIT class as @{#UNIT.GetName}(). +-- +-- 1.3) Smoke, Flare Units +-- ----------------------- +-- The UNIT class provides methods to smoke or flare units easily. +-- The @{#UNIT.SmokeBlue}(), @{#UNIT.SmokeGreen}(),@{#UNIT.SmokeOrange}(), @{#UNIT.SmokeRed}(), @{#UNIT.SmokeRed}() methods +-- will smoke the unit in the corresponding color. Note that smoking a unit is done at the current position of the DCS Unit. +-- When the DCS Unit moves for whatever reason, the smoking will still continue! +-- The @{#UNIT.FlareGreen}(), @{#UNIT.FlareRed}(), @{#UNIT.FlareWhite}(), @{#UNIT.FlareYellow}() +-- methods will fire off a flare in the air with the corresponding color. Note that a flare is a one-off shot and its effect is of very short duration. +-- +-- 1.4) Location Position, Point +-- ----------------------------- +-- The UNIT class provides methods to obtain the current point or position of the DCS Unit. +-- The @{#UNIT.GetPointVec2}(), @{#UNIT.GetPointVec3}() will obtain the current **location** of the DCS Unit in a Vec2 (2D) or a **point** in a Vec3 (3D) vector respectively. +-- If you want to obtain the complete **3D position** including oriëntation and direction vectors, consult the @{#UNIT.GetPositionVec3}() method respectively. +-- +-- 1.5) Test if alive +-- ------------------ +-- The @{#UNIT.IsAlive}(), @{#UNIT.IsActive}() methods determines if the DCS Unit is alive, meaning, it is existing and active. +-- +-- 1.6) Test for proximity +-- ----------------------- +-- The UNIT class contains methods to test the location or proximity against zones or other objects. +-- +-- ### 1.6.1) Zones +-- To test whether the Unit is within a **zone**, use the @{#UNIT.IsInZone}() or the @{#UNIT.IsNotInZone}() methods. Any zone can be tested on, but the zone must be derived from @{Zone#ZONE_BASE}. +-- +-- ### 1.6.2) Units +-- Test if another DCS Unit is within a given radius of the current DCS Unit, use the @{#UNIT.OtherUnitInRadius}() method. +-- +-- @module Unit +-- @author FlightControl + + + + + +--- The UNIT class +-- @type UNIT +-- @extends Controllable#CONTROLLABLE +-- @field #UNIT.FlareColor FlareColor +-- @field #UNIT.SmokeColor SmokeColor +UNIT = { + ClassName="UNIT", + FlareColor = { + Green = trigger.flareColor.Green, + Red = trigger.flareColor.Red, + White = trigger.flareColor.White, + Yellow = trigger.flareColor.Yellow + }, + SmokeColor = { + Green = trigger.smokeColor.Green, + Red = trigger.smokeColor.Red, + White = trigger.smokeColor.White, + Orange = trigger.smokeColor.Orange, + Blue = trigger.smokeColor.Blue + }, + } + +--- FlareColor +-- @type UNIT.FlareColor +-- @field Green +-- @field Red +-- @field White +-- @field Yellow + +--- SmokeColor +-- @type UNIT.SmokeColor +-- @field Green +-- @field Red +-- @field White +-- @field Orange +-- @field Blue + +-- Registration. + +--- Create a new UNIT from DCSUnit. +-- @param #UNIT self +-- @param #string UnitName The name of the DCS unit. +-- @return Unit#UNIT +function UNIT:Register( UnitName ) + local self = BASE:Inherit( self, CONTROLLABLE:New( UnitName ) ) + self.UnitName = UnitName + return self +end + +-- Reference methods. + +--- Finds a UNIT from the _DATABASE using a DCSUnit object. +-- @param #UNIT self +-- @param DCSUnit#Unit DCSUnit An existing DCS Unit object reference. +-- @return Unit#UNIT self +function UNIT:Find( DCSUnit ) + + local UnitName = DCSUnit:getName() + local UnitFound = _DATABASE:FindUnit( UnitName ) + return UnitFound +end + +--- Find a UNIT in the _DATABASE using the name of an existing DCS Unit. +-- @param #UNIT self +-- @param #string UnitName The Unit Name. +-- @return Unit#UNIT self +function UNIT:FindByName( UnitName ) + + local UnitFound = _DATABASE:FindUnit( UnitName ) + return UnitFound +end + + +--- @param #UNIT self +-- @return DCSUnit#Unit +function UNIT:GetDCSObject() + + local DCSUnit = Unit.getByName( self.UnitName ) + + if DCSUnit then + return DCSUnit + end + + return nil +end + + + + +--- Returns if the unit is activated. +-- @param Unit#UNIT self +-- @return #boolean true if Unit is activated. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:IsActive() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + + local UnitIsActive = DCSUnit:isActive() + return UnitIsActive + end + + return nil +end + +--- Returns the Unit's callsign - the localized string. +-- @param Unit#UNIT self +-- @return #string The Callsign of the Unit. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetCallSign() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitCallSign = DCSUnit:getCallsign() + return UnitCallSign + end + + self:E( self.ClassName .. " " .. self.UnitName .. " not found!" ) + return nil +end + + +--- Returns name of the player that control the unit or nil if the unit is controlled by A.I. +-- @param Unit#UNIT self +-- @return #string Player Name +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetPlayerName() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + + local PlayerName = DCSUnit:getPlayerName() + if PlayerName == nil then + PlayerName = "" + end + return PlayerName + end + + return nil +end + +--- Returns the unit's number in the group. +-- The number is the same number the unit has in ME. +-- It may not be changed during the mission. +-- If any unit in the group is destroyed, the numbers of another units will not be changed. +-- @param Unit#UNIT self +-- @return #number The Unit number. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetNumber() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitNumber = DCSUnit:getNumber() + return UnitNumber + end + + return nil +end + +--- Returns the unit's group if it exist and nil otherwise. +-- @param Unit#UNIT self +-- @return Group#GROUP The Group of the Unit. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetGroup() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitGroup = GROUP:Find( DCSUnit:getGroup() ) + return UnitGroup + end + + return nil +end + + +-- Need to add here functions to check if radar is on and which object etc. + +--- Returns the prefix name of the DCS Unit. A prefix name is a part of the name before a '#'-sign. +-- DCS Units spawned with the @{SPAWN} class contain a '#'-sign to indicate the end of the (base) DCS Unit name. +-- The spawn sequence number and unit number are contained within the name after the '#' sign. +-- @param Unit#UNIT self +-- @return #string The name of the DCS Unit. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetPrefix() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitPrefix = string.match( self.UnitName, ".*#" ):sub( 1, -2 ) + self:T3( UnitPrefix ) + return UnitPrefix + end + + return nil +end + +--- Returns the Unit's ammunition. +-- @param Unit#UNIT self +-- @return DCSUnit#Unit.Ammo +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetAmmo() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitAmmo = DCSUnit:getAmmo() + return UnitAmmo + end + + return nil +end + +--- Returns the unit sensors. +-- @param Unit#UNIT self +-- @return DCSUnit#Unit.Sensors +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetSensors() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitSensors = DCSUnit:getSensors() + return UnitSensors + end + + return nil +end + +-- Need to add here a function per sensortype +-- unit:hasSensors(Unit.SensorType.RADAR, Unit.RadarType.AS) + +--- Returns two values: +-- +-- * First value indicates if at least one of the unit's radar(s) is on. +-- * Second value is the object of the radar's interest. Not nil only if at least one radar of the unit is tracking a target. +-- @param Unit#UNIT self +-- @return #boolean Indicates if at least one of the unit's radar(s) is on. +-- @return DCSObject#Object The object of the radar's interest. Not nil only if at least one radar of the unit is tracking a target. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetRadar() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitRadarOn, UnitRadarObject = DCSUnit:getRadar() + return UnitRadarOn, UnitRadarObject + end + + return nil, nil +end + +--- Returns relative amount of fuel (from 0.0 to 1.0) the unit has in its internal tanks. If there are additional fuel tanks the value may be greater than 1.0. +-- @param Unit#UNIT self +-- @return #number The relative amount of fuel (from 0.0 to 1.0). +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetFuel() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitFuel = DCSUnit:getFuel() + return UnitFuel + end + + return nil +end + +--- Returns the unit's health. Dead units has health <= 1.0. +-- @param Unit#UNIT self +-- @return #number The Unit's health value. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetLife() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitLife = DCSUnit:getLife() + return UnitLife + end + + return nil +end + +--- Returns the Unit's initial health. +-- @param Unit#UNIT self +-- @return #number The Unit's initial health value. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:GetLife0() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitLife0 = DCSUnit:getLife0() + return UnitLife0 + end + + return nil +end + + + + +-- Is functions + +--- Returns true if the unit is within a @{Zone}. +-- @param #UNIT self +-- @param Zone#ZONE_BASE Zone The zone to test. +-- @return #boolean Returns true if the unit is within the @{Zone#ZONE_BASE} +function UNIT:IsInZone( Zone ) + self:F2( { self.UnitName, Zone } ) + + if self:IsAlive() then + local IsInZone = Zone:IsPointVec3InZone( self:GetPointVec3() ) + + self:T( { IsInZone } ) + return IsInZone + else + return false + end +end + +--- Returns true if the unit is not within a @{Zone}. +-- @param #UNIT self +-- @param Zone#ZONE_BASE Zone The zone to test. +-- @return #boolean Returns true if the unit is not within the @{Zone#ZONE_BASE} +function UNIT:IsNotInZone( Zone ) + self:F2( { self.UnitName, Zone } ) + + if self:IsAlive() then + local IsInZone = not Zone:IsPointVec3InZone( self:GetPointVec3() ) + + self:T( { IsInZone } ) + return IsInZone + else + return false + end +end + + +--- Returns true if there is an **other** DCS Unit within a radius of the current 2D point of the DCS Unit. +-- @param Unit#UNIT self +-- @param Unit#UNIT AwaitUnit The other UNIT wrapper object. +-- @param Radius The radius in meters with the DCS Unit in the centre. +-- @return true If the other DCS Unit is within the radius of the 2D point of the DCS Unit. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:OtherUnitInRadius( AwaitUnit, Radius ) + self:F2( { self.UnitName, AwaitUnit.UnitName, Radius } ) + + local DCSUnit = self:GetDCSObject() + + if DCSUnit then + local UnitPos = self:GetPointVec3() + local AwaitUnitPos = AwaitUnit:GetPointVec3() + + if (((UnitPos.x - AwaitUnitPos.x)^2 + (UnitPos.z - AwaitUnitPos.z)^2)^0.5 <= Radius) then + self:T3( "true" ) + return true + else + self:T3( "false" ) + return false + end + end + + return nil +end + + + +--- Signal a flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:Flare( FlareColor ) + self:F2() + trigger.action.signalFlare( self:GetPointVec3(), FlareColor , 0 ) +end + +--- Signal a white flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:FlareWhite() + self:F2() + trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.White , 0 ) +end + +--- Signal a yellow flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:FlareYellow() + self:F2() + trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.Yellow , 0 ) +end + +--- Signal a green flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:FlareGreen() + self:F2() + trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.Green , 0 ) +end + +--- Signal a red flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:FlareRed() + self:F2() + trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.Red, 0 ) +end + +--- Smoke the UNIT. +-- @param #UNIT self +function UNIT:Smoke( SmokeColor ) + self:F2() + trigger.action.smoke( self:GetPointVec3(), SmokeColor ) +end + +--- Smoke the UNIT Green. +-- @param #UNIT self +function UNIT:SmokeGreen() + self:F2() + trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Green ) +end + +--- Smoke the UNIT Red. +-- @param #UNIT self +function UNIT:SmokeRed() + self:F2() + trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Red ) +end + +--- Smoke the UNIT White. +-- @param #UNIT self +function UNIT:SmokeWhite() + self:F2() + trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.White ) +end + +--- Smoke the UNIT Orange. +-- @param #UNIT self +function UNIT:SmokeOrange() + self:F2() + trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Orange ) +end + +--- Smoke the UNIT Blue. +-- @param #UNIT self +function UNIT:SmokeBlue() + self:F2() + trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Blue ) +end + +-- Is methods + +--- Returns if the unit is of an air category. +-- If the unit is a helicopter or a plane, then this method will return true, otherwise false. +-- @param #UNIT self +-- @return #boolean Air category evaluation result. +function UNIT:IsAir() + self:F2() + + local UnitDescriptor = self.DCSUnit:getDesc() + self:T3( { UnitDescriptor.category, Unit.Category.AIRPLANE, Unit.Category.HELICOPTER } ) + + local IsAirResult = ( UnitDescriptor.category == Unit.Category.AIRPLANE ) or ( UnitDescriptor.category == Unit.Category.HELICOPTER ) + + self:T3( IsAirResult ) + return IsAirResult +end + +--- This module contains the ZONE classes, inherited from @{Zone#ZONE_BASE}. +-- There are essentially two core functions that zones accomodate: +-- +-- * Test if an object is within the zone boundaries. +-- * Provide the zone behaviour. Some zones are static, while others are moveable. +-- +-- The object classes are using the zone classes to test the zone boundaries, which can take various forms: +-- +-- * Test if completely within the zone. +-- * Test if partly within the zone (for @{Group#GROUP} objects). +-- * Test if not in the zone. +-- * Distance to the nearest intersecting point of the zone. +-- * Distance to the center of the zone. +-- * ... +-- +-- Each of these ZONE classes have a zone name, and specific parameters defining the zone type: +-- +-- * @{Zone#ZONE_BASE}: The ZONE_BASE class defining the base for all other zone classes. +-- * @{Zone#ZONE_RADIUS}: The ZONE_RADIUS class defined by a zone name, a location and a radius. +-- * @{Zone#ZONE}: The ZONE class, defined by the zone name as defined within the Mission Editor. +-- * @{Zone#ZONE_UNIT}: The ZONE_UNIT class defined by a zone around a @{Unit#UNIT} with a radius. +-- * @{Zone#ZONE_POLYGON}: The ZONE_POLYGON class defined by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. +-- +-- Each zone implements two polymorphic functions defined in @{Zone#ZONE_BASE}: +-- +-- * @{#ZONE_BASE.IsPointVec2InZone}: Returns if a location is within the zone. +-- * @{#ZONE_BASE.IsPointVec3InZone}: Returns if a point is within the zone. +-- +-- === +-- +-- 1) @{Zone#ZONE_BASE} class, extends @{Base#BASE} +-- ================================================ +-- The ZONE_BASE class defining the base for all other zone classes. +-- +-- === +-- +-- 2) @{Zone#ZONE_RADIUS} class, extends @{Zone#ZONE_BASE} +-- ======================================================= +-- The ZONE_RADIUS class defined by a zone name, a location and a radius. +-- +-- === +-- +-- 3) @{Zone#ZONE} class, extends @{Zone#ZONE_RADIUS} +-- ========================================== +-- The ZONE class, defined by the zone name as defined within the Mission Editor. +-- +-- === +-- +-- 4) @{Zone#ZONE_UNIT} class, extends @{Zone#ZONE_RADIUS} +-- ======================================================= +-- The ZONE_UNIT class defined by a zone around a @{Unit#UNIT} with a radius. +-- +-- === +-- +-- 5) @{Zone#ZONE_POLYGON} class, extends @{Zone#ZONE_BASE} +-- ======================================================== +-- The ZONE_POLYGON class defined by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. +-- +-- === +-- +-- @module Zone +-- @author FlightControl + + + + + + + + + +--- The ZONE_BASE class +-- @type ZONE_BASE +-- @field #string ZoneName Name of the zone. +-- @extends Base#BASE +ZONE_BASE = { + ClassName = "ZONE_BASE", + } + + +--- The ZONE_BASE.BoundingSquare +-- @type ZONE_BASE.BoundingSquare +-- @field DCSTypes#Distance x1 The lower x coordinate (left down) +-- @field DCSTypes#Distance y1 The lower y coordinate (left down) +-- @field DCSTypes#Distance x2 The higher x coordinate (right up) +-- @field DCSTypes#Distance y2 The higher y coordinate (right up) + + +--- ZONE_BASE constructor +-- @param #ZONE_BASE self +-- @param #string ZoneName Name of the zone. +-- @return #ZONE_BASE self +function ZONE_BASE:New( ZoneName ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( ZoneName ) + + self.ZoneName = ZoneName + + return self +end + +--- Returns if a location is within the zone. +-- @param #ZONE_BASE self +-- @param DCSTypes#Vec2 PointVec2 The location to test. +-- @return #boolean true if the location is within the zone. +function ZONE_BASE:IsPointVec2InZone( PointVec2 ) + self:F2( PointVec2 ) + + return false +end + +--- Returns if a point is within the zone. +-- @param #ZONE_BASE self +-- @param DCSTypes#Vec3 PointVec3 The point to test. +-- @return #boolean true if the point is within the zone. +function ZONE_BASE:IsPointVec3InZone( PointVec3 ) + self:F2( PointVec3 ) + + local InZone = self:IsPointVec2InZone( { x = PointVec3.x, y = PointVec3.z } ) + + return InZone +end + +--- Define a random @{DCSTypes#Vec2} within the zone. +-- @param #ZONE_BASE self +-- @return DCSTypes#Vec2 The Vec2 coordinates. +function ZONE_BASE:GetRandomVec2() + return { x = 0, y = 0 } +end + +--- Get the bounding square the zone. +-- @param #ZONE_BASE self +-- @return #ZONE_BASE.BoundingSquare The bounding square. +function ZONE_BASE:GetBoundingSquare() + return { x1 = 0, y1 = 0, x2 = 0, y2 = 0 } +end + + +--- Smokes the zone boundaries in a color. +-- @param #ZONE_BASE self +-- @param SmokeColor The smoke color. +function ZONE_BASE:SmokeZone( SmokeColor ) + self:F2( SmokeColor ) + +end + + +--- The ZONE_RADIUS class, defined by a zone name, a location and a radius. +-- @type ZONE_RADIUS +-- @field DCSTypes#Vec2 PointVec2 The current location of the zone. +-- @field DCSTypes#Distance Radius The radius of the zone. +-- @extends Zone#ZONE_BASE +ZONE_RADIUS = { + ClassName="ZONE_RADIUS", + } + +--- Constructor of ZONE_RADIUS, taking the zone name, the zone location and a radius. +-- @param #ZONE_RADIUS self +-- @param #string ZoneName Name of the zone. +-- @param DCSTypes#Vec2 PointVec2 The location of the zone. +-- @param DCSTypes#Distance Radius The radius of the zone. +-- @return #ZONE_RADIUS self +function ZONE_RADIUS:New( ZoneName, PointVec2, Radius ) + local self = BASE:Inherit( self, ZONE_BASE:New( ZoneName ) ) + self:F( { ZoneName, PointVec2, Radius } ) + + self.Radius = Radius + self.PointVec2 = PointVec2 + + return self +end + +--- Smokes the zone boundaries in a color. +-- @param #ZONE_RADIUS self +-- @param #POINT_VEC3.SmokeColor SmokeColor The smoke color. +-- @param #number Points (optional) The amount of points in the circle. +-- @return #ZONE_RADIUS self +function ZONE_RADIUS:SmokeZone( SmokeColor, Points ) + self:F2( SmokeColor ) + + local Point = {} + local PointVec2 = self:GetPointVec2() + + Points = Points and Points or 360 + + local Angle + local RadialBase = math.pi*2 + + for Angle = 0, 360, 360 / Points do + local Radial = Angle * RadialBase / 360 + Point.x = PointVec2.x + math.cos( Radial ) * self:GetRadius() + Point.y = PointVec2.y + math.sin( Radial ) * self:GetRadius() + POINT_VEC2:New( Point.x, Point.y ):Smoke( SmokeColor ) + end + + return self +end + + +--- Flares the zone boundaries in a color. +-- @param #ZONE_RADIUS self +-- @param #POINT_VEC3.FlareColor FlareColor The flare color. +-- @param #number Points (optional) The amount of points in the circle. +-- @param DCSTypes#Azimuth Azimuth (optional) Azimuth The azimuth of the flare. +-- @return #ZONE_RADIUS self +function ZONE_RADIUS:FlareZone( FlareColor, Points, Azimuth ) + self:F2( { FlareColor, Azimuth } ) + + local Point = {} + local PointVec2 = self:GetPointVec2() + + Points = Points and Points or 360 + + local Angle + local RadialBase = math.pi*2 + + for Angle = 0, 360, 360 / Points do + local Radial = Angle * RadialBase / 360 + Point.x = PointVec2.x + math.cos( Radial ) * self:GetRadius() + Point.y = PointVec2.y + math.sin( Radial ) * self:GetRadius() + POINT_VEC2:New( Point.x, Point.y ):Flare( FlareColor, Azimuth ) + end + + return self +end + +--- Returns the radius of the zone. +-- @param #ZONE_RADIUS self +-- @return DCSTypes#Distance The radius of the zone. +function ZONE_RADIUS:GetRadius() + self:F2( self.ZoneName ) + + self:T2( { self.Radius } ) + + return self.Radius +end + +--- Sets the radius of the zone. +-- @param #ZONE_RADIUS self +-- @param DCSTypes#Distance Radius The radius of the zone. +-- @return DCSTypes#Distance The radius of the zone. +function ZONE_RADIUS:SetRadius( Radius ) + self:F2( self.ZoneName ) + + self.Radius = Radius + self:T2( { self.Radius } ) + + return self.Radius +end + +--- Returns the location of the zone. +-- @param #ZONE_RADIUS self +-- @return DCSTypes#Vec2 The location of the zone. +function ZONE_RADIUS:GetPointVec2() + self:F2( self.ZoneName ) + + self:T2( { self.PointVec2 } ) + + return self.PointVec2 +end + +--- Sets the location of the zone. +-- @param #ZONE_RADIUS self +-- @param DCSTypes#Vec2 PointVec2 The new location of the zone. +-- @return DCSTypes#Vec2 The new location of the zone. +function ZONE_RADIUS:SetPointVec2( PointVec2 ) + self:F2( self.ZoneName ) + + self.PointVec2 = PointVec2 + + self:T2( { self.PointVec2 } ) + + return self.PointVec2 +end + +--- Returns the point of the zone. +-- @param #ZONE_RADIUS self +-- @param DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. +-- @return DCSTypes#Vec3 The point of the zone. +function ZONE_RADIUS:GetPointVec3( Height ) + self:F2( self.ZoneName ) + + local PointVec2 = self:GetPointVec2() + + local PointVec3 = { x = PointVec2.x, y = land.getHeight( self:GetPointVec2() ) + Height, z = PointVec2.y } + + self:T2( { PointVec3 } ) + + return PointVec3 +end + + +--- Returns if a location is within the zone. +-- @param #ZONE_RADIUS self +-- @param DCSTypes#Vec2 PointVec2 The location to test. +-- @return #boolean true if the location is within the zone. +function ZONE_RADIUS:IsPointVec2InZone( PointVec2 ) + self:F2( PointVec2 ) + + local ZonePointVec2 = self:GetPointVec2() + + if (( PointVec2.x - ZonePointVec2.x )^2 + ( PointVec2.y - ZonePointVec2.y ) ^2 ) ^ 0.5 <= self:GetRadius() then + return true + end + + return false +end + +--- Returns if a point is within the zone. +-- @param #ZONE_RADIUS self +-- @param DCSTypes#Vec3 PointVec3 The point to test. +-- @return #boolean true if the point is within the zone. +function ZONE_RADIUS:IsPointVec3InZone( PointVec3 ) + self:F2( PointVec3 ) + + local InZone = self:IsPointVec2InZone( { x = PointVec3.x, y = PointVec3.z } ) + + return InZone +end + +--- Returns a random location within the zone. +-- @param #ZONE_RADIUS self +-- @return DCSTypes#Vec2 The random location within the zone. +function ZONE_RADIUS:GetRandomVec2() + self:F( self.ZoneName ) + + local Point = {} + local PointVec2 = self:GetPointVec2() + + local angle = math.random() * math.pi*2; + Point.x = PointVec2.x + math.cos( angle ) * math.random() * self:GetRadius(); + Point.y = PointVec2.y + math.sin( angle ) * math.random() * self:GetRadius(); + + self:T( { Point } ) + + return Point +end + + + +--- The ZONE class, defined by the zone name as defined within the Mission Editor. The location and the radius are automatically collected from the mission settings. +-- @type ZONE +-- @extends Zone#ZONE_RADIUS +ZONE = { + ClassName="ZONE", + } + + +--- Constructor of ZONE, taking the zone name. +-- @param #ZONE self +-- @param #string ZoneName The name of the zone as defined within the mission editor. +-- @return #ZONE +function ZONE:New( ZoneName ) + + local Zone = trigger.misc.getZone( ZoneName ) + + if not Zone then + error( "Zone " .. ZoneName .. " does not exist." ) + return nil + end + + local self = BASE:Inherit( self, ZONE_RADIUS:New( ZoneName, { x = Zone.point.x, y = Zone.point.z }, Zone.radius ) ) + self:F( ZoneName ) + + self.Zone = Zone + + return self +end + + +--- The ZONE_UNIT class defined by a zone around a @{Unit#UNIT} with a radius. +-- @type ZONE_UNIT +-- @field Unit#UNIT ZoneUNIT +-- @extends Zone#ZONE_RADIUS +ZONE_UNIT = { + ClassName="ZONE_UNIT", + } + +--- Constructor to create a ZONE_UNIT instance, taking the zone name, a zone unit and a radius. +-- @param #ZONE_UNIT self +-- @param #string ZoneName Name of the zone. +-- @param Unit#UNIT ZoneUNIT The unit as the center of the zone. +-- @param DCSTypes#Distance Radius The radius of the zone. +-- @return #ZONE_UNIT self +function ZONE_UNIT:New( ZoneName, ZoneUNIT, Radius ) + local self = BASE:Inherit( self, ZONE_RADIUS:New( ZoneName, ZoneUNIT:GetPointVec2(), Radius ) ) + self:F( { ZoneName, ZoneUNIT:GetPointVec2(), Radius } ) + + self.ZoneUNIT = ZoneUNIT + + return self +end + + +--- Returns the current location of the @{Unit#UNIT}. +-- @param #ZONE_UNIT self +-- @return DCSTypes#Vec2 The location of the zone based on the @{Unit#UNIT}location. +function ZONE_UNIT:GetPointVec2() + self:F( self.ZoneName ) + + local ZonePointVec2 = self.ZoneUNIT:GetPointVec2() + + self:T( { ZonePointVec2 } ) + + return ZonePointVec2 +end + +-- Polygons + +--- The ZONE_POLYGON_BASE class defined by an array of @{DCSTypes#Vec2}, forming a polygon. +-- @type ZONE_POLYGON_BASE +-- @field #ZONE_POLYGON_BASE.ListVec2 Polygon The polygon defined by an array of @{DCSTypes#Vec2}. +-- @extends Zone#ZONE_BASE +ZONE_POLYGON_BASE = { + ClassName="ZONE_POLYGON_BASE", + } + +--- A points array. +-- @type ZONE_POLYGON_BASE.ListVec2 +-- @list + +--- Constructor to create a ZONE_POLYGON_BASE instance, taking the zone name and an array of @{DCSTypes#Vec2}, forming a polygon. +-- The @{Group#GROUP} waypoints define the polygon corners. The first and the last point are automatically connected. +-- @param #ZONE_POLYGON_BASE self +-- @param #string ZoneName Name of the zone. +-- @param #ZONE_POLYGON_BASE.ListVec2 PointsArray An array of @{DCSTypes#Vec2}, forming a polygon.. +-- @return #ZONE_POLYGON_BASE self +function ZONE_POLYGON_BASE:New( ZoneName, PointsArray ) + local self = BASE:Inherit( self, ZONE_BASE:New( ZoneName ) ) + self:F( { ZoneName, PointsArray } ) + + local i = 0 + + self.Polygon = {} + + for i = 1, #PointsArray do + self.Polygon[i] = {} + self.Polygon[i].x = PointsArray[i].x + self.Polygon[i].y = PointsArray[i].y + end + + return self +end + +--- Flush polygon coordinates as a table in DCS.log. +-- @param #ZONE_POLYGON_BASE self +-- @return #ZONE_POLYGON_BASE self +function ZONE_POLYGON_BASE:Flush() + self:F2() + + self:E( { Polygon = self.ZoneName, Coordinates = self.Polygon } ) + + return self +end + + +--- Smokes the zone boundaries in a color. +-- @param #ZONE_POLYGON_BASE self +-- @param #POINT_VEC3.SmokeColor SmokeColor The smoke color. +-- @return #ZONE_POLYGON_BASE self +function ZONE_POLYGON_BASE:SmokeZone( SmokeColor ) + self:F2( SmokeColor ) + + local i + local j + local Segments = 10 + + i = 1 + j = #self.Polygon + + while i <= #self.Polygon do + self:T( { i, j, self.Polygon[i], self.Polygon[j] } ) + + local DeltaX = self.Polygon[j].x - self.Polygon[i].x + local DeltaY = self.Polygon[j].y - self.Polygon[i].y + + for Segment = 0, Segments do -- We divide each line in 5 segments and smoke a point on the line. + local PointX = self.Polygon[i].x + ( Segment * DeltaX / Segments ) + local PointY = self.Polygon[i].y + ( Segment * DeltaY / Segments ) + POINT_VEC2:New( PointX, PointY ):Smoke( SmokeColor ) + end + j = i + i = i + 1 + end + + return self +end + + + + +--- Returns if a location is within the zone. +-- @param #ZONE_POLYGON_BASE self +-- @param DCSTypes#Vec2 PointVec2 The location to test. +-- @return #boolean true if the location is within the zone. +function ZONE_POLYGON_BASE:IsPointVec2InZone( PointVec2 ) + self:F2( PointVec2 ) + + local i + local j + local c = false + + i = 1 + j = #self.Polygon + + while i < #self.Polygon do + j = i + i = i + 1 + self:T( { i, j, self.Polygon[i], self.Polygon[j] } ) + if ( ( ( self.Polygon[i].y > PointVec2.y ) ~= ( self.Polygon[j].y > PointVec2.y ) ) and + ( PointVec2.x < ( self.Polygon[j].x - self.Polygon[i].x ) * ( PointVec2.y - self.Polygon[i].y ) / ( self.Polygon[j].y - self.Polygon[i].y ) + self.Polygon[i].x ) + ) then + c = not c + end + self:T2( { "c = ", c } ) + end + + self:T( { "c = ", c } ) + return c +end + +--- Define a random @{DCSTypes#Vec2} within the zone. +-- @param #ZONE_POLYGON_BASE self +-- @return DCSTypes#Vec2 The Vec2 coordinate. +function ZONE_POLYGON_BASE:GetRandomVec2() + self:F2() + + --- It is a bit tricky to find a random point within a polygon. Right now i am doing it the dirty and inefficient way... + local Vec2Found = false + local Vec2 + local BS = self:GetBoundingSquare() + + self:T2( BS ) + + while Vec2Found == false do + Vec2 = { x = math.random( BS.x1, BS.x2 ), y = math.random( BS.y1, BS.y2 ) } + self:T2( Vec2 ) + if self:IsPointVec2InZone( Vec2 ) then + Vec2Found = true + end + end + + self:T2( Vec2 ) + + return Vec2 +end + +--- Get the bounding square the zone. +-- @param #ZONE_POLYGON_BASE self +-- @return #ZONE_POLYGON_BASE.BoundingSquare The bounding square. +function ZONE_POLYGON_BASE:GetBoundingSquare() + + local x1 = self.Polygon[1].x + local y1 = self.Polygon[1].y + local x2 = self.Polygon[1].x + local y2 = self.Polygon[1].y + + for i = 2, #self.Polygon do + self:T2( { self.Polygon[i], x1, y1, x2, y2 } ) + x1 = ( x1 > self.Polygon[i].x ) and self.Polygon[i].x or x1 + x2 = ( x2 < self.Polygon[i].x ) and self.Polygon[i].x or x2 + y1 = ( y1 > self.Polygon[i].y ) and self.Polygon[i].y or y1 + y2 = ( y2 < self.Polygon[i].y ) and self.Polygon[i].y or y2 + + end + + return { x1 = x1, y1 = y1, x2 = x2, y2 = y2 } +end + + + + + +--- The ZONE_POLYGON class defined by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. +-- @type ZONE_POLYGON +-- @extends Zone#ZONE_POLYGON_BASE +ZONE_POLYGON = { + ClassName="ZONE_POLYGON", + } + +--- Constructor to create a ZONE_POLYGON instance, taking the zone name and the name of the @{Group#GROUP} defined within the Mission Editor. +-- The @{Group#GROUP} waypoints define the polygon corners. The first and the last point are automatically connected by ZONE_POLYGON. +-- @param #ZONE_POLYGON self +-- @param #string ZoneName Name of the zone. +-- @param Group#GROUP ZoneGroup The GROUP waypoints as defined within the Mission Editor define the polygon shape. +-- @return #ZONE_POLYGON self +function ZONE_POLYGON:New( ZoneName, ZoneGroup ) + + local GroupPoints = ZoneGroup:GetTaskRoute() + + local self = BASE:Inherit( self, ZONE_POLYGON_BASE:New( ZoneName, GroupPoints ) ) + self:F( { ZoneName, ZoneGroup, self.Polygon } ) + + return self +end + +--- This module contains the CLIENT class. +-- +-- 1) @{Client#CLIENT} class, extends @{Unit#UNIT} +-- =============================================== +-- Clients are those **Units** defined within the Mission Editor that have the skillset defined as __Client__ or __Player__. +-- Note that clients are NOT the same as Units, they are NOT necessarily alive. +-- The @{Client#CLIENT} class is a wrapper class to handle the DCS Unit objects that have the skillset defined as __Client__ or __Player__: +-- +-- * Wraps the DCS Unit objects with skill level set to Player or Client. +-- * Support all DCS Unit APIs. +-- * Enhance with Unit specific APIs not in the DCS Group API set. +-- * When player joins Unit, execute alive init logic. +-- * Handles messages to players. +-- * Manage the "state" of the DCS Unit. +-- +-- Clients are being used by the @{MISSION} class to follow players and register their successes. +-- +-- 1.1) CLIENT reference methods +-- ----------------------------- +-- For each DCS Unit having skill level Player or Client, a CLIENT wrapper object (instance) will be created within the _@{DATABASE} object. +-- This is done at the beginning of the mission (when the mission starts). +-- +-- The CLIENT class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference +-- using the DCS Unit or the DCS UnitName. +-- +-- Another thing to know is that CLIENT objects do not "contain" the DCS Unit object. +-- The CLIENT methods will reference the DCS Unit object by name when it is needed during API execution. +-- If the DCS Unit object does not exist or is nil, the CLIENT methods will return nil and log an exception in the DCS.log file. +-- +-- The CLIENT class provides the following functions to retrieve quickly the relevant CLIENT instance: +-- +-- * @{#CLIENT.Find}(): Find a CLIENT instance from the _DATABASE object using a DCS Unit object. +-- * @{#CLIENT.FindByName}(): Find a CLIENT instance from the _DATABASE object using a DCS Unit name. +-- +-- IMPORTANT: ONE SHOULD NEVER SANATIZE these CLIENT OBJECT REFERENCES! (make the CLIENT object references nil). +-- +-- @module Client +-- @author FlightControl + +--- The CLIENT class +-- @type CLIENT +-- @extends Unit#UNIT +CLIENT = { + ONBOARDSIDE = { + NONE = 0, + LEFT = 1, + RIGHT = 2, + BACK = 3, + FRONT = 4 + }, + ClassName = "CLIENT", + ClientName = nil, + ClientAlive = false, + ClientTransport = false, + ClientBriefingShown = false, + _Menus = {}, + _Tasks = {}, + Messages = { + } +} + + +--- Finds a CLIENT from the _DATABASE using the relevant DCS Unit. +-- @param #CLIENT self +-- @param #string ClientName Name of the DCS **Unit** as defined within the Mission Editor. +-- @param #string ClientBriefing Text that describes the briefing of the mission when a Player logs into the Client. +-- @return #CLIENT +-- @usage +-- -- Create new Clients. +-- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) +-- Mission:AddGoal( DeploySA6TroopsGoal ) +-- +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 1' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 3' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 2' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 4' ):Transport() ) +function CLIENT:Find( DCSUnit ) + local ClientName = DCSUnit:getName() + local ClientFound = _DATABASE:FindClient( ClientName ) + + if ClientFound then + ClientFound:F( ClientName ) + return ClientFound + end + + error( "CLIENT not found for: " .. ClientName ) +end + + +--- Finds a CLIENT from the _DATABASE using the relevant Client Unit Name. +-- As an optional parameter, a briefing text can be given also. +-- @param #CLIENT self +-- @param #string ClientName Name of the DCS **Unit** as defined within the Mission Editor. +-- @param #string ClientBriefing Text that describes the briefing of the mission when a Player logs into the Client. +-- @return #CLIENT +-- @usage +-- -- Create new Clients. +-- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) +-- Mission:AddGoal( DeploySA6TroopsGoal ) +-- +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 1' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 3' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 2' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 4' ):Transport() ) +function CLIENT:FindByName( ClientName, ClientBriefing ) + local ClientFound = _DATABASE:FindClient( ClientName ) + + if ClientFound then + ClientFound:F( { ClientName, ClientBriefing } ) + ClientFound:AddBriefing( ClientBriefing ) + ClientFound.MessageSwitch = true + + return ClientFound + end + + error( "CLIENT not found for: " .. ClientName ) +end + +function CLIENT:Register( ClientName ) + local self = BASE:Inherit( self, UNIT:Register( ClientName ) ) + + self:F( ClientName ) + self.ClientName = ClientName + self.MessageSwitch = true + self.ClientAlive2 = false + + --self.AliveCheckScheduler = routines.scheduleFunction( self._AliveCheckScheduler, { self }, timer.getTime() + 1, 5 ) + self.AliveCheckScheduler = SCHEDULER:New( self, self._AliveCheckScheduler, { "Client Alive " .. ClientName }, 1, 5 ) + + self:E( self ) + return self +end + + +--- Transport defines that the Client is a Transport. Transports show cargo. +-- @param #CLIENT self +-- @return #CLIENT +function CLIENT:Transport() + self:F() + + self.ClientTransport = true + return self +end + +--- AddBriefing adds a briefing to a CLIENT when a player joins a mission. +-- @param #CLIENT self +-- @param #string ClientBriefing is the text defining the Mission briefing. +-- @return #CLIENT self +function CLIENT:AddBriefing( ClientBriefing ) + self:F( ClientBriefing ) + self.ClientBriefing = ClientBriefing + self.ClientBriefingShown = false + + return self +end + +--- Show the briefing of a CLIENT. +-- @param #CLIENT self +-- @return #CLIENT self +function CLIENT:ShowBriefing() + self:F( { self.ClientName, self.ClientBriefingShown } ) + + if not self.ClientBriefingShown then + self.ClientBriefingShown = true + local Briefing = "" + if self.ClientBriefing then + Briefing = Briefing .. self.ClientBriefing + end + Briefing = Briefing .. " Press [LEFT ALT]+[B] to view the complete mission briefing." + self:Message( Briefing, 60, "Briefing" ) + end + + return self +end + +--- Show the mission briefing of a MISSION to the CLIENT. +-- @param #CLIENT self +-- @param #string MissionBriefing +-- @return #CLIENT self +function CLIENT:ShowMissionBriefing( MissionBriefing ) + self:F( { self.ClientName } ) + + if MissionBriefing then + self:Message( MissionBriefing, 60, "Mission Briefing" ) + end + + return self +end + + + +--- Resets a CLIENT. +-- @param #CLIENT self +-- @param #string ClientName Name of the Group as defined within the Mission Editor. The Group must have a Unit with the type Client. +function CLIENT:Reset( ClientName ) + self:F() + self._Menus = {} +end + +-- Is Functions + +--- Checks if the CLIENT is a multi-seated UNIT. +-- @param #CLIENT self +-- @return #boolean true if multi-seated. +function CLIENT:IsMultiSeated() + self:F( self.ClientName ) + + local ClientMultiSeatedTypes = { + ["Mi-8MT"] = "Mi-8MT", + ["UH-1H"] = "UH-1H", + ["P-51B"] = "P-51B" + } + + if self:IsAlive() then + local ClientTypeName = self:GetClientGroupUnit():GetTypeName() + if ClientMultiSeatedTypes[ClientTypeName] then + return true + end + end + + return false +end + +--- Checks for a client alive event and calls a function on a continuous basis. +-- @param #CLIENT self +-- @param #function CallBack Function. +-- @return #CLIENT +function CLIENT:Alive( CallBackFunction, ... ) + self:F() + + self.ClientCallBack = CallBackFunction + self.ClientParameters = arg + + return self +end + +--- @param #CLIENT self +function CLIENT:_AliveCheckScheduler( SchedulerName ) + self:F( { SchedulerName, self.ClientName, self.ClientAlive2, self.ClientBriefingShown, self.ClientCallBack } ) + + if self:IsAlive() then + if self.ClientAlive2 == false then + self:ShowBriefing() + if self.ClientCallBack then + self:T("Calling Callback function") + self.ClientCallBack( self, unpack( self.ClientParameters ) ) + end + self.ClientAlive2 = true + end + else + if self.ClientAlive2 == true then + self.ClientAlive2 = false + end + end + + return true +end + +--- Return the DCSGroup of a Client. +-- This function is modified to deal with a couple of bugs in DCS 1.5.3 +-- @param #CLIENT self +-- @return DCSGroup#Group +function CLIENT:GetDCSGroup() + self:F3() + +-- local ClientData = Group.getByName( self.ClientName ) +-- if ClientData and ClientData:isExist() then +-- self:T( self.ClientName .. " : group found!" ) +-- return ClientData +-- else +-- return nil +-- end + + local ClientUnit = Unit.getByName( self.ClientName ) + + local CoalitionsData = { AlivePlayersRed = coalition.getPlayers( coalition.side.RED ), AlivePlayersBlue = coalition.getPlayers( coalition.side.BLUE ) } + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + self:T3( { "CoalitionData:", CoalitionData } ) + for UnitId, UnitData in pairs( CoalitionData ) do + self:T3( { "UnitData:", UnitData } ) + if UnitData and UnitData:isExist() then + + --self:E(self.ClientName) + if ClientUnit then + local ClientGroup = ClientUnit:getGroup() + if ClientGroup then + self:T3( "ClientGroup = " .. self.ClientName ) + if ClientGroup:isExist() and UnitData:getGroup():isExist() then + if ClientGroup:getID() == UnitData:getGroup():getID() then + self:T3( "Normal logic" ) + self:T3( self.ClientName .. " : group found!" ) + self.ClientGroupID = ClientGroup:getID() + self.ClientGroupName = ClientGroup:getName() + return ClientGroup + end + else + -- Now we need to resolve the bugs in DCS 1.5 ... + -- Consult the database for the units of the Client Group. (ClientGroup:getUnits() returns nil) + self:T3( "Bug 1.5 logic" ) + local ClientGroupTemplate = _DATABASE.Templates.Units[self.ClientName].GroupTemplate + self.ClientGroupID = ClientGroupTemplate.groupId + self.ClientGroupName = _DATABASE.Templates.Units[self.ClientName].GroupName + self:T3( self.ClientName .. " : group found in bug 1.5 resolvement logic!" ) + return ClientGroup + end + -- else + -- error( "Client " .. self.ClientName .. " not found!" ) + end + else + --self:E( { "Client not found!", self.ClientName } ) + end + end + end + end + + -- For non player clients + if ClientUnit then + local ClientGroup = ClientUnit:getGroup() + if ClientGroup then + self:T3( "ClientGroup = " .. self.ClientName ) + if ClientGroup:isExist() then + self:T3( "Normal logic" ) + self:T3( self.ClientName .. " : group found!" ) + return ClientGroup + end + end + end + + self.ClientGroupID = nil + self.ClientGroupUnit = nil + + return nil +end + + +-- TODO: Check DCSTypes#Group.ID +--- Get the group ID of the client. +-- @param #CLIENT self +-- @return DCSTypes#Group.ID +function CLIENT:GetClientGroupID() + + local ClientGroup = self:GetDCSGroup() + + --self:E( self.ClientGroupID ) -- Determined in GetDCSGroup() + return self.ClientGroupID +end + + +--- Get the name of the group of the client. +-- @param #CLIENT self +-- @return #string +function CLIENT:GetClientGroupName() + + local ClientGroup = self:GetDCSGroup() + + self:T( self.ClientGroupName ) -- Determined in GetDCSGroup() + return self.ClientGroupName +end + +--- Returns the UNIT of the CLIENT. +-- @param #CLIENT self +-- @return Unit#UNIT +function CLIENT:GetClientGroupUnit() + self:F2() + + local ClientDCSUnit = Unit.getByName( self.ClientName ) + + self:T( self.ClientDCSUnit ) + if ClientDCSUnit and ClientDCSUnit:isExist() then + local ClientUnit = _DATABASE:FindUnit( self.ClientName ) + self:T2( ClientUnit ) + return ClientUnit + end +end + +--- Returns the DCSUnit of the CLIENT. +-- @param #CLIENT self +-- @return DCSTypes#Unit +function CLIENT:GetClientGroupDCSUnit() + self:F2() + + local ClientDCSUnit = Unit.getByName( self.ClientName ) + + if ClientDCSUnit and ClientDCSUnit:isExist() then + self:T2( ClientDCSUnit ) + return ClientDCSUnit + end +end + + +--- Evaluates if the CLIENT is a transport. +-- @param #CLIENT self +-- @return #boolean true is a transport. +function CLIENT:IsTransport() + self:F() + return self.ClientTransport +end + +--- Shows the @{Cargo#CARGO} contained within the CLIENT to the player as a message. +-- The @{Cargo#CARGO} is shown using the @{Message#MESSAGE} distribution system. +-- @param #CLIENT self +function CLIENT:ShowCargo() + self:F() + + local CargoMsg = "" + + for CargoName, Cargo in pairs( CARGOS ) do + if self == Cargo:IsLoadedInClient() then + CargoMsg = CargoMsg .. Cargo.CargoName .. " Type:" .. Cargo.CargoType .. " Weight: " .. Cargo.CargoWeight .. "\n" + end + end + + if CargoMsg == "" then + CargoMsg = "empty" + end + + self:Message( CargoMsg, 15, "Co-Pilot: Cargo Status", 30 ) + +end + +-- TODO (1) I urgently need to revise this. +--- A local function called by the DCS World Menu system to switch off messages. +function CLIENT.SwitchMessages( PrmTable ) + PrmTable[1].MessageSwitch = PrmTable[2] +end + +--- The main message driver for the CLIENT. +-- This function displays various messages to the Player logged into the CLIENT through the DCS World Messaging system. +-- @param #CLIENT self +-- @param #string Message is the text describing the message. +-- @param #number MessageDuration is the duration in seconds that the Message should be displayed. +-- @param #string MessageCategory is the category of the message (the title). +-- @param #number MessageInterval is the interval in seconds between the display of the @{Message#MESSAGE} when the CLIENT is in the air. +-- @param #string MessageID is the identifier of the message when displayed with intervals. +function CLIENT:Message( Message, MessageDuration, MessageCategory, MessageInterval, MessageID ) + self:F( { Message, MessageDuration, MessageCategory, MessageInterval } ) + + if not self.MenuMessages then + if self:GetClientGroupID() then + self.MenuMessages = MENU_CLIENT:New( self, 'Messages' ) + self.MenuRouteMessageOn = MENU_CLIENT_COMMAND:New( self, 'Messages On', self.MenuMessages, CLIENT.SwitchMessages, { self, true } ) + self.MenuRouteMessageOff = MENU_CLIENT_COMMAND:New( self,'Messages Off', self.MenuMessages, CLIENT.SwitchMessages, { self, false } ) + end + end + + if self.MessageSwitch == true then + if MessageCategory == nil then + MessageCategory = "Messages" + end + if MessageID ~= nil then + if self.Messages[MessageID] == nil then + self.Messages[MessageID] = {} + self.Messages[MessageID].MessageId = MessageID + self.Messages[MessageID].MessageTime = timer.getTime() + self.Messages[MessageID].MessageDuration = MessageDuration + if MessageInterval == nil then + self.Messages[MessageID].MessageInterval = 600 + else + self.Messages[MessageID].MessageInterval = MessageInterval + end + MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self ) + else + if self:GetClientGroupDCSUnit() and not self:GetClientGroupDCSUnit():inAir() then + if timer.getTime() - self.Messages[MessageID].MessageTime >= self.Messages[MessageID].MessageDuration + 10 then + MESSAGE:New( Message, MessageDuration , MessageCategory):ToClient( self ) + self.Messages[MessageID].MessageTime = timer.getTime() + end + else + if timer.getTime() - self.Messages[MessageID].MessageTime >= self.Messages[MessageID].MessageDuration + self.Messages[MessageID].MessageInterval then + MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self ) + self.Messages[MessageID].MessageTime = timer.getTime() + end + end + end + else + MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self ) + end + end +end +--- This module contains the STATIC class. +-- +-- 1) @{Static#STATIC} class, extends @{Positionable#POSITIONABLE} +-- =============================================================== +-- Statics are **Static Units** defined within the Mission Editor. +-- Note that Statics are almost the same as Units, but they don't have a controller. +-- The @{Static#STATIC} class is a wrapper class to handle the DCS Static objects: +-- +-- * Wraps the DCS Static objects. +-- * Support all DCS Static APIs. +-- * Enhance with Static specific APIs not in the DCS API set. +-- +-- 1.1) STATIC reference methods +-- ----------------------------- +-- For each DCS Static will have a STATIC wrapper object (instance) within the _@{DATABASE} object. +-- This is done at the beginning of the mission (when the mission starts). +-- +-- The STATIC class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference +-- using the Static Name. +-- +-- Another thing to know is that STATIC objects do not "contain" the DCS Static object. +-- The STATIc methods will reference the DCS Static object by name when it is needed during API execution. +-- If the DCS Static object does not exist or is nil, the STATIC methods will return nil and log an exception in the DCS.log file. +-- +-- The STATIc class provides the following functions to retrieve quickly the relevant STATIC instance: +-- +-- * @{#STATIC.FindByName}(): Find a STATIC instance from the _DATABASE object using a DCS Static name. +-- +-- IMPORTANT: ONE SHOULD NEVER SANATIZE these STATIC OBJECT REFERENCES! (make the STATIC object references nil). +-- +-- @module Static +-- @author FlightControl + + + + + + +--- The STATIC class +-- @type STATIC +-- @extends Positionable#POSITIONABLE +STATIC = { + ClassName = "STATIC", +} + + +--- Finds a STATIC from the _DATABASE using the relevant Static Name. +-- As an optional parameter, a briefing text can be given also. +-- @param #STATIC self +-- @param #string StaticName Name of the DCS **Static** as defined within the Mission Editor. +-- @return #STATIC +function STATIC:FindByName( StaticName ) + local StaticFound = _DATABASE:FindStatic( StaticName ) + + if StaticFound then + StaticFound:F( { StaticName } ) + + return StaticFound + end + + error( "STATIC not found for: " .. StaticName ) +end + +function STATIC:Register( StaticName ) + local self = BASE:Inherit( self, POSITIONABLE:New( StaticName ) ) + return self +end + + +function STATIC:GetDCSUnit() + local DCSStatic = StaticObject.getByName( self.UnitName ) + + if DCSStatic then + return DCSStatic + end + + return nil +end +--- This module contains the AIRBASE classes. +-- +-- === +-- +-- 1) @{Airbase#AIRBASE} class, extends @{Positionable#POSITIONABLE} +-- ================================================================= +-- The @{AIRBASE} class is a wrapper class to handle the DCS Airbase objects: +-- +-- * Support all DCS Airbase APIs. +-- * Enhance with Airbase specific APIs not in the DCS Airbase API set. +-- +-- +-- 1.1) AIRBASE reference methods +-- ------------------------------ +-- For each DCS Airbase object alive within a running mission, a AIRBASE wrapper object (instance) will be created within the _@{DATABASE} object. +-- This is done at the beginning of the mission (when the mission starts). +-- +-- The AIRBASE class **does not contain a :New()** method, rather it provides **:Find()** methods to retrieve the object reference +-- using the DCS Airbase or the DCS AirbaseName. +-- +-- Another thing to know is that AIRBASE objects do not "contain" the DCS Airbase object. +-- The AIRBASE methods will reference the DCS Airbase object by name when it is needed during API execution. +-- If the DCS Airbase object does not exist or is nil, the AIRBASE methods will return nil and log an exception in the DCS.log file. +-- +-- The AIRBASE class provides the following functions to retrieve quickly the relevant AIRBASE instance: +-- +-- * @{#AIRBASE.Find}(): Find a AIRBASE instance from the _DATABASE object using a DCS Airbase object. +-- * @{#AIRBASE.FindByName}(): Find a AIRBASE instance from the _DATABASE object using a DCS Airbase name. +-- +-- IMPORTANT: ONE SHOULD NEVER SANATIZE these AIRBASE OBJECT REFERENCES! (make the AIRBASE object references nil). +-- +-- 1.2) DCS AIRBASE APIs +-- --------------------- +-- The DCS Airbase APIs are used extensively within MOOSE. The AIRBASE class has for each DCS Airbase API a corresponding method. +-- To be able to distinguish easily in your code the difference between a AIRBASE API call and a DCS Airbase API call, +-- the first letter of the method is also capitalized. So, by example, the DCS Airbase method @{DCSAirbase#Airbase.getName}() +-- is implemented in the AIRBASE class as @{#AIRBASE.GetName}(). +-- +-- More functions will be added +-- ---------------------------- +-- During the MOOSE development, more functions will be added. +-- +-- @module Airbase +-- @author FlightControl + + + + + +--- The AIRBASE class +-- @type AIRBASE +-- @extends Positionable#POSITIONABLE +AIRBASE = { + ClassName="AIRBASE", + CategoryName = { + [Airbase.Category.AIRDROME] = "Airdrome", + [Airbase.Category.HELIPAD] = "Helipad", + [Airbase.Category.SHIP] = "Ship", + }, + } + +-- Registration. + +--- Create a new AIRBASE from DCSAirbase. +-- @param #AIRBASE self +-- @param #string AirbaseName The name of the airbase. +-- @return Airbase#AIRBASE +function AIRBASE:Register( AirbaseName ) + + local self = BASE:Inherit( self, POSITIONABLE:New( AirbaseName ) ) + self.AirbaseName = AirbaseName + return self +end + +-- Reference methods. + +--- Finds a AIRBASE from the _DATABASE using a DCSAirbase object. +-- @param #AIRBASE self +-- @param DCSAirbase#Airbase DCSAirbase An existing DCS Airbase object reference. +-- @return Airbase#AIRBASE self +function AIRBASE:Find( DCSAirbase ) + + local AirbaseName = DCSAirbase:getName() + local AirbaseFound = _DATABASE:FindAirbase( AirbaseName ) + return AirbaseFound +end + +--- Find a AIRBASE in the _DATABASE using the name of an existing DCS Airbase. +-- @param #AIRBASE self +-- @param #string AirbaseName The Airbase Name. +-- @return Airbase#AIRBASE self +function AIRBASE:FindByName( AirbaseName ) + + local AirbaseFound = _DATABASE:FindAirbase( AirbaseName ) + return AirbaseFound +end + +function AIRBASE:GetDCSAirbase() + local DCSAirbase = Airbase.getByName( self.AirbaseName ) + + if DCSAirbase then + return DCSAirbase + end + + return nil +end + +--- Returns coalition of the Airbase. +-- @param Airbase#AIRBASE self +-- @return DCSCoalitionObject#coalition.side The side of the coalition. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetCoalition() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseCoalition = DCSAirbase:getCoalition() + self:T3( AirbaseCoalition ) + return AirbaseCoalition + end + + return nil +end + +--- Returns country of the Airbase. +-- @param Airbase#AIRBASE self +-- @return DCScountry#country.id The country identifier. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetCountry() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseCountry = DCSAirbase:getCountry() + self:T3( AirbaseCountry ) + return AirbaseCountry + end + + return nil +end + + +--- Returns DCS Airbase object name. +-- The function provides access to non-activated units too. +-- @param Airbase#AIRBASE self +-- @return #string The name of the DCS Airbase. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetName() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseName = self.AirbaseName + return AirbaseName + end + + return nil +end + + +--- Returns if the airbase is alive. +-- @param Airbase#AIRBASE self +-- @return #boolean true if Airbase is alive. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:IsAlive() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseIsAlive = DCSAirbase:isExist() + return AirbaseIsAlive + end + + return false +end + +--- Returns the unit's unique identifier. +-- @param Airbase#AIRBASE self +-- @return DCSAirbase#Airbase.ID Airbase ID +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetID() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseID = DCSAirbase:getID() + return AirbaseID + end + + return nil +end + +--- Returns the Airbase's callsign - the localized string. +-- @param Airbase#AIRBASE self +-- @return #string The Callsign of the Airbase. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetCallSign() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseCallSign = DCSAirbase:getCallsign() + return AirbaseCallSign + end + + return nil +end + + + +--- Returns unit descriptor. Descriptor type depends on unit category. +-- @param Airbase#AIRBASE self +-- @return DCSAirbase#Airbase.Desc The Airbase descriptor. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetDesc() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseDesc = DCSAirbase:getDesc() + return AirbaseDesc + end + + return nil +end + + +--- Returns the type name of the DCS Airbase. +-- @param Airbase#AIRBASE self +-- @return #string The type name of the DCS Airbase. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetTypeName() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseTypeName = DCSAirbase:getTypeName() + self:T3( AirbaseTypeName ) + return AirbaseTypeName + end + + return nil +end + + +--- Returns the @{DCSTypes#Vec2} vector indicating the point in 2D of the DCS Airbase within the mission. +-- @param Airbase#AIRBASE self +-- @return DCSTypes#Vec2 The 2D point vector of the DCS Airbase. +-- @return #nil The DCS Airbase is not existing or alive. +function AIRBASE:GetPointVec2() + self:F2( self.AirbaseName ) + + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbasePointVec3 = DCSAirbase:getPosition().p + + local AirbasePointVec2 = {} + AirbasePointVec2.x = AirbasePointVec3.x + AirbasePointVec2.y = AirbasePointVec3.z + + self:T3( AirbasePointVec2 ) + return AirbasePointVec2 + end + + return nil +end + +--- Returns the DCS Airbase category as defined within the DCS Airbase Descriptor. +-- @param Airbase#AIRBASE self +-- @return DCSAirbase#Airbase.Category The DCS Airbase Category +function AIRBASE:GetCategory() + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseCategory = self:GetDesc().category + return AirbaseCategory + end + + return nil +end + + +--- Returns the DCS Airbase category name as defined within the DCS Airbase Descriptor. +-- @param Airbase#AIRBASE self +-- @return #string The DCS Airbase Category Name +function AIRBASE:GetCategoryName() + local DCSAirbase = self:GetDCSAirbase() + + if DCSAirbase then + local AirbaseCategoryName = self.CategoryName[ self:GetDesc().category ] + return AirbaseCategoryName + end + + return nil +end + + +--- This module contains the DATABASE class, managing the database of mission objects. +-- +-- ==== +-- +-- 1) @{Database#DATABASE} class, extends @{Base#BASE} +-- =================================================== +-- Mission designers can use the DATABASE class to refer to: +-- +-- * UNITS +-- * GROUPS +-- * CLIENTS +-- * AIRPORTS +-- * PLAYERSJOINED +-- * PLAYERS +-- +-- On top, for internal MOOSE administration purposes, the DATBASE administers the Unit and Group TEMPLATES as defined within the Mission Editor. +-- +-- Moose will automatically create one instance of the DATABASE class into the **global** object _DATABASE. +-- Moose refers to _DATABASE within the framework extensively, but you can also refer to the _DATABASE object within your missions if required. +-- +-- 1.1) DATABASE iterators +-- ----------------------- +-- You can iterate the database with the available iterator methods. +-- The iterator methods will walk the DATABASE set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the DATABASE: +-- +-- * @{#DATABASE.ForEachUnit}: Calls a function for each @{UNIT} it finds within the DATABASE. +-- * @{#DATABASE.ForEachGroup}: Calls a function for each @{GROUP} it finds within the DATABASE. +-- * @{#DATABASE.ForEachPlayer}: Calls a function for each alive player it finds within the DATABASE. +-- * @{#DATABASE.ForEachPlayerJoined}: Calls a function for each joined player it finds within the DATABASE. +-- * @{#DATABASE.ForEachClient}: Calls a function for each @{CLIENT} it finds within the DATABASE. +-- * @{#DATABASE.ForEachClientAlive}: Calls a function for each alive @{CLIENT} it finds within the DATABASE. +-- +-- === +-- +-- @module Database +-- @author FlightControl + +--- DATABASE class +-- @type DATABASE +-- @extends Base#BASE +DATABASE = { + ClassName = "DATABASE", + Templates = { + Units = {}, + Groups = {}, + ClientsByName = {}, + ClientsByID = {}, + }, + UNITS = {}, + STATICS = {}, + GROUPS = {}, + PLAYERS = {}, + PLAYERSJOINED = {}, + CLIENTS = {}, + AIRBASES = {}, + NavPoints = {}, +} + +local _DATABASECoalition = + { + [1] = "Red", + [2] = "Blue", + } + +local _DATABASECategory = + { + ["plane"] = Unit.Category.AIRPLANE, + ["helicopter"] = Unit.Category.HELICOPTER, + ["vehicle"] = Unit.Category.GROUND_UNIT, + ["ship"] = Unit.Category.SHIP, + ["static"] = Unit.Category.STRUCTURE, + } + + +--- Creates a new DATABASE object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. +-- @param #DATABASE self +-- @return #DATABASE +-- @usage +-- -- Define a new DATABASE Object. This DBObject will contain a reference to all Group and Unit Templates defined within the ME and the DCSRTE. +-- DBObject = DATABASE:New() +function DATABASE:New() + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + _EVENTDISPATCHER:OnBirth( self._EventOnBirth, self ) + _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) + _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) + + + -- Follow alive players and clients + _EVENTDISPATCHER:OnPlayerEnterUnit( self._EventOnPlayerEnterUnit, self ) + _EVENTDISPATCHER:OnPlayerLeaveUnit( self._EventOnPlayerLeaveUnit, self ) + + self:_RegisterTemplates() + self:_RegisterGroupsAndUnits() + self:_RegisterClients() + self:_RegisterStatics() + self:_RegisterPlayers() + self:_RegisterAirbases() + + return self +end + +--- Finds a Unit based on the Unit Name. +-- @param #DATABASE self +-- @param #string UnitName +-- @return Unit#UNIT The found Unit. +function DATABASE:FindUnit( UnitName ) + + local UnitFound = self.UNITS[UnitName] + return UnitFound +end + + +--- Adds a Unit based on the Unit Name in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddUnit( DCSUnitName ) + + if not self.UNITS[DCSUnitName] then + local UnitRegister = UNIT:Register( DCSUnitName ) + self:E( UnitRegister.UnitName ) + self.UNITS[DCSUnitName] = UNIT:Register( DCSUnitName ) + end + + return self.UNITS[DCSUnitName] +end + + +--- Deletes a Unit from the DATABASE based on the Unit Name. +-- @param #DATABASE self +function DATABASE:DeleteUnit( DCSUnitName ) + + --self.UNITS[DCSUnitName] = nil +end + +--- Adds a Static based on the Static Name in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddStatic( DCSStaticName ) + + if not self.STATICS[DCSStaticName] then + self.STATICS[DCSStaticName] = STATIC:Register( DCSStaticName ) + end +end + + +--- Deletes a Static from the DATABASE based on the Static Name. +-- @param #DATABASE self +function DATABASE:DeleteStatic( DCSStaticName ) + + --self.STATICS[DCSStaticName] = nil +end + +--- Finds a STATIC based on the StaticName. +-- @param #DATABASE self +-- @param #string StaticName +-- @return Static#STATIC The found STATIC. +function DATABASE:FindStatic( StaticName ) + + local StaticFound = self.STATICS[StaticName] + return StaticFound +end + +--- Adds a Airbase based on the Airbase Name in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddAirbase( DCSAirbaseName ) + + if not self.AIRBASES[DCSAirbaseName] then + self.AIRBASES[DCSAirbaseName] = AIRBASE:Register( DCSAirbaseName ) + end +end + + +--- Deletes a Airbase from the DATABASE based on the Airbase Name. +-- @param #DATABASE self +function DATABASE:DeleteAirbase( DCSAirbaseName ) + + --self.AIRBASES[DCSAirbaseName] = nil +end + +--- Finds a AIRBASE based on the AirbaseName. +-- @param #DATABASE self +-- @param #string AirbaseName +-- @return Airbase#AIRBASE The found AIRBASE. +function DATABASE:FindAirbase( AirbaseName ) + + local AirbaseFound = self.AIRBASES[AirbaseName] + return AirbaseFound +end + + +--- Finds a CLIENT based on the ClientName. +-- @param #DATABASE self +-- @param #string ClientName +-- @return Client#CLIENT The found CLIENT. +function DATABASE:FindClient( ClientName ) + + local ClientFound = self.CLIENTS[ClientName] + return ClientFound +end + + +--- Adds a CLIENT based on the ClientName in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddClient( ClientName ) + + if not self.CLIENTS[ClientName] then + self.CLIENTS[ClientName] = CLIENT:Register( ClientName ) + end + + return self.CLIENTS[ClientName] +end + + +--- Finds a GROUP based on the GroupName. +-- @param #DATABASE self +-- @param #string GroupName +-- @return Group#GROUP The found GROUP. +function DATABASE:FindGroup( GroupName ) + + local GroupFound = self.GROUPS[GroupName] + return GroupFound +end + + +--- Adds a GROUP based on the GroupName in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddGroup( GroupName ) + + if not self.GROUPS[GroupName] then + self.GROUPS[GroupName] = GROUP:Register( GroupName ) + end + + return self.GROUPS[GroupName] +end + +--- Adds a player based on the Player Name in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddPlayer( UnitName, PlayerName ) + + if PlayerName then + self:E( { "Add player for unit:", UnitName, PlayerName } ) + self.PLAYERS[PlayerName] = self:FindUnit( UnitName ) + self.PLAYERSJOINED[PlayerName] = PlayerName + end +end + +--- Deletes a player from the DATABASE based on the Player Name. +-- @param #DATABASE self +function DATABASE:DeletePlayer( PlayerName ) + + if PlayerName then + self:E( { "Clean player:", PlayerName } ) + self.PLAYERS[PlayerName] = nil + end +end + + +--- Instantiate new Groups within the DCSRTE. +-- This method expects EXACTLY the same structure as a structure within the ME, and needs 2 additional fields defined: +-- SpawnCountryID, SpawnCategoryID +-- This method is used by the SPAWN class. +-- @param #DATABASE self +-- @param #table SpawnTemplate +-- @return #DATABASE self +function DATABASE:Spawn( SpawnTemplate ) + self:F2( SpawnTemplate.name ) + + self:T2( { SpawnTemplate.SpawnCountryID, SpawnTemplate.SpawnCategoryID } ) + + -- Copy the spawn variables of the template in temporary storage, nullify, and restore the spawn variables. + local SpawnCoalitionID = SpawnTemplate.SpawnCoalitionID + local SpawnCountryID = SpawnTemplate.SpawnCountryID + local SpawnCategoryID = SpawnTemplate.SpawnCategoryID + + -- Nullify + SpawnTemplate.SpawnCoalitionID = nil + SpawnTemplate.SpawnCountryID = nil + SpawnTemplate.SpawnCategoryID = nil + + self:_RegisterTemplate( SpawnTemplate, SpawnCoalitionID, SpawnCategoryID, SpawnCountryID ) + + self:T3( SpawnTemplate ) + coalition.addGroup( SpawnCountryID, SpawnCategoryID, SpawnTemplate ) + + -- Restore + SpawnTemplate.SpawnCoalitionID = SpawnCoalitionID + SpawnTemplate.SpawnCountryID = SpawnCountryID + SpawnTemplate.SpawnCategoryID = SpawnCategoryID + + local SpawnGroup = self:AddGroup( SpawnTemplate.name ) + return SpawnGroup +end + +--- Set a status to a Group within the Database, this to check crossing events for example. +function DATABASE:SetStatusGroup( GroupName, Status ) + self:F2( Status ) + + self.Templates.Groups[GroupName].Status = Status +end + +--- Get a status to a Group within the Database, this to check crossing events for example. +function DATABASE:GetStatusGroup( GroupName ) + self:F2( Status ) + + if self.Templates.Groups[GroupName] then + return self.Templates.Groups[GroupName].Status + else + return "" + end +end + +--- Private method that registers new Group Templates within the DATABASE Object. +-- @param #DATABASE self +-- @param #table GroupTemplate +-- @return #DATABASE self +function DATABASE:_RegisterTemplate( GroupTemplate, CoalitionID, CategoryID, CountryID ) + + local GroupTemplateName = env.getValueDictByKey(GroupTemplate.name) + + local TraceTable = {} + + if not self.Templates.Groups[GroupTemplateName] then + self.Templates.Groups[GroupTemplateName] = {} + self.Templates.Groups[GroupTemplateName].Status = nil + end + + -- Delete the spans from the route, it is not needed and takes memory. + if GroupTemplate.route and GroupTemplate.route.spans then + GroupTemplate.route.spans = nil + end + + self.Templates.Groups[GroupTemplateName].GroupName = GroupTemplateName + self.Templates.Groups[GroupTemplateName].Template = GroupTemplate + self.Templates.Groups[GroupTemplateName].groupId = GroupTemplate.groupId + self.Templates.Groups[GroupTemplateName].UnitCount = #GroupTemplate.units + self.Templates.Groups[GroupTemplateName].Units = GroupTemplate.units + self.Templates.Groups[GroupTemplateName].CategoryID = CategoryID + self.Templates.Groups[GroupTemplateName].CoalitionID = CoalitionID + self.Templates.Groups[GroupTemplateName].CountryID = CountryID + + + TraceTable[#TraceTable+1] = "Group" + TraceTable[#TraceTable+1] = self.Templates.Groups[GroupTemplateName].GroupName + + TraceTable[#TraceTable+1] = "Coalition" + TraceTable[#TraceTable+1] = self.Templates.Groups[GroupTemplateName].CoalitionID + TraceTable[#TraceTable+1] = "Category" + TraceTable[#TraceTable+1] = self.Templates.Groups[GroupTemplateName].CategoryID + TraceTable[#TraceTable+1] = "Country" + TraceTable[#TraceTable+1] = self.Templates.Groups[GroupTemplateName].CountryID + + TraceTable[#TraceTable+1] = "Units" + + for unit_num, UnitTemplate in pairs( GroupTemplate.units ) do + + local UnitTemplateName = env.getValueDictByKey(UnitTemplate.name) + self.Templates.Units[UnitTemplateName] = {} + self.Templates.Units[UnitTemplateName].UnitName = UnitTemplateName + self.Templates.Units[UnitTemplateName].Template = UnitTemplate + self.Templates.Units[UnitTemplateName].GroupName = GroupTemplateName + self.Templates.Units[UnitTemplateName].GroupTemplate = GroupTemplate + self.Templates.Units[UnitTemplateName].GroupId = GroupTemplate.groupId + self.Templates.Units[UnitTemplateName].CategoryID = CategoryID + self.Templates.Units[UnitTemplateName].CoalitionID = CoalitionID + self.Templates.Units[UnitTemplateName].CountryID = CountryID + + if UnitTemplate.skill and (UnitTemplate.skill == "Client" or UnitTemplate.skill == "Player") then + self.Templates.ClientsByName[UnitTemplateName] = UnitTemplate + self.Templates.ClientsByName[UnitTemplateName].CategoryID = CategoryID + self.Templates.ClientsByName[UnitTemplateName].CoalitionID = CoalitionID + self.Templates.ClientsByName[UnitTemplateName].CountryID = CountryID + self.Templates.ClientsByID[UnitTemplate.unitId] = UnitTemplate + end + + TraceTable[#TraceTable+1] = self.Templates.Units[UnitTemplateName].UnitName + end + + self:E( TraceTable ) +end + +function DATABASE:GetCoalitionFromClientTemplate( ClientName ) + return self.Templates.ClientsByName[ClientName].CoalitionID +end + +function DATABASE:GetCategoryFromClientTemplate( ClientName ) + return self.Templates.ClientsByName[ClientName].CategoryID +end + +function DATABASE:GetCountryFromClientTemplate( ClientName ) + return self.Templates.ClientsByName[ClientName].CountryID +end + +--- Airbase + +function DATABASE:GetCoalitionFromAirbase( AirbaseName ) + return self.AIRBASES[AirbaseName]:GetCoalition() +end + +function DATABASE:GetCategoryFromAirbase( AirbaseName ) + return self.AIRBASES[AirbaseName]:GetCategory() +end + + + +--- Private method that registers all alive players in the mission. +-- @param #DATABASE self +-- @return #DATABASE self +function DATABASE:_RegisterPlayers() + + local CoalitionsData = { AlivePlayersRed = coalition.getPlayers( coalition.side.RED ), AlivePlayersBlue = coalition.getPlayers( coalition.side.BLUE ) } + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + for UnitId, UnitData in pairs( CoalitionData ) do + self:T3( { "UnitData:", UnitData } ) + if UnitData and UnitData:isExist() then + local UnitName = UnitData:getName() + local PlayerName = UnitData:getPlayerName() + if not self.PLAYERS[PlayerName] then + self:E( { "Add player for unit:", UnitName, PlayerName } ) + self:AddPlayer( UnitName, PlayerName ) + end + end + end + end + + return self +end + + +--- Private method that registers all Groups and Units within in the mission. +-- @param #DATABASE self +-- @return #DATABASE self +function DATABASE:_RegisterGroupsAndUnits() + + local CoalitionsData = { GroupsRed = coalition.getGroups( coalition.side.RED ), GroupsBlue = coalition.getGroups( coalition.side.BLUE ) } + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + for DCSGroupId, DCSGroup in pairs( CoalitionData ) do + + if DCSGroup:isExist() then + local DCSGroupName = DCSGroup:getName() + + self:E( { "Register Group:", DCSGroupName } ) + self:AddGroup( DCSGroupName ) + + for DCSUnitId, DCSUnit in pairs( DCSGroup:getUnits() ) do + + local DCSUnitName = DCSUnit:getName() + self:E( { "Register Unit:", DCSUnitName } ) + self:AddUnit( DCSUnitName ) + end + else + self:E( { "Group does not exist: ", DCSGroup } ) + end + + end + end + + return self +end + +--- Private method that registers all Units of skill Client or Player within in the mission. +-- @param #DATABASE self +-- @return #DATABASE self +function DATABASE:_RegisterClients() + + for ClientName, ClientTemplate in pairs( self.Templates.ClientsByName ) do + self:E( { "Register Client:", ClientName } ) + self:AddClient( ClientName ) + end + + return self +end + +--- @param #DATABASE self +function DATABASE:_RegisterStatics() + + local CoalitionsData = { GroupsRed = coalition.getStaticObjects( coalition.side.RED ), GroupsBlue = coalition.getStaticObjects( coalition.side.BLUE ) } + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + for DCSStaticId, DCSStatic in pairs( CoalitionData ) do + + if DCSStatic:isExist() then + local DCSStaticName = DCSStatic:getName() + + self:E( { "Register Static:", DCSStaticName } ) + self:AddStatic( DCSStaticName ) + else + self:E( { "Static does not exist: ", DCSStatic } ) + end + end + end + + return self +end + +--- @param #DATABASE self +function DATABASE:_RegisterAirbases() + + local CoalitionsData = { AirbasesRed = coalition.getAirbases( coalition.side.RED ), AirbasesBlue = coalition.getAirbases( coalition.side.BLUE ), AirbasesNeutral = coalition.getAirbases( coalition.side.NEUTRAL ) } + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + for DCSAirbaseId, DCSAirbase in pairs( CoalitionData ) do + + local DCSAirbaseName = DCSAirbase:getName() + + self:E( { "Register Airbase:", DCSAirbaseName } ) + self:AddAirbase( DCSAirbaseName ) + end + end + + return self +end + + +--- Events + +--- Handles the OnBirth event for the alive units set. +-- @param #DATABASE self +-- @param Event#EVENTDATA Event +function DATABASE:_EventOnBirth( Event ) + self:F2( { Event } ) + + if Event.IniDCSUnit then + self:AddUnit( Event.IniDCSUnitName ) + self:AddGroup( Event.IniDCSGroupName ) + self:_EventOnPlayerEnterUnit( Event ) + end +end + + +--- Handles the OnDead or OnCrash event for alive units set. +-- @param #DATABASE self +-- @param Event#EVENTDATA Event +function DATABASE:_EventOnDeadOrCrash( Event ) + self:F2( { Event } ) + + if Event.IniDCSUnit then + if self.UNITS[Event.IniDCSUnitName] then + self:DeleteUnit( Event.IniDCSUnitName ) + -- add logic to correctly remove a group once all units are destroyed... + end + end +end + + +--- Handles the OnPlayerEnterUnit event to fill the active players table (with the unit filter applied). +-- @param #DATABASE self +-- @param Event#EVENTDATA Event +function DATABASE:_EventOnPlayerEnterUnit( Event ) + self:F2( { Event } ) + + if Event.IniUnit then + local PlayerName = Event.IniUnit:GetPlayerName() + if not self.PLAYERS[PlayerName] then + self:AddPlayer( Event.IniUnitName, PlayerName ) + end + end +end + + +--- Handles the OnPlayerLeaveUnit event to clean the active players table. +-- @param #DATABASE self +-- @param Event#EVENTDATA Event +function DATABASE:_EventOnPlayerLeaveUnit( Event ) + self:F2( { Event } ) + + if Event.IniUnit then + local PlayerName = Event.IniUnit:GetPlayerName() + if self.PLAYERS[PlayerName] then + self:DeletePlayer( PlayerName ) + end + end +end + +--- Iterators + +--- Iterate the DATABASE and call an iterator function for the given set, providing the Object for each element within the set and optional parameters. +-- @param #DATABASE self +-- @param #function IteratorFunction The function that will be called when there is an alive player in the database. +-- @return #DATABASE self +function DATABASE:ForEach( IteratorFunction, FinalizeFunction, arg, Set ) + self:F2( arg ) + + local function CoRoutine() + local Count = 0 + for ObjectID, Object in pairs( Set ) do + self:T2( Object ) + IteratorFunction( Object, unpack( arg ) ) + Count = Count + 1 +-- if Count % 100 == 0 then +-- coroutine.yield( false ) +-- end + end + return true + end + +-- local co = coroutine.create( CoRoutine ) + local co = CoRoutine + + local function Schedule() + +-- local status, res = coroutine.resume( co ) + local status, res = co() + self:T3( { status, res } ) + + if status == false then + error( res ) + end + if res == false then + return true -- resume next time the loop + end + if FinalizeFunction then + FinalizeFunction( unpack( arg ) ) + end + return false + end + + local Scheduler = SCHEDULER:New( self, Schedule, {}, 0.001, 0.001, 0 ) + + return self +end + + +--- Iterate the DATABASE and call an iterator function for each **alive** UNIT, providing the UNIT and optional parameters. +-- @param #DATABASE self +-- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the database. The function needs to accept a UNIT parameter. +-- @return #DATABASE self +function DATABASE:ForEachUnit( IteratorFunction, FinalizeFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, FinalizeFunction, arg, self.UNITS ) + + return self +end + +--- Iterate the DATABASE and call an iterator function for each **alive** GROUP, providing the GROUP and optional parameters. +-- @param #DATABASE self +-- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the database. The function needs to accept a GROUP parameter. +-- @return #DATABASE self +function DATABASE:ForEachGroup( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.GROUPS ) + + return self +end + + +--- Iterate the DATABASE and call an iterator function for each **ALIVE** player, providing the player name and optional parameters. +-- @param #DATABASE self +-- @param #function IteratorFunction The function that will be called when there is an player in the database. The function needs to accept the player name. +-- @return #DATABASE self +function DATABASE:ForEachPlayer( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.PLAYERS ) + + return self +end + + +--- Iterate the DATABASE and call an iterator function for each player who has joined the mission, providing the Unit of the player and optional parameters. +-- @param #DATABASE self +-- @param #function IteratorFunction The function that will be called when there is was a player in the database. The function needs to accept a UNIT parameter. +-- @return #DATABASE self +function DATABASE:ForEachPlayerJoined( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.PLAYERSJOINED ) + + return self +end + +--- Iterate the DATABASE and call an iterator function for each CLIENT, providing the CLIENT to the function and optional parameters. +-- @param #DATABASE self +-- @param #function IteratorFunction The function that will be called when there is an alive player in the database. The function needs to accept a CLIENT parameter. +-- @return #DATABASE self +function DATABASE:ForEachClient( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.CLIENTS ) + + return self +end + + +function DATABASE:_RegisterTemplates() + self:F2() + + self.Navpoints = {} + self.UNITS = {} + --Build routines.db.units and self.Navpoints + for CoalitionName, coa_data in pairs(env.mission.coalition) do + + if (CoalitionName == 'red' or CoalitionName == 'blue') and type(coa_data) == 'table' then + --self.Units[coa_name] = {} + + ---------------------------------------------- + -- build nav points DB + self.Navpoints[CoalitionName] = {} + if coa_data.nav_points then --navpoints + for nav_ind, nav_data in pairs(coa_data.nav_points) do + + if type(nav_data) == 'table' then + self.Navpoints[CoalitionName][nav_ind] = routines.utils.deepCopy(nav_data) + + self.Navpoints[CoalitionName][nav_ind]['name'] = nav_data.callsignStr -- name is a little bit more self-explanatory. + self.Navpoints[CoalitionName][nav_ind]['point'] = {} -- point is used by SSE, support it. + self.Navpoints[CoalitionName][nav_ind]['point']['x'] = nav_data.x + self.Navpoints[CoalitionName][nav_ind]['point']['y'] = 0 + self.Navpoints[CoalitionName][nav_ind]['point']['z'] = nav_data.y + end + end + end + ------------------------------------------------- + if coa_data.country then --there is a country table + for cntry_id, cntry_data in pairs(coa_data.country) do + + local CountryName = string.upper(cntry_data.name) + --self.Units[coa_name][countryName] = {} + --self.Units[coa_name][countryName]["countryId"] = cntry_data.id + + if type(cntry_data) == 'table' then --just making sure + + for obj_type_name, obj_type_data in pairs(cntry_data) do + + if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then --should be an unncessary check + + local CategoryName = obj_type_name + + if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then --there's a group! + + --self.Units[coa_name][countryName][category] = {} + + for group_num, GroupTemplate in pairs(obj_type_data.group) do + + if GroupTemplate and GroupTemplate.units and type(GroupTemplate.units) == 'table' then --making sure again- this is a valid group + self:_RegisterTemplate( + GroupTemplate, + coalition.side[string.upper(CoalitionName)], + _DATABASECategory[string.lower(CategoryName)], + country.id[string.upper(CountryName)] + ) + end --if GroupTemplate and GroupTemplate.units then + end --for group_num, GroupTemplate in pairs(obj_type_data.group) do + end --if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then + end --if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then + end --for obj_type_name, obj_type_data in pairs(cntry_data) do + end --if type(cntry_data) == 'table' then + end --for cntry_id, cntry_data in pairs(coa_data.country) do + end --if coa_data.country then --there is a country table + end --if coa_name == 'red' or coa_name == 'blue' and type(coa_data) == 'table' then + end --for coa_name, coa_data in pairs(mission.coalition) do + + return self +end + + + + +--- This module contains the SET classes. +-- +-- === +-- +-- 1) @{Set#SET_BASE} class, extends @{Base#BASE} +-- ============================================== +-- The @{Set#SET_BASE} class defines the core functions that define a collection of objects. +-- A SET provides iterators to iterate the SET, but will **temporarily** yield the ForEach interator loop at defined **"intervals"** to the mail simulator loop. +-- In this way, large loops can be done while not blocking the simulator main processing loop. +-- The default **"yield interval"** is after 10 objects processed. +-- The default **"time interval"** is after 0.001 seconds. +-- +-- 1.1) Add or remove objects from the SET +-- --------------------------------------- +-- Some key core functions are @{Set#SET_BASE.Add} and @{Set#SET_BASE.Remove} to add or remove objects from the SET in your logic. +-- +-- 1.2) Define the SET iterator **"yield interval"** and the **"time interval"** +-- ----------------------------------------------------------------------------- +-- Modify the iterator intervals with the @{Set#SET_BASE.SetInteratorIntervals} method. +-- You can set the **"yield interval"**, and the **"time interval"**. (See above). +-- +-- === +-- +-- 2) @{Set#SET_GROUP} class, extends @{Set#SET_BASE} +-- ================================================== +-- Mission designers can use the @{Set#SET_GROUP} class to build sets of groups belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Starting with certain prefix strings. +-- +-- 2.1) SET_GROUP construction method: +-- ----------------------------------- +-- Create a new SET_GROUP object with the @{#SET_GROUP.New} method: +-- +-- * @{#SET_GROUP.New}: Creates a new SET_GROUP object. +-- +-- 2.2) Add or Remove GROUP(s) from SET_GROUP: +-- ------------------------------------------- +-- GROUPS can be added and removed using the @{Set#SET_GROUP.AddGroupsByName} and @{Set#SET_GROUP.RemoveGroupsByName} respectively. +-- These methods take a single GROUP name or an array of GROUP names to be added or removed from SET_GROUP. +-- +-- 2.3) SET_GROUP filter criteria: +-- ------------------------------- +-- You can set filter criteria to define the set of groups within the SET_GROUP. +-- Filter criteria are defined by: +-- +-- * @{#SET_GROUP.FilterCoalitions}: Builds the SET_GROUP with the groups belonging to the coalition(s). +-- * @{#SET_GROUP.FilterCategories}: Builds the SET_GROUP with the groups belonging to the category(ies). +-- * @{#SET_GROUP.FilterCountries}: Builds the SET_GROUP with the gruops belonging to the country(ies). +-- * @{#SET_GROUP.FilterPrefixes}: Builds the SET_GROUP with the groups starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_GROUP, you can start filtering using: +-- +-- * @{#SET_GROUP.FilterStart}: Starts the filtering of the groups within the SET_GROUP and add or remove GROUP objects **dynamically**. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_GROUP.FilterZones}: Builds the SET_GROUP with the groups within a @{Zone#ZONE}. +-- +-- 2.4) SET_GROUP iterators: +-- ------------------------- +-- Once the filters have been defined and the SET_GROUP has been built, you can iterate the SET_GROUP with the available iterator methods. +-- The iterator methods will walk the SET_GROUP set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_GROUP: +-- +-- * @{#SET_GROUP.ForEachGroup}: Calls a function for each alive group it finds within the SET_GROUP. +-- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupPartlyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence partly in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- +-- ==== +-- +-- 3) @{Set#SET_UNIT} class, extends @{Set#SET_BASE} +-- =================================================== +-- Mission designers can use the @{Set#SET_UNIT} class to build sets of units belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Unit types +-- * Starting with certain prefix strings. +-- +-- 3.1) SET_UNIT construction method: +-- ---------------------------------- +-- Create a new SET_UNIT object with the @{#SET_UNIT.New} method: +-- +-- * @{#SET_UNIT.New}: Creates a new SET_UNIT object. +-- +-- 3.2) Add or Remove UNIT(s) from SET_UNIT: +-- ----------------------------------------- +-- UNITs can be added and removed using the @{Set#SET_UNIT.AddUnitsByName} and @{Set#SET_UNIT.RemoveUnitsByName} respectively. +-- These methods take a single UNIT name or an array of UNIT names to be added or removed from SET_UNIT. +-- +-- 3.3) SET_UNIT filter criteria: +-- ------------------------------ +-- You can set filter criteria to define the set of units within the SET_UNIT. +-- Filter criteria are defined by: +-- +-- * @{#SET_UNIT.FilterCoalitions}: Builds the SET_UNIT with the units belonging to the coalition(s). +-- * @{#SET_UNIT.FilterCategories}: Builds the SET_UNIT with the units belonging to the category(ies). +-- * @{#SET_UNIT.FilterTypes}: Builds the SET_UNIT with the units belonging to the unit type(s). +-- * @{#SET_UNIT.FilterCountries}: Builds the SET_UNIT with the units belonging to the country(ies). +-- * @{#SET_UNIT.FilterPrefixes}: Builds the SET_UNIT with the units starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_UNIT, you can start filtering using: +-- +-- * @{#SET_UNIT.FilterStart}: Starts the filtering of the units within the SET_UNIT. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_UNIT.FilterZones}: Builds the SET_UNIT with the units within a @{Zone#ZONE}. +-- +-- 3.4) SET_UNIT iterators: +-- ------------------------ +-- Once the filters have been defined and the SET_UNIT has been built, you can iterate the SET_UNIT with the available iterator methods. +-- The iterator methods will walk the SET_UNIT set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_UNIT: +-- +-- * @{#SET_UNIT.ForEachUnit}: Calls a function for each alive unit it finds within the SET_UNIT. +-- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- +-- Planned iterators methods in development are (so these are not yet available): +-- +-- * @{#SET_UNIT.ForEachUnitInUnit}: Calls a function for each unit contained within the SET_UNIT. +-- * @{#SET_UNIT.ForEachUnitCompletelyInZone}: Iterate and call an iterator function for each **alive** UNIT presence completely in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- * @{#SET_UNIT.ForEachUnitNotInZone}: Iterate and call an iterator function for each **alive** UNIT presence not in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- +-- === +-- +-- 4) @{Set#SET_CLIENT} class, extends @{Set#SET_BASE} +-- =================================================== +-- Mission designers can use the @{Set#SET_CLIENT} class to build sets of units belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Client types +-- * Starting with certain prefix strings. +-- +-- 4.1) SET_CLIENT construction method: +-- ---------------------------------- +-- Create a new SET_CLIENT object with the @{#SET_CLIENT.New} method: +-- +-- * @{#SET_CLIENT.New}: Creates a new SET_CLIENT object. +-- +-- 4.2) Add or Remove CLIENT(s) from SET_CLIENT: +-- ----------------------------------------- +-- CLIENTs can be added and removed using the @{Set#SET_CLIENT.AddClientsByName} and @{Set#SET_CLIENT.RemoveClientsByName} respectively. +-- These methods take a single CLIENT name or an array of CLIENT names to be added or removed from SET_CLIENT. +-- +-- 4.3) SET_CLIENT filter criteria: +-- ------------------------------ +-- You can set filter criteria to define the set of clients within the SET_CLIENT. +-- Filter criteria are defined by: +-- +-- * @{#SET_CLIENT.FilterCoalitions}: Builds the SET_CLIENT with the clients belonging to the coalition(s). +-- * @{#SET_CLIENT.FilterCategories}: Builds the SET_CLIENT with the clients belonging to the category(ies). +-- * @{#SET_CLIENT.FilterTypes}: Builds the SET_CLIENT with the clients belonging to the client type(s). +-- * @{#SET_CLIENT.FilterCountries}: Builds the SET_CLIENT with the clients belonging to the country(ies). +-- * @{#SET_CLIENT.FilterPrefixes}: Builds the SET_CLIENT with the clients starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_CLIENT, you can start filtering using: +-- +-- * @{#SET_CLIENT.FilterStart}: Starts the filtering of the clients within the SET_CLIENT. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_CLIENT.FilterZones}: Builds the SET_CLIENT with the clients within a @{Zone#ZONE}. +-- +-- 4.4) SET_CLIENT iterators: +-- ------------------------ +-- Once the filters have been defined and the SET_CLIENT has been built, you can iterate the SET_CLIENT with the available iterator methods. +-- The iterator methods will walk the SET_CLIENT set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_CLIENT: +-- +-- * @{#SET_CLIENT.ForEachClient}: Calls a function for each alive client it finds within the SET_CLIENT. +-- +-- ==== +-- +-- 5) @{Set#SET_AIRBASE} class, extends @{Set#SET_BASE} +-- ==================================================== +-- Mission designers can use the @{Set#SET_AIRBASE} class to build sets of airbases optionally belonging to certain: +-- +-- * Coalitions +-- +-- 5.1) SET_AIRBASE construction +-- ----------------------------- +-- Create a new SET_AIRBASE object with the @{#SET_AIRBASE.New} method: +-- +-- * @{#SET_AIRBASE.New}: Creates a new SET_AIRBASE object. +-- +-- 5.2) Add or Remove AIRBASEs from SET_AIRBASE +-- -------------------------------------------- +-- AIRBASEs can be added and removed using the @{Set#SET_AIRBASE.AddAirbasesByName} and @{Set#SET_AIRBASE.RemoveAirbasesByName} respectively. +-- These methods take a single AIRBASE name or an array of AIRBASE names to be added or removed from SET_AIRBASE. +-- +-- 5.3) SET_AIRBASE filter criteria +-- -------------------------------- +-- You can set filter criteria to define the set of clients within the SET_AIRBASE. +-- Filter criteria are defined by: +-- +-- * @{#SET_AIRBASE.FilterCoalitions}: Builds the SET_AIRBASE with the airbases belonging to the coalition(s). +-- +-- Once the filter criteria have been set for the SET_AIRBASE, you can start filtering using: +-- +-- * @{#SET_AIRBASE.FilterStart}: Starts the filtering of the airbases within the SET_AIRBASE. +-- +-- 5.4) SET_AIRBASE iterators: +-- --------------------------- +-- Once the filters have been defined and the SET_AIRBASE has been built, you can iterate the SET_AIRBASE with the available iterator methods. +-- The iterator methods will walk the SET_AIRBASE set, and call for each airbase within the set a function that you provide. +-- The following iterator methods are currently available within the SET_AIRBASE: +-- +-- * @{#SET_AIRBASE.ForEachAirbase}: Calls a function for each airbase it finds within the SET_AIRBASE. +-- +-- ==== +-- +-- @module Set +-- @author FlightControl + + +--- SET_BASE class +-- @type SET_BASE +-- @extends Base#BASE +SET_BASE = { + ClassName = "SET_BASE", + Set = {}, +} + +--- Creates a new SET_BASE object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. +-- @param #SET_BASE self +-- @return #SET_BASE +-- @usage +-- -- Define a new SET_BASE Object. This DBObject will contain a reference to all Group and Unit Templates defined within the ME and the DCSRTE. +-- DBObject = SET_BASE:New() +function SET_BASE:New( Database ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + self.Database = Database + + self.YieldInterval = 10 + self.TimeInterval = 0.001 + + return self +end + +--- Finds an @{Base#BASE} object based on the object Name. +-- @param #SET_BASE self +-- @param #string ObjectName +-- @return Base#BASE The Object found. +function SET_BASE:_Find( ObjectName ) + + local ObjectFound = self.Set[ObjectName] + return ObjectFound +end + + +--- Gets the Set. +-- @param #SET_BASE self +-- @return #SET_BASE self +function SET_BASE:GetSet() + self:F2() + + return self.Set +end + +--- Adds a @{Base#BASE} object in the @{Set#SET_BASE}, using the Object Name as the index. +-- @param #SET_BASE self +-- @param #string ObjectName +-- @param Base#BASE Object +-- @return Base#BASE The added BASE Object. +function SET_BASE:Add( ObjectName, Object ) + + self.Set[ObjectName] = Object +end + +--- Removes a @{Base#BASE} object from the @{Set#SET_BASE} and derived classes, based on the Object Name. +-- @param #SET_BASE self +-- @param #string ObjectName +function SET_BASE:Remove( ObjectName ) + + self.Set[ObjectName] = nil +end + +--- Define the SET iterator **"yield interval"** and the **"time interval"**. +-- @param #SET_BASE self +-- @param #number YieldInterval Sets the frequency when the iterator loop will yield after the number of objects processed. The default frequency is 10 objects processed. +-- @param #number TimeInterval Sets the time in seconds when the main logic will resume the iterator loop. The default time is 0.001 seconds. +-- @return #SET_BASE self +function SET_BASE:SetIteratorIntervals( YieldInterval, TimeInterval ) + + self.YieldInterval = YieldInterval + self.TimeInterval = TimeInterval + + return self +end + + + +--- Starts the filtering for the defined collection. +-- @param #SET_BASE self +-- @return #SET_BASE self +function SET_BASE:_FilterStart() + + for ObjectName, Object in pairs( self.Database ) do + + if self:IsIncludeObject( Object ) then + self:E( { "Adding Object:", ObjectName } ) + self:Add( ObjectName, Object ) + end + end + + _EVENTDISPATCHER:OnBirth( self._EventOnBirth, self ) + _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) + _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) + + -- Follow alive players and clients +-- _EVENTDISPATCHER:OnPlayerEnterUnit( self._EventOnPlayerEnterUnit, self ) +-- _EVENTDISPATCHER:OnPlayerLeaveUnit( self._EventOnPlayerLeaveUnit, self ) + + + return self +end + +--- Iterate the SET_BASE while identifying the nearest object from a @{Point#POINT_VEC2}. +-- @param #SET_BASE self +-- @param Point#POINT_VEC2 PointVec2 A @{Point#POINT_VEC2} object from where to evaluate the closest object in the set. +-- @return Base#BASE The closest object. +function SET_BASE:FindNearestObjectFromPointVec2( PointVec2 ) + self:F2( PointVec2 ) + + local NearestObject = nil + local ClosestDistance = nil + + for ObjectID, ObjectData in pairs( self.Set ) do + if NearestObject == nil then + NearestObject = ObjectData + ClosestDistance = PointVec2:DistanceFromVec2( ObjectData:GetPointVec2() ) + else + local Distance = PointVec2:DistanceFromVec2( ObjectData:GetPointVec2() ) + if Distance < ClosestDistance then + NearestObject = ObjectData + ClosestDistance = Distance + end + end + end + + return NearestObject +end + + + +----- Private method that registers all alive players in the mission. +---- @param #SET_BASE self +---- @return #SET_BASE self +--function SET_BASE:_RegisterPlayers() +-- +-- local CoalitionsData = { AlivePlayersRed = coalition.getPlayers( coalition.side.RED ), AlivePlayersBlue = coalition.getPlayers( coalition.side.BLUE ) } +-- for CoalitionId, CoalitionData in pairs( CoalitionsData ) do +-- for UnitId, UnitData in pairs( CoalitionData ) do +-- self:T3( { "UnitData:", UnitData } ) +-- if UnitData and UnitData:isExist() then +-- local UnitName = UnitData:getName() +-- if not self.PlayersAlive[UnitName] then +-- self:E( { "Add player for unit:", UnitName, UnitData:getPlayerName() } ) +-- self.PlayersAlive[UnitName] = UnitData:getPlayerName() +-- end +-- end +-- end +-- end +-- +-- return self +--end + +--- Events + +--- Handles the OnBirth event for the Set. +-- @param #SET_BASE self +-- @param Event#EVENTDATA Event +function SET_BASE:_EventOnBirth( Event ) + self:F3( { Event } ) + + if Event.IniDCSUnit then + local ObjectName, Object = self:AddInDatabase( Event ) + self:T3( ObjectName, Object ) + if self:IsIncludeObject( Object ) then + self:Add( ObjectName, Object ) + --self:_EventOnPlayerEnterUnit( Event ) + end + end +end + +--- Handles the OnDead or OnCrash event for alive units set. +-- @param #SET_BASE self +-- @param Event#EVENTDATA Event +function SET_BASE:_EventOnDeadOrCrash( Event ) + self:F2( { Event } ) + + if Event.IniDCSUnit then + local ObjectName, Object = self:FindInDatabase( Event ) + if ObjectName and Object then + self:Remove( ObjectName ) + end + end +end + +----- Handles the OnPlayerEnterUnit event to fill the active players table (with the unit filter applied). +---- @param #SET_BASE self +---- @param Event#EVENTDATA Event +--function SET_BASE:_EventOnPlayerEnterUnit( Event ) +-- self:F3( { Event } ) +-- +-- if Event.IniDCSUnit then +-- if self:IsIncludeObject( Event.IniDCSUnit ) then +-- if not self.PlayersAlive[Event.IniDCSUnitName] then +-- self:E( { "Add player for unit:", Event.IniDCSUnitName, Event.IniDCSUnit:getPlayerName() } ) +-- self.PlayersAlive[Event.IniDCSUnitName] = Event.IniDCSUnit:getPlayerName() +-- self.ClientsAlive[Event.IniDCSUnitName] = _DATABASE.Clients[ Event.IniDCSUnitName ] +-- end +-- end +-- end +--end +-- +----- Handles the OnPlayerLeaveUnit event to clean the active players table. +---- @param #SET_BASE self +---- @param Event#EVENTDATA Event +--function SET_BASE:_EventOnPlayerLeaveUnit( Event ) +-- self:F3( { Event } ) +-- +-- if Event.IniDCSUnit then +-- if self:IsIncludeObject( Event.IniDCSUnit ) then +-- if self.PlayersAlive[Event.IniDCSUnitName] then +-- self:E( { "Cleaning player for unit:", Event.IniDCSUnitName, Event.IniDCSUnit:getPlayerName() } ) +-- self.PlayersAlive[Event.IniDCSUnitName] = nil +-- self.ClientsAlive[Event.IniDCSUnitName] = nil +-- end +-- end +-- end +--end + +-- Iterators + +--- Iterate the SET_BASE and derived classes and call an iterator function for the given SET_BASE, providing the Object for each element within the set and optional parameters. +-- @param #SET_BASE self +-- @param #function IteratorFunction The function that will be called. +-- @return #SET_BASE self +function SET_BASE:ForEach( IteratorFunction, arg, Set, Function, FunctionArguments ) + self:F3( arg ) + + local function CoRoutine() + local Count = 0 + for ObjectID, Object in pairs( Set ) do + self:T2( Object ) + if Function then + if Function( unpack( FunctionArguments ), Object ) == true then + IteratorFunction( Object, unpack( arg ) ) + end + else + IteratorFunction( Object, unpack( arg ) ) + end + Count = Count + 1 +-- if Count % self.YieldInterval == 0 then +-- coroutine.yield( false ) +-- end + end + return true + end + +-- local co = coroutine.create( CoRoutine ) + local co = CoRoutine + + local function Schedule() + +-- local status, res = coroutine.resume( co ) + local status, res = co() + self:T3( { status, res } ) + + if status == false then + error( res ) + end + if res == false then + return true -- resume next time the loop + end + + return false + end + + local Scheduler = SCHEDULER:New( self, Schedule, {}, self.TimeInterval, self.TimeInterval, 0 ) + + return self +end + + +----- Iterate the SET_BASE and call an interator function for each **alive** unit, providing the Unit and optional parameters. +---- @param #SET_BASE self +---- @param #function IteratorFunction The function that will be called when there is an alive unit in the SET_BASE. The function needs to accept a UNIT parameter. +---- @return #SET_BASE self +--function SET_BASE:ForEachDCSUnitAlive( IteratorFunction, ... ) +-- self:F3( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.DCSUnitsAlive ) +-- +-- return self +--end +-- +----- Iterate the SET_BASE and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. +---- @param #SET_BASE self +---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_BASE. The function needs to accept a UNIT parameter. +---- @return #SET_BASE self +--function SET_BASE:ForEachPlayer( IteratorFunction, ... ) +-- self:F3( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.PlayersAlive ) +-- +-- return self +--end +-- +-- +----- Iterate the SET_BASE and call an interator function for each client, providing the Client to the function and optional parameters. +---- @param #SET_BASE self +---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_BASE. The function needs to accept a CLIENT parameter. +---- @return #SET_BASE self +--function SET_BASE:ForEachClient( IteratorFunction, ... ) +-- self:F3( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.Clients ) +-- +-- return self +--end + + +--- Decides whether to include the Object +-- @param #SET_BASE self +-- @param #table Object +-- @return #SET_BASE self +function SET_BASE:IsIncludeObject( Object ) + self:F3( Object ) + + return true +end + +--- Flushes the current SET_BASE contents in the log ... (for debug reasons). +-- @param #SET_BASE self +-- @return #string A string with the names of the objects. +function SET_BASE:Flush() + self:F3() + + local ObjectNames = "" + for ObjectName, Object in pairs( self.Set ) do + ObjectNames = ObjectNames .. ObjectName .. ", " + end + self:T( { "Objects in Set:", ObjectNames } ) + + return ObjectNames +end + +-- SET_GROUP + +--- SET_GROUP class +-- @type SET_GROUP +-- @extends Set#SET_BASE +SET_GROUP = { + ClassName = "SET_GROUP", + Filter = { + Coalitions = nil, + Categories = nil, + Countries = nil, + GroupPrefixes = nil, + }, + FilterMeta = { + Coalitions = { + red = coalition.side.RED, + blue = coalition.side.BLUE, + neutral = coalition.side.NEUTRAL, + }, + Categories = { + plane = Group.Category.AIRPLANE, + helicopter = Group.Category.HELICOPTER, + ground = Group.Category.GROUND_UNIT, + ship = Group.Category.SHIP, + structure = Group.Category.STRUCTURE, + }, + }, +} + + +--- Creates a new SET_GROUP object, building a set of groups belonging to a coalitions, categories, countries, types or with defined prefix names. +-- @param #SET_GROUP self +-- @return #SET_GROUP +-- @usage +-- -- Define a new SET_GROUP Object. This DBObject will contain a reference to all alive GROUPS. +-- DBObject = SET_GROUP:New() +function SET_GROUP:New() + + -- Inherits from BASE + local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.GROUPS ) ) + + return self +end + +--- Add GROUP(s) to SET_GROUP. +-- @param Set#SET_GROUP self +-- @param #string AddGroupNames A single name or an array of GROUP names. +-- @return self +function SET_GROUP:AddGroupsByName( AddGroupNames ) + + local AddGroupNamesArray = ( type( AddGroupNames ) == "table" ) and AddGroupNames or { AddGroupNames } + + for AddGroupID, AddGroupName in pairs( AddGroupNamesArray ) do + self:Add( AddGroupName, GROUP:FindByName( AddGroupName ) ) + end + + return self +end + +--- Remove GROUP(s) from SET_GROUP. +-- @param Set#SET_GROUP self +-- @param Group#GROUP RemoveGroupNames A single name or an array of GROUP names. +-- @return self +function SET_GROUP:RemoveGroupsByName( RemoveGroupNames ) + + local RemoveGroupNamesArray = ( type( RemoveGroupNames ) == "table" ) and RemoveGroupNames or { RemoveGroupNames } + + for RemoveGroupID, RemoveGroupName in pairs( RemoveGroupNamesArray ) do + self:Remove( RemoveGroupName.GroupName ) + end + + return self +end + + + + +--- Finds a Group based on the Group Name. +-- @param #SET_GROUP self +-- @param #string GroupName +-- @return Group#GROUP The found Group. +function SET_GROUP:FindGroup( GroupName ) + + local GroupFound = self.Set[GroupName] + return GroupFound +end + + + +--- Builds a set of groups of coalitions. +-- Possible current coalitions are red, blue and neutral. +-- @param #SET_GROUP self +-- @param #string Coalitions Can take the following values: "red", "blue", "neutral". +-- @return #SET_GROUP self +function SET_GROUP:FilterCoalitions( Coalitions ) + if not self.Filter.Coalitions then + self.Filter.Coalitions = {} + end + if type( Coalitions ) ~= "table" then + Coalitions = { Coalitions } + end + for CoalitionID, Coalition in pairs( Coalitions ) do + self.Filter.Coalitions[Coalition] = Coalition + end + return self +end + + +--- Builds a set of groups out of categories. +-- Possible current categories are plane, helicopter, ground, ship. +-- @param #SET_GROUP self +-- @param #string Categories Can take the following values: "plane", "helicopter", "ground", "ship". +-- @return #SET_GROUP self +function SET_GROUP:FilterCategories( Categories ) + if not self.Filter.Categories then + self.Filter.Categories = {} + end + if type( Categories ) ~= "table" then + Categories = { Categories } + end + for CategoryID, Category in pairs( Categories ) do + self.Filter.Categories[Category] = Category + end + return self +end + +--- Builds a set of groups of defined countries. +-- Possible current countries are those known within DCS world. +-- @param #SET_GROUP self +-- @param #string Countries Can take those country strings known within DCS world. +-- @return #SET_GROUP self +function SET_GROUP:FilterCountries( Countries ) + if not self.Filter.Countries then + self.Filter.Countries = {} + end + if type( Countries ) ~= "table" then + Countries = { Countries } + end + for CountryID, Country in pairs( Countries ) do + self.Filter.Countries[Country] = Country + end + return self +end + + +--- Builds a set of groups of defined GROUP prefixes. +-- All the groups starting with the given prefixes will be included within the set. +-- @param #SET_GROUP self +-- @param #string Prefixes The prefix of which the group name starts with. +-- @return #SET_GROUP self +function SET_GROUP:FilterPrefixes( Prefixes ) + if not self.Filter.GroupPrefixes then + self.Filter.GroupPrefixes = {} + end + if type( Prefixes ) ~= "table" then + Prefixes = { Prefixes } + end + for PrefixID, Prefix in pairs( Prefixes ) do + self.Filter.GroupPrefixes[Prefix] = Prefix + end + return self +end + + +--- Starts the filtering. +-- @param #SET_GROUP self +-- @return #SET_GROUP self +function SET_GROUP:FilterStart() + + if _DATABASE then + self:_FilterStart() + end + + return self +end + +--- Handles the Database to check on an event (birth) that the Object was added in the Database. +-- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! +-- @param #SET_GROUP self +-- @param Event#EVENTDATA Event +-- @return #string The name of the GROUP +-- @return #table The GROUP +function SET_GROUP:AddInDatabase( Event ) + self:F3( { Event } ) + + if not self.Database[Event.IniDCSGroupName] then + self.Database[Event.IniDCSGroupName] = GROUP:Register( Event.IniDCSGroupName ) + self:T3( self.Database[Event.IniDCSGroupName] ) + end + + return Event.IniDCSGroupName, self.Database[Event.IniDCSGroupName] +end + +--- Handles the Database to check on any event that Object exists in the Database. +-- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! +-- @param #SET_GROUP self +-- @param Event#EVENTDATA Event +-- @return #string The name of the GROUP +-- @return #table The GROUP +function SET_GROUP:FindInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSGroupName, self.Database[Event.IniDCSGroupName] +end + +--- Iterate the SET_GROUP and call an iterator function for each **alive** GROUP, providing the GROUP and optional parameters. +-- @param #SET_GROUP self +-- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the SET_GROUP. The function needs to accept a GROUP parameter. +-- @return #SET_GROUP self +function SET_GROUP:ForEachGroup( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set ) + + return self +end + +--- Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- @param #SET_GROUP self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the SET_GROUP. The function needs to accept a GROUP parameter. +-- @return #SET_GROUP self +function SET_GROUP:ForEachGroupCompletelyInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Group#GROUP GroupObject + function( ZoneObject, GroupObject ) + if GroupObject:IsCompletelyInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + +--- Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence partly in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- @param #SET_GROUP self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the SET_GROUP. The function needs to accept a GROUP parameter. +-- @return #SET_GROUP self +function SET_GROUP:ForEachGroupPartlyInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Group#GROUP GroupObject + function( ZoneObject, GroupObject ) + if GroupObject:IsPartlyInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + +--- Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- @param #SET_GROUP self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the SET_GROUP. The function needs to accept a GROUP parameter. +-- @return #SET_GROUP self +function SET_GROUP:ForEachGroupNotInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Group#GROUP GroupObject + function( ZoneObject, GroupObject ) + if GroupObject:IsNotInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + + +----- Iterate the SET_GROUP and call an interator function for each **alive** player, providing the Group of the player and optional parameters. +---- @param #SET_GROUP self +---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_GROUP. The function needs to accept a GROUP parameter. +---- @return #SET_GROUP self +--function SET_GROUP:ForEachPlayer( IteratorFunction, ... ) +-- self:F2( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.PlayersAlive ) +-- +-- return self +--end +-- +-- +----- Iterate the SET_GROUP and call an interator function for each client, providing the Client to the function and optional parameters. +---- @param #SET_GROUP self +---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_GROUP. The function needs to accept a CLIENT parameter. +---- @return #SET_GROUP self +--function SET_GROUP:ForEachClient( IteratorFunction, ... ) +-- self:F2( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.Clients ) +-- +-- return self +--end + + +--- +-- @param #SET_GROUP self +-- @param Group#GROUP MooseGroup +-- @return #SET_GROUP self +function SET_GROUP:IsIncludeObject( MooseGroup ) + self:F2( MooseGroup ) + local MooseGroupInclude = true + + if self.Filter.Coalitions then + local MooseGroupCoalition = false + for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do + self:T3( { "Coalition:", MooseGroup:GetCoalition(), self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) + if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == MooseGroup:GetCoalition() then + MooseGroupCoalition = true + end + end + MooseGroupInclude = MooseGroupInclude and MooseGroupCoalition + end + + if self.Filter.Categories then + local MooseGroupCategory = false + for CategoryID, CategoryName in pairs( self.Filter.Categories ) do + self:T3( { "Category:", MooseGroup:GetCategory(), self.FilterMeta.Categories[CategoryName], CategoryName } ) + if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == MooseGroup:GetCategory() then + MooseGroupCategory = true + end + end + MooseGroupInclude = MooseGroupInclude and MooseGroupCategory + end + + if self.Filter.Countries then + local MooseGroupCountry = false + for CountryID, CountryName in pairs( self.Filter.Countries ) do + self:T3( { "Country:", MooseGroup:GetCountry(), CountryName } ) + if country.id[CountryName] == MooseGroup:GetCountry() then + MooseGroupCountry = true + end + end + MooseGroupInclude = MooseGroupInclude and MooseGroupCountry + end + + if self.Filter.GroupPrefixes then + local MooseGroupPrefix = false + for GroupPrefixId, GroupPrefix in pairs( self.Filter.GroupPrefixes ) do + self:T3( { "Prefix:", string.find( MooseGroup:GetName(), GroupPrefix, 1 ), GroupPrefix } ) + if string.find( MooseGroup:GetName(), GroupPrefix, 1 ) then + MooseGroupPrefix = true + end + end + MooseGroupInclude = MooseGroupInclude and MooseGroupPrefix + end + + self:T2( MooseGroupInclude ) + return MooseGroupInclude +end + +--- SET_UNIT class +-- @type SET_UNIT +-- @extends Set#SET_BASE +SET_UNIT = { + ClassName = "SET_UNIT", + Units = {}, + Filter = { + Coalitions = nil, + Categories = nil, + Types = nil, + Countries = nil, + UnitPrefixes = nil, + }, + FilterMeta = { + Coalitions = { + red = coalition.side.RED, + blue = coalition.side.BLUE, + neutral = coalition.side.NEUTRAL, + }, + Categories = { + plane = Unit.Category.AIRPLANE, + helicopter = Unit.Category.HELICOPTER, + ground = Unit.Category.GROUND_UNIT, + ship = Unit.Category.SHIP, + structure = Unit.Category.STRUCTURE, + }, + }, +} + + +--- Creates a new SET_UNIT object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. +-- @param #SET_UNIT self +-- @return #SET_UNIT +-- @usage +-- -- Define a new SET_UNIT Object. This DBObject will contain a reference to all alive Units. +-- DBObject = SET_UNIT:New() +function SET_UNIT:New() + + -- Inherits from BASE + local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.UNITS ) ) + + _EVENTDISPATCHER:OnBirth( self._EventOnBirth, self ) + _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) + _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) + + return self +end + +--- Add UNIT(s) to SET_UNIT. +-- @param #SET_UNIT self +-- @param #string AddUnit A single UNIT. +-- @return #SET_UNIT self +function SET_UNIT:AddUnit( AddUnit ) + self:F2( AddUnit:GetName() ) + + self:Add( AddUnit:GetName(), AddUnit ) + + return self +end + + +--- Add UNIT(s) to SET_UNIT. +-- @param #SET_UNIT self +-- @param #string AddUnitNames A single name or an array of UNIT names. +-- @return #SET_UNIT self +function SET_UNIT:AddUnitsByName( AddUnitNames ) + + local AddUnitNamesArray = ( type( AddUnitNames ) == "table" ) and AddUnitNames or { AddUnitNames } + + self:T( AddUnitNamesArray ) + for AddUnitID, AddUnitName in pairs( AddUnitNamesArray ) do + self:Add( AddUnitName, UNIT:FindByName( AddUnitName ) ) + end + + return self +end + +--- Remove UNIT(s) from SET_UNIT. +-- @param Set#SET_UNIT self +-- @param Unit#UNIT RemoveUnitNames A single name or an array of UNIT names. +-- @return self +function SET_UNIT:RemoveUnitsByName( RemoveUnitNames ) + + local RemoveUnitNamesArray = ( type( RemoveUnitNames ) == "table" ) and RemoveUnitNames or { RemoveUnitNames } + + for RemoveUnitID, RemoveUnitName in pairs( RemoveUnitNamesArray ) do + self:Remove( RemoveUnitName.UnitName ) + end + + return self +end + + +--- Finds a Unit based on the Unit Name. +-- @param #SET_UNIT self +-- @param #string UnitName +-- @return Unit#UNIT The found Unit. +function SET_UNIT:FindUnit( UnitName ) + + local UnitFound = self.Set[UnitName] + return UnitFound +end + + + +--- Builds a set of units of coalitions. +-- Possible current coalitions are red, blue and neutral. +-- @param #SET_UNIT self +-- @param #string Coalitions Can take the following values: "red", "blue", "neutral". +-- @return #SET_UNIT self +function SET_UNIT:FilterCoalitions( Coalitions ) + if not self.Filter.Coalitions then + self.Filter.Coalitions = {} + end + if type( Coalitions ) ~= "table" then + Coalitions = { Coalitions } + end + for CoalitionID, Coalition in pairs( Coalitions ) do + self.Filter.Coalitions[Coalition] = Coalition + end + return self +end + + +--- Builds a set of units out of categories. +-- Possible current categories are plane, helicopter, ground, ship. +-- @param #SET_UNIT self +-- @param #string Categories Can take the following values: "plane", "helicopter", "ground", "ship". +-- @return #SET_UNIT self +function SET_UNIT:FilterCategories( Categories ) + if not self.Filter.Categories then + self.Filter.Categories = {} + end + if type( Categories ) ~= "table" then + Categories = { Categories } + end + for CategoryID, Category in pairs( Categories ) do + self.Filter.Categories[Category] = Category + end + return self +end + + +--- Builds a set of units of defined unit types. +-- Possible current types are those types known within DCS world. +-- @param #SET_UNIT self +-- @param #string Types Can take those type strings known within DCS world. +-- @return #SET_UNIT self +function SET_UNIT:FilterTypes( Types ) + if not self.Filter.Types then + self.Filter.Types = {} + end + if type( Types ) ~= "table" then + Types = { Types } + end + for TypeID, Type in pairs( Types ) do + self.Filter.Types[Type] = Type + end + return self +end + + +--- Builds a set of units of defined countries. +-- Possible current countries are those known within DCS world. +-- @param #SET_UNIT self +-- @param #string Countries Can take those country strings known within DCS world. +-- @return #SET_UNIT self +function SET_UNIT:FilterCountries( Countries ) + if not self.Filter.Countries then + self.Filter.Countries = {} + end + if type( Countries ) ~= "table" then + Countries = { Countries } + end + for CountryID, Country in pairs( Countries ) do + self.Filter.Countries[Country] = Country + end + return self +end + + +--- Builds a set of units of defined unit prefixes. +-- All the units starting with the given prefixes will be included within the set. +-- @param #SET_UNIT self +-- @param #string Prefixes The prefix of which the unit name starts with. +-- @return #SET_UNIT self +function SET_UNIT:FilterPrefixes( Prefixes ) + if not self.Filter.UnitPrefixes then + self.Filter.UnitPrefixes = {} + end + if type( Prefixes ) ~= "table" then + Prefixes = { Prefixes } + end + for PrefixID, Prefix in pairs( Prefixes ) do + self.Filter.UnitPrefixes[Prefix] = Prefix + end + return self +end + + + + +--- Starts the filtering. +-- @param #SET_UNIT self +-- @return #SET_UNIT self +function SET_UNIT:FilterStart() + + if _DATABASE then + self:_FilterStart() + end + + return self +end + +--- Handles the Database to check on an event (birth) that the Object was added in the Database. +-- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! +-- @param #SET_UNIT self +-- @param Event#EVENTDATA Event +-- @return #string The name of the UNIT +-- @return #table The UNIT +function SET_UNIT:AddInDatabase( Event ) + self:F3( { Event } ) + + if not self.Database[Event.IniDCSUnitName] then + self.Database[Event.IniDCSUnitName] = UNIT:Register( Event.IniDCSUnitName ) + self:T3( self.Database[Event.IniDCSUnitName] ) + end + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Handles the Database to check on any event that Object exists in the Database. +-- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! +-- @param #SET_UNIT self +-- @param Event#EVENTDATA Event +-- @return #string The name of the UNIT +-- @return #table The UNIT +function SET_UNIT:FindInDatabase( Event ) + self:F3( { Event } ) + + self:E( { Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] } ) + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Iterate the SET_UNIT and call an interator function for each **alive** UNIT, providing the UNIT and optional parameters. +-- @param #SET_UNIT self +-- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the SET_UNIT. The function needs to accept a UNIT parameter. +-- @return #SET_UNIT self +function SET_UNIT:ForEachUnit( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set ) + + return self +end + +--- Iterate the SET_UNIT and call an iterator function for each **alive** UNIT presence completely in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- @param #SET_UNIT self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the SET_UNIT. The function needs to accept a UNIT parameter. +-- @return #SET_UNIT self +function SET_UNIT:ForEachUnitCompletelyInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Unit#UNIT UnitObject + function( ZoneObject, UnitObject ) + if UnitObject:IsCompletelyInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + +--- Iterate the SET_UNIT and call an iterator function for each **alive** UNIT presence not in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- @param #SET_UNIT self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the SET_UNIT. The function needs to accept a UNIT parameter. +-- @return #SET_UNIT self +function SET_UNIT:ForEachUnitNotInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Unit#UNIT UnitObject + function( ZoneObject, UnitObject ) + if UnitObject:IsNotInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + + + +----- Iterate the SET_UNIT and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. +---- @param #SET_UNIT self +---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_UNIT. The function needs to accept a UNIT parameter. +---- @return #SET_UNIT self +--function SET_UNIT:ForEachPlayer( IteratorFunction, ... ) +-- self:F2( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.PlayersAlive ) +-- +-- return self +--end +-- +-- +----- Iterate the SET_UNIT and call an interator function for each client, providing the Client to the function and optional parameters. +---- @param #SET_UNIT self +---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_UNIT. The function needs to accept a CLIENT parameter. +---- @return #SET_UNIT self +--function SET_UNIT:ForEachClient( IteratorFunction, ... ) +-- self:F2( arg ) +-- +-- self:ForEach( IteratorFunction, arg, self.Clients ) +-- +-- return self +--end + + +--- +-- @param #SET_UNIT self +-- @param Unit#UNIT MUnit +-- @return #SET_UNIT self +function SET_UNIT:IsIncludeObject( MUnit ) + self:F2( MUnit ) + local MUnitInclude = true + + if self.Filter.Coalitions then + local MUnitCoalition = false + for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do + self:T3( { "Coalition:", MUnit:GetCoalition(), self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) + if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == MUnit:GetCoalition() then + MUnitCoalition = true + end + end + MUnitInclude = MUnitInclude and MUnitCoalition + end + + if self.Filter.Categories then + local MUnitCategory = false + for CategoryID, CategoryName in pairs( self.Filter.Categories ) do + self:T3( { "Category:", MUnit:GetDesc().category, self.FilterMeta.Categories[CategoryName], CategoryName } ) + if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == MUnit:GetDesc().category then + MUnitCategory = true + end + end + MUnitInclude = MUnitInclude and MUnitCategory + end + + if self.Filter.Types then + local MUnitType = false + for TypeID, TypeName in pairs( self.Filter.Types ) do + self:T3( { "Type:", MUnit:GetTypeName(), TypeName } ) + if TypeName == MUnit:GetTypeName() then + MUnitType = true + end + end + MUnitInclude = MUnitInclude and MUnitType + end + + if self.Filter.Countries then + local MUnitCountry = false + for CountryID, CountryName in pairs( self.Filter.Countries ) do + self:T3( { "Country:", MUnit:GetCountry(), CountryName } ) + if country.id[CountryName] == MUnit:GetCountry() then + MUnitCountry = true + end + end + MUnitInclude = MUnitInclude and MUnitCountry + end + + if self.Filter.UnitPrefixes then + local MUnitPrefix = false + for UnitPrefixId, UnitPrefix in pairs( self.Filter.UnitPrefixes ) do + self:T3( { "Prefix:", string.find( MUnit:GetName(), UnitPrefix, 1 ), UnitPrefix } ) + if string.find( MUnit:GetName(), UnitPrefix, 1 ) then + MUnitPrefix = true + end + end + MUnitInclude = MUnitInclude and MUnitPrefix + end + + self:T2( MUnitInclude ) + return MUnitInclude +end + + +--- SET_CLIENT + +--- SET_CLIENT class +-- @type SET_CLIENT +-- @extends Set#SET_BASE +SET_CLIENT = { + ClassName = "SET_CLIENT", + Clients = {}, + Filter = { + Coalitions = nil, + Categories = nil, + Types = nil, + Countries = nil, + ClientPrefixes = nil, + }, + FilterMeta = { + Coalitions = { + red = coalition.side.RED, + blue = coalition.side.BLUE, + neutral = coalition.side.NEUTRAL, + }, + Categories = { + plane = Unit.Category.AIRPLANE, + helicopter = Unit.Category.HELICOPTER, + ground = Unit.Category.GROUND_UNIT, + ship = Unit.Category.SHIP, + structure = Unit.Category.STRUCTURE, + }, + }, +} + + +--- Creates a new SET_CLIENT object, building a set of clients belonging to a coalitions, categories, countries, types or with defined prefix names. +-- @param #SET_CLIENT self +-- @return #SET_CLIENT +-- @usage +-- -- Define a new SET_CLIENT Object. This DBObject will contain a reference to all Clients. +-- DBObject = SET_CLIENT:New() +function SET_CLIENT:New() + -- Inherits from BASE + local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.CLIENTS ) ) + + return self +end + +--- Add CLIENT(s) to SET_CLIENT. +-- @param Set#SET_CLIENT self +-- @param #string AddClientNames A single name or an array of CLIENT names. +-- @return self +function SET_CLIENT:AddClientsByName( AddClientNames ) + + local AddClientNamesArray = ( type( AddClientNames ) == "table" ) and AddClientNames or { AddClientNames } + + for AddClientID, AddClientName in pairs( AddClientNamesArray ) do + self:Add( AddClientName, CLIENT:FindByName( AddClientName ) ) + end + + return self +end + +--- Remove CLIENT(s) from SET_CLIENT. +-- @param Set#SET_CLIENT self +-- @param Client#CLIENT RemoveClientNames A single name or an array of CLIENT names. +-- @return self +function SET_CLIENT:RemoveClientsByName( RemoveClientNames ) + + local RemoveClientNamesArray = ( type( RemoveClientNames ) == "table" ) and RemoveClientNames or { RemoveClientNames } + + for RemoveClientID, RemoveClientName in pairs( RemoveClientNamesArray ) do + self:Remove( RemoveClientName.ClientName ) + end + + return self +end + + +--- Finds a Client based on the Client Name. +-- @param #SET_CLIENT self +-- @param #string ClientName +-- @return Client#CLIENT The found Client. +function SET_CLIENT:FindClient( ClientName ) + + local ClientFound = self.Set[ClientName] + return ClientFound +end + + + +--- Builds a set of clients of coalitions. +-- Possible current coalitions are red, blue and neutral. +-- @param #SET_CLIENT self +-- @param #string Coalitions Can take the following values: "red", "blue", "neutral". +-- @return #SET_CLIENT self +function SET_CLIENT:FilterCoalitions( Coalitions ) + if not self.Filter.Coalitions then + self.Filter.Coalitions = {} + end + if type( Coalitions ) ~= "table" then + Coalitions = { Coalitions } + end + for CoalitionID, Coalition in pairs( Coalitions ) do + self.Filter.Coalitions[Coalition] = Coalition + end + return self +end + + +--- Builds a set of clients out of categories. +-- Possible current categories are plane, helicopter, ground, ship. +-- @param #SET_CLIENT self +-- @param #string Categories Can take the following values: "plane", "helicopter", "ground", "ship". +-- @return #SET_CLIENT self +function SET_CLIENT:FilterCategories( Categories ) + if not self.Filter.Categories then + self.Filter.Categories = {} + end + if type( Categories ) ~= "table" then + Categories = { Categories } + end + for CategoryID, Category in pairs( Categories ) do + self.Filter.Categories[Category] = Category + end + return self +end + + +--- Builds a set of clients of defined client types. +-- Possible current types are those types known within DCS world. +-- @param #SET_CLIENT self +-- @param #string Types Can take those type strings known within DCS world. +-- @return #SET_CLIENT self +function SET_CLIENT:FilterTypes( Types ) + if not self.Filter.Types then + self.Filter.Types = {} + end + if type( Types ) ~= "table" then + Types = { Types } + end + for TypeID, Type in pairs( Types ) do + self.Filter.Types[Type] = Type + end + return self +end + + +--- Builds a set of clients of defined countries. +-- Possible current countries are those known within DCS world. +-- @param #SET_CLIENT self +-- @param #string Countries Can take those country strings known within DCS world. +-- @return #SET_CLIENT self +function SET_CLIENT:FilterCountries( Countries ) + if not self.Filter.Countries then + self.Filter.Countries = {} + end + if type( Countries ) ~= "table" then + Countries = { Countries } + end + for CountryID, Country in pairs( Countries ) do + self.Filter.Countries[Country] = Country + end + return self +end + + +--- Builds a set of clients of defined client prefixes. +-- All the clients starting with the given prefixes will be included within the set. +-- @param #SET_CLIENT self +-- @param #string Prefixes The prefix of which the client name starts with. +-- @return #SET_CLIENT self +function SET_CLIENT:FilterPrefixes( Prefixes ) + if not self.Filter.ClientPrefixes then + self.Filter.ClientPrefixes = {} + end + if type( Prefixes ) ~= "table" then + Prefixes = { Prefixes } + end + for PrefixID, Prefix in pairs( Prefixes ) do + self.Filter.ClientPrefixes[Prefix] = Prefix + end + return self +end + + + + +--- Starts the filtering. +-- @param #SET_CLIENT self +-- @return #SET_CLIENT self +function SET_CLIENT:FilterStart() + + if _DATABASE then + self:_FilterStart() + end + + return self +end + +--- Handles the Database to check on an event (birth) that the Object was added in the Database. +-- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! +-- @param #SET_CLIENT self +-- @param Event#EVENTDATA Event +-- @return #string The name of the CLIENT +-- @return #table The CLIENT +function SET_CLIENT:AddInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Handles the Database to check on any event that Object exists in the Database. +-- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! +-- @param #SET_CLIENT self +-- @param Event#EVENTDATA Event +-- @return #string The name of the CLIENT +-- @return #table The CLIENT +function SET_CLIENT:FindInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Iterate the SET_CLIENT and call an interator function for each **alive** CLIENT, providing the CLIENT and optional parameters. +-- @param #SET_CLIENT self +-- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. +-- @return #SET_CLIENT self +function SET_CLIENT:ForEachClient( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set ) + + return self +end + +--- Iterate the SET_CLIENT and call an iterator function for each **alive** CLIENT presence completely in a @{Zone}, providing the CLIENT and optional parameters to the called function. +-- @param #SET_CLIENT self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. +-- @return #SET_CLIENT self +function SET_CLIENT:ForEachClientInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Client#CLIENT ClientObject + function( ZoneObject, ClientObject ) + if ClientObject:IsInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + +--- Iterate the SET_CLIENT and call an iterator function for each **alive** CLIENT presence not in a @{Zone}, providing the CLIENT and optional parameters to the called function. +-- @param #SET_CLIENT self +-- @param Zone#ZONE ZoneObject The Zone to be tested for. +-- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. +-- @return #SET_CLIENT self +function SET_CLIENT:ForEachClientNotInZone( ZoneObject, IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set, + --- @param Zone#ZONE_BASE ZoneObject + -- @param Client#CLIENT ClientObject + function( ZoneObject, ClientObject ) + if ClientObject:IsNotInZone( ZoneObject ) then + return true + else + return false + end + end, { ZoneObject } ) + + return self +end + +--- +-- @param #SET_CLIENT self +-- @param Client#CLIENT MClient +-- @return #SET_CLIENT self +function SET_CLIENT:IsIncludeObject( MClient ) + self:F2( MClient ) + + local MClientInclude = true + + if MClient then + local MClientName = MClient.UnitName + + if self.Filter.Coalitions then + local MClientCoalition = false + for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do + local ClientCoalitionID = _DATABASE:GetCoalitionFromClientTemplate( MClientName ) + self:T3( { "Coalition:", ClientCoalitionID, self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) + if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == ClientCoalitionID then + MClientCoalition = true + end + end + self:T( { "Evaluated Coalition", MClientCoalition } ) + MClientInclude = MClientInclude and MClientCoalition + end + + if self.Filter.Categories then + local MClientCategory = false + for CategoryID, CategoryName in pairs( self.Filter.Categories ) do + local ClientCategoryID = _DATABASE:GetCategoryFromClientTemplate( MClientName ) + self:T3( { "Category:", ClientCategoryID, self.FilterMeta.Categories[CategoryName], CategoryName } ) + if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == ClientCategoryID then + MClientCategory = true + end + end + self:T( { "Evaluated Category", MClientCategory } ) + MClientInclude = MClientInclude and MClientCategory + end + + if self.Filter.Types then + local MClientType = false + for TypeID, TypeName in pairs( self.Filter.Types ) do + self:T3( { "Type:", MClient:GetTypeName(), TypeName } ) + if TypeName == MClient:GetTypeName() then + MClientType = true + end + end + self:T( { "Evaluated Type", MClientType } ) + MClientInclude = MClientInclude and MClientType + end + + if self.Filter.Countries then + local MClientCountry = false + for CountryID, CountryName in pairs( self.Filter.Countries ) do + local ClientCountryID = _DATABASE:GetCountryFromClientTemplate(MClientName) + self:T3( { "Country:", ClientCountryID, country.id[CountryName], CountryName } ) + if country.id[CountryName] and country.id[CountryName] == ClientCountryID then + MClientCountry = true + end + end + self:T( { "Evaluated Country", MClientCountry } ) + MClientInclude = MClientInclude and MClientCountry + end + + if self.Filter.ClientPrefixes then + local MClientPrefix = false + for ClientPrefixId, ClientPrefix in pairs( self.Filter.ClientPrefixes ) do + self:T3( { "Prefix:", string.find( MClient.UnitName, ClientPrefix, 1 ), ClientPrefix } ) + if string.find( MClient.UnitName, ClientPrefix, 1 ) then + MClientPrefix = true + end + end + self:T( { "Evaluated Prefix", MClientPrefix } ) + MClientInclude = MClientInclude and MClientPrefix + end + end + + self:T2( MClientInclude ) + return MClientInclude +end + +--- SET_AIRBASE + +--- SET_AIRBASE class +-- @type SET_AIRBASE +-- @extends Set#SET_BASE +SET_AIRBASE = { + ClassName = "SET_AIRBASE", + Airbases = {}, + Filter = { + Coalitions = nil, + }, + FilterMeta = { + Coalitions = { + red = coalition.side.RED, + blue = coalition.side.BLUE, + neutral = coalition.side.NEUTRAL, + }, + Categories = { + airdrome = Airbase.Category.AIRDROME, + helipad = Airbase.Category.HELIPAD, + ship = Airbase.Category.SHIP, + }, + }, +} + + +--- Creates a new SET_AIRBASE object, building a set of airbases belonging to a coalitions and categories. +-- @param #SET_AIRBASE self +-- @return #SET_AIRBASE self +-- @usage +-- -- Define a new SET_AIRBASE Object. The DatabaseSet will contain a reference to all Airbases. +-- DatabaseSet = SET_AIRBASE:New() +function SET_AIRBASE:New() + -- Inherits from BASE + local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.AIRBASES ) ) + + return self +end + +--- Add AIRBASEs to SET_AIRBASE. +-- @param Set#SET_AIRBASE self +-- @param #string AddAirbaseNames A single name or an array of AIRBASE names. +-- @return self +function SET_AIRBASE:AddAirbasesByName( AddAirbaseNames ) + + local AddAirbaseNamesArray = ( type( AddAirbaseNames ) == "table" ) and AddAirbaseNames or { AddAirbaseNames } + + for AddAirbaseID, AddAirbaseName in pairs( AddAirbaseNamesArray ) do + self:Add( AddAirbaseName, AIRBASE:FindByName( AddAirbaseName ) ) + end + + return self +end + +--- Remove AIRBASEs from SET_AIRBASE. +-- @param Set#SET_AIRBASE self +-- @param Airbase#AIRBASE RemoveAirbaseNames A single name or an array of AIRBASE names. +-- @return self +function SET_AIRBASE:RemoveAirbasesByName( RemoveAirbaseNames ) + + local RemoveAirbaseNamesArray = ( type( RemoveAirbaseNames ) == "table" ) and RemoveAirbaseNames or { RemoveAirbaseNames } + + for RemoveAirbaseID, RemoveAirbaseName in pairs( RemoveAirbaseNamesArray ) do + self:Remove( RemoveAirbaseName.AirbaseName ) + end + + return self +end + + +--- Finds a Airbase based on the Airbase Name. +-- @param #SET_AIRBASE self +-- @param #string AirbaseName +-- @return Airbase#AIRBASE The found Airbase. +function SET_AIRBASE:FindAirbase( AirbaseName ) + + local AirbaseFound = self.Set[AirbaseName] + return AirbaseFound +end + + + +--- Builds a set of airbases of coalitions. +-- Possible current coalitions are red, blue and neutral. +-- @param #SET_AIRBASE self +-- @param #string Coalitions Can take the following values: "red", "blue", "neutral". +-- @return #SET_AIRBASE self +function SET_AIRBASE:FilterCoalitions( Coalitions ) + if not self.Filter.Coalitions then + self.Filter.Coalitions = {} + end + if type( Coalitions ) ~= "table" then + Coalitions = { Coalitions } + end + for CoalitionID, Coalition in pairs( Coalitions ) do + self.Filter.Coalitions[Coalition] = Coalition + end + return self +end + + +--- Builds a set of airbases out of categories. +-- Possible current categories are plane, helicopter, ground, ship. +-- @param #SET_AIRBASE self +-- @param #string Categories Can take the following values: "airdrome", "helipad", "ship". +-- @return #SET_AIRBASE self +function SET_AIRBASE:FilterCategories( Categories ) + if not self.Filter.Categories then + self.Filter.Categories = {} + end + if type( Categories ) ~= "table" then + Categories = { Categories } + end + for CategoryID, Category in pairs( Categories ) do + self.Filter.Categories[Category] = Category + end + return self +end + +--- Starts the filtering. +-- @param #SET_AIRBASE self +-- @return #SET_AIRBASE self +function SET_AIRBASE:FilterStart() + + if _DATABASE then + self:_FilterStart() + end + + return self +end + + +--- Handles the Database to check on an event (birth) that the Object was added in the Database. +-- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! +-- @param #SET_AIRBASE self +-- @param Event#EVENTDATA Event +-- @return #string The name of the AIRBASE +-- @return #table The AIRBASE +function SET_AIRBASE:AddInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Handles the Database to check on any event that Object exists in the Database. +-- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! +-- @param #SET_AIRBASE self +-- @param Event#EVENTDATA Event +-- @return #string The name of the AIRBASE +-- @return #table The AIRBASE +function SET_AIRBASE:FindInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Iterate the SET_AIRBASE and call an interator function for each AIRBASE, providing the AIRBASE and optional parameters. +-- @param #SET_AIRBASE self +-- @param #function IteratorFunction The function that will be called when there is an alive AIRBASE in the SET_AIRBASE. The function needs to accept a AIRBASE parameter. +-- @return #SET_AIRBASE self +function SET_AIRBASE:ForEachAirbase( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set ) + + return self +end + +--- Iterate the SET_AIRBASE while identifying the nearest @{Airbase#AIRBASE} from a @{Point#POINT_VEC2}. +-- @param #SET_AIRBASE self +-- @param Point#POINT_VEC2 PointVec2 A @{Point#POINT_VEC2} object from where to evaluate the closest @{Airbase#AIRBASE}. +-- @return Airbase#AIRBASE The closest @{Airbase#AIRBASE}. +function SET_AIRBASE:FindNearestAirbaseFromPointVec2( PointVec2 ) + self:F2( PointVec2 ) + + local NearestAirbase = self:FindNearestObjectFromPointVec2( PointVec2 ) + return NearestAirbase +end + + + +--- +-- @param #SET_AIRBASE self +-- @param Airbase#AIRBASE MAirbase +-- @return #SET_AIRBASE self +function SET_AIRBASE:IsIncludeObject( MAirbase ) + self:F2( MAirbase ) + + local MAirbaseInclude = true + + if MAirbase then + local MAirbaseName = MAirbase:GetName() + + if self.Filter.Coalitions then + local MAirbaseCoalition = false + for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do + local AirbaseCoalitionID = _DATABASE:GetCoalitionFromAirbase( MAirbaseName ) + self:T3( { "Coalition:", AirbaseCoalitionID, self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) + if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == AirbaseCoalitionID then + MAirbaseCoalition = true + end + end + self:T( { "Evaluated Coalition", MAirbaseCoalition } ) + MAirbaseInclude = MAirbaseInclude and MAirbaseCoalition + end + + if self.Filter.Categories then + local MAirbaseCategory = false + for CategoryID, CategoryName in pairs( self.Filter.Categories ) do + local AirbaseCategoryID = _DATABASE:GetCategoryFromAirbase( MAirbaseName ) + self:T3( { "Category:", AirbaseCategoryID, self.FilterMeta.Categories[CategoryName], CategoryName } ) + if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == AirbaseCategoryID then + MAirbaseCategory = true + end + end + self:T( { "Evaluated Category", MAirbaseCategory } ) + MAirbaseInclude = MAirbaseInclude and MAirbaseCategory + end + end + + self:T2( MAirbaseInclude ) + return MAirbaseInclude +end +--- This module contains the POINT classes. +-- +-- 1) @{Point#POINT_VEC3} class, extends @{Base#BASE} +-- =============================================== +-- The @{Point#POINT_VEC3} class defines a 3D point in the simulator. +-- +-- 1.1) POINT_VEC3 constructor +-- --------------------------- +-- +-- A new POINT instance can be created with: +-- +-- * @{#POINT_VEC3.New}(): a 3D point. +-- +-- 2) @{Point#POINT_VEC2} class, extends @{Point#POINT_VEC3} +-- ========================================================= +-- The @{Point#POINT_VEC2} class defines a 2D point in the simulator. The height coordinate (if needed) will be the land height + an optional added height specified. +-- +-- 2.1) POINT_VEC2 constructor +-- --------------------------- +-- +-- A new POINT instance can be created with: +-- +-- * @{#POINT_VEC2.New}(): a 2D point. +-- +-- @module Point +-- @author FlightControl + +--- The POINT_VEC3 class +-- @type POINT_VEC3 +-- @extends Base#BASE +-- @field #POINT_VEC3.SmokeColor SmokeColor +-- @field #POINT_VEC3.FlareColor FlareColor +-- @field #POINT_VEC3.RoutePointAltType RoutePointAltType +-- @field #POINT_VEC3.RoutePointType RoutePointType +-- @field #POINT_VEC3.RoutePointAction RoutePointAction +POINT_VEC3 = { + ClassName = "POINT_VEC3", + SmokeColor = { + Green = trigger.smokeColor.Green, + Red = trigger.smokeColor.Red, + White = trigger.smokeColor.White, + Orange = trigger.smokeColor.Orange, + Blue = trigger.smokeColor.Blue + }, + FlareColor = { + Green = trigger.flareColor.Green, + Red = trigger.flareColor.Red, + White = trigger.flareColor.White, + Yellow = trigger.flareColor.Yellow + }, + RoutePointAltType = { + BARO = "BARO", + }, + RoutePointType = { + TurningPoint = "Turning Point", + }, + RoutePointAction = { + TurningPoint = "Turning Point", + }, +} + + +--- SmokeColor +-- @type POINT_VEC3.SmokeColor +-- @field Green +-- @field Red +-- @field White +-- @field Orange +-- @field Blue + + + +--- FlareColor +-- @type POINT_VEC3.FlareColor +-- @field Green +-- @field Red +-- @field White +-- @field Yellow + + + +--- RoutePoint AltTypes +-- @type POINT_VEC3.RoutePointAltType +-- @field BARO "BARO" + + + +--- RoutePoint Types +-- @type POINT_VEC3.RoutePointType +-- @field TurningPoint "Turning Point" + + + +--- RoutePoint Actions +-- @type POINT_VEC3.RoutePointAction +-- @field TurningPoint "Turning Point" + + + +-- Constructor. + +--- Create a new POINT_VEC3 object. +-- @param #POINT_VEC3 self +-- @param DCSTypes#Distance x The x coordinate of the Vec3 point, pointing to the North. +-- @param DCSTypes#Distance y The y coordinate of the Vec3 point, pointing Upwards. +-- @param DCSTypes#Distance z The z coordinate of the Vec3 point, pointing to the Right. +-- @return Point#POINT_VEC3 self +function POINT_VEC3:New( x, y, z ) + + local self = BASE:Inherit( self, BASE:New() ) + self.PointVec3 = { x = x, y = y, z = z } + self:F2( self.PointVec3 ) + return self +end + + +--- Build an air type route point. +-- @param #POINT_VEC3 self +-- @param #POINT_VEC3.RoutePointAltType AltType The altitude type. +-- @param #POINT_VEC3.RoutePointType Type The route point type. +-- @param #POINT_VEC3.RoutePointAction Action The route point action. +-- @param DCSTypes#Speed Speed Airspeed in km/h. +-- @param #boolean SpeedLocked true means the speed is locked. +-- @return #table The route point. +function POINT_VEC3:RoutePointAir( AltType, Type, Action, Speed, SpeedLocked ) + self:F2( { AltType, Type, Action, Speed, SpeedLocked } ) + + local RoutePoint = {} + RoutePoint.x = self.PointVec3.x + RoutePoint.y = self.PointVec3.z + RoutePoint.alt = self.PointVec3.y + RoutePoint.alt_type = AltType + + RoutePoint.type = Type + RoutePoint.action = Action + + RoutePoint.speed = Speed / 3.6 + RoutePoint.speed_locked = true + +-- ["task"] = +-- { +-- ["id"] = "ComboTask", +-- ["params"] = +-- { +-- ["tasks"] = +-- { +-- }, -- end of ["tasks"] +-- }, -- end of ["params"] +-- }, -- end of ["task"] + + + RoutePoint.task = {} + RoutePoint.task.id = "ComboTask" + RoutePoint.task.params = {} + RoutePoint.task.params.tasks = {} + + + return RoutePoint +end + + +--- Smokes the point in a color. +-- @param #POINT_VEC3 self +-- @param Point#POINT_VEC3.SmokeColor SmokeColor +function POINT_VEC3:Smoke( SmokeColor ) + self:F2( { SmokeColor, self.PointVec3 } ) + trigger.action.smoke( self.PointVec3, SmokeColor ) +end + +--- Smoke the POINT_VEC3 Green. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeGreen() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.Green ) +end + +--- Smoke the POINT_VEC3 Red. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeRed() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.Red ) +end + +--- Smoke the POINT_VEC3 White. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeWhite() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.White ) +end + +--- Smoke the POINT_VEC3 Orange. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeOrange() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.Orange ) +end + +--- Smoke the POINT_VEC3 Blue. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeBlue() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.Blue ) +end + +--- Flares the point in a color. +-- @param #POINT_VEC3 self +-- @param Point#POINT_VEC3.FlareColor +-- @param DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. +function POINT_VEC3:Flare( FlareColor, Azimuth ) + self:F2( { FlareColor, self.PointVec3 } ) + trigger.action.signalFlare( self.PointVec3, FlareColor, Azimuth and Azimuth or 0 ) +end + +--- Flare the POINT_VEC3 White. +-- @param #POINT_VEC3 self +-- @param DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. +function POINT_VEC3:FlareWhite( Azimuth ) + self:F2( Azimuth ) + self:Flare( POINT_VEC3.FlareColor.White, Azimuth ) +end + +--- Flare the POINT_VEC3 Yellow. +-- @param #POINT_VEC3 self +-- @param DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. +function POINT_VEC3:FlareYellow( Azimuth ) + self:F2( Azimuth ) + self:Flare( POINT_VEC3.FlareColor.Yellow, Azimuth ) +end + +--- Flare the POINT_VEC3 Green. +-- @param #POINT_VEC3 self +-- @param DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. +function POINT_VEC3:FlareGreen( Azimuth ) + self:F2( Azimuth ) + self:Flare( POINT_VEC3.FlareColor.Green, Azimuth ) +end + +--- Flare the POINT_VEC3 Red. +-- @param #POINT_VEC3 self +function POINT_VEC3:FlareRed( Azimuth ) + self:F2( Azimuth ) + self:Flare( POINT_VEC3.FlareColor.Red, Azimuth ) +end + + +--- The POINT_VEC2 class +-- @type POINT_VEC2 +-- @field DCSTypes#Vec2 PointVec2 +-- @extends Point#POINT_VEC3 +POINT_VEC2 = { + ClassName = "POINT_VEC2", + } + +--- Create a new POINT_VEC2 object. +-- @param #POINT_VEC2 self +-- @param DCSTypes#Distance x The x coordinate of the Vec3 point, pointing to the North. +-- @param DCSTypes#Distance y The y coordinate of the Vec3 point, pointing to the Right. +-- @param DCSTypes#Distance LandHeightAdd (optional) The default height if required to be evaluated will be the land height of the x, y coordinate. You can specify an extra height to be added to the land height. +-- @return Point#POINT_VEC2 +function POINT_VEC2:New( x, y, LandHeightAdd ) + + local LandHeight = land.getHeight( { ["x"] = x, ["y"] = y } ) + if LandHeightAdd then + LandHeight = LandHeight + LandHeightAdd + end + + local self = BASE:Inherit( self, POINT_VEC3:New( x, LandHeight, y ) ) + self:F2( { x, y, LandHeightAdd } ) + + self.PointVec2 = { x = x, y = y } + + return self +end + +--- Calculate the distance from a reference @{Point#POINT_VEC2}. +-- @param #POINT_VEC2 self +-- @param #POINT_VEC2 PointVec2Reference The reference @{Point#POINT_VEC2}. +-- @return DCSTypes#Distance The distance from the reference @{Point#POINT_VEC2} in meters. +function POINT_VEC2:DistanceFromPointVec2( PointVec2Reference ) + self:F2( PointVec2Reference ) + + local Distance = ( ( PointVec2Reference.PointVec2.x - self.PointVec2.x ) ^ 2 + ( PointVec2Reference.PointVec2.y - self.PointVec2.y ) ^2 ) ^0.5 + + self:T2( Distance ) + return Distance +end + +--- Calculate the distance from a reference @{DCSTypes#Vec2}. +-- @param #POINT_VEC2 self +-- @param DCSTypes#Vec2 Vec2Reference The reference @{DCSTypes#Vec2}. +-- @return DCSTypes#Distance The distance from the reference @{DCSTypes#Vec2} in meters. +function POINT_VEC2:DistanceFromVec2( Vec2Reference ) + self:F2( Vec2Reference ) + + local Distance = ( ( Vec2Reference.x - self.PointVec2.x ) ^ 2 + ( Vec2Reference.y - self.PointVec2.y ) ^2 ) ^0.5 + + self:T2( Distance ) + return Distance +end + + +--- The main include file for the MOOSE system. + +Include.File( "Routines" ) +Include.File( "Base" ) +Include.File( "Object" ) +Include.File( "Identifiable" ) +Include.File( "Positionable" ) +Include.File( "Controllable" ) +Include.File( "Scheduler" ) +Include.File( "Event" ) +Include.File( "Menu" ) +Include.File( "Group" ) +Include.File( "Unit" ) +Include.File( "Zone" ) +Include.File( "Client" ) +Include.File( "Static" ) +Include.File( "Airbase" ) +Include.File( "Database" ) +Include.File( "Set" ) +Include.File( "Point" ) Include.File( "Moose" ) +Include.File( "Scoring" ) +Include.File( "Cargo" ) +Include.File( "Message" ) +Include.File( "Stage" ) +Include.File( "Task" ) +Include.File( "GoHomeTask" ) +Include.File( "DestroyBaseTask" ) +Include.File( "DestroyGroupsTask" ) +Include.File( "DestroyRadarsTask" ) +Include.File( "DestroyUnitTypesTask" ) +Include.File( "PickupTask" ) +Include.File( "DeployTask" ) +Include.File( "NoTask" ) +Include.File( "RouteTask" ) +Include.File( "Mission" ) +Include.File( "CleanUp" ) +Include.File( "Spawn" ) +Include.File( "Movement" ) +Include.File( "Sead" ) +Include.File( "Escort" ) +Include.File( "MissileTrainer" ) +Include.File( "PatrolZone" ) +Include.File( "AIBalancer" ) +Include.File( "AirbasePolice" ) +Include.File( "Detection" ) +Include.File( "FAC" ) -BASE:TraceOnOff( true ) +-- The order of the declarations is important here. Don't touch it. + +--- Declare the event dispatcher based on the EVENT class +_EVENTDISPATCHER = EVENT:New() -- #EVENT + +--- Declare the main database object, which is used internally by the MOOSE classes. +_DATABASE = DATABASE:New() -- Database#DATABASE + +--- Scoring system for MOOSE. +-- This scoring class calculates the hits and kills that players make within a simulation session. +-- Scoring is calculated using a defined algorithm. +-- With a small change in MissionScripting.lua, the scoring can also be logged in a CSV file, that can then be uploaded +-- to a database or a BI tool to publish the scoring results to the player community. +-- @module Scoring +-- @author FlightControl + + +--- The Scoring class +-- @type SCORING +-- @field Players A collection of the current players that have joined the game. +-- @extends Base#BASE +SCORING = { + ClassName = "SCORING", + ClassID = 0, + Players = {}, +} + +local _SCORINGCoalition = + { + [1] = "Red", + [2] = "Blue", + } + +local _SCORINGCategory = + { + [Unit.Category.AIRPLANE] = "Plane", + [Unit.Category.HELICOPTER] = "Helicopter", + [Unit.Category.GROUND_UNIT] = "Vehicle", + [Unit.Category.SHIP] = "Ship", + [Unit.Category.STRUCTURE] = "Structure", + } + +--- Creates a new SCORING object to administer the scoring achieved by players. +-- @param #SCORING self +-- @param #string GameName The name of the game. This name is also logged in the CSV score file. +-- @return #SCORING self +-- @usage +-- -- Define a new scoring object for the mission Gori Valley. +-- ScoringObject = SCORING:New( "Gori Valley" ) +function SCORING:New( GameName ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + if GameName then + self.GameName = GameName + else + error( "A game name must be given to register the scoring results" ) + end + + + _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) + _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) + _EVENTDISPATCHER:OnHit( self._EventOnHit, self ) + + --self.SchedulerId = routines.scheduleFunction( SCORING._FollowPlayersScheduled, { self }, 0, 5 ) + self.SchedulerId = SCHEDULER:New( self, self._FollowPlayersScheduled, {}, 0, 5 ) + + self:ScoreMenu() + + return self + +end + +--- Creates a score radio menu. Can be accessed using Radio -> F10. +-- @param #SCORING self +-- @return #SCORING self +function SCORING:ScoreMenu() + self.Menu = SUBMENU:New( 'Scoring' ) + self.AllScoresMenu = COMMANDMENU:New( 'Score All Active Players', self.Menu, SCORING.ReportScoreAll, self ) + --- = COMMANDMENU:New('Your Current Score', ReportScore, SCORING.ReportScorePlayer, self ) + return self +end + +--- Follows new players entering Clients within the DCSRTE. +-- TODO: Need to see if i can catch this also with an event. It will eliminate the schedule ... +function SCORING:_FollowPlayersScheduled() + self:F3( "_FollowPlayersScheduled" ) + + local ClientUnit = 0 + local CoalitionsData = { AlivePlayersRed = coalition.getPlayers(coalition.side.RED), AlivePlayersBlue = coalition.getPlayers(coalition.side.BLUE) } + local unitId + local unitData + local AlivePlayerUnits = {} + + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + self:T3( { "_FollowPlayersScheduled", CoalitionData } ) + for UnitId, UnitData in pairs( CoalitionData ) do + self:_AddPlayerFromUnit( UnitData ) + end + end + + return true +end + + +--- Track DEAD or CRASH events for the scoring. +-- @param #SCORING self +-- @param Event#EVENTDATA Event +function SCORING:_EventOnDeadOrCrash( Event ) + self:F( { Event } ) + + local TargetUnit = nil + local TargetGroup = nil + local TargetUnitName = "" + local TargetGroupName = "" + local TargetPlayerName = "" + local TargetCoalition = nil + local TargetCategory = nil + local TargetType = nil + local TargetUnitCoalition = nil + local TargetUnitCategory = nil + local TargetUnitType = nil + + if Event.IniDCSUnit then + + TargetUnit = Event.IniDCSUnit + TargetUnitName = Event.IniDCSUnitName + TargetGroup = Event.IniDCSGroup + TargetGroupName = Event.IniDCSGroupName + TargetPlayerName = TargetUnit:getPlayerName() + + TargetCoalition = TargetUnit:getCoalition() + --TargetCategory = TargetUnit:getCategory() + TargetCategory = TargetUnit:getDesc().category -- Workaround + TargetType = TargetUnit:getTypeName() + + TargetUnitCoalition = _SCORINGCoalition[TargetCoalition] + TargetUnitCategory = _SCORINGCategory[TargetCategory] + TargetUnitType = TargetType + + self:T( { TargetUnitName, TargetGroupName, TargetPlayerName, TargetCoalition, TargetCategory, TargetType } ) + end + + for PlayerName, PlayerData in pairs( self.Players ) do + if PlayerData then -- This should normally not happen, but i'll test it anyway. + self:T( "Something got killed" ) + + -- Some variables + local InitUnitName = PlayerData.UnitName + local InitUnitType = PlayerData.UnitType + local InitCoalition = PlayerData.UnitCoalition + local InitCategory = PlayerData.UnitCategory + local InitUnitCoalition = _SCORINGCoalition[InitCoalition] + local InitUnitCategory = _SCORINGCategory[InitCategory] + + self:T( { InitUnitName, InitUnitType, InitUnitCoalition, InitCoalition, InitUnitCategory, InitCategory } ) + + -- What is he hitting? + if TargetCategory then + if PlayerData and PlayerData.Hit and PlayerData.Hit[TargetCategory] and PlayerData.Hit[TargetCategory][TargetUnitName] then -- Was there a hit for this unit for this player before registered??? + if not PlayerData.Kill[TargetCategory] then + PlayerData.Kill[TargetCategory] = {} + end + if not PlayerData.Kill[TargetCategory][TargetType] then + PlayerData.Kill[TargetCategory][TargetType] = {} + PlayerData.Kill[TargetCategory][TargetType].Score = 0 + PlayerData.Kill[TargetCategory][TargetType].ScoreKill = 0 + PlayerData.Kill[TargetCategory][TargetType].Penalty = 0 + PlayerData.Kill[TargetCategory][TargetType].PenaltyKill = 0 + end + + if InitCoalition == TargetCoalition then + PlayerData.Penalty = PlayerData.Penalty + 25 + PlayerData.Kill[TargetCategory][TargetType].Penalty = PlayerData.Kill[TargetCategory][TargetType].Penalty + 25 + PlayerData.Kill[TargetCategory][TargetType].PenaltyKill = PlayerData.Kill[TargetCategory][TargetType].PenaltyKill + 1 + MESSAGE:New( "Player '" .. PlayerName .. "' killed a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. + PlayerData.Kill[TargetCategory][TargetType].PenaltyKill .. " times. Penalty: -" .. PlayerData.Kill[TargetCategory][TargetType].Penalty .. + ". Score Total:" .. PlayerData.Score - PlayerData.Penalty, + 5 ):ToAll() + self:ScoreCSV( PlayerName, "KILL_PENALTY", 1, -125, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) + else + PlayerData.Score = PlayerData.Score + 10 + PlayerData.Kill[TargetCategory][TargetType].Score = PlayerData.Kill[TargetCategory][TargetType].Score + 10 + PlayerData.Kill[TargetCategory][TargetType].ScoreKill = PlayerData.Kill[TargetCategory][TargetType].ScoreKill + 1 + MESSAGE:New( "Player '" .. PlayerName .. "' killed an enemy " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. + PlayerData.Kill[TargetCategory][TargetType].ScoreKill .. " times. Score: " .. PlayerData.Kill[TargetCategory][TargetType].Score .. + ". Score Total:" .. PlayerData.Score - PlayerData.Penalty, + 5 ):ToAll() + self:ScoreCSV( PlayerName, "KILL_SCORE", 1, 10, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) + end + end + end + end + end +end + + + +--- Add a new player entering a Unit. +function SCORING:_AddPlayerFromUnit( UnitData ) + self:F( UnitData ) + + if UnitData and UnitData:isExist() then + local UnitName = UnitData:getName() + local PlayerName = UnitData:getPlayerName() + local UnitDesc = UnitData:getDesc() + local UnitCategory = UnitDesc.category + local UnitCoalition = UnitData:getCoalition() + local UnitTypeName = UnitData:getTypeName() + + self:T( { PlayerName, UnitName, UnitCategory, UnitCoalition, UnitTypeName } ) + + if self.Players[PlayerName] == nil then -- I believe this is the place where a Player gets a life in a mission when he enters a unit ... + self.Players[PlayerName] = {} + self.Players[PlayerName].Hit = {} + self.Players[PlayerName].Kill = {} + self.Players[PlayerName].Mission = {} + + -- for CategoryID, CategoryName in pairs( SCORINGCategory ) do + -- self.Players[PlayerName].Hit[CategoryID] = {} + -- self.Players[PlayerName].Kill[CategoryID] = {} + -- end + self.Players[PlayerName].HitPlayers = {} + self.Players[PlayerName].HitUnits = {} + self.Players[PlayerName].Score = 0 + self.Players[PlayerName].Penalty = 0 + self.Players[PlayerName].PenaltyCoalition = 0 + self.Players[PlayerName].PenaltyWarning = 0 + end + + if not self.Players[PlayerName].UnitCoalition then + self.Players[PlayerName].UnitCoalition = UnitCoalition + else + if self.Players[PlayerName].UnitCoalition ~= UnitCoalition then + self.Players[PlayerName].Penalty = self.Players[PlayerName].Penalty + 50 + self.Players[PlayerName].PenaltyCoalition = self.Players[PlayerName].PenaltyCoalition + 1 + MESSAGE:New( "Player '" .. PlayerName .. "' changed coalition from " .. _SCORINGCoalition[self.Players[PlayerName].UnitCoalition] .. " to " .. _SCORINGCoalition[UnitCoalition] .. + "(changed " .. self.Players[PlayerName].PenaltyCoalition .. " times the coalition). 50 Penalty points added.", + 2 + ):ToAll() + self:ScoreCSV( PlayerName, "COALITION_PENALTY", 1, -50, self.Players[PlayerName].UnitName, _SCORINGCoalition[self.Players[PlayerName].UnitCoalition], _SCORINGCategory[self.Players[PlayerName].UnitCategory], self.Players[PlayerName].UnitType, + UnitName, _SCORINGCoalition[UnitCoalition], _SCORINGCategory[UnitCategory], UnitData:getTypeName() ) + end + end + self.Players[PlayerName].UnitName = UnitName + self.Players[PlayerName].UnitCoalition = UnitCoalition + self.Players[PlayerName].UnitCategory = UnitCategory + self.Players[PlayerName].UnitType = UnitTypeName + + if self.Players[PlayerName].Penalty > 100 then + if self.Players[PlayerName].PenaltyWarning < 1 then + MESSAGE:New( "Player '" .. PlayerName .. "': WARNING! If you continue to commit FRATRICIDE and have a PENALTY score higher than 150, you will be COURT MARTIALED and DISMISSED from this mission! \nYour total penalty is: " .. self.Players[PlayerName].Penalty, + 30 + ):ToAll() + self.Players[PlayerName].PenaltyWarning = self.Players[PlayerName].PenaltyWarning + 1 + end + end + + if self.Players[PlayerName].Penalty > 150 then + ClientGroup = GROUP:NewFromDCSUnit( UnitData ) + ClientGroup:Destroy() + MESSAGE:New( "Player '" .. PlayerName .. "' committed FRATRICIDE, he will be COURT MARTIALED and is DISMISSED from this mission!", + 10 + ):ToAll() + end + + end +end + + +--- Registers Scores the players completing a Mission Task. +function SCORING:_AddMissionTaskScore( PlayerUnit, MissionName, Score ) + self:F( { PlayerUnit, MissionName, Score } ) + + local PlayerName = PlayerUnit:getPlayerName() + + if not self.Players[PlayerName].Mission[MissionName] then + self.Players[PlayerName].Mission[MissionName] = {} + self.Players[PlayerName].Mission[MissionName].ScoreTask = 0 + self.Players[PlayerName].Mission[MissionName].ScoreMission = 0 + end + + self:T( PlayerName ) + self:T( self.Players[PlayerName].Mission[MissionName] ) + + self.Players[PlayerName].Score = self.Players[PlayerName].Score + Score + self.Players[PlayerName].Mission[MissionName].ScoreTask = self.Players[PlayerName].Mission[MissionName].ScoreTask + Score + + MESSAGE:New( "Player '" .. PlayerName .. "' has finished another Task in Mission '" .. MissionName .. "'. " .. + Score .. " Score points added.", + 20 ):ToAll() + + self:ScoreCSV( PlayerName, "TASK_" .. MissionName:gsub( ' ', '_' ), 1, Score, PlayerUnit:getName() ) +end + + +--- Registers Mission Scores for possible multiple players that contributed in the Mission. +function SCORING:_AddMissionScore( MissionName, Score ) + self:F( { MissionName, Score } ) + + for PlayerName, PlayerData in pairs( self.Players ) do + + if PlayerData.Mission[MissionName] then + PlayerData.Score = PlayerData.Score + Score + PlayerData.Mission[MissionName].ScoreMission = PlayerData.Mission[MissionName].ScoreMission + Score + MESSAGE:New( "Player '" .. PlayerName .. "' has finished Mission '" .. MissionName .. "'. " .. + Score .. " Score points added.", + 20 ):ToAll() + self:ScoreCSV( PlayerName, "MISSION_" .. MissionName:gsub( ' ', '_' ), 1, Score ) + end + end +end + +--- Handles the OnHit event for the scoring. +-- @param #SCORING self +-- @param Event#EVENTDATA Event +function SCORING:_EventOnHit( Event ) + self:F( { Event } ) + + local InitUnit = nil + local InitUnitName = "" + local InitGroup = nil + local InitGroupName = "" + local InitPlayerName = nil + + local InitCoalition = nil + local InitCategory = nil + local InitType = nil + local InitUnitCoalition = nil + local InitUnitCategory = nil + local InitUnitType = nil + + local TargetUnit = nil + local TargetUnitName = "" + local TargetGroup = nil + local TargetGroupName = "" + local TargetPlayerName = "" + + local TargetCoalition = nil + local TargetCategory = nil + local TargetType = nil + local TargetUnitCoalition = nil + local TargetUnitCategory = nil + local TargetUnitType = nil + + if Event.IniDCSUnit then + + InitUnit = Event.IniDCSUnit + InitUnitName = Event.IniDCSUnitName + InitGroup = Event.IniDCSGroup + InitGroupName = Event.IniDCSGroupName + InitPlayerName = InitUnit:getPlayerName() + + InitCoalition = InitUnit:getCoalition() + --TODO: Workaround Client DCS Bug + --InitCategory = InitUnit:getCategory() + InitCategory = InitUnit:getDesc().category + InitType = InitUnit:getTypeName() + + InitUnitCoalition = _SCORINGCoalition[InitCoalition] + InitUnitCategory = _SCORINGCategory[InitCategory] + InitUnitType = InitType + + self:T( { InitUnitName, InitGroupName, InitPlayerName, InitCoalition, InitCategory, InitType , InitUnitCoalition, InitUnitCategory, InitUnitType } ) + end + + + if Event.TgtDCSUnit then + + TargetUnit = Event.TgtDCSUnit + TargetUnitName = Event.TgtDCSUnitName + TargetGroup = Event.TgtDCSGroup + TargetGroupName = Event.TgtDCSGroupName + TargetPlayerName = TargetUnit:getPlayerName() + + TargetCoalition = TargetUnit:getCoalition() + --TODO: Workaround Client DCS Bug + --TargetCategory = TargetUnit:getCategory() + TargetCategory = TargetUnit:getDesc().category + TargetType = TargetUnit:getTypeName() + + TargetUnitCoalition = _SCORINGCoalition[TargetCoalition] + TargetUnitCategory = _SCORINGCategory[TargetCategory] + TargetUnitType = TargetType + + self:T( { TargetUnitName, TargetGroupName, TargetPlayerName, TargetCoalition, TargetCategory, TargetType, TargetUnitCoalition, TargetUnitCategory, TargetUnitType } ) + end + + if InitPlayerName ~= nil then -- It is a player that is hitting something + self:_AddPlayerFromUnit( InitUnit ) + if self.Players[InitPlayerName] then -- This should normally not happen, but i'll test it anyway. + if TargetPlayerName ~= nil then -- It is a player hitting another player ... + self:_AddPlayerFromUnit( TargetUnit ) + self.Players[InitPlayerName].HitPlayers = self.Players[InitPlayerName].HitPlayers + 1 + end + + self:T( "Hitting Something" ) + -- What is he hitting? + if TargetCategory then + if not self.Players[InitPlayerName].Hit[TargetCategory] then + self.Players[InitPlayerName].Hit[TargetCategory] = {} + end + if not self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName] then + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName] = {} + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score = 0 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty = 0 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit = 0 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit = 0 + end + local Score = 0 + if InitCoalition == TargetCoalition then + self.Players[InitPlayerName].Penalty = self.Players[InitPlayerName].Penalty + 10 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty + 10 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit + 1 + MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit .. " times. Penalty: -" .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty .. + ". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty, + 2 + ):ToAll() + self:ScoreCSV( InitPlayerName, "HIT_PENALTY", 1, -25, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) + else + self.Players[InitPlayerName].Score = self.Players[InitPlayerName].Score + 10 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score + 1 + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit + 1 + MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a target " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. + self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit .. " times. Score: " .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score .. + ". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty, + 2 + ):ToAll() + self:ScoreCSV( InitPlayerName, "HIT_SCORE", 1, 1, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) + end + end + end + elseif InitPlayerName == nil then -- It is an AI hitting a player??? + + end +end + + +function SCORING:ReportScoreAll() + + env.info( "Hello World " ) + + local ScoreMessage = "" + local PlayerMessage = "" + + self:T( "Score Report" ) + + for PlayerName, PlayerData in pairs( self.Players ) do + if PlayerData then -- This should normally not happen, but i'll test it anyway. + self:T( "Score Player: " .. PlayerName ) + + -- Some variables + local InitUnitCoalition = _SCORINGCoalition[PlayerData.UnitCoalition] + local InitUnitCategory = _SCORINGCategory[PlayerData.UnitCategory] + local InitUnitType = PlayerData.UnitType + local InitUnitName = PlayerData.UnitName + + local PlayerScore = 0 + local PlayerPenalty = 0 + + ScoreMessage = ":\n" + + local ScoreMessageHits = "" + + for CategoryID, CategoryName in pairs( _SCORINGCategory ) do + self:T( CategoryName ) + if PlayerData.Hit[CategoryID] then + local Score = 0 + local ScoreHit = 0 + local Penalty = 0 + local PenaltyHit = 0 + self:T( "Hit scores exist for player " .. PlayerName ) + for UnitName, UnitData in pairs( PlayerData.Hit[CategoryID] ) do + Score = Score + UnitData.Score + ScoreHit = ScoreHit + UnitData.ScoreHit + Penalty = Penalty + UnitData.Penalty + PenaltyHit = UnitData.PenaltyHit + end + local ScoreMessageHit = string.format( "%s:%d ", CategoryName, Score - Penalty ) + self:T( ScoreMessageHit ) + ScoreMessageHits = ScoreMessageHits .. ScoreMessageHit + PlayerScore = PlayerScore + Score + PlayerPenalty = PlayerPenalty + Penalty + else + --ScoreMessageHits = ScoreMessageHits .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) + end + end + if ScoreMessageHits ~= "" then + ScoreMessage = ScoreMessage .. " Hits: " .. ScoreMessageHits .. "\n" + end + + local ScoreMessageKills = "" + for CategoryID, CategoryName in pairs( _SCORINGCategory ) do + self:T( "Kill scores exist for player " .. PlayerName ) + if PlayerData.Kill[CategoryID] then + local Score = 0 + local ScoreKill = 0 + local Penalty = 0 + local PenaltyKill = 0 + + for UnitName, UnitData in pairs( PlayerData.Kill[CategoryID] ) do + Score = Score + UnitData.Score + ScoreKill = ScoreKill + UnitData.ScoreKill + Penalty = Penalty + UnitData.Penalty + PenaltyKill = PenaltyKill + UnitData.PenaltyKill + end + + local ScoreMessageKill = string.format( " %s:%d ", CategoryName, Score - Penalty ) + self:T( ScoreMessageKill ) + ScoreMessageKills = ScoreMessageKills .. ScoreMessageKill + + PlayerScore = PlayerScore + Score + PlayerPenalty = PlayerPenalty + Penalty + else + --ScoreMessageKills = ScoreMessageKills .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) + end + end + if ScoreMessageKills ~= "" then + ScoreMessage = ScoreMessage .. " Kills: " .. ScoreMessageKills .. "\n" + end + + local ScoreMessageCoalitionChangePenalties = "" + if PlayerData.PenaltyCoalition ~= 0 then + ScoreMessageCoalitionChangePenalties = ScoreMessageCoalitionChangePenalties .. string.format( " -%d (%d changed)", PlayerData.Penalty, PlayerData.PenaltyCoalition ) + PlayerPenalty = PlayerPenalty + PlayerData.Penalty + end + if ScoreMessageCoalitionChangePenalties ~= "" then + ScoreMessage = ScoreMessage .. " Coalition Penalties: " .. ScoreMessageCoalitionChangePenalties .. "\n" + end + + local ScoreMessageMission = "" + local ScoreMission = 0 + local ScoreTask = 0 + for MissionName, MissionData in pairs( PlayerData.Mission ) do + ScoreMission = ScoreMission + MissionData.ScoreMission + ScoreTask = ScoreTask + MissionData.ScoreTask + ScoreMessageMission = ScoreMessageMission .. "'" .. MissionName .. "'; " + end + PlayerScore = PlayerScore + ScoreMission + ScoreTask + + if ScoreMessageMission ~= "" then + ScoreMessage = ScoreMessage .. " Tasks: " .. ScoreTask .. " Mission: " .. ScoreMission .. " ( " .. ScoreMessageMission .. ")\n" + end + + PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score:%d (%d Score -%d Penalties)%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage ) + end + end + MESSAGE:New( PlayerMessage, 30, "Player Scores" ):ToAll() +end + + +function SCORING:ReportScorePlayer() + + env.info( "Hello World " ) + + local ScoreMessage = "" + local PlayerMessage = "" + + self:T( "Score Report" ) + + for PlayerName, PlayerData in pairs( self.Players ) do + if PlayerData then -- This should normally not happen, but i'll test it anyway. + self:T( "Score Player: " .. PlayerName ) + + -- Some variables + local InitUnitCoalition = _SCORINGCoalition[PlayerData.UnitCoalition] + local InitUnitCategory = _SCORINGCategory[PlayerData.UnitCategory] + local InitUnitType = PlayerData.UnitType + local InitUnitName = PlayerData.UnitName + + local PlayerScore = 0 + local PlayerPenalty = 0 + + ScoreMessage = "" + + local ScoreMessageHits = "" + + for CategoryID, CategoryName in pairs( _SCORINGCategory ) do + self:T( CategoryName ) + if PlayerData.Hit[CategoryID] then + local Score = 0 + local ScoreHit = 0 + local Penalty = 0 + local PenaltyHit = 0 + self:T( "Hit scores exist for player " .. PlayerName ) + for UnitName, UnitData in pairs( PlayerData.Hit[CategoryID] ) do + Score = Score + UnitData.Score + ScoreHit = ScoreHit + UnitData.ScoreHit + Penalty = Penalty + UnitData.Penalty + PenaltyHit = UnitData.PenaltyHit + end + local ScoreMessageHit = string.format( "\n %s = %d score(%d;-%d) hits(#%d;#-%d)", CategoryName, Score - Penalty, Score, Penalty, ScoreHit, PenaltyHit ) + self:T( ScoreMessageHit ) + ScoreMessageHits = ScoreMessageHits .. ScoreMessageHit + PlayerScore = PlayerScore + Score + PlayerPenalty = PlayerPenalty + Penalty + else + --ScoreMessageHits = ScoreMessageHits .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) + end + end + if ScoreMessageHits ~= "" then + ScoreMessage = ScoreMessage .. "\n Hits: " .. ScoreMessageHits .. " " + end + + local ScoreMessageKills = "" + for CategoryID, CategoryName in pairs( _SCORINGCategory ) do + self:T( "Kill scores exist for player " .. PlayerName ) + if PlayerData.Kill[CategoryID] then + local Score = 0 + local ScoreKill = 0 + local Penalty = 0 + local PenaltyKill = 0 + + for UnitName, UnitData in pairs( PlayerData.Kill[CategoryID] ) do + Score = Score + UnitData.Score + ScoreKill = ScoreKill + UnitData.ScoreKill + Penalty = Penalty + UnitData.Penalty + PenaltyKill = PenaltyKill + UnitData.PenaltyKill + end + + local ScoreMessageKill = string.format( "\n %s = %d score(%d;-%d) hits(#%d;#-%d)", CategoryName, Score - Penalty, Score, Penalty, ScoreKill, PenaltyKill ) + self:T( ScoreMessageKill ) + ScoreMessageKills = ScoreMessageKills .. ScoreMessageKill + + PlayerScore = PlayerScore + Score + PlayerPenalty = PlayerPenalty + Penalty + else + --ScoreMessageKills = ScoreMessageKills .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) + end + end + if ScoreMessageKills ~= "" then + ScoreMessage = ScoreMessage .. "\n Kills: " .. ScoreMessageKills .. " " + end + + local ScoreMessageCoalitionChangePenalties = "" + if PlayerData.PenaltyCoalition ~= 0 then + ScoreMessageCoalitionChangePenalties = ScoreMessageCoalitionChangePenalties .. string.format( " -%d (%d changed)", PlayerData.Penalty, PlayerData.PenaltyCoalition ) + PlayerPenalty = PlayerPenalty + PlayerData.Penalty + end + if ScoreMessageCoalitionChangePenalties ~= "" then + ScoreMessage = ScoreMessage .. "\n Coalition: " .. ScoreMessageCoalitionChangePenalties .. " " + end + + local ScoreMessageMission = "" + local ScoreMission = 0 + local ScoreTask = 0 + for MissionName, MissionData in pairs( PlayerData.Mission ) do + ScoreMission = ScoreMission + MissionData.ScoreMission + ScoreTask = ScoreTask + MissionData.ScoreTask + ScoreMessageMission = ScoreMessageMission .. "'" .. MissionName .. "'; " + end + PlayerScore = PlayerScore + ScoreMission + ScoreTask + + if ScoreMessageMission ~= "" then + ScoreMessage = ScoreMessage .. "\n Tasks: " .. ScoreTask .. " Mission: " .. ScoreMission .. " ( " .. ScoreMessageMission .. ") " + end + + PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score = %d ( %d Score, -%d Penalties ):%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage ) + end + end + MESSAGE:New( PlayerMessage, 30, "Player Scores" ):ToAll() + +end + + +function SCORING:SecondsToClock(sSeconds) + local nSeconds = sSeconds + if nSeconds == 0 then + --return nil; + return "00:00:00"; + else + nHours = string.format("%02.f", math.floor(nSeconds/3600)); + nMins = string.format("%02.f", math.floor(nSeconds/60 - (nHours*60))); + nSecs = string.format("%02.f", math.floor(nSeconds - nHours*3600 - nMins *60)); + return nHours..":"..nMins..":"..nSecs + end +end + +--- Opens a score CSV file to log the scores. +-- @param #SCORING self +-- @param #string ScoringCSV +-- @return #SCORING self +-- @usage +-- -- Open a new CSV file to log the scores of the game Gori Valley. Let the name of the CSV file begin with "Player Scores". +-- ScoringObject = SCORING:New( "Gori Valley" ) +-- ScoringObject:OpenCSV( "Player Scores" ) +function SCORING:OpenCSV( ScoringCSV ) + self:F( ScoringCSV ) + + if lfs and io and os then + if ScoringCSV then + self.ScoringCSV = ScoringCSV + local fdir = lfs.writedir() .. [[Logs\]] .. self.ScoringCSV .. " " .. os.date( "%Y-%m-%d %H-%M-%S" ) .. ".csv" + + self.CSVFile, self.err = io.open( fdir, "w+" ) + if not self.CSVFile then + error( "Error: Cannot open CSV file in " .. lfs.writedir() ) + end + + self.CSVFile:write( '"GameName","RunTime","Time","PlayerName","ScoreType","PlayerUnitCoaltion","PlayerUnitCategory","PlayerUnitType","PlayerUnitName","TargetUnitCoalition","TargetUnitCategory","TargetUnitType","TargetUnitName","Times","Score"\n' ) + + self.RunTime = os.date("%y-%m-%d_%H-%M-%S") + else + error( "A string containing the CSV file name must be given." ) + end + else + self:E( "The MissionScripting.lua file has not been changed to allow lfs, io and os modules to be used..." ) + end + return self +end + + +--- Registers a score for a player. +-- @param #SCORING self +-- @param #string PlayerName The name of the player. +-- @param #string ScoreType The type of the score. +-- @param #string ScoreTimes The amount of scores achieved. +-- @param #string ScoreAmount The score given. +-- @param #string PlayerUnitName The unit name of the player. +-- @param #string PlayerUnitCoalition The coalition of the player unit. +-- @param #string PlayerUnitCategory The category of the player unit. +-- @param #string PlayerUnitType The type of the player unit. +-- @param #string TargetUnitName The name of the target unit. +-- @param #string TargetUnitCoalition The coalition of the target unit. +-- @param #string TargetUnitCategory The category of the target unit. +-- @param #string TargetUnitType The type of the target unit. +-- @return #SCORING self +function SCORING:ScoreCSV( PlayerName, ScoreType, ScoreTimes, ScoreAmount, PlayerUnitName, PlayerUnitCoalition, PlayerUnitCategory, PlayerUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) + --write statistic information to file + local ScoreTime = self:SecondsToClock( timer.getTime() ) + PlayerName = PlayerName:gsub( '"', '_' ) + + if PlayerUnitName and PlayerUnitName ~= '' then + local PlayerUnit = Unit.getByName( PlayerUnitName ) + + if PlayerUnit then + if not PlayerUnitCategory then + --PlayerUnitCategory = SCORINGCategory[PlayerUnit:getCategory()] + PlayerUnitCategory = _SCORINGCategory[PlayerUnit:getDesc().category] + end + + if not PlayerUnitCoalition then + PlayerUnitCoalition = _SCORINGCoalition[PlayerUnit:getCoalition()] + end + + if not PlayerUnitType then + PlayerUnitType = PlayerUnit:getTypeName() + end + else + PlayerUnitName = '' + PlayerUnitCategory = '' + PlayerUnitCoalition = '' + PlayerUnitType = '' + end + else + PlayerUnitName = '' + PlayerUnitCategory = '' + PlayerUnitCoalition = '' + PlayerUnitType = '' + end + + if not TargetUnitCoalition then + TargetUnitCoalition = '' + end + + if not TargetUnitCategory then + TargetUnitCategory = '' + end + + if not TargetUnitType then + TargetUnitType = '' + end + + if not TargetUnitName then + TargetUnitName = '' + end + + if lfs and io and os then + self.CSVFile:write( + '"' .. self.GameName .. '"' .. ',' .. + '"' .. self.RunTime .. '"' .. ',' .. + '' .. ScoreTime .. '' .. ',' .. + '"' .. PlayerName .. '"' .. ',' .. + '"' .. ScoreType .. '"' .. ',' .. + '"' .. PlayerUnitCoalition .. '"' .. ',' .. + '"' .. PlayerUnitCategory .. '"' .. ',' .. + '"' .. PlayerUnitType .. '"' .. ',' .. + '"' .. PlayerUnitName .. '"' .. ',' .. + '"' .. TargetUnitCoalition .. '"' .. ',' .. + '"' .. TargetUnitCategory .. '"' .. ',' .. + '"' .. TargetUnitType .. '"' .. ',' .. + '"' .. TargetUnitName .. '"' .. ',' .. + '' .. ScoreTimes .. '' .. ',' .. + '' .. ScoreAmount + ) + + self.CSVFile:write( "\n" ) + end +end + + +function SCORING:CloseCSV() + if lfs and io and os then + self.CSVFile:close() + end +end + +--- CARGO Classes +-- @module CARGO + + + + + + + +--- Clients are those Groups defined within the Mission Editor that have the skillset defined as "Client" or "Player". +-- These clients are defined within the Mission Orchestration Framework (MOF) + +CARGOS = {} + + +CARGO_ZONE = { + ClassName="CARGO_ZONE", + CargoZoneName = '', + CargoHostUnitName = '', + SIGNAL = { + TYPE = { + SMOKE = { ID = 1, TEXT = "smoke" }, + FLARE = { ID = 2, TEXT = "flare" } + }, + COLOR = { + GREEN = { ID = 1, TRIGGERCOLOR = trigger.smokeColor.Green, TEXT = "A green" }, + RED = { ID = 2, TRIGGERCOLOR = trigger.smokeColor.Red, TEXT = "A red" }, + WHITE = { ID = 3, TRIGGERCOLOR = trigger.smokeColor.White, TEXT = "A white" }, + ORANGE = { ID = 4, TRIGGERCOLOR = trigger.smokeColor.Orange, TEXT = "An orange" }, + BLUE = { ID = 5, TRIGGERCOLOR = trigger.smokeColor.Blue, TEXT = "A blue" }, + YELLOW = { ID = 6, TRIGGERCOLOR = trigger.flareColor.Yellow, TEXT = "A yellow" } + } + } +} + +--- Creates a new zone where cargo can be collected or deployed. +-- The zone functionality is useful to smoke or indicate routes for cargo pickups or deployments. +-- Provide the zone name as declared in the mission file into the CargoZoneName in the :New method. +-- An optional parameter is the CargoHostName, which is a Group declared with Late Activation switched on in the mission file. +-- The CargoHostName is the "host" of the cargo zone: +-- +-- * It will smoke the zone position when a client is approaching the zone. +-- * Depending on the cargo type, it will assist in the delivery of the cargo by driving to and from the client. +-- +-- @param #CARGO_ZONE self +-- @param #string CargoZoneName The name of the zone as declared within the mission editor. +-- @param #string CargoHostName The name of the Group "hosting" the zone. The Group MUST NOT be a static, and must be a "mobile" unit. +function CARGO_ZONE:New( CargoZoneName, CargoHostName ) local self = BASE:Inherit( self, ZONE:New( CargoZoneName ) ) + self:F( { CargoZoneName, CargoHostName } ) + + self.CargoZoneName = CargoZoneName + self.SignalHeight = 2 + --self.CargoZone = trigger.misc.getZone( CargoZoneName ) + + + if CargoHostName then + self.CargoHostName = CargoHostName + end + + self:T( self.CargoZoneName ) + + return self +end + +function CARGO_ZONE:Spawn() + self:F( self.CargoHostName ) + + if self.CargoHostName then -- Only spawn a host in the zone when there is one given as a parameter in the New function. + if self.CargoHostSpawn then + local CargoHostGroup = self.CargoHostSpawn:GetGroupFromIndex() + if CargoHostGroup and CargoHostGroup:IsAlive() then + else + self.CargoHostSpawn:ReSpawn( 1 ) + end + else + self:T( "Initialize CargoHostSpawn" ) + self.CargoHostSpawn = SPAWN:New( self.CargoHostName ):Limit( 1, 1 ) + self.CargoHostSpawn:ReSpawn( 1 ) + end + end + + return self +end + +function CARGO_ZONE:GetHostUnit() + self:F( self ) + + if self.CargoHostName then + + -- A Host has been given, signal the host + local CargoHostGroup = self.CargoHostSpawn:GetGroupFromIndex() + local CargoHostUnit + if CargoHostGroup and CargoHostGroup:IsAlive() then + CargoHostUnit = CargoHostGroup:GetUnit(1) + else + CargoHostUnit = StaticObject.getByName( self.CargoHostName ) + end + + return CargoHostUnit + end + + return nil +end + +function CARGO_ZONE:ReportCargosToClient( Client, CargoType ) + self:F() + + local SignalUnit = self:GetHostUnit() + + if SignalUnit then + + local SignalUnitTypeName = SignalUnit:getTypeName() + + local HostMessage = "" + + local IsCargo = false + for CargoID, Cargo in pairs( CARGOS ) do + if Cargo.CargoType == Task.CargoType then + if Cargo:IsStatusNone() then + HostMessage = HostMessage .. " - " .. Cargo.CargoName .. " - " .. Cargo.CargoType .. " (" .. Cargo.Weight .. "kg)" .. "\n" + IsCargo = true + end + end + end + + if not IsCargo then + HostMessage = "No Cargo Available." + end + + Client:Message( HostMessage, 20, SignalUnitTypeName .. ": Reporting Cargo", 10 ) + end +end + + +function CARGO_ZONE:Signal() + self:F() + + local Signalled = false + + if self.SignalType then + + if self.CargoHostName then + + -- A Host has been given, signal the host + + local SignalUnit = self:GetHostUnit() + + if SignalUnit then + + self:T( 'Signalling Unit' ) + local SignalVehiclePos = SignalUnit:GetPointVec3() + SignalVehiclePos.y = SignalVehiclePos.y + 2 + + if self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.SMOKE.ID then + + trigger.action.smoke( SignalVehiclePos, self.SignalColor.TRIGGERCOLOR ) + Signalled = true + + elseif self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.FLARE.ID then + + trigger.action.signalFlare( SignalVehiclePos, self.SignalColor.TRIGGERCOLOR , 0 ) + Signalled = false + + end + end + + else + + local ZonePointVec3 = self:GetPointVec3( self.SignalHeight ) -- Get the zone position + the landheight + 2 meters + + if self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.SMOKE.ID then + + trigger.action.smoke( ZonePointVec3, self.SignalColor.TRIGGERCOLOR ) + Signalled = true + + elseif self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.FLARE.ID then + trigger.action.signalFlare( ZonePointVec3, self.SignalColor.TRIGGERCOLOR, 0 ) + Signalled = false + + end + end + end + + return Signalled + +end + +function CARGO_ZONE:WhiteSmoke( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.WHITE + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:BlueSmoke( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.BLUE + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:RedSmoke( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.RED + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:OrangeSmoke( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.ORANGE + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:GreenSmoke( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.GREEN + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + + +function CARGO_ZONE:WhiteFlare( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.WHITE + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:RedFlare( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.RED + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:GreenFlare( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.GREEN + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + +function CARGO_ZONE:YellowFlare( SignalHeight ) + self:F() + + self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE + self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.YELLOW + + if SignalHeight then + self.SignalHeight = SignalHeight + end + + return self +end + + +function CARGO_ZONE:GetCargoHostUnit() + self:F( self ) + + if self.CargoHostSpawn then + local CargoHostGroup = self.CargoHostSpawn:GetGroupFromIndex(1) + if CargoHostGroup and CargoHostGroup:IsAlive() then + local CargoHostUnit = CargoHostGroup:GetUnit(1) + if CargoHostUnit and CargoHostUnit:IsAlive() then + return CargoHostUnit + end + end + end + + return nil +end + +function CARGO_ZONE:GetCargoZoneName() + self:F() + + return self.CargoZoneName +end + +CARGO = { + ClassName = "CARGO", + STATUS = { + NONE = 0, + LOADED = 1, + UNLOADED = 2, + LOADING = 3 + }, + CargoClient = nil +} + +--- Add Cargo to the mission... Cargo functionality needs to be reworked a bit, so this is still under construction. I need to make a CARGO Class... +function CARGO:New( CargoType, CargoName, CargoWeight ) local self = BASE:Inherit( self, BASE:New() ) + self:F( { CargoType, CargoName, CargoWeight } ) + + + self.CargoType = CargoType + self.CargoName = CargoName + self.CargoWeight = CargoWeight + + self:StatusNone() + + return self +end + +function CARGO:Spawn( Client ) + self:F() + + return self + +end + +function CARGO:IsNear( Client, LandingZone ) + self:F() + + local Near = true + + return Near + +end + + +function CARGO:IsLoadingToClient() + self:F() + + if self:IsStatusLoading() then + return self.CargoClient + end + + return nil + +end + + +function CARGO:IsLoadedInClient() + self:F() + + if self:IsStatusLoaded() then + return self.CargoClient + end + + return nil + +end + + +function CARGO:UnLoad( Client, TargetZoneName ) + self:F() + + self:StatusUnLoaded() + + return self +end + +function CARGO:OnBoard( Client, LandingZone ) + self:F() + + local Valid = true + + self.CargoClient = Client + local ClientUnit = Client:GetClientGroupDCSUnit() + + return Valid +end + +function CARGO:OnBoarded( Client, LandingZone ) + self:F() + + local OnBoarded = true + + return OnBoarded +end + +function CARGO:Load( Client ) + self:F() + + self:StatusLoaded( Client ) + + return self +end + +function CARGO:IsLandingRequired() + self:F() + return true +end + +function CARGO:IsSlingLoad() + self:F() + return false +end + + +function CARGO:StatusNone() + self:F() + + self.CargoClient = nil + self.CargoStatus = CARGO.STATUS.NONE + + return self +end + +function CARGO:StatusLoading( Client ) + self:F() + + self.CargoClient = Client + self.CargoStatus = CARGO.STATUS.LOADING + self:T( "Cargo " .. self.CargoName .. " loading to Client: " .. self.CargoClient:GetClientGroupName() ) + + return self +end + +function CARGO:StatusLoaded( Client ) + self:F() + + self.CargoClient = Client + self.CargoStatus = CARGO.STATUS.LOADED + self:T( "Cargo " .. self.CargoName .. " loaded in Client: " .. self.CargoClient:GetClientGroupName() ) + + return self +end + +function CARGO:StatusUnLoaded() + self:F() + + self.CargoClient = nil + self.CargoStatus = CARGO.STATUS.UNLOADED + + return self +end + + +function CARGO:IsStatusNone() + self:F() + + return self.CargoStatus == CARGO.STATUS.NONE +end + +function CARGO:IsStatusLoading() + self:F() + + return self.CargoStatus == CARGO.STATUS.LOADING +end + +function CARGO:IsStatusLoaded() + self:F() + + return self.CargoStatus == CARGO.STATUS.LOADED +end + +function CARGO:IsStatusUnLoaded() + self:F() + + return self.CargoStatus == CARGO.STATUS.UNLOADED +end + + +CARGO_GROUP = { + ClassName = "CARGO_GROUP" +} + + +function CARGO_GROUP:New( CargoType, CargoName, CargoWeight, CargoGroupTemplate, CargoZone ) local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) ) + self:F( { CargoType, CargoName, CargoWeight, CargoGroupTemplate, CargoZone } ) + + self.CargoSpawn = SPAWN:NewWithAlias( CargoGroupTemplate, CargoName ) + self.CargoZone = CargoZone + + CARGOS[self.CargoName] = self + + return self + +end + +function CARGO_GROUP:Spawn( Client ) + self:F( { Client } ) + + local SpawnCargo = true + + if self:IsStatusNone() then + local CargoGroup = Group.getByName( self.CargoName ) + if CargoGroup and CargoGroup:isExist() then + SpawnCargo = false + end + + elseif self:IsStatusLoading() then + + local Client = self:IsLoadingToClient() + if Client and Client:GetDCSGroup() then + SpawnCargo = false + else + local CargoGroup = Group.getByName( self.CargoName ) + if CargoGroup and CargoGroup:isExist() then + SpawnCargo = false + end + end + + elseif self:IsStatusLoaded() then + + local ClientLoaded = self:IsLoadedInClient() + -- Now test if another Client is alive (not this one), and it has the CARGO, then this cargo does not need to be initialized and spawned. + if ClientLoaded and ClientLoaded ~= Client then + local ClientGroup = Client:GetDCSGroup() + if ClientLoaded:GetClientGroupDCSUnit() and ClientLoaded:GetClientGroupDCSUnit():isExist() then + SpawnCargo = false + else + self:StatusNone() + end + else + -- Same Client, but now in initialize, so set back the status to None. + self:StatusNone() + end + + elseif self:IsStatusUnLoaded() then + + SpawnCargo = false + + end + + if SpawnCargo then + if self.CargoZone:GetCargoHostUnit() then + --- ReSpawn the Cargo from the CargoHost + self.CargoGroupName = self.CargoSpawn:SpawnFromUnit( self.CargoZone:GetCargoHostUnit(), 60, 30, 1 ):GetName() + else + --- ReSpawn the Cargo in the CargoZone without a host ... + self:T( self.CargoZone ) + self.CargoGroupName = self.CargoSpawn:SpawnInZone( self.CargoZone, true, 1 ):GetName() + end + self:StatusNone() + end + + self:T( { self.CargoGroupName, CARGOS[self.CargoName].CargoGroupName } ) + + return self +end + +function CARGO_GROUP:IsNear( Client, LandingZone ) + self:F() + + local Near = false + + if self.CargoGroupName then + local CargoGroup = Group.getByName( self.CargoGroupName ) + if routines.IsPartOfGroupInRadius( CargoGroup, Client:GetPositionVec3(), 250 ) then + Near = true + end + end + + return Near + +end + + +function CARGO_GROUP:OnBoard( Client, LandingZone, OnBoardSide ) + self:F() + + local Valid = true + + local ClientUnit = Client:GetClientGroupDCSUnit() + + local CarrierPos = ClientUnit:getPoint() + local CarrierPosMove = ClientUnit:getPoint() + local CarrierPosOnBoard = ClientUnit:getPoint() + + local CargoGroup = Group.getByName( self.CargoGroupName ) + + local CargoUnit = CargoGroup:getUnit(1) + local CargoPos = CargoUnit:getPoint() + + self.CargoInAir = CargoUnit:inAir() + + self:T( self.CargoInAir ) + + -- Only move the group to the carrier when the cargo is not in the air + -- (eg. cargo can be on a oil derrick, moving the cargo on the oil derrick will drop the cargo on the sea). + if not self.CargoInAir then + + local Points = {} + + self:T( 'CargoPos x = ' .. CargoPos.x .. " z = " .. CargoPos.z ) + self:T( 'CarrierPosMove x = ' .. CarrierPosMove.x .. " z = " .. CarrierPosMove.z ) + + Points[#Points+1] = routines.ground.buildWP( CargoPos, "Cone", 10 ) + + self:T( 'Points[1] x = ' .. Points[1].x .. " y = " .. Points[1].y ) + + if OnBoardSide == nil then + OnBoardSide = CLIENT.ONBOARDSIDE.NONE + end + + if OnBoardSide == CLIENT.ONBOARDSIDE.LEFT then + + self:T( "TransportCargoOnBoard: Onboarding LEFT" ) + CarrierPosMove.z = CarrierPosMove.z - 25 + CarrierPosOnBoard.z = CarrierPosOnBoard.z - 5 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.RIGHT then + + self:T( "TransportCargoOnBoard: Onboarding RIGHT" ) + CarrierPosMove.z = CarrierPosMove.z + 25 + CarrierPosOnBoard.z = CarrierPosOnBoard.z + 5 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.BACK then + + self:T( "TransportCargoOnBoard: Onboarding BACK" ) + CarrierPosMove.x = CarrierPosMove.x - 25 + CarrierPosOnBoard.x = CarrierPosOnBoard.x - 5 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.FRONT then + + self:T( "TransportCargoOnBoard: Onboarding FRONT" ) + CarrierPosMove.x = CarrierPosMove.x + 25 + CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.NONE then + + self:T( "TransportCargoOnBoard: Onboarding CENTRAL" ) + Points[#Points+1] = routines.ground.buildWP( CarrierPos, "Cone", 10 ) + + end + self:T( "TransportCargoOnBoard: Routing " .. self.CargoGroupName ) + + --routines.scheduleFunction( routines.goRoute, { self.CargoGroupName, Points}, timer.getTime() + 4 ) + SCHEDULER:New( self, routines.goRoute, { self.CargoGroupName, Points}, 4 ) + end + + self:StatusLoading( Client ) + + return Valid + +end + + +function CARGO_GROUP:OnBoarded( Client, LandingZone ) + self:F() + + local OnBoarded = false + + local CargoGroup = Group.getByName( self.CargoGroupName ) + + if not self.CargoInAir then + if routines.IsPartOfGroupInRadius( CargoGroup, Client:GetPositionVec3(), 25 ) then + CargoGroup:destroy() + self:StatusLoaded( Client ) + OnBoarded = true + end + else + CargoGroup:destroy() + self:StatusLoaded( Client ) + OnBoarded = true + end + + return OnBoarded +end + + +function CARGO_GROUP:UnLoad( Client, TargetZoneName ) + self:F() + + self:T( 'self.CargoName = ' .. self.CargoName ) + + local CargoGroup = self.CargoSpawn:SpawnFromUnit( Client:GetClientGroupUnit(), 60, 30 ) + + self.CargoGroupName = CargoGroup:GetName() + self:T( 'self.CargoGroupName = ' .. self.CargoGroupName ) + + CargoGroup:TaskRouteToZone( ZONE:New( TargetZoneName ), true ) + + self:StatusUnLoaded() + + return self +end + + +CARGO_PACKAGE = { + ClassName = "CARGO_PACKAGE" +} + + +function CARGO_PACKAGE:New( CargoType, CargoName, CargoWeight, CargoClient ) local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) ) + self:F( { CargoType, CargoName, CargoWeight, CargoClient } ) + + self.CargoClient = CargoClient + + CARGOS[self.CargoName] = self + + return self + +end + + +function CARGO_PACKAGE:Spawn( Client ) + self:F( { self, Client } ) + + -- this needs to be checked thoroughly + + local CargoClientGroup = self.CargoClient:GetDCSGroup() + if not CargoClientGroup then + if not self.CargoClientSpawn then + self.CargoClientSpawn = SPAWN:New( self.CargoClient:GetClientGroupName() ):Limit( 1, 1 ) + end + self.CargoClientSpawn:ReSpawn( 1 ) + end + + local SpawnCargo = true + + if self:IsStatusNone() then + + elseif self:IsStatusLoading() or self:IsStatusLoaded() then + + local CargoClientLoaded = self:IsLoadedInClient() + if CargoClientLoaded and CargoClientLoaded:GetDCSGroup() then + SpawnCargo = false + end + + elseif self:IsStatusUnLoaded() then + + SpawnCargo = false + + else + + end + + if SpawnCargo then + self:StatusLoaded( self.CargoClient ) + end + + return self +end + + +function CARGO_PACKAGE:IsNear( Client, LandingZone ) + self:F() + + local Near = false + + if self.CargoClient and self.CargoClient:GetDCSGroup() then + self:T( self.CargoClient.ClientName ) + self:T( 'Client Exists.' ) + + if routines.IsUnitInRadius( self.CargoClient:GetClientGroupDCSUnit(), Client:GetPositionVec3(), 150 ) then + Near = true + end + end + + return Near + +end + + +function CARGO_PACKAGE:OnBoard( Client, LandingZone, OnBoardSide ) + self:F() + + local Valid = true + + local ClientUnit = Client:GetClientGroupDCSUnit() + + local CarrierPos = ClientUnit:getPoint() + local CarrierPosMove = ClientUnit:getPoint() + local CarrierPosOnBoard = ClientUnit:getPoint() + local CarrierPosMoveAway = ClientUnit:getPoint() + + local CargoHostGroup = self.CargoClient:GetDCSGroup() + local CargoHostName = self.CargoClient:GetDCSGroup():getName() + + local CargoHostUnits = CargoHostGroup:getUnits() + local CargoPos = CargoHostUnits[1]:getPoint() + + local Points = {} + + self:T( 'CargoPos x = ' .. CargoPos.x .. " z = " .. CargoPos.z ) + self:T( 'CarrierPosMove x = ' .. CarrierPosMove.x .. " z = " .. CarrierPosMove.z ) + + Points[#Points+1] = routines.ground.buildWP( CargoPos, "Cone", 10 ) + + self:T( 'Points[1] x = ' .. Points[1].x .. " y = " .. Points[1].y ) + + if OnBoardSide == nil then + OnBoardSide = CLIENT.ONBOARDSIDE.NONE + end + + if OnBoardSide == CLIENT.ONBOARDSIDE.LEFT then + + self:T( "TransportCargoOnBoard: Onboarding LEFT" ) + CarrierPosMove.z = CarrierPosMove.z - 25 + CarrierPosOnBoard.z = CarrierPosOnBoard.z - 5 + CarrierPosMoveAway.z = CarrierPosMoveAway.z - 20 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.RIGHT then + + self:T( "TransportCargoOnBoard: Onboarding RIGHT" ) + CarrierPosMove.z = CarrierPosMove.z + 25 + CarrierPosOnBoard.z = CarrierPosOnBoard.z + 5 + CarrierPosMoveAway.z = CarrierPosMoveAway.z + 20 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.BACK then + + self:T( "TransportCargoOnBoard: Onboarding BACK" ) + CarrierPosMove.x = CarrierPosMove.x - 25 + CarrierPosOnBoard.x = CarrierPosOnBoard.x - 5 + CarrierPosMoveAway.x = CarrierPosMoveAway.x - 20 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.FRONT then + + self:T( "TransportCargoOnBoard: Onboarding FRONT" ) + CarrierPosMove.x = CarrierPosMove.x + 25 + CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5 + CarrierPosMoveAway.x = CarrierPosMoveAway.x + 20 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) + + elseif OnBoardSide == CLIENT.ONBOARDSIDE.NONE then + + self:T( "TransportCargoOnBoard: Onboarding FRONT" ) + CarrierPosMove.x = CarrierPosMove.x + 25 + CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5 + CarrierPosMoveAway.x = CarrierPosMoveAway.x + 20 + Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) + Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) + + end + self:T( "Routing " .. CargoHostName ) + + --routines.scheduleFunction( routines.goRoute, { CargoHostName, Points}, timer.getTime() + 4 ) + SCHEDULER:New( self, routines.goRoute, { CargoHostName, Points }, 4 ) + + return Valid + +end + + +function CARGO_PACKAGE:OnBoarded( Client, LandingZone ) + self:F() + + local OnBoarded = false + + if self.CargoClient and self.CargoClient:GetDCSGroup() then + if routines.IsUnitInRadius( self.CargoClient:GetClientGroupDCSUnit(), self.CargoClient:GetPositionVec3(), 10 ) then + + -- Switch Cargo from self.CargoClient to Client ... Each cargo can have only one client. So assigning the new client for the cargo is enough. + self:StatusLoaded( Client ) + + -- All done, onboarded the Cargo to the new Client. + OnBoarded = true + end + end + + return OnBoarded +end + + +function CARGO_PACKAGE:UnLoad( Client, TargetZoneName ) + self:F() + + self:T( 'self.CargoName = ' .. self.CargoName ) + --self:T( 'self.CargoHostName = ' .. self.CargoHostName ) + + --self.CargoSpawn:FromCarrier( Client:GetDCSGroup(), TargetZoneName, self.CargoHostName ) + self:StatusUnLoaded() + + return Cargo +end + + +CARGO_SLINGLOAD = { + ClassName = "CARGO_SLINGLOAD" +} + + +function CARGO_SLINGLOAD:New( CargoType, CargoName, CargoWeight, CargoZone, CargoHostName, CargoCountryID ) + local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) ) + self:F( { CargoType, CargoName, CargoWeight, CargoZone, CargoHostName, CargoCountryID } ) + + self.CargoHostName = CargoHostName + + -- Cargo will be initialized around the CargoZone position. + self.CargoZone = CargoZone + + self.CargoCount = 0 + self.CargoStaticName = string.format( "%s#%03d", self.CargoName, self.CargoCount ) + + -- The country ID needs to be correctly set. + self.CargoCountryID = CargoCountryID + + CARGOS[self.CargoName] = self + + return self + +end + + +function CARGO_SLINGLOAD:IsLandingRequired() + self:F() + return false +end + + +function CARGO_SLINGLOAD:IsSlingLoad() + self:F() + return true +end + + +function CARGO_SLINGLOAD:Spawn( Client ) + self:F( { self, Client } ) + + local Zone = trigger.misc.getZone( self.CargoZone ) + + local ZonePos = {} + ZonePos.x = Zone.point.x + math.random( Zone.radius / 2 * -1, Zone.radius / 2 ) + ZonePos.y = Zone.point.z + math.random( Zone.radius / 2 * -1, Zone.radius / 2 ) + + self:T( "Cargo Location = " .. ZonePos.x .. ", " .. ZonePos.y ) + + --[[ + -- This does not work in 1.5.2. + CargoStatic = StaticObject.getByName( self.CargoName ) + if CargoStatic then + CargoStatic:destroy() + end + --]] + + CargoStatic = StaticObject.getByName( self.CargoStaticName ) + + if CargoStatic and CargoStatic:isExist() then + CargoStatic:destroy() + end + + -- I need to make every time a new cargo due to bugs in 1.5.2. + + self.CargoCount = self.CargoCount + 1 + self.CargoStaticName = string.format( "%s#%03d", self.CargoName, self.CargoCount ) + + local CargoTemplate = { + ["category"] = "Cargo", + ["shape_name"] = "ab-212_cargo", + ["type"] = "Cargo1", + ["x"] = ZonePos.x, + ["y"] = ZonePos.y, + ["mass"] = self.CargoWeight, + ["name"] = self.CargoStaticName, + ["canCargo"] = true, + ["heading"] = 0, + } + + coalition.addStaticObject( self.CargoCountryID, CargoTemplate ) + +-- end + + return self +end + + +function CARGO_SLINGLOAD:IsNear( Client, LandingZone ) + self:F() + + local Near = false + + return Near +end + + +function CARGO_SLINGLOAD:IsInLandingZone( Client, LandingZone ) + self:F() + + local Near = false + + local CargoStaticUnit = StaticObject.getByName( self.CargoName ) + if CargoStaticUnit then + if routines.IsStaticInZones( CargoStaticUnit, LandingZone ) then + Near = true + end + end + + return Near +end + + +function CARGO_SLINGLOAD:OnBoard( Client, LandingZone, OnBoardSide ) + self:F() + + local Valid = true + + + return Valid +end + + +function CARGO_SLINGLOAD:OnBoarded( Client, LandingZone ) + self:F() + + local OnBoarded = false + + local CargoStaticUnit = StaticObject.getByName( self.CargoName ) + if CargoStaticUnit then + if not routines.IsStaticInZones( CargoStaticUnit, LandingZone ) then + OnBoarded = true + end + end + + return OnBoarded +end + + +function CARGO_SLINGLOAD:UnLoad( Client, TargetZoneName ) + self:F() + + self:T( 'self.CargoName = ' .. self.CargoName ) + self:T( 'self.CargoGroupName = ' .. self.CargoGroupName ) + + self:StatusUnLoaded() + + return Cargo +end +--- This module contains the MESSAGE class. +-- +-- 1) @{Message#MESSAGE} class, extends @{Base#BASE} +-- ================================================= +-- Message System to display Messages to Clients, Coalitions or All. +-- Messages are shown on the display panel for an amount of seconds, and will then disappear. +-- Messages can contain a category which is indicating the category of the message. +-- +-- 1.1) MESSAGE construction methods +-- --------------------------------- +-- Messages are created with @{Message#MESSAGE.New}. Note that when the MESSAGE object is created, no message is sent yet. +-- To send messages, you need to use the To functions. +-- +-- 1.2) Send messages with MESSAGE To methods +-- ------------------------------------------ +-- Messages are sent to: +-- +-- * Clients with @{Message#MESSAGE.ToClient}. +-- * Coalitions with @{Message#MESSAGE.ToCoalition}. +-- * All Players with @{Message#MESSAGE.ToAll}. +-- +-- @module Message +-- @author FlightControl + +--- The MESSAGE class +-- @type MESSAGE +-- @extends Base#BASE +MESSAGE = { + ClassName = "MESSAGE", + MessageCategory = 0, + MessageID = 0, +} + + +--- Creates a new MESSAGE object. Note that these MESSAGE objects are not yet displayed on the display panel. You must use the functions @{ToClient} or @{ToCoalition} or @{ToAll} to send these Messages to the respective recipients. +-- @param self +-- @param #string MessageText is the text of the Message. +-- @param #number MessageDuration is a number in seconds of how long the MESSAGE should be shown on the display panel. +-- @param #string MessageCategory (optional) is a string expressing the "category" of the Message. The category will be shown as the first text in the message followed by a ": ". +-- @return #MESSAGE +-- @usage +-- -- Create a series of new Messages. +-- -- MessageAll is meant to be sent to all players, for 25 seconds, and is classified as "Score". +-- -- MessageRED is meant to be sent to the RED players only, for 10 seconds, and is classified as "End of Mission", with ID "Win". +-- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score". +-- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score". +-- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", 25, "End of Mission" ) +-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", 25, "Penalty" ) +-- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", 25, "Score" ) +-- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", 25, "Score") +function MESSAGE:New( MessageText, MessageDuration, MessageCategory ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( { MessageText, MessageDuration, MessageCategory } ) + + -- When no MessageCategory is given, we don't show it as a title... + if MessageCategory and MessageCategory ~= "" then + self.MessageCategory = MessageCategory .. ": " + else + self.MessageCategory = "" + end + + self.MessageDuration = MessageDuration + self.MessageTime = timer.getTime() + self.MessageText = MessageText + + self.MessageSent = false + self.MessageGroup = false + self.MessageCoalition = false + + return self +end + +--- Sends a MESSAGE to a Client Group. Note that the Group needs to be defined within the ME with the skillset "Client" or "Player". +-- @param #MESSAGE self +-- @param Client#CLIENT Client is the Group of the Client. +-- @return #MESSAGE +-- @usage +-- -- Send the 2 messages created with the @{New} method to the Client Group. +-- -- Note that the Message of MessageClient2 is overwriting the Message of MessageClient1. +-- ClientGroup = Group.getByName( "ClientGroup" ) +-- +-- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ):ToClient( ClientGroup ) +-- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ):ToClient( ClientGroup ) +-- or +-- MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ):ToClient( ClientGroup ) +-- MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ):ToClient( ClientGroup ) +-- or +-- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ) +-- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ) +-- MessageClient1:ToClient( ClientGroup ) +-- MessageClient2:ToClient( ClientGroup ) +function MESSAGE:ToClient( Client ) + self:F( Client ) + + if Client and Client:GetClientGroupID() then + + local ClientGroupID = Client:GetClientGroupID() + self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration ) + trigger.action.outTextForGroup( ClientGroupID, self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration ) + end + + return self +end + +--- Sends a MESSAGE to the Blue coalition. +-- @param #MESSAGE self +-- @return #MESSAGE +-- @usage +-- -- Send a message created with the @{New} method to the BLUE coalition. +-- MessageBLUE = MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToBlue() +-- or +-- MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToBlue() +-- or +-- MessageBLUE = MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) +-- MessageBLUE:ToBlue() +function MESSAGE:ToBlue() + self:F() + + self:ToCoalition( coalition.side.BLUE ) + + return self +end + +--- Sends a MESSAGE to the Red Coalition. +-- @param #MESSAGE self +-- @return #MESSAGE +-- @usage +-- -- Send a message created with the @{New} method to the RED coalition. +-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToRed() +-- or +-- MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToRed() +-- or +-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) +-- MessageRED:ToRed() +function MESSAGE:ToRed( ) + self:F() + + self:ToCoalition( coalition.side.RED ) + + return self +end + +--- Sends a MESSAGE to a Coalition. +-- @param #MESSAGE self +-- @param CoalitionSide needs to be filled out by the defined structure of the standard scripting engine @{coalition.side}. +-- @return #MESSAGE +-- @usage +-- -- Send a message created with the @{New} method to the RED coalition. +-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToCoalition( coalition.side.RED ) +-- or +-- MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToCoalition( coalition.side.RED ) +-- or +-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) +-- MessageRED:ToCoalition( coalition.side.RED ) +function MESSAGE:ToCoalition( CoalitionSide ) + self:F( CoalitionSide ) + + if CoalitionSide then + self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration ) + trigger.action.outTextForCoalition( CoalitionSide, self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration ) + end + + return self +end + +--- Sends a MESSAGE to all players. +-- @param #MESSAGE self +-- @return #MESSAGE +-- @usage +-- -- Send a message created to all players. +-- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ):ToAll() +-- or +-- MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ):ToAll() +-- or +-- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ) +-- MessageAll:ToAll() +function MESSAGE:ToAll() + self:F() + + self:ToCoalition( coalition.side.RED ) + self:ToCoalition( coalition.side.BLUE ) + + return self +end + + + +----- The MESSAGEQUEUE class +---- @type MESSAGEQUEUE +--MESSAGEQUEUE = { +-- ClientGroups = {}, +-- CoalitionSides = {} +--} +-- +--function MESSAGEQUEUE:New( RefreshInterval ) +-- local self = BASE:Inherit( self, BASE:New() ) +-- self:F( { RefreshInterval } ) +-- +-- self.RefreshInterval = RefreshInterval +-- +-- --self.DisplayFunction = routines.scheduleFunction( self._DisplayMessages, { self }, 0, RefreshInterval ) +-- self.DisplayFunction = SCHEDULER:New( self, self._DisplayMessages, {}, 0, RefreshInterval ) +-- +-- return self +--end +-- +----- This function is called automatically by the MESSAGEQUEUE scheduler. +--function MESSAGEQUEUE:_DisplayMessages() +-- +-- -- First we display all messages that a coalition needs to receive... Also those who are not in a client (CA module clients...). +-- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do +-- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do +-- if MessageData.MessageSent == false then +-- --trigger.action.outTextForCoalition( CoalitionSideID, MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration ) +-- MessageData.MessageSent = true +-- end +-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime() +-- if MessageTimeLeft <= 0 then +-- MessageData = nil +-- end +-- end +-- end +-- +-- -- Then we send the messages for each individual client, but also to be included are those Coalition messages for the Clients who belong to a coalition. +-- -- Because the Client messages will overwrite the Coalition messages (for that Client). +-- for ClientGroupName, ClientGroupData in pairs( self.ClientGroups ) do +-- for MessageID, MessageData in pairs( ClientGroupData.Messages ) do +-- if MessageData.MessageGroup == false then +-- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration ) +-- MessageData.MessageGroup = true +-- end +-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime() +-- if MessageTimeLeft <= 0 then +-- MessageData = nil +-- end +-- end +-- +-- -- Now check if the Client also has messages that belong to the Coalition of the Client... +-- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do +-- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do +-- local CoalitionGroup = Group.getByName( ClientGroupName ) +-- if CoalitionGroup and CoalitionGroup:getCoalition() == CoalitionSideID then +-- if MessageData.MessageCoalition == false then +-- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration ) +-- MessageData.MessageCoalition = true +-- end +-- end +-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime() +-- if MessageTimeLeft <= 0 then +-- MessageData = nil +-- end +-- end +-- end +-- end +-- +-- return true +--end +-- +----- The _MessageQueue object is created when the MESSAGE class module is loaded. +----_MessageQueue = MESSAGEQUEUE:New( 0.5 ) +-- +--- Stages within a @{TASK} within a @{MISSION}. All of the STAGE functionality is considered internally administered and not to be used by any Mission designer. +-- @module STAGE +-- @author Flightcontrol + + + + + + + +--- The STAGE class +-- @type +STAGE = { + ClassName = "STAGE", + MSG = { ID = "None", TIME = 10 }, + FREQUENCY = { NONE = 0, ONCE = 1, REPEAT = -1 }, + + Name = "NoStage", + StageType = '', + WaitTime = 1, + Frequency = 1, + MessageCount = 0, + MessageInterval = 15, + MessageShown = {}, + MessageShow = false, + MessageFlash = false +} + + +function STAGE:New() + local self = BASE:Inherit( self, BASE:New() ) + self:F() + return self +end + +function STAGE:Execute( Mission, Client, Task ) + + local Valid = true + + return Valid +end + +function STAGE:Executing( Mission, Client, Task ) + +end + +function STAGE:Validate( Mission, Client, Task ) + local Valid = true + + return Valid +end + + +STAGEBRIEF = { + ClassName = "BRIEF", + MSG = { ID = "Brief", TIME = 1 }, + Name = "Brief", + StageBriefingTime = 0, + StageBriefingDuration = 1 +} + +function STAGEBRIEF:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +--- Execute +-- @param #STAGEBRIEF self +-- @param Mission#MISSION Mission +-- @param Client#CLIENT Client +-- @param Task#TASK Task +-- @return #boolean +function STAGEBRIEF:Execute( Mission, Client, Task ) + local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) + self:F() + Client:ShowMissionBriefing( Mission.MissionBriefing ) + self.StageBriefingTime = timer.getTime() + return Valid +end + +function STAGEBRIEF:Validate( Mission, Client, Task ) + local Valid = STAGE:Validate( Mission, Client, Task ) + self:T() + + if timer.getTime() - self.StageBriefingTime <= self.StageBriefingDuration then + return 0 + else + self.StageBriefingTime = timer.getTime() + return 1 + end + +end + + +STAGESTART = { + ClassName = "START", + MSG = { ID = "Start", TIME = 1 }, + Name = "Start", + StageStartTime = 0, + StageStartDuration = 1 +} + +function STAGESTART:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +function STAGESTART:Execute( Mission, Client, Task ) + self:F() + local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) + if Task.TaskBriefing then + Client:Message( Task.TaskBriefing, 30, "Command" ) + else + Client:Message( 'Task ' .. Task.TaskNumber .. '.', 30, "Command" ) + end + self.StageStartTime = timer.getTime() + return Valid +end + +function STAGESTART:Validate( Mission, Client, Task ) + self:F() + local Valid = STAGE:Validate( Mission, Client, Task ) + + if timer.getTime() - self.StageStartTime <= self.StageStartDuration then + return 0 + else + self.StageStartTime = timer.getTime() + return 1 + end + + return 1 + +end + +STAGE_CARGO_LOAD = { + ClassName = "STAGE_CARGO_LOAD" +} + +function STAGE_CARGO_LOAD:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +function STAGE_CARGO_LOAD:Execute( Mission, Client, Task ) + self:F() + local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) + + for LoadCargoID, LoadCargo in pairs( Task.Cargos.LoadCargos ) do + LoadCargo:Load( Client ) + end + + if Mission.MissionReportFlash and Client:IsTransport() then + Client:ShowCargo() + end + + return Valid +end + +function STAGE_CARGO_LOAD:Validate( Mission, Client, Task ) + self:F() + local Valid = STAGE:Validate( Mission, Client, Task ) + + return 1 +end + + +STAGE_CARGO_INIT = { + ClassName = "STAGE_CARGO_INIT" +} + +function STAGE_CARGO_INIT:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +function STAGE_CARGO_INIT:Execute( Mission, Client, Task ) + self:F() + local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) + + for InitLandingZoneID, InitLandingZone in pairs( Task.LandingZones.LandingZones ) do + self:T( InitLandingZone ) + InitLandingZone:Spawn() + end + + + self:T( Task.Cargos.InitCargos ) + for InitCargoID, InitCargoData in pairs( Task.Cargos.InitCargos ) do + self:T( { InitCargoData } ) + InitCargoData:Spawn( Client ) + end + + return Valid +end + + +function STAGE_CARGO_INIT:Validate( Mission, Client, Task ) + self:F() + local Valid = STAGE:Validate( Mission, Client, Task ) + + return 1 +end + + + +STAGEROUTE = { + ClassName = "STAGEROUTE", + MSG = { ID = "Route", TIME = 5 }, + Frequency = STAGE.FREQUENCY.REPEAT, + Name = "Route" +} + +function STAGEROUTE:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + self.MessageSwitch = true + return self +end + + +--- Execute the routing. +-- @param #STAGEROUTE self +-- @param Mission#MISSION Mission +-- @param Client#CLIENT Client +-- @param Task#TASK Task +function STAGEROUTE:Execute( Mission, Client, Task ) + self:F() + local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) + + local RouteMessage = "Fly to: " + self:T( Task.LandingZones ) + for LandingZoneID, LandingZoneName in pairs( Task.LandingZones.LandingZoneNames ) do + RouteMessage = RouteMessage .. "\n " .. LandingZoneName .. ' at ' .. routines.getBRStringZone( { zone = LandingZoneName, ref = Client:GetClientGroupDCSUnit():getPoint(), true, true } ) .. ' km.' + end + + if Client:IsMultiSeated() then + Client:Message( RouteMessage, self.MSG.TIME, "Co-Pilot", 20, "Route" ) + else + Client:Message( RouteMessage, self.MSG.TIME, "Command", 20, "Route" ) + end + + + if Mission.MissionReportFlash and Client:IsTransport() then + Client:ShowCargo() + end + + return Valid +end + +function STAGEROUTE:Validate( Mission, Client, Task ) + self:F() + local Valid = STAGE:Validate( Mission, Client, Task ) + + -- check if the Client is in the landing zone + self:T( Task.LandingZones.LandingZoneNames ) + Task.CurrentLandingZoneName = routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.LandingZones.LandingZoneNames, 500 ) + + if Task.CurrentLandingZoneName then + + Task.CurrentLandingZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName].CargoZone + Task.CurrentCargoZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName] + + if Task.CurrentCargoZone then + if not Task.Signalled then + Task.Signalled = Task.CurrentCargoZone:Signal() + end + end + + self:T( 1 ) + return 1 + end + + self:T( 0 ) + return 0 +end + + + +STAGELANDING = { + ClassName = "STAGELANDING", + MSG = { ID = "Landing", TIME = 10 }, + Name = "Landing", + Signalled = false +} + +function STAGELANDING:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +--- Execute the landing coordination. +-- @param #STAGELANDING self +-- @param Mission#MISSION Mission +-- @param Client#CLIENT Client +-- @param Task#TASK Task +function STAGELANDING:Execute( Mission, Client, Task ) + self:F() + + if Client:IsMultiSeated() then + Client:Message( "We have arrived at the landing zone.", self.MSG.TIME, "Co-Pilot" ) + else + Client:Message( "You have arrived at the landing zone.", self.MSG.TIME, "Command" ) + end + + Task.HostUnit = Task.CurrentCargoZone:GetHostUnit() + + self:T( { Task.HostUnit } ) + + if Task.HostUnit then + + Task.HostUnitName = Task.HostUnit:GetPrefix() + Task.HostUnitTypeName = Task.HostUnit:GetTypeName() + + local HostMessage = "" + Task.CargoNames = "" + + local IsFirst = true + + for CargoID, Cargo in pairs( CARGOS ) do + if Cargo.CargoType == Task.CargoType then + + if Cargo:IsLandingRequired() then + self:T( "Task for cargo " .. Cargo.CargoType .. " requires landing.") + Task.IsLandingRequired = true + end + + if Cargo:IsSlingLoad() then + self:T( "Task for cargo " .. Cargo.CargoType .. " is a slingload.") + Task.IsSlingLoad = true + end + + if IsFirst then + IsFirst = false + Task.CargoNames = Task.CargoNames .. Cargo.CargoName .. "( " .. Cargo.CargoWeight .. " )" + else + Task.CargoNames = Task.CargoNames .. "; " .. Cargo.CargoName .. "( " .. Cargo.CargoWeight .. " )" + end + end + end + + if Task.IsLandingRequired then + HostMessage = "Land the helicopter to " .. Task.TEXT[1] .. " " .. Task.CargoNames .. "." + else + HostMessage = "Use the Radio menu and F6 to find the cargo, then fly or land near the cargo and " .. Task.TEXT[1] .. " " .. Task.CargoNames .. "." + end + + local Host = "Command" + if Task.HostUnitName then + Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" + else + if Client:IsMultiSeated() then + Host = "Co-Pilot" + end + end + + Client:Message( HostMessage, self.MSG.TIME, Host ) + + end +end + +function STAGELANDING:Validate( Mission, Client, Task ) + self:F() + + Task.CurrentLandingZoneName = routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.LandingZones.LandingZoneNames, 500 ) + if Task.CurrentLandingZoneName then + + -- Client is in de landing zone. + self:T( Task.CurrentLandingZoneName ) + + Task.CurrentLandingZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName].CargoZone + Task.CurrentCargoZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName] + + if Task.CurrentCargoZone then + if not Task.Signalled then + Task.Signalled = Task.CurrentCargoZone:Signal() + end + end + else + if Task.CurrentLandingZone then + Task.CurrentLandingZone = nil + end + if Task.CurrentCargoZone then + Task.CurrentCargoZone = nil + end + Task.Signalled = false + Task:RemoveCargoMenus( Client ) + self:T( -1 ) + return -1 + end + + + local DCSUnitVelocityVec3 = Client:GetClientGroupDCSUnit():getVelocity() + local DCSUnitVelocity = ( DCSUnitVelocityVec3.x ^2 + DCSUnitVelocityVec3.y ^2 + DCSUnitVelocityVec3.z ^2 ) ^ 0.5 + + local DCSUnitPointVec3 = Client:GetClientGroupDCSUnit():getPoint() + local LandHeight = land.getHeight( { x = DCSUnitPointVec3.x, y = DCSUnitPointVec3.z } ) + local DCSUnitHeight = DCSUnitPointVec3.y - LandHeight + + self:T( { Task.IsLandingRequired, Client:GetClientGroupDCSUnit():inAir() } ) + if Task.IsLandingRequired and not Client:GetClientGroupDCSUnit():inAir() then + self:T( 1 ) + Task.IsInAirTestRequired = true + return 1 + end + + self:T( { DCSUnitVelocity, DCSUnitHeight, LandHeight, Task.CurrentCargoZone.SignalHeight } ) + if Task.IsLandingRequired and DCSUnitVelocity <= 0.05 and DCSUnitHeight <= Task.CurrentCargoZone.SignalHeight then + self:T( 1 ) + Task.IsInAirTestRequired = false + return 1 + end + + self:T( 0 ) + return 0 +end + +STAGELANDED = { + ClassName = "STAGELANDED", + MSG = { ID = "Land", TIME = 10 }, + Name = "Landed", + MenusAdded = false +} + +function STAGELANDED:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +function STAGELANDED:Execute( Mission, Client, Task ) + self:F() + + if Task.IsLandingRequired then + + local Host = "Command" + if Task.HostUnitName then + Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" + else + if Client:IsMultiSeated() then + Host = "Co-Pilot" + end + end + + Client:Message( 'You have landed within the landing zone. Use the radio menu (F10) to ' .. Task.TEXT[1] .. ' the ' .. Task.CargoType .. '.', + self.MSG.TIME, Host ) + + if not self.MenusAdded then + Task.Cargo = nil + Task:RemoveCargoMenus( Client ) + Task:AddCargoMenus( Client, CARGOS, 250 ) + end + end +end + + + +function STAGELANDED:Validate( Mission, Client, Task ) + self:F() + + if not routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.CurrentLandingZoneName, 500 ) then + self:T( "Client is not anymore in the landing zone, go back to stage Route, and remove cargo menus." ) + Task.Signalled = false + Task:RemoveCargoMenus( Client ) + self:T( -2 ) + return -2 + end + + local DCSUnitVelocityVec3 = Client:GetClientGroupDCSUnit():getVelocity() + local DCSUnitVelocity = ( DCSUnitVelocityVec3.x ^2 + DCSUnitVelocityVec3.y ^2 + DCSUnitVelocityVec3.z ^2 ) ^ 0.5 + + local DCSUnitPointVec3 = Client:GetClientGroupDCSUnit():getPoint() + local LandHeight = land.getHeight( { x = DCSUnitPointVec3.x, y = DCSUnitPointVec3.z } ) + local DCSUnitHeight = DCSUnitPointVec3.y - LandHeight + + self:T( { Task.IsLandingRequired, Client:GetClientGroupDCSUnit():inAir() } ) + if Task.IsLandingRequired and Task.IsInAirTestRequired == true and Client:GetClientGroupDCSUnit():inAir() then + self:T( "Client went back in the air. Go back to stage Landing." ) + self:T( -1 ) + return -1 + end + + self:T( { DCSUnitVelocity, DCSUnitHeight, LandHeight, Task.CurrentCargoZone.SignalHeight } ) + if Task.IsLandingRequired and Task.IsInAirTestRequired == false and DCSUnitVelocity >= 2 and DCSUnitHeight >= Task.CurrentCargoZone.SignalHeight then + self:T( "It seems the Client went back in the air and over the boundary limits. Go back to stage Landing." ) + self:T( -1 ) + return -1 + end + + -- Wait until cargo is selected from the menu. + if Task.IsLandingRequired then + if not Task.Cargo then + self:T( 0 ) + return 0 + end + end + + self:T( 1 ) + return 1 +end + +STAGEUNLOAD = { + ClassName = "STAGEUNLOAD", + MSG = { ID = "Unload", TIME = 10 }, + Name = "Unload" +} + +function STAGEUNLOAD:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +--- Coordinate UnLoading +-- @param #STAGEUNLOAD self +-- @param Mission#MISSION Mission +-- @param Client#CLIENT Client +-- @param Task#TASK Task +function STAGEUNLOAD:Execute( Mission, Client, Task ) + self:F() + + if Client:IsMultiSeated() then + Client:Message( 'The ' .. Task.CargoType .. ' are being ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.', + "Co-Pilot" ) + else + Client:Message( 'You are unloading the ' .. Task.CargoType .. ' ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.', + "Command" ) + end + Task:RemoveCargoMenus( Client ) +end + +function STAGEUNLOAD:Executing( Mission, Client, Task ) + self:F() + env.info( 'STAGEUNLOAD:Executing() Task.Cargo.CargoName = ' .. Task.Cargo.CargoName ) + + local TargetZoneName + + if Task.TargetZoneName then + TargetZoneName = Task.TargetZoneName + else + TargetZoneName = Task.CurrentLandingZoneName + end + + if Task.Cargo:UnLoad( Client, TargetZoneName ) then + Task.ExecuteStage = _TransportExecuteStage.SUCCESS + if Mission.MissionReportFlash then + Client:ShowCargo() + end + end +end + +--- Validate UnLoading +-- @param #STAGEUNLOAD self +-- @param Mission#MISSION Mission +-- @param Client#CLIENT Client +-- @param Task#TASK Task +function STAGEUNLOAD:Validate( Mission, Client, Task ) + self:F() + env.info( 'STAGEUNLOAD:Validate()' ) + + if routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.CurrentLandingZoneName, 500 ) then + else + Task.ExecuteStage = _TransportExecuteStage.FAILED + Task:RemoveCargoMenus( Client ) + if Client:IsMultiSeated() then + Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', + _TransportStageMsgTime.DONE, "Co-Pilot" ) + else + Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', + _TransportStageMsgTime.DONE, "Command" ) + end + return 1 + end + + if not Client:GetClientGroupDCSUnit():inAir() then + else + Task.ExecuteStage = _TransportExecuteStage.FAILED + Task:RemoveCargoMenus( Client ) + if Client:IsMultiSeated() then + Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', + _TransportStageMsgTime.DONE, "Co-Pilot" ) + else + Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', + _TransportStageMsgTime.DONE, "Command" ) + end + return 1 + end + + if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then + if Client:IsMultiSeated() then + Client:Message( 'The ' .. Task.CargoType .. ' have been sucessfully ' .. Task.TEXT[3] .. ' within the landing zone.', _TransportStageMsgTime.DONE, "Co-Pilot" ) + else + Client:Message( 'The ' .. Task.CargoType .. ' have been sucessfully ' .. Task.TEXT[3] .. ' within the landing zone.', _TransportStageMsgTime.DONE, "Command" ) + end + Task:RemoveCargoMenus( Client ) + Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.CargoName, 1 ) -- We set the cargo as one more goal completed in the mission. + return 1 + end + + return 1 +end + +STAGELOAD = { + ClassName = "STAGELOAD", + MSG = { ID = "Load", TIME = 10 }, + Name = "Load" +} + +function STAGELOAD:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + +function STAGELOAD:Execute( Mission, Client, Task ) + self:F() + + if not Task.IsSlingLoad then + + local Host = "Command" + if Task.HostUnitName then + Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" + else + if Client:IsMultiSeated() then + Host = "Co-Pilot" + end + end + + Client:Message( 'The ' .. Task.CargoType .. ' are being ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.', + _TransportStageMsgTime.EXECUTING, Host ) + + -- Route the cargo to the Carrier + + Task.Cargo:OnBoard( Client, Task.CurrentCargoZone, Task.OnBoardSide ) + Task.ExecuteStage = _TransportExecuteStage.EXECUTING + else + Task.ExecuteStage = _TransportExecuteStage.EXECUTING + end +end + +function STAGELOAD:Executing( Mission, Client, Task ) + self:F() + + -- If the Cargo is ready to be loaded, load it into the Client. + + local Host = "Command" + if Task.HostUnitName then + Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" + else + if Client:IsMultiSeated() then + Host = "Co-Pilot" + end + end + + if not Task.IsSlingLoad then + self:T( Task.Cargo.CargoName) + + if Task.Cargo:OnBoarded( Client, Task.CurrentCargoZone ) then + + -- Load the Cargo onto the Client + Task.Cargo:Load( Client ) + + -- Message to the pilot that cargo has been loaded. + Client:Message( "The cargo " .. Task.Cargo.CargoName .. " has been loaded in our helicopter.", + 20, Host ) + Task.ExecuteStage = _TransportExecuteStage.SUCCESS + + Client:ShowCargo() + end + else + Client:Message( "Hook the " .. Task.CargoNames .. " onto the helicopter " .. Task.TEXT[3] .. " within the landing zone.", + _TransportStageMsgTime.EXECUTING, Host ) + for CargoID, Cargo in pairs( CARGOS ) do + self:T( "Cargo.CargoName = " .. Cargo.CargoName ) + + if Cargo:IsSlingLoad() then + local CargoStatic = StaticObject.getByName( Cargo.CargoStaticName ) + if CargoStatic then + self:T( "Cargo is found in the DCS simulator.") + local CargoStaticPosition = CargoStatic:getPosition().p + self:T( "Cargo Position x = " .. CargoStaticPosition.x .. ", y = " .. CargoStaticPosition.y .. ", z = " .. CargoStaticPosition.z ) + local CargoStaticHeight = routines.GetUnitHeight( CargoStatic ) + if CargoStaticHeight > 5 then + self:T( "Cargo is airborne.") + Cargo:StatusLoaded() + Task.Cargo = Cargo + Client:Message( 'The Cargo has been successfully hooked onto the helicopter and is now being sling loaded. Fly outside the landing zone.', + self.MSG.TIME, Host ) + Task.ExecuteStage = _TransportExecuteStage.SUCCESS + break + end + else + self:T( "Cargo not found in the DCS simulator." ) + end + end + end + end + +end + +function STAGELOAD:Validate( Mission, Client, Task ) + self:F() + + self:T( "Task.CurrentLandingZoneName = " .. Task.CurrentLandingZoneName ) + + local Host = "Command" + if Task.HostUnitName then + Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" + else + if Client:IsMultiSeated() then + Host = "Co-Pilot" + end + end + + if not Task.IsSlingLoad then + if not routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.CurrentLandingZoneName, 500 ) then + Task:RemoveCargoMenus( Client ) + Task.ExecuteStage = _TransportExecuteStage.FAILED + Task.CargoName = nil + Client:Message( "The " .. Task.CargoType .. " loading has been aborted. You flew outside the pick-up zone while loading. ", + self.MSG.TIME, Host ) + self:T( -1 ) + return -1 + end + + local DCSUnitVelocityVec3 = Client:GetClientGroupDCSUnit():getVelocity() + local DCSUnitVelocity = ( DCSUnitVelocityVec3.x ^2 + DCSUnitVelocityVec3.y ^2 + DCSUnitVelocityVec3.z ^2 ) ^ 0.5 + + local DCSUnitPointVec3 = Client:GetClientGroupDCSUnit():getPoint() + local LandHeight = land.getHeight( { x = DCSUnitPointVec3.x, y = DCSUnitPointVec3.z } ) + local DCSUnitHeight = DCSUnitPointVec3.y - LandHeight + + self:T( { Task.IsLandingRequired, Client:GetClientGroupDCSUnit():inAir() } ) + if Task.IsLandingRequired and Task.IsInAirTestRequired == true and Client:GetClientGroupDCSUnit():inAir() then + Task:RemoveCargoMenus( Client ) + Task.ExecuteStage = _TransportExecuteStage.FAILED + Task.CargoName = nil + Client:Message( "The " .. Task.CargoType .. " loading has been aborted. Re-start the " .. Task.TEXT[3] .. " process. Don't fly outside the pick-up zone.", + self.MSG.TIME, Host ) + self:T( -1 ) + return -1 + end + + self:T( { DCSUnitVelocity, DCSUnitHeight, LandHeight, Task.CurrentCargoZone.SignalHeight } ) + if Task.IsLandingRequired and Task.IsInAirTestRequired == false and DCSUnitVelocity >= 2 and DCSUnitHeight >= Task.CurrentCargoZone.SignalHeight then + Task:RemoveCargoMenus( Client ) + Task.ExecuteStage = _TransportExecuteStage.FAILED + Task.CargoName = nil + Client:Message( "The " .. Task.CargoType .. " loading has been aborted. Re-start the " .. Task.TEXT[3] .. " process. Don't fly outside the pick-up zone.", + self.MSG.TIME, Host ) + self:T( -1 ) + return -1 + end + + if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then + Task:RemoveCargoMenus( Client ) + Client:Message( "Good Job. The " .. Task.CargoType .. " has been sucessfully " .. Task.TEXT[3] .. " within the landing zone.", + self.MSG.TIME, Host ) + Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.CargoName, 1 ) + self:T( 1 ) + return 1 + end + + else + if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then + CargoStatic = StaticObject.getByName( Task.Cargo.CargoStaticName ) + if CargoStatic and not routines.IsStaticInZones( CargoStatic, Task.CurrentLandingZoneName ) then + Client:Message( "Good Job. The " .. Task.CargoType .. " has been sucessfully " .. Task.TEXT[3] .. " and flown outside of the landing zone.", + self.MSG.TIME, Host ) + Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.Cargo.CargoName, 1 ) + self:T( 1 ) + return 1 + end + end + + end + + + self:T( 0 ) + return 0 +end + + +STAGEDONE = { + ClassName = "STAGEDONE", + MSG = { ID = "Done", TIME = 10 }, + Name = "Done" +} + +function STAGEDONE:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'AI' + return self +end + +function STAGEDONE:Execute( Mission, Client, Task ) + self:F() + +end + +function STAGEDONE:Validate( Mission, Client, Task ) + self:F() + + Task:Done() + + return 0 +end + +STAGEARRIVE = { + ClassName = "STAGEARRIVE", + MSG = { ID = "Arrive", TIME = 10 }, + Name = "Arrive" +} + +function STAGEARRIVE:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'CLIENT' + return self +end + + +--- Execute Arrival +-- @param #STAGEARRIVE self +-- @param Mission#MISSION Mission +-- @param Client#CLIENT Client +-- @param Task#TASK Task +function STAGEARRIVE:Execute( Mission, Client, Task ) + self:F() + + if Client:IsMultiSeated() then + Client:Message( 'We have arrived at ' .. Task.CurrentLandingZoneName .. ".", self.MSG.TIME, "Co-Pilot" ) + else + Client:Message( 'We have arrived at ' .. Task.CurrentLandingZoneName .. ".", self.MSG.TIME, "Command" ) + end + +end + +function STAGEARRIVE:Validate( Mission, Client, Task ) + self:F() + + Task.CurrentLandingZoneID = routines.IsUnitInZones( Client:GetClientGroupDCSUnit(), Task.LandingZones ) + if ( Task.CurrentLandingZoneID ) then + else + return -1 + end + + return 1 +end + +STAGEGROUPSDESTROYED = { + ClassName = "STAGEGROUPSDESTROYED", + DestroyGroupSize = -1, + Frequency = STAGE.FREQUENCY.REPEAT, + MSG = { ID = "DestroyGroup", TIME = 10 }, + Name = "GroupsDestroyed" +} + +function STAGEGROUPSDESTROYED:New() + local self = BASE:Inherit( self, STAGE:New() ) + self:F() + self.StageType = 'AI' + return self +end + +--function STAGEGROUPSDESTROYED:Execute( Mission, Client, Task ) +-- +-- Client:Message( 'Task: Still ' .. DestroyGroupSize .. " of " .. Task.DestroyGroupCount .. " " .. Task.DestroyGroupType .. " to be destroyed!", self.MSG.TIME, Mission.Name .. "/Stage" ) +-- +--end + +function STAGEGROUPSDESTROYED:Validate( Mission, Client, Task ) + self:F() + + if Task.MissionTask:IsGoalReached() then + return 1 + else + return 0 + end +end + +function STAGEGROUPSDESTROYED:Execute( Mission, Client, Task ) + self:F() + self:T( { Task.ClassName, Task.Destroyed } ) + --env.info( 'Event Table Task = ' .. tostring(Task) ) + +end + + + + + + + + + + + + + +--[[ + _TransportStage: Defines the different stages of which of transport missions can be in. This table is internal and is used to control the sequence of messages, actions and flow. + + - _TransportStage.START + - _TransportStage.ROUTE + - _TransportStage.LAND + - _TransportStage.EXECUTE + - _TransportStage.DONE + - _TransportStage.REMOVE +--]] +_TransportStage = { + HOLD = "HOLD", + START = "START", + ROUTE = "ROUTE", + LANDING = "LANDING", + LANDED = "LANDED", + EXECUTING = "EXECUTING", + LOAD = "LOAD", + UNLOAD = "UNLOAD", + DONE = "DONE", + NEXT = "NEXT" +} + +_TransportStageMsgTime = { + HOLD = 10, + START = 60, + ROUTE = 5, + LANDING = 10, + LANDED = 30, + EXECUTING = 30, + LOAD = 30, + UNLOAD = 30, + DONE = 30, + NEXT = 0 +} + +_TransportStageTime = { + HOLD = 10, + START = 5, + ROUTE = 5, + LANDING = 1, + LANDED = 1, + EXECUTING = 5, + LOAD = 5, + UNLOAD = 5, + DONE = 1, + NEXT = 0 +} + +_TransportStageAction = { + REPEAT = -1, + NONE = 0, + ONCE = 1 +} +--- The TASK Classes define major end-to-end activities within a MISSION. The TASK Class is the Master Class to orchestrate these activities. From this class, many concrete TASK classes are inherited. +-- @module TASK + + + + + + + +--- The TASK class +-- @type TASK +-- @extends Base#BASE +TASK = { + + -- Defines the different signal types with a Task. + SIGNAL = { + COLOR = { + RED = { ID = 1, COLOR = trigger.smokeColor.Red, TEXT = "A red" }, + GREEN = { ID = 2, COLOR = trigger.smokeColor.Green, TEXT = "A green" }, + BLUE = { ID = 3, COLOR = trigger.smokeColor.Blue, TEXT = "A blue" }, + WHITE = { ID = 4, COLOR = trigger.smokeColor.White, TEXT = "A white" }, + ORANGE = { ID = 5, COLOR = trigger.smokeColor.Orange, TEXT = "An orange" } + }, + TYPE = { + SMOKE = { ID = 1, TEXT = "smoke" }, + FLARE = { ID = 2, TEXT = "flare" } + } + }, + ClassName = "TASK", + Mission = {}, -- Owning mission of the Task + Name = '', + Stages = {}, + Stage = {}, + Cargos = { + InitCargos = {}, + LoadCargos = {} + }, + LandingZones = { + LandingZoneNames = {}, + LandingZones = {} + }, + ActiveStage = 0, + TaskDone = false, + TaskFailed = false, + GoalTasks = {} +} + +--- Instantiates a new TASK Base. Should never be used. Interface Class. +-- @return TASK +function TASK:New() + local self = BASE:Inherit( self, BASE:New() ) + self:F() + + -- assign Task default values during construction + self.TaskBriefing = "Task: No Task." + self.Time = timer.getTime() + self.ExecuteStage = _TransportExecuteStage.NONE + + return self +end + +function TASK:SetStage( StageSequenceIncrement ) + self:F( { StageSequenceIncrement } ) + + local Valid = false + if StageSequenceIncrement ~= 0 then + self.ActiveStage = self.ActiveStage + StageSequenceIncrement + if 1 <= self.ActiveStage and self.ActiveStage <= #self.Stages then + self.Stage = self.Stages[self.ActiveStage] + self:T( { self.Stage.Name } ) + self.Frequency = self.Stage.Frequency + Valid = true + else + Valid = false + env.info( "TASK:SetStage() self.ActiveStage is smaller or larger than self.Stages array. self.ActiveStage = " .. self.ActiveStage ) + end + end + self.Time = timer.getTime() + return Valid +end + +function TASK:Init() + self:F() + self.ActiveStage = 0 + self:SetStage(1) + self.TaskDone = false + self.TaskFailed = false +end + + +--- Get progress of a TASK. +-- @return string GoalsText +function TASK:GetGoalProgress() + self:F2() + + local GoalsText = "" + for GoalVerb, GoalVerbData in pairs( self.GoalTasks ) do + local Goals = self:GetGoalCompletion( GoalVerb ) + if Goals and Goals ~= "" then + Goals = '(' .. Goals .. ')' + else + Goals = '( - )' + end + GoalsText = GoalsText .. GoalVerb .. ': ' .. self:GetGoalCount(GoalVerb) .. ' goals ' .. Goals .. ' of ' .. self:GetGoalTotal(GoalVerb) .. ' goals completed (' .. self:GetGoalPercentage(GoalVerb) .. '%); ' + end + + if GoalsText == "" then + GoalsText = "( - )" + end + + return GoalsText +end + +--- Show progress of a TASK. +-- @param MISSION Mission Group structure describing the Mission. +-- @param CLIENT Client Group structure describing the Client. +function TASK:ShowGoalProgress( Mission, Client ) + self:F2() + + local GoalsText = "" + for GoalVerb, GoalVerbData in pairs( self.GoalTasks ) do + if Mission:IsCompleted() then + else + local Goals = self:GetGoalCompletion( GoalVerb ) + if Goals and Goals ~= "" then + else + Goals = "-" + end + GoalsText = GoalsText .. self:GetGoalProgress() + end + end + + if Mission.MissionReportFlash or Mission.MissionReportShow then + Client:Message( GoalsText, 10, "Mission Command: Task Status", 30, "Task status" ) + end +end + +--- Sets a TASK to status Done. +function TASK:Done() + self:F2() + self.TaskDone = true +end + +--- Returns if a TASK is done. +-- @return bool +function TASK:IsDone() + self:F2( self.TaskDone ) + return self.TaskDone +end + +--- Sets a TASK to status failed. +function TASK:Failed() + self:F() + self.TaskFailed = true +end + +--- Returns if a TASk has failed. +-- @return bool +function TASK:IsFailed() + self:F2( self.TaskFailed ) + return self.TaskFailed +end + +function TASK:Reset( Mission, Client ) + self:F2() + self.ExecuteStage = _TransportExecuteStage.NONE +end + +--- Returns the Goals of a TASK +-- @return @table Goals +function TASK:GetGoals() + return self.GoalTasks +end + +--- Returns if a TASK has Goal(s). +-- @param #TASK self +-- @param #string GoalVerb is the name of the Goal of the TASK. +-- @return bool +function TASK:Goal( GoalVerb ) + self:F2( { GoalVerb } ) + if not GoalVerb then + GoalVerb = self.GoalVerb + end + self:T2( {self.GoalTasks[GoalVerb] } ) + if self.GoalTasks[GoalVerb] and self.GoalTasks[GoalVerb].GoalTotal > 0 then + return true + else + return false + end +end + +--- Sets the total Goals to be achieved of the Goal Name +-- @param number GoalTotal is the number of times the GoalVerb needs to be achieved. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +function TASK:SetGoalTotal( GoalTotal, GoalVerb ) + self:F2( { GoalTotal, GoalVerb } ) + + if not GoalVerb then + GoalVerb = self.GoalVerb + end + self.GoalTasks[GoalVerb] = {} + self.GoalTasks[GoalVerb].Goals = {} + self.GoalTasks[GoalVerb].GoalTotal = GoalTotal + self.GoalTasks[GoalVerb].GoalCount = 0 + return self +end + +--- Gets the total of Goals to be achieved within the TASK of the GoalVerb. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +function TASK:GetGoalTotal( GoalVerb ) + self:F2( { GoalVerb } ) + if not GoalVerb then + GoalVerb = self.GoalVerb + end + if self:Goal( GoalVerb ) then + return self.GoalTasks[GoalVerb].GoalTotal + else + return 0 + end +end + +--- Sets the total of Goals currently achieved within the TASK of the GoalVerb. +-- @param number GoalCount is the total number of Goals achieved within the TASK. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +-- @return TASK +function TASK:SetGoalCount( GoalCount, GoalVerb ) + self:F2() + if not GoalVerb then + GoalVerb = self.GoalVerb + end + if self:Goal( GoalVerb) then + self.GoalTasks[GoalVerb].GoalCount = GoalCount + end + return self +end + +--- Increments the total of Goals currently achieved within the TASK of the GoalVerb, with the given GoalCountIncrease. +-- @param number GoalCountIncrease is the number of new Goals achieved within the TASK. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +-- @return TASK +function TASK:IncreaseGoalCount( GoalCountIncrease, GoalVerb ) + self:F2( { GoalCountIncrease, GoalVerb } ) + if not GoalVerb then + GoalVerb = self.GoalVerb + end + if self:Goal( GoalVerb) then + self.GoalTasks[GoalVerb].GoalCount = self.GoalTasks[GoalVerb].GoalCount + GoalCountIncrease + end + return self +end + +--- Gets the total of Goals currently achieved within the TASK of the GoalVerb. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +-- @return TASK +function TASK:GetGoalCount( GoalVerb ) + self:F2() + if not GoalVerb then + GoalVerb = self.GoalVerb + end + if self:Goal( GoalVerb ) then + return self.GoalTasks[GoalVerb].GoalCount + else + return 0 + end +end + +--- Gets the percentage of Goals currently achieved within the TASK of the GoalVerb. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +-- @return TASK +function TASK:GetGoalPercentage( GoalVerb ) + self:F2() + if not GoalVerb then + GoalVerb = self.GoalVerb + end + if self:Goal( GoalVerb ) then + return math.floor( self:GetGoalCount( GoalVerb ) / self:GetGoalTotal( GoalVerb ) * 100 + .5 ) + else + return 100 + end +end + +--- Returns if all the Goals of the TASK were achieved. +-- @return bool +function TASK:IsGoalReached() + self:F2() + + local GoalReached = true + + for GoalVerb, Goals in pairs( self.GoalTasks ) do + self:T2( { "GoalVerb", GoalVerb } ) + if self:Goal( GoalVerb ) then + local GoalToDo = self:GetGoalTotal( GoalVerb ) - self:GetGoalCount( GoalVerb ) + self:T2( "GoalToDo = " .. GoalToDo ) + if GoalToDo <= 0 then + else + GoalReached = false + break + end + else + break + end + end + + self:T( { GoalReached, self.GoalTasks } ) + return GoalReached +end + +--- Adds an Additional Goal for the TASK to be achieved. +-- @param string GoalVerb is the name of the Goal of the TASK. +-- @param string GoalTask is a text describing the Goal of the TASK to be achieved. +-- @param number GoalIncrease is a number by which the Goal achievement is increasing. +function TASK:AddGoalCompletion( GoalVerb, GoalTask, GoalIncrease ) + self:F2( { GoalVerb, GoalTask, GoalIncrease } ) + + if self:Goal( GoalVerb ) then + self.GoalTasks[GoalVerb].Goals[#self.GoalTasks[GoalVerb].Goals+1] = GoalTask + self.GoalTasks[GoalVerb].GoalCount = self.GoalTasks[GoalVerb].GoalCount + GoalIncrease + end + return self +end + +--- Returns if the additional Goal for the TASK was completed. +-- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. +-- @return string Goals +function TASK:GetGoalCompletion( GoalVerb ) + self:F2( { GoalVerb } ) + + if self:Goal( GoalVerb ) then + local Goals = "" + for GoalID, GoalName in pairs( self.GoalTasks[GoalVerb].Goals ) do Goals = Goals .. GoalName .. " + " end + return Goals:gsub(" + $", ""), self.GoalTasks[GoalVerb].GoalCount + end +end + +function TASK.MenuAction( Parameter ) + Parameter.ReferenceTask.ExecuteStage = _TransportExecuteStage.EXECUTING + Parameter.ReferenceTask.Cargo = Parameter.CargoTask +end + +function TASK:StageExecute() + self:F() + + local Execute = false + + if self.Frequency == STAGE.FREQUENCY.REPEAT then + Execute = true + elseif self.Frequency == STAGE.FREQUENCY.NONE then + Execute = false + elseif self.Frequency >= 0 then + Execute = true + self.Frequency = self.Frequency - 1 + end + + return Execute + +end + +--- Work function to set signal events within a TASK. +function TASK:AddSignal( SignalUnitNames, SignalType, SignalColor, SignalHeight ) + self:F() + + local Valid = true + + if Valid then + if type( SignalUnitNames ) == "table" then + self.LandingZoneSignalUnitNames = SignalUnitNames + else + self.LandingZoneSignalUnitNames = { SignalUnitNames } + end + self.LandingZoneSignalType = SignalType + self.LandingZoneSignalColor = SignalColor + self.Signalled = false + if SignalHeight ~= nil then + self.LandingZoneSignalHeight = SignalHeight + else + self.LandingZoneSignalHeight = 0 + end + + if self.TaskBriefing then + self.TaskBriefing = self.TaskBriefing .. " " .. SignalColor.TEXT .. " " .. SignalType.TEXT .. " will be fired when entering the landing zone." + end + end + + return Valid +end + +--- When the CLIENT is approaching the landing zone, a RED SMOKE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddSmokeRed( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.RED, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a GREEN SMOKE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddSmokeGreen( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.GREEN, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a BLUE SMOKE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddSmokeBlue( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.BLUE, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a WHITE SMOKE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddSmokeWhite( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.WHITE, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, an ORANGE SMOKE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddSmokeOrange( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.ORANGE, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a RED FLARE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddFlareRed( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.RED, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a GREEN FLARE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddFlareGreen( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.GREEN, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a BLUE FLARE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddFlareBlue( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.BLUE, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, a WHITE FLARE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddFlareWhite( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.WHITE, SignalHeight ) +end + +--- When the CLIENT is approaching the landing zone, an ORANGE FLARE will be fired by an optional SignalUnitNames. +-- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. +-- @param number SignalHeight Altitude that the Signal should be fired... +function TASK:AddFlareOrange( SignalUnitNames, SignalHeight ) + self:F() + self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.ORANGE, SignalHeight ) +end +--- A GOHOMETASK orchestrates the travel back to the home base, which is a specific zone defined within the ME. +-- @module GOHOMETASK + +--- The GOHOMETASK class +-- @type +GOHOMETASK = { + ClassName = "GOHOMETASK", +} + +--- Creates a new GOHOMETASK. +-- @param table{string,...}|string LandingZones Table of Landing Zone names where Home(s) are located. +-- @return GOHOMETASK +function GOHOMETASK:New( LandingZones ) + local self = BASE:Inherit( self, TASK:New() ) + self:F( { LandingZones } ) + local Valid = true + + Valid = routines.ValidateZone( LandingZones, "LandingZones", Valid ) + + if Valid then + self.Name = 'Fly Home' + self.TaskBriefing = "Task: Fly back to your home base. Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to your home base." + if type( LandingZones ) == "table" then + self.LandingZones = LandingZones + else + self.LandingZones = { LandingZones } + end + self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGEARRIVE:New(), STAGEDONE:New() } + self.SetStage( self, 1 ) + end + + return self +end +--- A DESTROYBASETASK will monitor the destruction of Groups and Units. This is a BASE class, other classes are derived from this class. +-- @module DESTROYBASETASK +-- @see DESTROYGROUPSTASK +-- @see DESTROYUNITTYPESTASK +-- @see DESTROY_RADARS_TASK + + + +--- The DESTROYBASETASK class +-- @type DESTROYBASETASK +DESTROYBASETASK = { + ClassName = "DESTROYBASETASK", + Destroyed = 0, + GoalVerb = "Destroy", + DestroyPercentage = 100, +} + +--- Creates a new DESTROYBASETASK. +-- @param #DESTROYBASETASK self +-- @param #string DestroyGroupType Text describing the group to be destroyed. f.e. "Radar Installations", "Ships", "Vehicles", "Command Centers". +-- @param #string DestroyUnitType Text describing the unit types to be destroyed. f.e. "SA-6", "Row Boats", "Tanks", "Tents". +-- @param #list<#string> DestroyGroupPrefixes Table of Prefixes of the Groups to be destroyed before task is completed. +-- @param #number DestroyPercentage defines the %-tage that needs to be destroyed to achieve mission success. eg. If in the Group there are 10 units, then a value of 75 would require 8 units to be destroyed from the Group to complete the @{TASK}. +-- @return DESTROYBASETASK +function DESTROYBASETASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupPrefixes, DestroyPercentage ) + local self = BASE:Inherit( self, TASK:New() ) + self:F() + + self.Name = 'Destroy' + self.Destroyed = 0 + self.DestroyGroupPrefixes = DestroyGroupPrefixes + self.DestroyGroupType = DestroyGroupType + self.DestroyUnitType = DestroyUnitType + if DestroyPercentage then + self.DestroyPercentage = DestroyPercentage + end + self.TaskBriefing = "Task: Destroy " .. DestroyGroupType .. "." + self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEGROUPSDESTROYED:New(), STAGEDONE:New() } + self.SetStage( self, 1 ) + + return self +end + +--- Handle the S_EVENT_DEAD events to validate the destruction of units for the task monitoring. +-- @param #DESTROYBASETASK self +-- @param Event#EVENTDATA Event structure of MOOSE. +function DESTROYBASETASK:EventDead( Event ) + self:F( { Event } ) + + if Event.IniDCSUnit then + local DestroyUnit = Event.IniDCSUnit + local DestroyUnitName = Event.IniDCSUnitName + local DestroyGroup = Event.IniDCSGroup + local DestroyGroupName = Event.IniDCSGroupName + + --TODO: I need to fix here if 2 groups in the mission have a similar name with GroupPrefix equal, then i should differentiate for which group the goal was reached! + --I may need to test if for the goalverb that group goal was reached or something. Need to think about it a bit more ... + local UnitsDestroyed = 0 + for DestroyGroupPrefixID, DestroyGroupPrefix in pairs( self.DestroyGroupPrefixes ) do + self:T( DestroyGroupPrefix ) + if string.find( DestroyGroupName, DestroyGroupPrefix, 1, true ) then + self:T( BASE:Inherited(self).ClassName ) + UnitsDestroyed = self:ReportGoalProgress( DestroyGroup, DestroyUnit ) + self:T( UnitsDestroyed ) + end + end + + self:T( { UnitsDestroyed } ) + self:IncreaseGoalCount( UnitsDestroyed, self.GoalVerb ) + end + +end + +--- Validate task completeness of DESTROYBASETASK. +-- @param DestroyGroup Group structure describing the group to be evaluated. +-- @param DestroyUnit Unit structure describing the Unit to be evaluated. +function DESTROYBASETASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) + self:F() + + return 0 +end +--- DESTROYGROUPSTASK +-- @module DESTROYGROUPSTASK + + + +--- The DESTROYGROUPSTASK class +-- @type +DESTROYGROUPSTASK = { + ClassName = "DESTROYGROUPSTASK", + GoalVerb = "Destroy Groups", +} + +--- Creates a new DESTROYGROUPSTASK. +-- @param #DESTROYGROUPSTASK self +-- @param #string DestroyGroupType String describing the group to be destroyed. +-- @param #string DestroyUnitType String describing the unit to be destroyed. +-- @param #list<#string> DestroyGroupNames Table of string containing the name of the groups to be destroyed before task is completed. +-- @param #number DestroyPercentage defines the %-tage that needs to be destroyed to achieve mission success. eg. If in the Group there are 10 units, then a value of 75 would require 8 units to be destroyed from the Group to complete the @{TASK}. +---@return DESTROYGROUPSTASK +function DESTROYGROUPSTASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyPercentage ) + local self = BASE:Inherit( self, DESTROYBASETASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyPercentage ) ) + self:F() + + self.Name = 'Destroy Groups' + self.GoalVerb = "Destroy " .. DestroyGroupType + + _EVENTDISPATCHER:OnDead( self.EventDead , self ) + _EVENTDISPATCHER:OnCrash( self.EventDead , self ) + + return self +end + +--- Report Goal Progress. +-- @param #DESTROYGROUPSTASK self +-- @param DCSGroup#Group DestroyGroup Group structure describing the group to be evaluated. +-- @param DCSUnit#Unit DestroyUnit Unit structure describing the Unit to be evaluated. +-- @return #number The DestroyCount reflecting the amount of units destroyed within the group. +function DESTROYGROUPSTASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) + self:F( { DestroyGroup, DestroyUnit, self.DestroyPercentage } ) + + local DestroyGroupSize = DestroyGroup:getSize() - 1 -- When a DEAD event occurs, the getSize is still one larger than the destroyed unit. + local DestroyGroupInitialSize = DestroyGroup:getInitialSize() + self:T( { DestroyGroupSize, DestroyGroupInitialSize - ( DestroyGroupInitialSize * self.DestroyPercentage / 100 ) } ) + + local DestroyCount = 0 + if DestroyGroup then + if DestroyGroupSize <= DestroyGroupInitialSize - ( DestroyGroupInitialSize * self.DestroyPercentage / 100 ) then + DestroyCount = 1 + end + else + DestroyCount = 1 + end + + self:T( DestroyCount ) + + return DestroyCount +end +--- Task class to destroy radar installations. +-- @module DESTROYRADARSTASK + + + +--- The DESTROYRADARS class +-- @type +DESTROYRADARSTASK = { + ClassName = "DESTROYRADARSTASK", + GoalVerb = "Destroy Radars" +} + +--- Creates a new DESTROYRADARSTASK. +-- @param table{string,...} DestroyGroupNames Table of string containing the group names of which the radars are be destroyed. +-- @return DESTROYRADARSTASK +function DESTROYRADARSTASK:New( DestroyGroupNames ) + local self = BASE:Inherit( self, DESTROYGROUPSTASK:New( 'radar installations', 'radars', DestroyGroupNames ) ) + self:F() + + self.Name = 'Destroy Radars' + + _EVENTDISPATCHER:OnDead( self.EventDead , self ) + + return self +end + +--- Report Goal Progress. +-- @param Group DestroyGroup Group structure describing the group to be evaluated. +-- @param Unit DestroyUnit Unit structure describing the Unit to be evaluated. +function DESTROYRADARSTASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) + self:F( { DestroyGroup, DestroyUnit } ) + + local DestroyCount = 0 + if DestroyUnit and DestroyUnit:hasSensors( Unit.SensorType.RADAR, Unit.RadarType.AS ) then + if DestroyUnit and DestroyUnit:getLife() <= 1.0 then + self:T( 'Destroyed a radar' ) + DestroyCount = 1 + end + end + return DestroyCount +end +--- Set TASK to destroy certain unit types. +-- @module DESTROYUNITTYPESTASK + + + +--- The DESTROYUNITTYPESTASK class +-- @type +DESTROYUNITTYPESTASK = { + ClassName = "DESTROYUNITTYPESTASK", + GoalVerb = "Destroy", +} + +--- Creates a new DESTROYUNITTYPESTASK. +-- @param string DestroyGroupType String describing the group to be destroyed. f.e. "Radar Installations", "Fleet", "Batallion", "Command Centers". +-- @param string DestroyUnitType String describing the unit to be destroyed. f.e. "radars", "ships", "tanks", "centers". +-- @param table{string,...} DestroyGroupNames Table of string containing the group names of which the radars are be destroyed. +-- @param string DestroyUnitTypes Table of string containing the type names of the units to achieve mission success. +-- @return DESTROYUNITTYPESTASK +function DESTROYUNITTYPESTASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyUnitTypes ) + local self = BASE:Inherit( self, DESTROYBASETASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames ) ) + self:F( { DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyUnitTypes } ) + + if type(DestroyUnitTypes) == 'table' then + self.DestroyUnitTypes = DestroyUnitTypes + else + self.DestroyUnitTypes = { DestroyUnitTypes } + end + + self.Name = 'Destroy Unit Types' + self.GoalVerb = "Destroy " .. DestroyGroupType + + _EVENTDISPATCHER:OnDead( self.EventDead , self ) + + return self +end + +--- Report Goal Progress. +-- @param Group DestroyGroup Group structure describing the group to be evaluated. +-- @param Unit DestroyUnit Unit structure describing the Unit to be evaluated. +function DESTROYUNITTYPESTASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) + self:F( { DestroyGroup, DestroyUnit } ) + + local DestroyCount = 0 + for UnitTypeID, UnitType in pairs( self.DestroyUnitTypes ) do + if DestroyUnit and DestroyUnit:getTypeName() == UnitType then + if DestroyUnit and DestroyUnit:getLife() <= 1.0 then + DestroyCount = DestroyCount + 1 + end + end + end + return DestroyCount +end +--- A PICKUPTASK orchestrates the loading of CARGO at a specific landing zone. +-- @module PICKUPTASK +-- @parent TASK + +--- The PICKUPTASK class +-- @type +PICKUPTASK = { + ClassName = "PICKUPTASK", + TEXT = { "Pick-Up", "picked-up", "loaded" }, + GoalVerb = "Pick-Up" +} + +--- Creates a new PICKUPTASK. +-- @param table{string,...}|string LandingZones Table of Zone names where Cargo is to be loaded. +-- @param CARGO_TYPE CargoType Type of the Cargo. The type must be of the following Enumeration:.. +-- @param number OnBoardSide Reflects from which side the cargo Group will be on-boarded on the Carrier. +function PICKUPTASK:New( CargoType, OnBoardSide ) + local self = BASE:Inherit( self, TASK:New() ) + self:F() + + -- self holds the inherited instance of the PICKUPTASK Class to the BASE class. + + local Valid = true + + if Valid then + self.Name = 'Pickup Cargo' + self.TaskBriefing = "Task: Fly to the indicated landing zones and pickup " .. CargoType .. ". Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the pickup zone." + self.CargoType = CargoType + self.GoalVerb = CargoType .. " " .. self.GoalVerb + self.OnBoardSide = OnBoardSide + self.IsLandingRequired = true -- required to decide whether the client needs to land or not + self.IsSlingLoad = false -- Indicates whether the cargo is a sling load cargo + self.Stages = { STAGE_CARGO_INIT:New(), STAGE_CARGO_LOAD:New(), STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGELANDING:New(), STAGELANDED:New(), STAGELOAD:New(), STAGEDONE:New() } + self.SetStage( self, 1 ) + end + + return self +end + +function PICKUPTASK:FromZone( LandingZone ) + self:F() + + self.LandingZones.LandingZoneNames[LandingZone.CargoZoneName] = LandingZone.CargoZoneName + self.LandingZones.LandingZones[LandingZone.CargoZoneName] = LandingZone + + return self +end + +function PICKUPTASK:InitCargo( InitCargos ) + self:F( { InitCargos } ) + + if type( InitCargos ) == "table" then + self.Cargos.InitCargos = InitCargos + else + self.Cargos.InitCargos = { InitCargos } + end + + return self +end + +function PICKUPTASK:LoadCargo( LoadCargos ) + self:F( { LoadCargos } ) + + if type( LoadCargos ) == "table" then + self.Cargos.LoadCargos = LoadCargos + else + self.Cargos.LoadCargos = { LoadCargos } + end + + return self +end + +function PICKUPTASK:AddCargoMenus( Client, Cargos, TransportRadius ) + self:F() + + for CargoID, Cargo in pairs( Cargos ) do + + self:T( { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo:IsStatusNone(), Cargo:IsStatusLoaded(), Cargo:IsStatusLoading(), Cargo:IsStatusUnLoaded() } ) + + -- If the Cargo has no status, allow the menu option. + if Cargo:IsStatusNone() or ( Cargo:IsStatusLoading() and Client == Cargo:IsLoadingToClient() ) then + + local MenuAdd = false + if Cargo:IsNear( Client, self.CurrentCargoZone ) then + MenuAdd = true + end + + if MenuAdd then + if Client._Menus[Cargo.CargoType] == nil then + Client._Menus[Cargo.CargoType] = {} + end + + if not Client._Menus[Cargo.CargoType].PickupMenu then + Client._Menus[Cargo.CargoType].PickupMenu = missionCommands.addSubMenuForGroup( + Client:GetClientGroupID(), + self.TEXT[1] .. " " .. Cargo.CargoType, + nil + ) + self:T( 'Added PickupMenu: ' .. self.TEXT[1] .. " " .. Cargo.CargoType ) + end + + if Client._Menus[Cargo.CargoType].PickupSubMenus == nil then + Client._Menus[Cargo.CargoType].PickupSubMenus = {} + end + + Client._Menus[Cargo.CargoType].PickupSubMenus[ #Client._Menus[Cargo.CargoType].PickupSubMenus + 1 ] = missionCommands.addCommandForGroup( + Client:GetClientGroupID(), + Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )", + Client._Menus[Cargo.CargoType].PickupMenu, + self.MenuAction, + { ReferenceTask = self, CargoTask = Cargo } + ) + self:T( 'Added PickupSubMenu' .. Cargo.CargoType .. ":" .. Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )" ) + end + end + end + +end + +function PICKUPTASK:RemoveCargoMenus( Client ) + self:F() + + for MenuID, MenuData in pairs( Client._Menus ) do + for SubMenuID, SubMenuData in pairs( MenuData.PickupSubMenus ) do + missionCommands.removeItemForGroup( Client:GetClientGroupID(), SubMenuData ) + self:T( "Removed PickupSubMenu " ) + SubMenuData = nil + end + if MenuData.PickupMenu then + missionCommands.removeItemForGroup( Client:GetClientGroupID(), MenuData.PickupMenu ) + self:T( "Removed PickupMenu " ) + MenuData.PickupMenu = nil + end + end + + for CargoID, Cargo in pairs( CARGOS ) do + self:T( { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo:IsStatusNone(), Cargo:IsStatusLoaded(), Cargo:IsStatusLoading(), Cargo:IsStatusUnLoaded() } ) + if Cargo:IsStatusLoading() and Client == Cargo:IsLoadingToClient() then + Cargo:StatusNone() + end + end + +end + + + +function PICKUPTASK:HasFailed( ClientDead ) + self:F() + + local TaskHasFailed = self.TaskFailed + return TaskHasFailed +end + +--- A DEPLOYTASK orchestrates the deployment of CARGO within a specific landing zone. +-- @module DEPLOYTASK + + + +--- A DeployTask +-- @type DEPLOYTASK +DEPLOYTASK = { + ClassName = "DEPLOYTASK", + TEXT = { "Deploy", "deployed", "unloaded" }, + GoalVerb = "Deployment" +} + + +--- Creates a new DEPLOYTASK object, which models the sequence of STAGEs to unload a cargo. +-- @function [parent=#DEPLOYTASK] New +-- @param #string CargoType Type of the Cargo. +-- @return #DEPLOYTASK The created DeployTask +function DEPLOYTASK:New( CargoType ) + local self = BASE:Inherit( self, TASK:New() ) + self:F() + + local Valid = true + + if Valid then + self.Name = 'Deploy Cargo' + self.TaskBriefing = "Fly to one of the indicated landing zones and deploy " .. CargoType .. ". Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the deployment zone." + self.CargoType = CargoType + self.GoalVerb = CargoType .. " " .. self.GoalVerb + self.Stages = { STAGE_CARGO_INIT:New(), STAGE_CARGO_LOAD:New(), STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGELANDING:New(), STAGELANDED:New(), STAGEUNLOAD:New(), STAGEDONE:New() } + self.SetStage( self, 1 ) + end + + return self +end + +function DEPLOYTASK:ToZone( LandingZone ) + self:F() + + self.LandingZones.LandingZoneNames[LandingZone.CargoZoneName] = LandingZone.CargoZoneName + self.LandingZones.LandingZones[LandingZone.CargoZoneName] = LandingZone + + return self +end + + +function DEPLOYTASK:InitCargo( InitCargos ) + self:F( { InitCargos } ) + + if type( InitCargos ) == "table" then + self.Cargos.InitCargos = InitCargos + else + self.Cargos.InitCargos = { InitCargos } + end + + return self +end + + +function DEPLOYTASK:LoadCargo( LoadCargos ) + self:F( { LoadCargos } ) + + if type( LoadCargos ) == "table" then + self.Cargos.LoadCargos = LoadCargos + else + self.Cargos.LoadCargos = { LoadCargos } + end + + return self +end + + +--- When the cargo is unloaded, it will move to the target zone name. +-- @param string TargetZoneName Name of the Zone to where the Cargo should move after unloading. +function DEPLOYTASK:SetCargoTargetZoneName( TargetZoneName ) + self:F() + + local Valid = true + + Valid = routines.ValidateString( TargetZoneName, "TargetZoneName", Valid ) + + if Valid then + self.TargetZoneName = TargetZoneName + end + + return Valid + +end + +function DEPLOYTASK:AddCargoMenus( Client, Cargos, TransportRadius ) + self:F() + + local ClientGroupID = Client:GetClientGroupID() + + self:T( ClientGroupID ) + + for CargoID, Cargo in pairs( Cargos ) do + + self:T( { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo.CargoWeight } ) + + if Cargo:IsStatusLoaded() and Client == Cargo:IsLoadedInClient() then + + if Client._Menus[Cargo.CargoType] == nil then + Client._Menus[Cargo.CargoType] = {} + end + + if not Client._Menus[Cargo.CargoType].DeployMenu then + Client._Menus[Cargo.CargoType].DeployMenu = missionCommands.addSubMenuForGroup( + ClientGroupID, + self.TEXT[1] .. " " .. Cargo.CargoType, + nil + ) + self:T( 'Added DeployMenu ' .. self.TEXT[1] ) + end + + if Client._Menus[Cargo.CargoType].DeploySubMenus == nil then + Client._Menus[Cargo.CargoType].DeploySubMenus = {} + end + + if Client._Menus[Cargo.CargoType].DeployMenu == nil then + self:T( 'deploymenu is nil' ) + end + + Client._Menus[Cargo.CargoType].DeploySubMenus[ #Client._Menus[Cargo.CargoType].DeploySubMenus + 1 ] = missionCommands.addCommandForGroup( + ClientGroupID, + Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )", + Client._Menus[Cargo.CargoType].DeployMenu, + self.MenuAction, + { ReferenceTask = self, CargoTask = Cargo } + ) + self:T( 'Added DeploySubMenu ' .. Cargo.CargoType .. ":" .. Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )" ) + end + end + +end + +function DEPLOYTASK:RemoveCargoMenus( Client ) + self:F() + + local ClientGroupID = Client:GetClientGroupID() + self:T( ClientGroupID ) + + for MenuID, MenuData in pairs( Client._Menus ) do + if MenuData.DeploySubMenus ~= nil then + for SubMenuID, SubMenuData in pairs( MenuData.DeploySubMenus ) do + missionCommands.removeItemForGroup( ClientGroupID, SubMenuData ) + self:T( "Removed DeploySubMenu " ) + SubMenuData = nil + end + end + if MenuData.DeployMenu then + missionCommands.removeItemForGroup( ClientGroupID, MenuData.DeployMenu ) + self:T( "Removed DeployMenu " ) + MenuData.DeployMenu = nil + end + end + +end +--- A NOTASK is a dummy activity... But it will show a Mission Briefing... +-- @module NOTASK + +--- The NOTASK class +-- @type +NOTASK = { + ClassName = "NOTASK", +} + +--- Creates a new NOTASK. +function NOTASK:New() + local self = BASE:Inherit( self, TASK:New() ) + self:F() + + local Valid = true + + if Valid then + self.Name = 'Nothing' + self.TaskBriefing = "Task: Execute your mission." + self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEDONE:New() } + self.SetStage( self, 1 ) + end + + return self +end +--- A ROUTETASK orchestrates the travel to a specific zone defined within the ME. +-- @module ROUTETASK + +--- The ROUTETASK class +-- @type +ROUTETASK = { + ClassName = "ROUTETASK", + GoalVerb = "Route", +} + +--- Creates a new ROUTETASK. +-- @param table{sring,...}|string LandingZones Table of Zone Names where the target is located. +-- @param string TaskBriefing (optional) Defines a text describing the briefing of the task. +-- @return ROUTETASK +function ROUTETASK:New( LandingZones, TaskBriefing ) + local self = BASE:Inherit( self, TASK:New() ) + self:F( { LandingZones, TaskBriefing } ) + + local Valid = true + + Valid = routines.ValidateZone( LandingZones, "LandingZones", Valid ) + + if Valid then + self.Name = 'Route To Zone' + if TaskBriefing then + self.TaskBriefing = TaskBriefing .. " Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the target objective." + else + self.TaskBriefing = "Task: Fly to specified zone(s). Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the target objective." + end + if type( LandingZones ) == "table" then + self.LandingZones = LandingZones + else + self.LandingZones = { LandingZones } + end + self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGEARRIVE:New(), STAGEDONE:New() } + self.SetStage( self, 1 ) + end + + return self +end + +--- A MISSION is the main owner of a Mission orchestration within MOOSE . The Mission framework orchestrates @{CLIENT}s, @{TASK}s, @{STAGE}s etc. +-- A @{CLIENT} needs to be registered within the @{MISSION} through the function @{AddClient}. A @{TASK} needs to be registered within the @{MISSION} through the function @{AddTask}. +-- @module Mission + +--- The MISSION class +-- @type MISSION +-- @extends Base#BASE +-- @field #MISSION.Clients _Clients +-- @field #string MissionBriefing +MISSION = { + ClassName = "MISSION", + Name = "", + MissionStatus = "PENDING", + _Clients = {}, + _Tasks = {}, + _ActiveTasks = {}, + GoalFunction = nil, + MissionReportTrigger = 0, + MissionProgressTrigger = 0, + MissionReportShow = false, + MissionReportFlash = false, + MissionTimeInterval = 0, + MissionCoalition = "", + SUCCESS = 1, + FAILED = 2, + REPEAT = 3, + _GoalTasks = {} +} + +--- @type MISSION.Clients +-- @list + +function MISSION:Meta() + + local self = BASE:Inherit( self, BASE:New() ) + self:F() + + return self +end + +--- This is the main MISSION declaration method. Each Mission is like the master or a Mission orchestration between, Clients, Tasks, Stages etc. +-- @param string MissionName is the name of the mission. This name will be used to reference the status of each mission by the players. +-- @param string MissionPriority is a string indicating the "priority" of the Mission. f.e. "Primary", "Secondary" or "First", "Second". It is free format and up to the Mission designer to choose. There are no rules behind this field. +-- @param string MissionBriefing is a string indicating the mission briefing to be shown when a player joins a @{CLIENT}. +-- @param string MissionCoalition is a string indicating the coalition or party to which this mission belongs to. It is free format and can be chosen freely by the mission designer. Note that this field is not to be confused with the coalition concept of the ME. Examples of a Mission Coalition could be "NATO", "CCCP", "Intruders", "Terrorists"... +-- @return MISSION +-- @usage +-- -- Declare a few missions. +-- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'Patriots', 'Primary', 'Our intelligence reports that 3 Patriot SAM defense batteries are located near Ruisi, Kvarhiti and Gori.', 'Russia' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'Package Delivery', 'Operational', 'In order to be in full control of the situation, we need you to deliver a very important package at a secret location. Fly undetected through the NATO defenses and deliver the secret package. The secret agent is located at waypoint 4.', 'Russia' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'Rescue General', 'Tactical', 'Our intelligence has received a remote signal behind Gori. We believe it is a very important Russian General that was captured by Georgia. Go out there and rescue him! Ensure you stay out of the battle zone, keep south. Waypoint 4 is the location of our Russian General.', 'Russia' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'NATO Transport Troops', 'Operational', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.', 'NATO' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'SA-6 SAMs', 'Primary', 'Our intelligence reports that 3 SA-6 SAM defense batteries are located near Didmukha, Khetagurov and Berula. Eliminate the Russian SAMs.', 'NATO' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'NATO Sling Load', 'Operational', 'Fly to the cargo pickup zone at Dzegvi or Kaspi, and sling the cargo to Soganlug airbase.', 'NATO' ) +-- local Mission = MISSIONSCHEDULER.AddMission( 'Rescue secret agent', 'Tactical', 'In order to be in full control of the situation, we need you to rescue a secret agent from the woods behind enemy lines. Avoid the Russian defenses and rescue the agent. Keep south until Khasuri, and keep your eyes open for any SAM presence. The agent is located at waypoint 4 on your kneeboard.', 'NATO' ) +function MISSION:New( MissionName, MissionPriority, MissionBriefing, MissionCoalition ) + + self = MISSION:Meta() + self:T({ MissionName, MissionPriority, MissionBriefing, MissionCoalition }) + + local Valid = true + + Valid = routines.ValidateString( MissionName, "MissionName", Valid ) + Valid = routines.ValidateString( MissionPriority, "MissionPriority", Valid ) + Valid = routines.ValidateString( MissionBriefing, "MissionBriefing", Valid ) + Valid = routines.ValidateString( MissionCoalition, "MissionCoalition", Valid ) + + if Valid then + self.Name = MissionName + self.MissionPriority = MissionPriority + self.MissionBriefing = MissionBriefing + self.MissionCoalition = MissionCoalition + end + + return self +end + +--- Returns if a Mission has completed. +-- @return bool +function MISSION:IsCompleted() + self:F() + return self.MissionStatus == "ACCOMPLISHED" +end + +--- Set a Mission to completed. +function MISSION:Completed() + self:F() + self.MissionStatus = "ACCOMPLISHED" + self:StatusToClients() +end + +--- Returns if a Mission is ongoing. +-- treturn bool +function MISSION:IsOngoing() + self:F() + return self.MissionStatus == "ONGOING" +end + +--- Set a Mission to ongoing. +function MISSION:Ongoing() + self:F() + self.MissionStatus = "ONGOING" + --self:StatusToClients() +end + +--- Returns if a Mission is pending. +-- treturn bool +function MISSION:IsPending() + self:F() + return self.MissionStatus == "PENDING" +end + +--- Set a Mission to pending. +function MISSION:Pending() + self:F() + self.MissionStatus = "PENDING" + self:StatusToClients() +end + +--- Returns if a Mission has failed. +-- treturn bool +function MISSION:IsFailed() + self:F() + return self.MissionStatus == "FAILED" +end + +--- Set a Mission to failed. +function MISSION:Failed() + self:F() + self.MissionStatus = "FAILED" + self:StatusToClients() +end + +--- Send the status of the MISSION to all Clients. +function MISSION:StatusToClients() + self:F() + if self.MissionReportFlash then + for ClientID, Client in pairs( self._Clients ) do + Client:Message( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. '! ( ' .. self.MissionPriority .. ' mission ) ', 10, "Mission Command: Mission Status") + end + end +end + +--- Handles the reporting. After certain time intervals, a MISSION report MESSAGE will be shown to All Players. +function MISSION:ReportTrigger() + self:F() + + if self.MissionReportShow == true then + self.MissionReportShow = false + return true + else + if self.MissionReportFlash == true then + if timer.getTime() >= self.MissionReportTrigger then + self.MissionReportTrigger = timer.getTime() + self.MissionTimeInterval + return true + else + return false + end + else + return false + end + end +end + +--- Report the status of all MISSIONs to all active Clients. +function MISSION:ReportToAll() + self:F() + + local AlivePlayers = '' + for ClientID, Client in pairs( self._Clients ) do + if Client:GetDCSGroup() then + if Client:GetClientGroupDCSUnit() then + if Client:GetClientGroupDCSUnit():getLife() > 0.0 then + if AlivePlayers == '' then + AlivePlayers = ' Players: ' .. Client:GetClientGroupDCSUnit():getPlayerName() + else + AlivePlayers = AlivePlayers .. ' / ' .. Client:GetClientGroupDCSUnit():getPlayerName() + end + end + end + end + end + local Tasks = self:GetTasks() + local TaskText = "" + for TaskID, TaskData in pairs( Tasks ) do + TaskText = TaskText .. " - Task " .. TaskID .. ": " .. TaskData.Name .. ": " .. TaskData:GetGoalProgress() .. "\n" + end + MESSAGE:New( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. ' ( ' .. self.MissionPriority .. ' mission )' .. AlivePlayers .. "\n" .. TaskText:gsub("\n$",""), 10, "Mission Command: Mission Report" ):ToAll() +end + + +--- Add a goal function to a MISSION. Goal functions are called when a @{TASK} within a mission has been completed. +-- @param function GoalFunction is the function defined by the mission designer to evaluate whether a certain goal has been reached after a @{TASK} finishes within the @{MISSION}. A GoalFunction must accept 2 parameters: Mission, Client, which contains the current MISSION object and the current CLIENT object respectively. +-- @usage +-- PatriotActivation = { +-- { "US SAM Patriot Zerti", false }, +-- { "US SAM Patriot Zegduleti", false }, +-- { "US SAM Patriot Gvleti", false } +-- } +-- +-- function DeployPatriotTroopsGoal( Mission, Client ) +-- +-- +-- -- Check if the cargo is all deployed for mission success. +-- for CargoID, CargoData in pairs( Mission._Cargos ) do +-- if Group.getByName( CargoData.CargoGroupName ) then +-- CargoGroup = Group.getByName( CargoData.CargoGroupName ) +-- if CargoGroup then +-- -- Check if the cargo is ready to activate +-- CurrentLandingZoneID = routines.IsUnitInZones( CargoGroup:getUnits()[1], Mission:GetTask( 2 ).LandingZones ) -- The second task is the Deploytask to measure mission success upon +-- if CurrentLandingZoneID then +-- if PatriotActivation[CurrentLandingZoneID][2] == false then +-- -- Now check if this is a new Mission Task to be completed... +-- trigger.action.setGroupAIOn( Group.getByName( PatriotActivation[CurrentLandingZoneID][1] ) ) +-- PatriotActivation[CurrentLandingZoneID][2] = true +-- MessageToBlue( "Mission Command: Message to all airborne units! The " .. PatriotActivation[CurrentLandingZoneID][1] .. " is armed. Our air defenses are now stronger.", 60, "BLUE/PatriotDefense" ) +-- MessageToRed( "Mission Command: Our satellite systems are detecting additional NATO air defenses. To all airborne units: Take care!!!", 60, "RED/PatriotDefense" ) +-- Mission:GetTask( 2 ):AddGoalCompletion( "Patriots activated", PatriotActivation[CurrentLandingZoneID][1], 1 ) -- Register Patriot activation as part of mission goal. +-- end +-- end +-- end +-- end +-- end +-- end +-- +-- local Mission = MISSIONSCHEDULER.AddMission( 'NATO Transport Troops', 'Operational', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.', 'NATO' ) +-- Mission:AddGoalFunction( DeployPatriotTroopsGoal ) +function MISSION:AddGoalFunction( GoalFunction ) + self:F() + self.GoalFunction = GoalFunction +end + +--- Register a new @{CLIENT} to participate within the mission. +-- @param CLIENT Client is the @{CLIENT} object. The object must have been instantiated with @{CLIENT:New}. +-- @return CLIENT +-- @usage +-- Add a number of Client objects to the Mission. +-- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*HOT-Deploy Troops 1', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*RAMP-Deploy Troops 3', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*HOT-Deploy Troops 2', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) +-- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*RAMP-Deploy Troops 4', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) +function MISSION:AddClient( Client ) + self:F( { Client } ) + + local Valid = true + + if Valid then + self._Clients[Client.ClientName] = Client + end + + return Client +end + +--- Find a @{CLIENT} object within the @{MISSION} by its ClientName. +-- @param CLIENT ClientName is a string defining the Client Group as defined within the ME. +-- @return CLIENT +-- @usage +-- -- Seach for Client "Bomber" within the Mission. +-- local BomberClient = Mission:FindClient( "Bomber" ) +function MISSION:FindClient( ClientName ) + self:F( { self._Clients[ClientName] } ) + return self._Clients[ClientName] +end + + +--- Register a @{TASK} to be completed within the @{MISSION}. Note that there can be multiple @{TASK}s registered to be completed. Each TASK can be set a certain Goal. The MISSION will not be completed until all Goals are reached. +-- @param TASK Task is the @{TASK} object. The object must have been instantiated with @{TASK:New} or any of its inherited @{TASK}s. +-- @param number TaskNumber is the sequence number of the TASK within the MISSION. This number does have to be chronological. +-- @return TASK +-- @usage +-- -- Define a few tasks for the Mission. +-- PickupZones = { "NATO Gold Pickup Zone", "NATO Titan Pickup Zone" } +-- PickupSignalUnits = { "NATO Gold Coordination Center", "NATO Titan Coordination Center" } +-- +-- -- Assign the Pickup Task +-- local PickupTask = PICKUPTASK:New( PickupZones, CARGO_TYPE.ENGINEERS, CLIENT.ONBOARDSIDE.LEFT ) +-- PickupTask:AddSmokeBlue( PickupSignalUnits ) +-- PickupTask:SetGoalTotal( 3 ) +-- Mission:AddTask( PickupTask, 1 ) +-- +-- -- Assign the Deploy Task +-- local PatriotActivationZones = { "US Patriot Battery 1 Activation", "US Patriot Battery 2 Activation", "US Patriot Battery 3 Activation" } +-- local PatriotActivationZonesSmokeUnits = { "US SAM Patriot - Battery 1 Control", "US SAM Patriot - Battery 2 Control", "US SAM Patriot - Battery 3 Control" } +-- local DeployTask = DEPLOYTASK:New( PatriotActivationZones, CARGO_TYPE.ENGINEERS ) +-- --DeployTask:SetCargoTargetZoneName( 'US Troops Attack ' .. math.random(2) ) +-- DeployTask:AddSmokeBlue( PatriotActivationZonesSmokeUnits ) +-- DeployTask:SetGoalTotal( 3 ) +-- DeployTask:SetGoalTotal( 3, "Patriots activated" ) +-- Mission:AddTask( DeployTask, 2 ) + +function MISSION:AddTask( Task, TaskNumber ) + self:F() + + self._Tasks[TaskNumber] = Task + self._Tasks[TaskNumber]:EnableEvents() + self._Tasks[TaskNumber].ID = TaskNumber + + return Task + end + +--- Get the TASK idenified by the TaskNumber from the Mission. This function is useful in GoalFunctions. +-- @param number TaskNumber is the number of the @{TASK} within the @{MISSION}. +-- @return TASK +-- @usage +-- -- Get Task 2 from the Mission. +-- Task2 = Mission:GetTask( 2 ) + +function MISSION:GetTask( TaskNumber ) + self:F() + + local Valid = true + + local Task = nil + + if type(TaskNumber) ~= "number" then + Valid = false + end + + if Valid then + Task = self._Tasks[TaskNumber] + end + + return Task +end + +--- Get all the TASKs from the Mission. This function is useful in GoalFunctions. +-- @return {TASK,...} Structure of TASKS with the @{TASK} number as the key. +-- @usage +-- -- Get Tasks from the Mission. +-- Tasks = Mission:GetTasks() +-- env.info( "Task 2 Completion = " .. Tasks[2]:GetGoalPercentage() .. "%" ) +function MISSION:GetTasks() + self:F() + + return self._Tasks +end + + +--[[ + _TransportExecuteStage: Defines the different stages of Transport unload/load execution. This table is internal and is used to control the validity of Transport load/unload timing. + + - _TransportExecuteStage.EXECUTING + - _TransportExecuteStage.SUCCESS + - _TransportExecuteStage.FAILED + +--]] +_TransportExecuteStage = { + NONE = 0, + EXECUTING = 1, + SUCCESS = 2, + FAILED = 3 +} + + +--- The MISSIONSCHEDULER is an OBJECT and is the main scheduler of ALL active MISSIONs registered within this scheduler. It's workings are considered internal and is automatically created when the Mission.lua file is included. +-- @type MISSIONSCHEDULER +-- @field #MISSIONSCHEDULER.MISSIONS Missions +MISSIONSCHEDULER = { + Missions = {}, + MissionCount = 0, + TimeIntervalCount = 0, + TimeIntervalShow = 150, + TimeSeconds = 14400, + TimeShow = 5 +} + +--- @type MISSIONSCHEDULER.MISSIONS +-- @list <#MISSION> Mission + +--- This is the main MISSIONSCHEDULER Scheduler function. It is considered internal and is automatically created when the Mission.lua file is included. +function MISSIONSCHEDULER.Scheduler() + + + -- loop through the missions in the TransportTasks + for MissionName, MissionData in pairs( MISSIONSCHEDULER.Missions ) do + + local Mission = MissionData -- #MISSION + + if not Mission:IsCompleted() then + + -- This flag will monitor if for this mission, there are clients alive. If this flag is still false at the end of the loop, the mission status will be set to Pending (if not Failed or Completed). + local ClientsAlive = false + + for ClientID, ClientData in pairs( Mission._Clients ) do + + local Client = ClientData -- Client#CLIENT + + if Client:IsAlive() then + + -- There is at least one Client that is alive... So the Mission status is set to Ongoing. + ClientsAlive = true + + -- If this Client was not registered as Alive before: + -- 1. We register the Client as Alive. + -- 2. We initialize the Client Tasks and make a link to the original Mission Task. + -- 3. We initialize the Cargos. + -- 4. We flag the Mission as Ongoing. + if not Client.ClientAlive then + Client.ClientAlive = true + Client.ClientBriefingShown = false + for TaskNumber, Task in pairs( Mission._Tasks ) do + -- Note that this a deepCopy. Each client must have their own Tasks with own Stages!!! + Client._Tasks[TaskNumber] = routines.utils.deepCopy( Mission._Tasks[TaskNumber] ) + -- Each MissionTask must point to the original Mission. + Client._Tasks[TaskNumber].MissionTask = Mission._Tasks[TaskNumber] + Client._Tasks[TaskNumber].Cargos = Mission._Tasks[TaskNumber].Cargos + Client._Tasks[TaskNumber].LandingZones = Mission._Tasks[TaskNumber].LandingZones + end + + Mission:Ongoing() + end + + + -- For each Client, check for each Task the state and evolve the mission. + -- This flag will indicate if the Task of the Client is Complete. + local TaskComplete = false + + for TaskNumber, Task in pairs( Client._Tasks ) do + + if not Task.Stage then + Task:SetStage( 1 ) + end + + + local TransportTime = timer.getTime() + + if not Task:IsDone() then + + if Task:Goal() then + Task:ShowGoalProgress( Mission, Client ) + end + + --env.info( 'Scheduler: Mission = ' .. Mission.Name .. ' / Client = ' .. Client.ClientName .. ' / Task = ' .. Task.Name .. ' / Stage = ' .. Task.ActiveStage .. ' - ' .. Task.Stage.Name .. ' - ' .. Task.Stage.StageType ) + + -- Action + if Task:StageExecute() then + Task.Stage:Execute( Mission, Client, Task ) + end + + -- Wait until execution is finished + if Task.ExecuteStage == _TransportExecuteStage.EXECUTING then + Task.Stage:Executing( Mission, Client, Task ) + end + + -- Validate completion or reverse to earlier stage + if Task.Time + Task.Stage.WaitTime <= TransportTime then + Task:SetStage( Task.Stage:Validate( Mission, Client, Task ) ) + end + + if Task:IsDone() then + --env.info( 'Scheduler: Mission '.. Mission.Name .. ' Task ' .. Task.Name .. ' Stage ' .. Task.Stage.Name .. ' done. TaskComplete = ' .. string.format ( "%s", TaskComplete and "true" or "false" ) ) + TaskComplete = true -- when a task is not yet completed, a mission cannot be completed + + else + -- break only if this task is not yet done, so that future task are not yet activated. + TaskComplete = false -- when a task is not yet completed, a mission cannot be completed + --env.info( 'Scheduler: Mission "'.. Mission.Name .. '" Task "' .. Task.Name .. '" Stage "' .. Task.Stage.Name .. '" break. TaskComplete = ' .. string.format ( "%s", TaskComplete and "true" or "false" ) ) + break + end + + if TaskComplete then + + if Mission.GoalFunction ~= nil then + Mission.GoalFunction( Mission, Client ) + end + if MISSIONSCHEDULER.Scoring then + MISSIONSCHEDULER.Scoring:_AddMissionTaskScore( Client:GetClientGroupDCSUnit(), Mission.Name, 25 ) + end + +-- if not Mission:IsCompleted() then +-- end + end + end + end + + local MissionComplete = true + for TaskNumber, Task in pairs( Mission._Tasks ) do + if Task:Goal() then +-- Task:ShowGoalProgress( Mission, Client ) + if Task:IsGoalReached() then + else + MissionComplete = false + end + else + MissionComplete = false -- If there is no goal, the mission should never be ended. The goal status will be set somewhere else. + end + end + + if MissionComplete then + Mission:Completed() + if MISSIONSCHEDULER.Scoring then + MISSIONSCHEDULER.Scoring:_AddMissionScore( Mission.Name, 100 ) + end + else + if TaskComplete then + -- Reset for new tasking of active client + Client.ClientAlive = false -- Reset the client tasks. + end + end + + + else + if Client.ClientAlive then + env.info( 'Scheduler: Client "' .. Client.ClientName .. '" is inactive.' ) + Client.ClientAlive = false + + -- This is tricky. If we sanitize Client._Tasks before sanitizing Client._Tasks[TaskNumber].MissionTask, then the original MissionTask will be sanitized, and will be lost within the garbage collector. + -- So first sanitize Client._Tasks[TaskNumber].MissionTask, after that, sanitize only the whole _Tasks structure... + --Client._Tasks[TaskNumber].MissionTask = nil + --Client._Tasks = nil + end + end + end + + -- If all Clients of this Mission are not activated, then the Mission status needs to be put back into Pending status. + -- But only if the Mission was Ongoing. In case the Mission is Completed or Failed, the Mission status may not be changed. In these cases, this will be the last run of this Mission in the Scheduler. + if ClientsAlive == false then + if Mission:IsOngoing() then + -- Mission status back to pending... + Mission:Pending() + end + end + end + + Mission:StatusToClients() + + if Mission:ReportTrigger() then + Mission:ReportToAll() + end + end + + return true +end + +--- Start the MISSIONSCHEDULER. +function MISSIONSCHEDULER.Start() + if MISSIONSCHEDULER ~= nil then + --MISSIONSCHEDULER.SchedulerId = routines.scheduleFunction( MISSIONSCHEDULER.Scheduler, { }, 0, 2 ) + MISSIONSCHEDULER.SchedulerId = SCHEDULER:New( nil, MISSIONSCHEDULER.Scheduler, { }, 0, 2 ) + end +end + +--- Stop the MISSIONSCHEDULER. +function MISSIONSCHEDULER.Stop() + if MISSIONSCHEDULER.SchedulerId then + routines.removeFunction(MISSIONSCHEDULER.SchedulerId) + MISSIONSCHEDULER.SchedulerId = nil + end +end + +--- This is the main MISSION declaration method. Each Mission is like the master or a Mission orchestration between, Clients, Tasks, Stages etc. +-- @param Mission is the MISSION object instantiated by @{MISSION:New}. +-- @return MISSION +-- @usage +-- -- Declare a mission. +-- Mission = MISSION:New( 'Russia Transport Troops SA-6', +-- 'Operational', +-- 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', +-- 'Russia' ) +-- MISSIONSCHEDULER:AddMission( Mission ) +function MISSIONSCHEDULER.AddMission( Mission ) + MISSIONSCHEDULER.Missions[Mission.Name] = Mission + MISSIONSCHEDULER.MissionCount = MISSIONSCHEDULER.MissionCount + 1 + -- Add an overall AI Client for the AI tasks... This AI Client will facilitate the Events in the background for each Task. + --MissionAdd:AddClient( CLIENT:Register( 'AI' ) ) + + return Mission +end + +--- Remove a MISSION from the MISSIONSCHEDULER. +-- @param MissionName is the name of the MISSION given at declaration using @{AddMission}. +-- @usage +-- -- Declare a mission. +-- Mission = MISSION:New( 'Russia Transport Troops SA-6', +-- 'Operational', +-- 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', +-- 'Russia' ) +-- MISSIONSCHEDULER:AddMission( Mission ) +-- +-- -- Now remove the Mission. +-- MISSIONSCHEDULER:RemoveMission( 'Russia Transport Troops SA-6' ) +function MISSIONSCHEDULER.RemoveMission( MissionName ) + MISSIONSCHEDULER.Missions[MissionName] = nil + MISSIONSCHEDULER.MissionCount = MISSIONSCHEDULER.MissionCount - 1 +end + +--- Find a MISSION within the MISSIONSCHEDULER. +-- @param MissionName is the name of the MISSION given at declaration using @{AddMission}. +-- @return MISSION +-- @usage +-- -- Declare a mission. +-- Mission = MISSION:New( 'Russia Transport Troops SA-6', +-- 'Operational', +-- 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', +-- 'Russia' ) +-- MISSIONSCHEDULER:AddMission( Mission ) +-- +-- -- Now find the Mission. +-- MissionFind = MISSIONSCHEDULER:FindMission( 'Russia Transport Troops SA-6' ) +function MISSIONSCHEDULER.FindMission( MissionName ) + return MISSIONSCHEDULER.Missions[MissionName] +end + +-- Internal function used by the MISSIONSCHEDULER menu. +function MISSIONSCHEDULER.ReportMissionsShow( ) + for MissionName, Mission in pairs( MISSIONSCHEDULER.Missions ) do + Mission.MissionReportShow = true + Mission.MissionReportFlash = false + end +end + +-- Internal function used by the MISSIONSCHEDULER menu. +function MISSIONSCHEDULER.ReportMissionsFlash( TimeInterval ) + local Count = 0 + for MissionName, Mission in pairs( MISSIONSCHEDULER.Missions ) do + Mission.MissionReportShow = false + Mission.MissionReportFlash = true + Mission.MissionReportTrigger = timer.getTime() + Count * TimeInterval + Mission.MissionTimeInterval = MISSIONSCHEDULER.MissionCount * TimeInterval + env.info( "TimeInterval = " .. Mission.MissionTimeInterval ) + Count = Count + 1 + end +end + +-- Internal function used by the MISSIONSCHEDULER menu. +function MISSIONSCHEDULER.ReportMissionsHide( Prm ) + for MissionName, Mission in pairs( MISSIONSCHEDULER.Missions ) do + Mission.MissionReportShow = false + Mission.MissionReportFlash = false + end +end + +--- Enables a MENU option in the communications menu under F10 to control the status of the active missions. +-- This function should be called only once when starting the MISSIONSCHEDULER. +function MISSIONSCHEDULER.ReportMenu() + local ReportMenu = SUBMENU:New( 'Status' ) + local ReportMenuShow = COMMANDMENU:New( 'Show Report Missions', ReportMenu, MISSIONSCHEDULER.ReportMissionsShow, 0 ) + local ReportMenuFlash = COMMANDMENU:New('Flash Report Missions', ReportMenu, MISSIONSCHEDULER.ReportMissionsFlash, 120 ) + local ReportMenuHide = COMMANDMENU:New( 'Hide Report Missions', ReportMenu, MISSIONSCHEDULER.ReportMissionsHide, 0 ) +end + +--- Show the remaining mission time. +function MISSIONSCHEDULER:TimeShow() + self.TimeIntervalCount = self.TimeIntervalCount + 1 + if self.TimeIntervalCount >= self.TimeTriggerShow then + local TimeMsg = string.format("%00d", ( self.TimeSeconds / 60 ) - ( timer.getTime() / 60 )) .. ' minutes left until mission reload.' + MESSAGE:New( TimeMsg, self.TimeShow, "Mission time" ):ToAll() + self.TimeIntervalCount = 0 + end +end + +function MISSIONSCHEDULER:Time( TimeSeconds, TimeIntervalShow, TimeShow ) + + self.TimeIntervalCount = 0 + self.TimeSeconds = TimeSeconds + self.TimeIntervalShow = TimeIntervalShow + self.TimeShow = TimeShow +end + +--- Adds a mission scoring to the game. +function MISSIONSCHEDULER:Scoring( Scoring ) + + self.Scoring = Scoring +end + +--- The CLEANUP class keeps an area clean of crashing or colliding airplanes. It also prevents airplanes from firing within this area. +-- @module CleanUp +-- @author Flightcontrol + + + + + + + +--- The CLEANUP class. +-- @type CLEANUP +-- @extends Base#BASE +CLEANUP = { + ClassName = "CLEANUP", + ZoneNames = {}, + TimeInterval = 300, + CleanUpList = {}, +} + +--- Creates the main object which is handling the cleaning of the debris within the given Zone Names. +-- @param #CLEANUP self +-- @param #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. +-- @param #number TimeInterval The interval in seconds when the clean activity takes place. The default is 300 seconds, thus every 5 minutes. +-- @return #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 ) +function CLEANUP:New( ZoneNames, TimeInterval ) local self = BASE:Inherit( self, BASE:New() ) + self:F( { ZoneNames, TimeInterval } ) + + if type( ZoneNames ) == 'table' then + self.ZoneNames = ZoneNames + else + self.ZoneNames = { ZoneNames } + end + if TimeInterval then + self.TimeInterval = TimeInterval + end + + _EVENTDISPATCHER:OnBirth( self._OnEventBirth, self ) + + --self.CleanUpScheduler = routines.scheduleFunction( self._CleanUpScheduler, { self }, timer.getTime() + 1, TimeInterval ) + self.CleanUpScheduler = SCHEDULER:New( self, self._CleanUpScheduler, {}, 1, TimeInterval ) + + return self +end + + +--- Destroys a group from the simulator, but checks first if it is still existing! +-- @param #CLEANUP self +-- @param DCSGroup#Group GroupObject The object to be destroyed. +-- @param #string CleanUpGroupName The groupname... +function CLEANUP:_DestroyGroup( GroupObject, CleanUpGroupName ) + self:F( { GroupObject, CleanUpGroupName } ) + + if GroupObject then -- and GroupObject:isExist() then + trigger.action.deactivateGroup(GroupObject) + self:T( { "GroupObject Destroyed", GroupObject } ) + end +end + +--- Destroys a @{DCSUnit#Unit} from the simulator, but checks first if it is still existing! +-- @param #CLEANUP self +-- @param DCSUnit#Unit CleanUpUnit The object to be destroyed. +-- @param #string CleanUpUnitName The Unit name ... +function CLEANUP:_DestroyUnit( CleanUpUnit, CleanUpUnitName ) + self:F( { CleanUpUnit, CleanUpUnitName } ) + + if CleanUpUnit then + local CleanUpGroup = Unit.getGroup(CleanUpUnit) + -- TODO Client bug in 1.5.3 + if CleanUpGroup and CleanUpGroup:isExist() then + local CleanUpGroupUnits = CleanUpGroup:getUnits() + if #CleanUpGroupUnits == 1 then + local CleanUpGroupName = CleanUpGroup:getName() + --self:CreateEventCrash( timer.getTime(), CleanUpUnit ) + CleanUpGroup:destroy() + self:T( { "Destroyed Group:", CleanUpGroupName } ) + else + CleanUpUnit:destroy() + self:T( { "Destroyed Unit:", CleanUpUnitName } ) + end + self.CleanUpList[CleanUpUnitName] = nil -- Cleaning from the list + CleanUpUnit = nil + end + end +end + +-- TODO check DCSTypes#Weapon +--- Destroys a missile from the simulator, but checks first if it is still existing! +-- @param #CLEANUP self +-- @param DCSTypes#Weapon MissileObject +function CLEANUP:_DestroyMissile( MissileObject ) + self:F( { MissileObject } ) + + if MissileObject and MissileObject:isExist() then + MissileObject:destroy() + self:T( "MissileObject Destroyed") + end +end + +function CLEANUP:_OnEventBirth( Event ) + self:F( { Event } ) + + self.CleanUpList[Event.IniDCSUnitName] = {} + self.CleanUpList[Event.IniDCSUnitName].CleanUpUnit = Event.IniDCSUnit + self.CleanUpList[Event.IniDCSUnitName].CleanUpGroup = Event.IniDCSGroup + self.CleanUpList[Event.IniDCSUnitName].CleanUpGroupName = Event.IniDCSGroupName + self.CleanUpList[Event.IniDCSUnitName].CleanUpUnitName = Event.IniDCSUnitName + + _EVENTDISPATCHER:OnEngineShutDownForUnit( Event.IniDCSUnitName, self._EventAddForCleanUp, self ) + _EVENTDISPATCHER:OnEngineStartUpForUnit( Event.IniDCSUnitName, self._EventAddForCleanUp, self ) + _EVENTDISPATCHER:OnHitForUnit( Event.IniDCSUnitName, self._EventAddForCleanUp, self ) + _EVENTDISPATCHER:OnPilotDeadForUnit( Event.IniDCSUnitName, self._EventCrash, self ) + _EVENTDISPATCHER:OnDeadForUnit( Event.IniDCSUnitName, self._EventCrash, self ) + _EVENTDISPATCHER:OnCrashForUnit( Event.IniDCSUnitName, self._EventCrash, self ) + _EVENTDISPATCHER:OnShotForUnit( Event.IniDCSUnitName, self._EventShot, self ) + + --self:AddEvent( world.event.S_EVENT_ENGINE_SHUTDOWN, self._EventAddForCleanUp ) + --self:AddEvent( world.event.S_EVENT_ENGINE_STARTUP, self._EventAddForCleanUp ) +-- self:AddEvent( world.event.S_EVENT_HIT, self._EventAddForCleanUp ) -- , self._EventHitCleanUp ) +-- self:AddEvent( world.event.S_EVENT_CRASH, self._EventCrash ) -- , self._EventHitCleanUp ) +-- --self:AddEvent( world.event.S_EVENT_DEAD, self._EventCrash ) +-- self:AddEvent( world.event.S_EVENT_SHOT, self._EventShot ) +-- +-- self:EnableEvents() + + +end + +--- Detects if a crash event occurs. +-- Crashed units go into a CleanUpList for removal. +-- @param #CLEANUP self +-- @param DCSTypes#Event event +function CLEANUP:_EventCrash( Event ) + self:F( { Event } ) + + --TODO: This stuff is not working due to a DCS bug. Burning units cannot be destroyed. + -- self:T("before getGroup") + -- local _grp = Unit.getGroup(event.initiator)-- Identify the group that fired + -- self:T("after getGroup") + -- _grp:destroy() + -- self:T("after deactivateGroup") + -- event.initiator:destroy() + + self.CleanUpList[Event.IniDCSUnitName] = {} + self.CleanUpList[Event.IniDCSUnitName].CleanUpUnit = Event.IniDCSUnit + self.CleanUpList[Event.IniDCSUnitName].CleanUpGroup = Event.IniDCSGroup + self.CleanUpList[Event.IniDCSUnitName].CleanUpGroupName = Event.IniDCSGroupName + self.CleanUpList[Event.IniDCSUnitName].CleanUpUnitName = Event.IniDCSUnitName + +end + +--- Detects if a unit shoots a missile. +-- If this occurs within one of the zones, then the weapon used must be destroyed. +-- @param #CLEANUP self +-- @param DCSTypes#Event event +function CLEANUP:_EventShot( Event ) + self:F( { Event } ) + + -- Test if the missile was fired within one of the CLEANUP.ZoneNames. + local CurrentLandingZoneID = 0 + CurrentLandingZoneID = routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) + if ( CurrentLandingZoneID ) then + -- Okay, the missile was fired within the CLEANUP.ZoneNames, destroy the fired weapon. + --_SEADmissile:destroy() + --routines.scheduleFunction( CLEANUP._DestroyMissile, { self, Event.Weapon }, timer.getTime() + 0.1) + SCHEDULER:New( self, CLEANUP._DestroyMissile, { Event.Weapon }, 0.1 ) + end +end + + +--- Detects if the Unit has an S_EVENT_HIT within the given ZoneNames. If this is the case, destroy the unit. +-- @param #CLEANUP self +-- @param DCSTypes#Event event +function CLEANUP:_EventHitCleanUp( Event ) + self:F( { Event } ) + + if Event.IniDCSUnit then + if routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) ~= nil then + self:T( { "Life: ", Event.IniDCSUnitName, ' = ', Event.IniDCSUnit:getLife(), "/", Event.IniDCSUnit:getLife0() } ) + if Event.IniDCSUnit:getLife() < Event.IniDCSUnit:getLife0() then + self:T( "CleanUp: Destroy: " .. Event.IniDCSUnitName ) + --routines.scheduleFunction( CLEANUP._DestroyUnit, { self, Event.IniDCSUnit }, timer.getTime() + 0.1) + SCHEDULER:New( self, CLEANUP._DestroyUnit, { Event.IniDCSUnit }, 0.1 ) + end + end + end + + if Event.TgtDCSUnit then + if routines.IsUnitInZones( Event.TgtDCSUnit, self.ZoneNames ) ~= nil then + self:T( { "Life: ", Event.TgtDCSUnitName, ' = ', Event.TgtDCSUnit:getLife(), "/", Event.TgtDCSUnit:getLife0() } ) + if Event.TgtDCSUnit:getLife() < Event.TgtDCSUnit:getLife0() then + self:T( "CleanUp: Destroy: " .. Event.TgtDCSUnitName ) + --routines.scheduleFunction( CLEANUP._DestroyUnit, { self, Event.TgtDCSUnit }, timer.getTime() + 0.1 ) + SCHEDULER:New( self, CLEANUP._DestroyUnit, { Event.TgtDCSUnit }, 0.1 ) + end + end + end +end + +--- Add the @{DCSUnit#Unit} to the CleanUpList for CleanUp. +function CLEANUP:_AddForCleanUp( CleanUpUnit, CleanUpUnitName ) + self:F( { CleanUpUnit, CleanUpUnitName } ) + + self.CleanUpList[CleanUpUnitName] = {} + self.CleanUpList[CleanUpUnitName].CleanUpUnit = CleanUpUnit + self.CleanUpList[CleanUpUnitName].CleanUpUnitName = CleanUpUnitName + self.CleanUpList[CleanUpUnitName].CleanUpGroup = Unit.getGroup(CleanUpUnit) + self.CleanUpList[CleanUpUnitName].CleanUpGroupName = Unit.getGroup(CleanUpUnit):getName() + self.CleanUpList[CleanUpUnitName].CleanUpTime = timer.getTime() + self.CleanUpList[CleanUpUnitName].CleanUpMoved = false + + self:T( { "CleanUp: Add to CleanUpList: ", Unit.getGroup(CleanUpUnit):getName(), CleanUpUnitName } ) + +end + +--- Detects if the Unit has an S_EVENT_ENGINE_SHUTDOWN or an S_EVENT_HIT within the given ZoneNames. If this is the case, add the Group to the CLEANUP List. +-- @param #CLEANUP self +-- @param DCSTypes#Event event +function CLEANUP:_EventAddForCleanUp( Event ) + + if Event.IniDCSUnit then + if self.CleanUpList[Event.IniDCSUnitName] == nil then + if routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) ~= nil then + self:_AddForCleanUp( Event.IniDCSUnit, Event.IniDCSUnitName ) + end + end + end + + if Event.TgtDCSUnit then + if self.CleanUpList[Event.TgtDCSUnitName] == nil then + if routines.IsUnitInZones( Event.TgtDCSUnit, self.ZoneNames ) ~= nil then + self:_AddForCleanUp( Event.TgtDCSUnit, Event.TgtDCSUnitName ) + end + end + end + +end + +local CleanUpSurfaceTypeText = { + "LAND", + "SHALLOW_WATER", + "WATER", + "ROAD", + "RUNWAY" + } + +--- At the defined time interval, CleanUp the Groups within the CleanUpList. +-- @param #CLEANUP self +function CLEANUP:_CleanUpScheduler() + self:F( { "CleanUp Scheduler" } ) + + local CleanUpCount = 0 + for CleanUpUnitName, UnitData in pairs( self.CleanUpList ) do + CleanUpCount = CleanUpCount + 1 + + self:T( { CleanUpUnitName, UnitData } ) + local CleanUpUnit = Unit.getByName(UnitData.CleanUpUnitName) + local CleanUpGroupName = UnitData.CleanUpGroupName + local CleanUpUnitName = UnitData.CleanUpUnitName + if CleanUpUnit then + self:T( { "CleanUp Scheduler", "Checking:", CleanUpUnitName } ) + if _DATABASE:GetStatusGroup( CleanUpGroupName ) ~= "ReSpawn" then + local CleanUpUnitVec3 = CleanUpUnit:getPoint() + --self:T( CleanUpUnitVec3 ) + local CleanUpUnitVec2 = {} + CleanUpUnitVec2.x = CleanUpUnitVec3.x + CleanUpUnitVec2.y = CleanUpUnitVec3.z + --self:T( CleanUpUnitVec2 ) + local CleanUpSurfaceType = land.getSurfaceType(CleanUpUnitVec2) + --self:T( CleanUpSurfaceType ) + + if CleanUpUnit and CleanUpUnit:getLife() <= CleanUpUnit:getLife0() * 0.95 then + if CleanUpSurfaceType == land.SurfaceType.RUNWAY then + if CleanUpUnit:inAir() then + local CleanUpLandHeight = land.getHeight(CleanUpUnitVec2) + local CleanUpUnitHeight = CleanUpUnitVec3.y - CleanUpLandHeight + self:T( { "CleanUp Scheduler", "Height = " .. CleanUpUnitHeight } ) + if CleanUpUnitHeight < 30 then + self:T( { "CleanUp Scheduler", "Destroy " .. CleanUpUnitName .. " because below safe height and damaged." } ) + self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) + end + else + self:T( { "CleanUp Scheduler", "Destroy " .. CleanUpUnitName .. " because on runway and damaged." } ) + self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) + end + end + end + -- Clean Units which are waiting for a very long time in the CleanUpZone. + if CleanUpUnit then + local CleanUpUnitVelocity = CleanUpUnit:getVelocity() + local CleanUpUnitVelocityTotal = math.abs(CleanUpUnitVelocity.x) + math.abs(CleanUpUnitVelocity.y) + math.abs(CleanUpUnitVelocity.z) + if CleanUpUnitVelocityTotal < 1 then + if UnitData.CleanUpMoved then + if UnitData.CleanUpTime + 180 <= timer.getTime() then + self:T( { "CleanUp Scheduler", "Destroy due to not moving anymore " .. CleanUpUnitName } ) + self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) + end + end + else + UnitData.CleanUpTime = timer.getTime() + UnitData.CleanUpMoved = true + end + end + + else + -- Do nothing ... + self.CleanUpList[CleanUpUnitName] = nil -- Not anymore in the DCSRTE + end + else + self:T( "CleanUp: Group " .. CleanUpUnitName .. " cannot be found in DCS RTE, removing ..." ) + self.CleanUpList[CleanUpUnitName] = nil -- Not anymore in the DCSRTE + end + end + self:T(CleanUpCount) + + return true +end + +--- This module contains the SPAWN class. +-- +-- 1) @{Spawn#SPAWN} class, extends @{Base#BASE} +-- ============================================= +-- The @{#SPAWN} class allows to spawn dynamically new groups, based on pre-defined initialization settings, modifying the behaviour when groups are spawned. +-- For each group to be spawned, within the mission editor, a group has to be created with the "late activation flag" set. We call this group the *"Spawn Template"* of the SPAWN object. +-- A reference to this Spawn Template needs to be provided when constructing the SPAWN object, by indicating the name of the group within the mission editor in the constructor methods. +-- +-- Within the SPAWN object, there is an internal index that keeps track of which group from the internal group list was spawned. +-- When new groups get spawned by using the SPAWN functions (see below), it will be validated whether the Limits (@{#SPAWN.Limit}) of the SPAWN object are not reached. +-- When all is valid, a new group will be created by the spawning methods, and the internal index will be increased with 1. +-- +-- Regarding the name of new spawned groups, a _SpawnPrefix_ will be assigned for each new group created. +-- If you want to have the Spawn Template name to be used as the _SpawnPrefix_ name, use the @{#SPAWN.New} constructor. +-- However, when the @{#SPAWN.NewWithAlias} constructor was used, the Alias name will define the _SpawnPrefix_ name. +-- Groups will follow the following naming structure when spawned at run-time: +-- +-- 1. Spawned groups will have the name _SpawnPrefix_#ggg, where ggg is a counter from 0 to 999. +-- 2. Spawned units will have the name _SpawnPrefix_#ggg-uu, where uu is a counter from 0 to 99 for each new spawned unit belonging to the group. +-- +-- Some additional notes that need to be remembered: +-- +-- * Templates are actually groups defined within the mission editor, with the flag "Late Activation" set. As such, these groups are never used within the mission, but are used by the @{#SPAWN} module. +-- * It is important to defined BEFORE you spawn new groups, a proper initialization of the SPAWN instance is done with the options you want to use. +-- * When designing a mission, NEVER name groups using a "#" within the name of the group Spawn Template(s), or the SPAWN module logic won't work anymore. +-- +-- 1.1) SPAWN construction methods +-- ------------------------------- +-- Create a new SPAWN object with the @{#SPAWN.New} or the @{#SPAWN.NewWithAlias} methods: +-- +-- * @{#SPAWN.New}: Creates a new SPAWN object taking the name of the group that functions as the Template. +-- +-- It is important to understand how the SPAWN class works internally. The SPAWN object created will contain internally a list of groups that will be spawned and that are already spawned. +-- The initialization functions will modify this list of groups so that when a group gets spawned, ALL information is already prepared when spawning. This is done for performance reasons. +-- So in principle, the group list will contain all parameters and configurations after initialization, and when groups get actually spawned, this spawning can be done quickly and efficient. +-- +-- 1.2) SPAWN initialization methods +-- --------------------------------- +-- A spawn object will behave differently based on the usage of initialization methods: +-- +-- * @{#SPAWN.Limit}: Limits the amount of groups that can be alive at the same time and that can be dynamically spawned. +-- * @{#SPAWN.RandomizeRoute}: Randomize the routes of spawned groups. +-- * @{#SPAWN.RandomizeTemplate}: Randomize the group templates so that when a new group is spawned, a random group template is selected from one of the templates defined. +-- * @{#SPAWN.Uncontrolled}: Spawn plane groups uncontrolled. +-- * @{#SPAWN.Array}: Make groups visible before they are actually activated, and order these groups like a batallion in an array. +-- * @{#SPAWN.InitRepeat}: Re-spawn groups when they land at the home base. Similar functions are @{#SPAWN.InitRepeatOnLanding} and @{#SPAWN.InitRepeatOnEngineShutDown}. +-- +-- 1.3) SPAWN spawning methods +-- --------------------------- +-- Groups can be spawned at different times and methods: +-- +-- * @{#SPAWN.Spawn}: Spawn one new group based on the last spawned index. +-- * @{#SPAWN.ReSpawn}: Re-spawn a group based on a given index. +-- * @{#SPAWN.SpawnScheduled}: Spawn groups at scheduled but randomized intervals. You can use @{#SPAWN.SpawnScheduleStart} and @{#SPAWN.SpawnScheduleStop} to start and stop the schedule respectively. +-- * @{#SPAWN.SpawnFromUnit}: Spawn a new group taking the position of a @{UNIT}. +-- * @{#SPAWN.SpawnInZone}: Spawn a new group in a @{ZONE}. +-- +-- Note that @{#SPAWN.Spawn} and @{#SPAWN.ReSpawn} return a @{GROUP#GROUP.New} object, that contains a reference to the DCSGroup object. +-- You can use the @{GROUP} object to do further actions with the DCSGroup. +-- +-- 1.4) SPAWN object cleaning +-- -------------------------- +-- Sometimes, it will occur during a mission run-time, that ground or especially air objects get damaged, and will while being damged stop their activities, while remaining alive. +-- In such cases, the SPAWN object will just sit there and wait until that group gets destroyed, but most of the time it won't, +-- and it may occur that no new groups are or can be spawned as limits are reached. +-- To prevent this, a @{#SPAWN.CleanUp} initialization method has been defined that will silently monitor the status of each spawned group. +-- Once a group has a velocity = 0, and has been waiting for a defined interval, that group will be cleaned or removed from run-time. +-- There is a catch however :-) If a damaged group has returned to an airbase within the coalition, that group will not be considered as "lost"... +-- In such a case, when the inactive group is cleaned, a new group will Re-spawned automatically. +-- This models AI that has succesfully returned to their airbase, to restart their combat activities. +-- Check the @{#SPAWN.CleanUp} for further info. +-- +-- +-- @module Spawn +-- @author FlightControl + +--- SPAWN Class +-- @type SPAWN +-- @extends Base#BASE +-- @field ClassName +-- @field #string SpawnTemplatePrefix +-- @field #string SpawnAliasPrefix +SPAWN = { + ClassName = "SPAWN", + SpawnTemplatePrefix = nil, + SpawnAliasPrefix = nil, +} + + + +--- Creates the main object to spawn a GROUP defined in the DCS ME. +-- @param #SPAWN self +-- @param #string SpawnTemplatePrefix is the name of the Group in the ME that defines the Template. Each new group will have the name starting with SpawnTemplatePrefix. +-- @return #SPAWN +-- @usage +-- -- NATO helicopters engaging in the battle field. +-- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ) +-- @usage local Plane = SPAWN:New( "Plane" ) -- Creates a new local variable that can initiate new planes with the name "Plane#ddd" using the template "Plane" as defined within the ME. +function SPAWN:New( SpawnTemplatePrefix ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( { SpawnTemplatePrefix } ) + + local TemplateGroup = Group.getByName( SpawnTemplatePrefix ) + if TemplateGroup then + self.SpawnTemplatePrefix = SpawnTemplatePrefix + self.SpawnIndex = 0 + self.SpawnCount = 0 -- The internal counter of the amount of spawning the has happened since SpawnStart. + self.AliveUnits = 0 -- Contains the counter how many units are currently alive + self.SpawnIsScheduled = false -- Reflects if the spawning for this SpawnTemplatePrefix is going to be scheduled or not. + self.SpawnTemplate = self._GetTemplate( self, SpawnTemplatePrefix ) -- Contains the template structure for a Group Spawn from the Mission Editor. Note that this group must have lateActivation always on!!! + self.Repeat = false -- Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning. + self.UnControlled = false -- When working in UnControlled mode, all planes are Spawned in UnControlled mode before the scheduler starts. + self.SpawnMaxUnitsAlive = 0 -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. + self.SpawnMaxGroups = 0 -- The maximum amount of groups that can be spawned. + self.SpawnRandomize = false -- Sets the randomization flag of new Spawned units to false. + self.SpawnVisible = false -- Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned. + + self.SpawnGroups = {} -- Array containing the descriptions of each Group to be Spawned. + else + error( "SPAWN:New: There is no group declared in the mission editor with SpawnTemplatePrefix = '" .. SpawnTemplatePrefix .. "'" ) + end + + return self +end + +--- Creates a new SPAWN instance to create new groups based on the defined template and using a new alias for each new group. +-- @param #SPAWN self +-- @param #string SpawnTemplatePrefix is the name of the Group in the ME that defines the Template. +-- @param #string SpawnAliasPrefix is the name that will be given to the Group at runtime. +-- @return #SPAWN +-- @usage +-- -- NATO helicopters engaging in the battle field. +-- Spawn_BE_KA50 = SPAWN:NewWithAlias( 'BE KA-50@RAMP-Ground Defense', 'Helicopter Attacking a City' ) +-- @usage local PlaneWithAlias = SPAWN:NewWithAlias( "Plane", "Bomber" ) -- Creates a new local variable that can instantiate new planes with the name "Bomber#ddd" using the template "Plane" as defined within the ME. +function SPAWN:NewWithAlias( SpawnTemplatePrefix, SpawnAliasPrefix ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( { SpawnTemplatePrefix, SpawnAliasPrefix } ) + + local TemplateGroup = Group.getByName( SpawnTemplatePrefix ) + if TemplateGroup then + self.SpawnTemplatePrefix = SpawnTemplatePrefix + self.SpawnAliasPrefix = SpawnAliasPrefix + self.SpawnIndex = 0 + self.SpawnCount = 0 -- The internal counter of the amount of spawning the has happened since SpawnStart. + self.AliveUnits = 0 -- Contains the counter how many units are currently alive + self.SpawnIsScheduled = false -- Reflects if the spawning for this SpawnTemplatePrefix is going to be scheduled or not. + self.SpawnTemplate = self._GetTemplate( self, SpawnTemplatePrefix ) -- Contains the template structure for a Group Spawn from the Mission Editor. Note that this group must have lateActivation always on!!! + self.Repeat = false -- Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning. + self.UnControlled = false -- When working in UnControlled mode, all planes are Spawned in UnControlled mode before the scheduler starts. + self.SpawnMaxUnitsAlive = 0 -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. + self.SpawnMaxGroups = 0 -- The maximum amount of groups that can be spawned. + self.SpawnRandomize = false -- Sets the randomization flag of new Spawned units to false. + self.SpawnVisible = false -- Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned. + + self.SpawnGroups = {} -- Array containing the descriptions of each Group to be Spawned. + else + error( "SPAWN:New: There is no group declared in the mission editor with SpawnTemplatePrefix = '" .. SpawnTemplatePrefix .. "'" ) + end + + return self +end + + +--- Limits the Maximum amount of Units that can be alive at the same time, and the maximum amount of groups that can be spawned. +-- Note that this method is exceptionally important to balance the performance of the mission. Depending on the machine etc, a mission can only process a maximum amount of units. +-- If the time interval must be short, but there should not be more Units or Groups alive than a maximum amount of units, then this function should be used... +-- When a @{#SPAWN.New} is executed and the limit of the amount of units alive is reached, then no new spawn will happen of the group, until some of these units of the spawn object will be destroyed. +-- @param #SPAWN self +-- @param #number SpawnMaxUnitsAlive The maximum amount of units that can be alive at runtime. +-- @param #number SpawnMaxGroups The maximum amount of groups that can be spawned. When the limit is reached, then no more actual spawns will happen of the group. +-- This parameter is useful to define a maximum amount of airplanes, ground troops, helicopters, ships etc within a supply area. +-- This parameter accepts the value 0, which defines that there are no maximum group limits, but there are limits on the maximum of units that can be alive at the same time. +-- @return #SPAWN self +-- @usage +-- -- NATO helicopters engaging in the battle field. +-- -- This helicopter group consists of one Unit. So, this group will SPAWN maximum 2 groups simultaneously within the DCSRTE. +-- -- There will be maximum 24 groups spawned during the whole mission lifetime. +-- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Limit( 2, 24 ) +function SPAWN:Limit( SpawnMaxUnitsAlive, SpawnMaxGroups ) + self:F( { self.SpawnTemplatePrefix, SpawnMaxUnitsAlive, SpawnMaxGroups } ) + + self.SpawnMaxUnitsAlive = SpawnMaxUnitsAlive -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. + self.SpawnMaxGroups = SpawnMaxGroups -- The maximum amount of groups that can be spawned. + + for SpawnGroupID = 1, self.SpawnMaxGroups do + self:_InitializeSpawnGroups( SpawnGroupID ) + end + + return self +end + + +--- Randomizes the defined route of the SpawnTemplatePrefix group in the ME. This is very useful to define extra variation of the behaviour of groups. +-- @param #SPAWN self +-- @param #number SpawnStartPoint is the waypoint where the randomization begins. +-- Note that the StartPoint = 0 equaling the point where the group is spawned. +-- @param #number SpawnEndPoint is the waypoint where the randomization ends counting backwards. +-- This parameter is useful to avoid randomization to end at a waypoint earlier than the last waypoint on the route. +-- @param #number SpawnRadius is the radius in meters in which the randomization of the new waypoints, with the original waypoint of the original template located in the middle ... +-- @return #SPAWN +-- @usage +-- -- NATO helicopters engaging in the battle field. +-- -- The KA-50 has waypoints Start point ( =0 or SP ), 1, 2, 3, 4, End point (= 5 or DP). +-- -- Waypoints 2 and 3 will only be randomized. The others will remain on their original position with each new spawn of the helicopter. +-- -- The randomization of waypoint 2 and 3 will take place within a radius of 2000 meters. +-- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):RandomizeRoute( 2, 2, 2000 ) +function SPAWN:RandomizeRoute( SpawnStartPoint, SpawnEndPoint, SpawnRadius ) + self:F( { self.SpawnTemplatePrefix, SpawnStartPoint, SpawnEndPoint, SpawnRadius } ) + + self.SpawnRandomizeRoute = true + self.SpawnRandomizeRouteStartPoint = SpawnStartPoint + self.SpawnRandomizeRouteEndPoint = SpawnEndPoint + self.SpawnRandomizeRouteRadius = SpawnRadius + + for GroupID = 1, self.SpawnMaxGroups do + self:_RandomizeRoute( GroupID ) + end + + return self +end + + +--- This function is rather complicated to understand. But I'll try to explain. +-- This function becomes useful when you need to spawn groups with random templates of groups defined within the mission editor, +-- but they will all follow the same Template route and have the same prefix name. +-- In other words, this method randomizes between a defined set of groups the template to be used for each new spawn of a group. +-- @param #SPAWN self +-- @param #string SpawnTemplatePrefixTable A table with the names of the groups defined within the mission editor, from which one will be choosen when a new group will be spawned. +-- @return #SPAWN +-- @usage +-- -- NATO Tank Platoons invading Gori. +-- -- Choose between 13 different 'US Tank Platoon' configurations for each new SPAWN the Group to be spawned for the +-- -- 'US Tank Platoon Left', 'US Tank Platoon Middle' and 'US Tank Platoon Right' SpawnTemplatePrefixes. +-- -- Each new SPAWN will randomize the route, with a defined time interval of 200 seconds with 40% time variation (randomization) and +-- -- with a limit set of maximum 12 Units alive simulteneously and 150 Groups to be spawned during the whole mission. +-- Spawn_US_Platoon = { 'US Tank Platoon 1', 'US Tank Platoon 2', 'US Tank Platoon 3', 'US Tank Platoon 4', 'US Tank Platoon 5', +-- 'US Tank Platoon 6', 'US Tank Platoon 7', 'US Tank Platoon 8', 'US Tank Platoon 9', 'US Tank Platoon 10', +-- 'US Tank Platoon 11', 'US Tank Platoon 12', 'US Tank Platoon 13' } +-- Spawn_US_Platoon_Left = SPAWN:New( 'US Tank Platoon Left' ):Limit( 12, 150 ):Schedule( 200, 0.4 ):RandomizeTemplate( Spawn_US_Platoon ):RandomizeRoute( 3, 3, 2000 ) +-- Spawn_US_Platoon_Middle = SPAWN:New( 'US Tank Platoon Middle' ):Limit( 12, 150 ):Schedule( 200, 0.4 ):RandomizeTemplate( Spawn_US_Platoon ):RandomizeRoute( 3, 3, 2000 ) +-- Spawn_US_Platoon_Right = SPAWN:New( 'US Tank Platoon Right' ):Limit( 12, 150 ):Schedule( 200, 0.4 ):RandomizeTemplate( Spawn_US_Platoon ):RandomizeRoute( 3, 3, 2000 ) +function SPAWN:RandomizeTemplate( SpawnTemplatePrefixTable ) + self:F( { self.SpawnTemplatePrefix, SpawnTemplatePrefixTable } ) + + self.SpawnTemplatePrefixTable = SpawnTemplatePrefixTable + self.SpawnRandomizeTemplate = true + + for SpawnGroupID = 1, self.SpawnMaxGroups do + self:_RandomizeTemplate( SpawnGroupID ) + end + + return self +end + + + + + +--- For planes and helicopters, when these groups go home and land on their home airbases and farps, they normally would taxi to the parking spot, shut-down their engines and wait forever until the Group is removed by the runtime environment. +-- This function is used to re-spawn automatically (so no extra call is needed anymore) the same group after it has landed. +-- This will enable a spawned group to be re-spawned after it lands, until it is destroyed... +-- Note: When the group is respawned, it will re-spawn from the original airbase where it took off. +-- So ensure that the routes for groups that respawn, always return to the original airbase, or players may get confused ... +-- @param #SPAWN self +-- @return #SPAWN self +-- @usage +-- -- RU Su-34 - AI Ship Attack +-- -- Re-SPAWN the Group(s) after each landing and Engine Shut-Down automatically. +-- SpawnRU_SU34 = SPAWN:New( 'TF1 RU Su-34 Krymsk@AI - Attack Ships' ):Schedule( 2, 3, 1800, 0.4 ):SpawnUncontrolled():RandomizeRoute( 1, 1, 3000 ):RepeatOnEngineShutDown() +function SPAWN:InitRepeat() + self:F( { self.SpawnTemplatePrefix, self.SpawnIndex } ) + + self.Repeat = true + self.RepeatOnEngineShutDown = false + self.RepeatOnLanding = true + + return self +end + +--- Respawn group after landing. +-- @param #SPAWN self +-- @return #SPAWN self +function SPAWN:InitRepeatOnLanding() + self:F( { self.SpawnTemplatePrefix } ) + + self:InitRepeat() + self.RepeatOnEngineShutDown = false + self.RepeatOnLanding = true + + return self +end + + +--- Respawn after landing when its engines have shut down. +-- @param #SPAWN self +-- @return #SPAWN self +function SPAWN:InitRepeatOnEngineShutDown() + self:F( { self.SpawnTemplatePrefix } ) + + self:InitRepeat() + self.RepeatOnEngineShutDown = true + self.RepeatOnLanding = false + + return self +end + + +--- CleanUp groups when they are still alive, but inactive. +-- When groups are still alive and have become inactive due to damage and are unable to contribute anything, then this group will be removed at defined intervals in seconds. +-- @param #SPAWN self +-- @param #string SpawnCleanUpInterval The interval to check for inactive groups within seconds. +-- @return #SPAWN self +-- @usage Spawn_Helicopter:CleanUp( 20 ) -- CleanUp the spawning of the helicopters every 20 seconds when they become inactive. +function SPAWN:CleanUp( SpawnCleanUpInterval ) + self:F( { self.SpawnTemplatePrefix, SpawnCleanUpInterval } ) + + self.SpawnCleanUpInterval = SpawnCleanUpInterval + self.SpawnCleanUpTimeStamps = {} + --self.CleanUpFunction = routines.scheduleFunction( self._SpawnCleanUpScheduler, { self }, timer.getTime() + 1, SpawnCleanUpInterval ) + self.CleanUpScheduler = SCHEDULER:New( self, self._SpawnCleanUpScheduler, {}, 1, SpawnCleanUpInterval, 0.2 ) + return self +end + + + +--- Makes the groups visible before start (like a batallion). +-- The method will take the position of the group as the first position in the array. +-- @param #SPAWN self +-- @param #number SpawnAngle The angle in degrees how the groups and each unit of the group will be positioned. +-- @param #number SpawnWidth The amount of Groups that will be positioned on the X axis. +-- @param #number SpawnDeltaX The space between each Group on the X-axis. +-- @param #number SpawnDeltaY The space between each Group on the Y-axis. +-- @return #SPAWN self +-- @usage +-- -- Define an array of Groups. +-- Spawn_BE_Ground = SPAWN:New( 'BE Ground' ):Limit( 2, 24 ):Visible( 90, "Diamond", 10, 100, 50 ) +function SPAWN:Array( SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY ) + self:F( { self.SpawnTemplatePrefix, SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY } ) + + self.SpawnVisible = true -- When the first Spawn executes, all the Groups need to be made visible before start. + + local SpawnX = 0 + local SpawnY = 0 + local SpawnXIndex = 0 + local SpawnYIndex = 0 + + for SpawnGroupID = 1, self.SpawnMaxGroups do + self:T( { SpawnX, SpawnY, SpawnXIndex, SpawnYIndex } ) + + self.SpawnGroups[SpawnGroupID].Visible = true + self.SpawnGroups[SpawnGroupID].Spawned = false + + SpawnXIndex = SpawnXIndex + 1 + if SpawnWidth and SpawnWidth ~= 0 then + if SpawnXIndex >= SpawnWidth then + SpawnXIndex = 0 + SpawnYIndex = SpawnYIndex + 1 + end + end + + local SpawnRootX = self.SpawnGroups[SpawnGroupID].SpawnTemplate.x + local SpawnRootY = self.SpawnGroups[SpawnGroupID].SpawnTemplate.y + + self:_TranslateRotate( SpawnGroupID, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle ) + + self.SpawnGroups[SpawnGroupID].SpawnTemplate.lateActivation = true + self.SpawnGroups[SpawnGroupID].SpawnTemplate.visible = true + + self.SpawnGroups[SpawnGroupID].Visible = true + + _EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnBirth, self ) + _EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnDeadOrCrash, self ) + _EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnDeadOrCrash, self ) + + if self.Repeat then + _EVENTDISPATCHER:OnTakeOffForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnTakeOff, self ) + _EVENTDISPATCHER:OnLandForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnLand, self ) + end + if self.RepeatOnEngineShutDown then + _EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnEngineShutDown, self ) + end + + self.SpawnGroups[SpawnGroupID].Group = _DATABASE:Spawn( self.SpawnGroups[SpawnGroupID].SpawnTemplate ) + + SpawnX = SpawnXIndex * SpawnDeltaX + SpawnY = SpawnYIndex * SpawnDeltaY + end + + return self +end + + + +--- Will spawn a group based on the internal index. +-- Note: Uses @{DATABASE} module defined in MOOSE. +-- @param #SPAWN self +-- @return Group#GROUP The group that was spawned. You can use this group for further actions. +function SPAWN:Spawn() + self:F( { self.SpawnTemplatePrefix, self.SpawnIndex } ) + + return self:SpawnWithIndex( self.SpawnIndex + 1 ) +end + +--- Will re-spawn a group based on a given index. +-- Note: Uses @{DATABASE} module defined in MOOSE. +-- @param #SPAWN self +-- @param #string SpawnIndex The index of the group to be spawned. +-- @return Group#GROUP The group that was spawned. You can use this group for further actions. +function SPAWN:ReSpawn( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex } ) + + if not SpawnIndex then + SpawnIndex = 1 + end + +-- TODO: This logic makes DCS crash and i don't know why (yet). + local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) + if SpawnGroup then + local SpawnDCSGroup = SpawnGroup:GetDCSGroup() + if SpawnDCSGroup then + SpawnGroup:Destroy() + end + end + + return self:SpawnWithIndex( SpawnIndex ) +end + +--- Will spawn a group with a specified index number. +-- Uses @{DATABASE} global object defined in MOOSE. +-- @param #SPAWN self +-- @return Group#GROUP The group that was spawned. You can use this group for further actions. +function SPAWN:SpawnWithIndex( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups } ) + + if self:_GetSpawnIndex( SpawnIndex ) then + + if self.SpawnGroups[self.SpawnIndex].Visible then + self.SpawnGroups[self.SpawnIndex].Group:Activate() + else + self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate ) + _EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnBirth, self ) + _EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self ) + _EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self ) + + if self.Repeat then + _EVENTDISPATCHER:OnTakeOffForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnTakeOff, self ) + _EVENTDISPATCHER:OnLandForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnLand, self ) + end + if self.RepeatOnEngineShutDown then + _EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnEngineShutDown, self ) + end + + self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate ) + + self.SpawnGroups[self.SpawnIndex].Group = _DATABASE:Spawn( self.SpawnGroups[self.SpawnIndex].SpawnTemplate ) + + -- If there is a SpawnFunction hook defined, call it. + if self.SpawnFunctionHook then + self.SpawnFunctionHook( self.SpawnGroups[self.SpawnIndex].Group, unpack( self.SpawnFunctionArguments ) ) + end + -- TODO: Need to fix this by putting an "R" in the name of the group when the group repeats. + --if self.Repeat then + -- _DATABASE:SetStatusGroup( SpawnTemplate.name, "ReSpawn" ) + --end + end + + self.SpawnGroups[self.SpawnIndex].Spawned = true + return self.SpawnGroups[self.SpawnIndex].Group + else + --self:E( { self.SpawnTemplatePrefix, "No more Groups to Spawn:", SpawnIndex, self.SpawnMaxGroups } ) + end + + return nil +end + +--- Spawns new groups at varying time intervals. +-- This is useful if you want to have continuity within your missions of certain (AI) groups to be present (alive) within your missions. +-- @param #SPAWN self +-- @param #number SpawnTime The time interval defined in seconds between each new spawn of new groups. +-- @param #number SpawnTimeVariation The variation to be applied on the defined time interval between each new spawn. +-- The variation is a number between 0 and 1, representing the %-tage of variation to be applied on the time interval. +-- @return #SPAWN self +-- @usage +-- -- NATO helicopters engaging in the battle field. +-- -- The time interval is set to SPAWN new helicopters between each 600 seconds, with a time variation of 50%. +-- -- The time variation in this case will be between 450 seconds and 750 seconds. +-- -- This is calculated as follows: +-- -- Low limit: 600 * ( 1 - 0.5 / 2 ) = 450 +-- -- High limit: 600 * ( 1 + 0.5 / 2 ) = 750 +-- -- Between these two values, a random amount of seconds will be choosen for each new spawn of the helicopters. +-- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 ) +function SPAWN:SpawnScheduled( SpawnTime, SpawnTimeVariation ) + self:F( { SpawnTime, SpawnTimeVariation } ) + + if SpawnTime ~= nil and SpawnTimeVariation ~= nil then + self.SpawnScheduler = SCHEDULER:New( self, self._Scheduler, {}, 1, SpawnTime, SpawnTimeVariation ) + end + + return self +end + +--- Will re-start the spawning scheduler. +-- Note: This function is only required to be called when the schedule was stopped. +function SPAWN:SpawnScheduleStart() + self:F( { self.SpawnTemplatePrefix } ) + + self.SpawnScheduler:Start() +end + +--- Will stop the scheduled spawning scheduler. +function SPAWN:SpawnScheduleStop() + self:F( { self.SpawnTemplatePrefix } ) + + self.SpawnScheduler:Stop() +end + + +--- Allows to place a CallFunction hook when a new group spawns. +-- The provided function will be called when a new group is spawned, including its given parameters. +-- The first parameter of the SpawnFunction is the @{Group#GROUP} that was spawned. +-- @param #SPAWN self +-- @param #function SpawnFunctionHook The function to be called when a group spawns. +-- @param SpawnFunctionArguments A random amount of arguments to be provided to the function when the group spawns. +-- @return #SPAWN +function SPAWN:SpawnFunction( SpawnFunctionHook, ... ) + self:F( SpawnFunction ) + + self.SpawnFunctionHook = SpawnFunctionHook + self.SpawnFunctionArguments = {} + if arg then + self.SpawnFunctionArguments = arg + end + + return self +end + + + + +--- Will spawn a group from a hosting unit. This function is mostly advisable to be used if you want to simulate spawning from air units, like helicopters, which are dropping infantry into a defined Landing Zone. +-- Note that each point in the route assigned to the spawning group is reset to the point of the spawn. +-- You can use the returned group to further define the route to be followed. +-- @param #SPAWN self +-- @param Unit#UNIT HostUnit The air or ground unit dropping or unloading the group. +-- @param #number OuterRadius The outer radius in meters where the new group will be spawned. +-- @param #number InnerRadius The inner radius in meters where the new group will NOT be spawned. +-- @param #number SpawnIndex (Optional) The index which group to spawn within the given zone. +-- @return Group#GROUP that was spawned. +-- @return #nil Nothing was spawned. +function SPAWN:SpawnFromUnit( HostUnit, OuterRadius, InnerRadius, SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, HostUnit, OuterRadius, InnerRadius, SpawnIndex } ) + + if HostUnit and HostUnit:IsAlive() then -- and HostUnit:getUnit(1):inAir() == false then + + if SpawnIndex then + else + SpawnIndex = self.SpawnIndex + 1 + end + + if self:_GetSpawnIndex( SpawnIndex ) then + + local SpawnTemplate = self.SpawnGroups[self.SpawnIndex].SpawnTemplate + + if SpawnTemplate then + + local UnitPoint = HostUnit:GetPointVec2() + + self:T( { "Current point of ", self.SpawnTemplatePrefix, UnitPoint } ) + + --for PointID, Point in pairs( SpawnTemplate.route.points ) do + --Point.x = UnitPoint.x + --Point.y = UnitPoint.y + --Point.alt = nil + --Point.alt_type = nil + --end + + SpawnTemplate.route.points[1].x = UnitPoint.x + SpawnTemplate.route.points[1].y = UnitPoint.y + + if not InnerRadius then + InnerRadius = 10 + end + + if not OuterRadius then + OuterRadius = 50 + end + + -- Apply SpawnFormation + for UnitID = 1, #SpawnTemplate.units do + if InnerRadius == 0 then + SpawnTemplate.units[UnitID].x = UnitPoint.x + SpawnTemplate.units[UnitID].y = UnitPoint.y + else + local CirclePos = routines.getRandPointInCircle( UnitPoint, OuterRadius, InnerRadius ) + SpawnTemplate.units[UnitID].x = CirclePos.x + SpawnTemplate.units[UnitID].y = CirclePos.y + end + self:T( 'SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) + end + + local SpawnPos = routines.getRandPointInCircle( UnitPoint, OuterRadius, InnerRadius ) + local Point = {} + Point.type = "Turning Point" + Point.x = SpawnPos.x + Point.y = SpawnPos.y + Point.action = "Cone" + Point.speed = 5 + + table.insert( SpawnTemplate.route.points, 2, Point ) + + return self:SpawnWithIndex( self.SpawnIndex ) + end + end + end + + return nil +end + +--- Will spawn a Group within a given @{Zone#ZONE}. +-- Once the group is spawned within the zone, it will continue on its route. +-- The first waypoint (where the group is spawned) is replaced with the zone coordinates. +-- @param #SPAWN self +-- @param Zone#ZONE Zone The zone where the group is to be spawned. +-- @param #number ZoneRandomize (Optional) Set to true if you want to randomize the starting point in the zone. +-- @param #number SpawnIndex (Optional) The index which group to spawn within the given zone. +-- @return Group#GROUP that was spawned. +-- @return #nil when nothing was spawned. +function SPAWN:SpawnInZone( Zone, ZoneRandomize, SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, Zone, ZoneRandomize, SpawnIndex } ) + + if Zone then + + if SpawnIndex then + else + SpawnIndex = self.SpawnIndex + 1 + end + + if self:_GetSpawnIndex( SpawnIndex ) then + + local SpawnTemplate = self.SpawnGroups[self.SpawnIndex].SpawnTemplate + + if SpawnTemplate then + + local ZonePoint + + if ZoneRandomize == true then + ZonePoint = Zone:GetRandomVec2() + else + ZonePoint = Zone:GetPointVec2() + end + + SpawnTemplate.route.points[1].x = ZonePoint.x + SpawnTemplate.route.points[1].y = ZonePoint.y + + -- Apply SpawnFormation + for UnitID = 1, #SpawnTemplate.units do + local ZonePointUnit = Zone:GetRandomVec2() + SpawnTemplate.units[UnitID].x = ZonePointUnit.x + SpawnTemplate.units[UnitID].y = ZonePointUnit.y + self:T( 'SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) + end + + return self:SpawnWithIndex( self.SpawnIndex ) + end + end + end + + return nil +end + + + + +--- Will spawn a plane group in uncontrolled mode... +-- This will be similar to the uncontrolled flag setting in the ME. +-- @return #SPAWN self +function SPAWN:UnControlled() + self:F( { self.SpawnTemplatePrefix } ) + + self.SpawnUnControlled = true + + for SpawnGroupID = 1, self.SpawnMaxGroups do + self.SpawnGroups[SpawnGroupID].UnControlled = true + end + + return self +end + + + +--- Will return the SpawnGroupName either with with a specific count number or without any count. +-- @param #SPAWN self +-- @param #number SpawnIndex Is the number of the Group that is to be spawned. +-- @return #string SpawnGroupName +function SPAWN:SpawnGroupName( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex } ) + + local SpawnPrefix = self.SpawnTemplatePrefix + if self.SpawnAliasPrefix then + SpawnPrefix = self.SpawnAliasPrefix + end + + if SpawnIndex then + local SpawnName = string.format( '%s#%03d', SpawnPrefix, SpawnIndex ) + self:T( SpawnName ) + return SpawnName + else + self:T( SpawnPrefix ) + return SpawnPrefix + end + +end + +--- Find the first alive group. +-- @param #SPAWN self +-- @param #number SpawnCursor A number holding the index from where to find the first group from. +-- @return Group#GROUP, #number The group found, the new index where the group was found. +-- @return #nil, #nil When no group is found, #nil is returned. +function SPAWN:GetFirstAliveGroup( SpawnCursor ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnCursor } ) + + for SpawnIndex = 1, self.SpawnCount do + local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) + if SpawnGroup and SpawnGroup:IsAlive() then + SpawnCursor = SpawnIndex + return SpawnGroup, SpawnCursor + end + end + + return nil, nil +end + + +--- Find the next alive group. +-- @param #SPAWN self +-- @param #number SpawnCursor A number holding the last found previous index. +-- @return Group#GROUP, #number The group found, the new index where the group was found. +-- @return #nil, #nil When no group is found, #nil is returned. +function SPAWN:GetNextAliveGroup( SpawnCursor ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnCursor } ) + + SpawnCursor = SpawnCursor + 1 + for SpawnIndex = SpawnCursor, self.SpawnCount do + local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) + if SpawnGroup and SpawnGroup:IsAlive() then + SpawnCursor = SpawnIndex + return SpawnGroup, SpawnCursor + end + end + + return nil, nil +end + +--- Find the last alive group during runtime. +function SPAWN:GetLastAliveGroup() + self:F( { self.SpawnTemplatePrefixself.SpawnAliasPrefix } ) + + self.SpawnIndex = self:_GetLastIndex() + for SpawnIndex = self.SpawnIndex, 1, -1 do + local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) + if SpawnGroup and SpawnGroup:IsAlive() then + self.SpawnIndex = SpawnIndex + return SpawnGroup + end + end + + self.SpawnIndex = nil + return nil +end + + + +--- Get the group from an index. +-- Returns the group from the SpawnGroups list. +-- If no index is given, it will return the first group in the list. +-- @param #SPAWN self +-- @param #number SpawnIndex The index of the group to return. +-- @return Group#GROUP self +function SPAWN:GetGroupFromIndex( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } ) + + if not SpawnIndex then + SpawnIndex = 1 + end + + if self.SpawnGroups and self.SpawnGroups[SpawnIndex] then + local SpawnGroup = self.SpawnGroups[SpawnIndex].Group + return SpawnGroup + else + return nil + end +end + +--- Get the group index from a DCSUnit. +-- The method will search for a #-mark, and will return the index behind the #-mark of the DCSUnit. +-- It will return nil of no prefix was found. +-- @param #SPAWN self +-- @param DCSUnit The DCS unit to be searched. +-- @return #string The prefix +-- @return #nil Nothing found +function SPAWN:_GetGroupIndexFromDCSUnit( DCSUnit ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } ) + + if DCSUnit and DCSUnit:getName() then + local IndexString = string.match( DCSUnit:getName(), "#.*-" ):sub( 2, -2 ) + self:T( IndexString ) + + if IndexString then + local Index = tonumber( IndexString ) + self:T( { "Index:", IndexString, Index } ) + return Index + end + end + + return nil +end + +--- Return the prefix of a DCSUnit. +-- The method will search for a #-mark, and will return the text before the #-mark. +-- It will return nil of no prefix was found. +-- @param #SPAWN self +-- @param DCSUnit The DCS unit to be searched. +-- @return #string The prefix +-- @return #nil Nothing found +function SPAWN:_GetPrefixFromDCSUnit( DCSUnit ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } ) + + if DCSUnit and DCSUnit:getName() then + local SpawnPrefix = string.match( DCSUnit:getName(), ".*#" ) + if SpawnPrefix then + SpawnPrefix = SpawnPrefix:sub( 1, -2 ) + end + self:T( SpawnPrefix ) + return SpawnPrefix + end + + return nil +end + +--- Return the group within the SpawnGroups collection with input a DCSUnit. +function SPAWN:_GetGroupFromDCSUnit( DCSUnit ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } ) + + if DCSUnit then + local SpawnPrefix = self:_GetPrefixFromDCSUnit( DCSUnit ) + + if self.SpawnTemplatePrefix == SpawnPrefix or ( self.SpawnAliasPrefix and self.SpawnAliasPrefix == SpawnPrefix ) then + local SpawnGroupIndex = self:_GetGroupIndexFromDCSUnit( DCSUnit ) + local SpawnGroup = self.SpawnGroups[SpawnGroupIndex].Group + self:T( SpawnGroup ) + return SpawnGroup + end + end + + return nil +end + + +--- Get the index from a given group. +-- The function will search the name of the group for a #, and will return the number behind the #-mark. +function SPAWN:GetSpawnIndexFromGroup( SpawnGroup ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnGroup } ) + + local IndexString = string.match( SpawnGroup:GetName(), "#.*$" ):sub( 2 ) + local Index = tonumber( IndexString ) + + self:T( IndexString, Index ) + return Index + +end + +--- Return the last maximum index that can be used. +function SPAWN:_GetLastIndex() + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix } ) + + return self.SpawnMaxGroups +end + +--- Initalize the SpawnGroups collection. +function SPAWN:_InitializeSpawnGroups( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } ) + + if not self.SpawnGroups[SpawnIndex] then + self.SpawnGroups[SpawnIndex] = {} + self.SpawnGroups[SpawnIndex].Visible = false + self.SpawnGroups[SpawnIndex].Spawned = false + self.SpawnGroups[SpawnIndex].UnControlled = false + self.SpawnGroups[SpawnIndex].SpawnTime = 0 + + self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix = self.SpawnTemplatePrefix + self.SpawnGroups[SpawnIndex].SpawnTemplate = self:_Prepare( self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix, SpawnIndex ) + end + + self:_RandomizeTemplate( SpawnIndex ) + self:_RandomizeRoute( SpawnIndex ) + --self:_TranslateRotate( SpawnIndex ) + + return self.SpawnGroups[SpawnIndex] +end + + + +--- Gets the CategoryID of the Group with the given SpawnPrefix +function SPAWN:_GetGroupCategoryID( SpawnPrefix ) + local TemplateGroup = Group.getByName( SpawnPrefix ) + + if TemplateGroup then + return TemplateGroup:getCategory() + else + return nil + end +end + +--- Gets the CoalitionID of the Group with the given SpawnPrefix +function SPAWN:_GetGroupCoalitionID( SpawnPrefix ) + local TemplateGroup = Group.getByName( SpawnPrefix ) + + if TemplateGroup then + return TemplateGroup:getCoalition() + else + return nil + end +end + +--- Gets the CountryID of the Group with the given SpawnPrefix +function SPAWN:_GetGroupCountryID( SpawnPrefix ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnPrefix } ) + + local TemplateGroup = Group.getByName( SpawnPrefix ) + + if TemplateGroup then + local TemplateUnits = TemplateGroup:getUnits() + return TemplateUnits[1]:getCountry() + else + return nil + end +end + +--- Gets the Group Template from the ME environment definition. +-- This method used the @{DATABASE} object, which contains ALL initial and new spawned object in MOOSE. +-- @param #SPAWN self +-- @param #string SpawnTemplatePrefix +-- @return @SPAWN self +function SPAWN:_GetTemplate( SpawnTemplatePrefix ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnTemplatePrefix } ) + + local SpawnTemplate = nil + + SpawnTemplate = routines.utils.deepCopy( _DATABASE.Templates.Groups[SpawnTemplatePrefix].Template ) + + if SpawnTemplate == nil then + error( 'No Template returned for SpawnTemplatePrefix = ' .. SpawnTemplatePrefix ) + end + + SpawnTemplate.SpawnCoalitionID = self:_GetGroupCoalitionID( SpawnTemplatePrefix ) + SpawnTemplate.SpawnCategoryID = self:_GetGroupCategoryID( SpawnTemplatePrefix ) + SpawnTemplate.SpawnCountryID = self:_GetGroupCountryID( SpawnTemplatePrefix ) + + self:T( { SpawnTemplate } ) + return SpawnTemplate +end + +--- Prepares the new Group Template. +-- @param #SPAWN self +-- @param #string SpawnTemplatePrefix +-- @param #number SpawnIndex +-- @return #SPAWN self +function SPAWN:_Prepare( SpawnTemplatePrefix, SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix } ) + + local SpawnTemplate = self:_GetTemplate( SpawnTemplatePrefix ) + SpawnTemplate.name = self:SpawnGroupName( SpawnIndex ) + + SpawnTemplate.groupId = nil + --SpawnTemplate.lateActivation = false + SpawnTemplate.lateActivation = false -- TODO BUGFIX + + if SpawnTemplate.SpawnCategoryID == Group.Category.GROUND then + self:T( "For ground units, visible needs to be false..." ) + SpawnTemplate.visible = false -- TODO BUGFIX + end + + if SpawnTemplate.SpawnCategoryID == Group.Category.HELICOPTER or SpawnTemplate.SpawnCategoryID == Group.Category.AIRPLANE then + SpawnTemplate.uncontrolled = false + end + + for UnitID = 1, #SpawnTemplate.units do + SpawnTemplate.units[UnitID].name = string.format( SpawnTemplate.name .. '-%02d', UnitID ) + SpawnTemplate.units[UnitID].unitId = nil + SpawnTemplate.units[UnitID].x = SpawnTemplate.route.points[1].x + SpawnTemplate.units[UnitID].y = SpawnTemplate.route.points[1].y + end + + self:T( { "Template:", SpawnTemplate } ) + return SpawnTemplate + +end + +--- Private method randomizing the routes. +-- @param #SPAWN self +-- @param #number SpawnIndex The index of the group to be spawned. +-- @return #SPAWN +function SPAWN:_RandomizeRoute( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnRandomizeRoute, self.SpawnRandomizeRouteStartPoint, self.SpawnRandomizeRouteEndPoint, self.SpawnRandomizeRouteRadius } ) + + if self.SpawnRandomizeRoute then + local SpawnTemplate = self.SpawnGroups[SpawnIndex].SpawnTemplate + local RouteCount = #SpawnTemplate.route.points + + for t = self.SpawnRandomizeRouteStartPoint + 1, ( RouteCount - self.SpawnRandomizeRouteEndPoint ) do + SpawnTemplate.route.points[t].x = SpawnTemplate.route.points[t].x + math.random( self.SpawnRandomizeRouteRadius * -1, self.SpawnRandomizeRouteRadius ) + SpawnTemplate.route.points[t].y = SpawnTemplate.route.points[t].y + math.random( self.SpawnRandomizeRouteRadius * -1, self.SpawnRandomizeRouteRadius ) + -- TODO: manage altitude for airborne units ... + SpawnTemplate.route.points[t].alt = nil + --SpawnGroup.route.points[t].alt_type = nil + self:T( 'SpawnTemplate.route.points[' .. t .. '].x = ' .. SpawnTemplate.route.points[t].x .. ', SpawnTemplate.route.points[' .. t .. '].y = ' .. SpawnTemplate.route.points[t].y ) + end + end + + return self +end + +--- Private method that randomizes the template of the group. +-- @param #SPAWN self +-- @param #number SpawnIndex +-- @return #SPAWN self +function SPAWN:_RandomizeTemplate( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnRandomizeTemplate } ) + + if self.SpawnRandomizeTemplate then + self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix = self.SpawnTemplatePrefixTable[ math.random( 1, #self.SpawnTemplatePrefixTable ) ] + self.SpawnGroups[SpawnIndex].SpawnTemplate = self:_Prepare( self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix, SpawnIndex ) + self.SpawnGroups[SpawnIndex].SpawnTemplate.route = routines.utils.deepCopy( self.SpawnTemplate.route ) + self.SpawnGroups[SpawnIndex].SpawnTemplate.x = self.SpawnTemplate.x + self.SpawnGroups[SpawnIndex].SpawnTemplate.y = self.SpawnTemplate.y + self.SpawnGroups[SpawnIndex].SpawnTemplate.start_time = self.SpawnTemplate.start_time + for UnitID = 1, #self.SpawnGroups[SpawnIndex].SpawnTemplate.units do + self.SpawnGroups[SpawnIndex].SpawnTemplate.units[UnitID].heading = self.SpawnTemplate.units[1].heading + end + end + + self:_RandomizeRoute( SpawnIndex ) + + return self +end + +function SPAWN:_TranslateRotate( SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle } ) + + -- Translate + local TranslatedX = SpawnX + local TranslatedY = SpawnY + + -- Rotate + -- From Wikipedia: https://en.wikipedia.org/wiki/Rotation_matrix#Common_rotations + -- x' = x \cos \theta - y \sin \theta\ + -- y' = x \sin \theta + y \cos \theta\ + local RotatedX = - TranslatedX * math.cos( math.rad( SpawnAngle ) ) + + TranslatedY * math.sin( math.rad( SpawnAngle ) ) + local RotatedY = TranslatedX * math.sin( math.rad( SpawnAngle ) ) + + TranslatedY * math.cos( math.rad( SpawnAngle ) ) + + -- Assign + self.SpawnGroups[SpawnIndex].SpawnTemplate.x = SpawnRootX - RotatedX + self.SpawnGroups[SpawnIndex].SpawnTemplate.y = SpawnRootY + RotatedY + + + local SpawnUnitCount = table.getn( self.SpawnGroups[SpawnIndex].SpawnTemplate.units ) + for u = 1, SpawnUnitCount do + + -- Translate + local TranslatedX = SpawnX + local TranslatedY = SpawnY - 10 * ( u - 1 ) + + -- Rotate + local RotatedX = - TranslatedX * math.cos( math.rad( SpawnAngle ) ) + + TranslatedY * math.sin( math.rad( SpawnAngle ) ) + local RotatedY = TranslatedX * math.sin( math.rad( SpawnAngle ) ) + + TranslatedY * math.cos( math.rad( SpawnAngle ) ) + + -- Assign + self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].x = SpawnRootX - RotatedX + self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].y = SpawnRootY + RotatedY + self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].heading = self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].heading + math.rad( SpawnAngle ) + end + + return self +end + +--- Get the next index of the groups to be spawned. This function is complicated, as it is used at several spaces. +function SPAWN:_GetSpawnIndex( SpawnIndex ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive, self.AliveUnits, #self.SpawnTemplate.units } ) + + + if ( self.SpawnMaxGroups == 0 ) or ( SpawnIndex <= self.SpawnMaxGroups ) then + if ( self.SpawnMaxUnitsAlive == 0 ) or ( self.AliveUnits < self.SpawnMaxUnitsAlive * #self.SpawnTemplate.units ) or self.UnControlled then + if SpawnIndex and SpawnIndex >= self.SpawnCount + 1 then + self.SpawnCount = self.SpawnCount + 1 + SpawnIndex = self.SpawnCount + end + self.SpawnIndex = SpawnIndex + if not self.SpawnGroups[self.SpawnIndex] then + self:_InitializeSpawnGroups( self.SpawnIndex ) + end + else + return nil + end + else + return nil + end + + return self.SpawnIndex +end + + +-- TODO Need to delete this... _DATABASE does this now ... +function SPAWN:_OnBirth( event ) + + if timer.getTime0() < timer.getAbsTime() then -- dont need to add units spawned in at the start of the mission if mist is loaded in init line + if event.initiator and event.initiator:getName() then + local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator ) + if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then + self:T( { "Birth event: " .. event.initiator:getName(), event } ) + --MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " spawned." , 5, EventPrefix .. '/Event') + self.AliveUnits = self.AliveUnits + 1 + self:T( "Alive Units: " .. self.AliveUnits ) + end + end + end + +end + +--- Obscolete +-- @todo Need to delete this... _DATABASE does this now ... +function SPAWN:_OnDeadOrCrash( event ) + self:F( self.SpawnTemplatePrefix, event ) + + if event.initiator and event.initiator:getName() then + local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator ) + if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then + self:T( { "Dead event: " .. event.initiator:getName(), event } ) +-- local DestroyedUnit = Unit.getByName( EventPrefix ) +-- if DestroyedUnit and DestroyedUnit.getLife() <= 1.0 then + --MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " crashed." , 5, EventPrefix .. '/Event') + self.AliveUnits = self.AliveUnits - 1 + self:T( "Alive Units: " .. self.AliveUnits ) +-- end + end + end +end + +--- Will detect AIR Units taking off... When the event takes place, the spawned Group is registered as airborne... +-- This is needed to ensure that Re-SPAWNing only is done for landed AIR Groups. +-- @todo Need to test for AIR Groups only... +function SPAWN:_OnTakeOff( event ) + self:F( self.SpawnTemplatePrefix, event ) + + if event.initiator and event.initiator:getName() then + local SpawnGroup = self:_GetGroupFromDCSUnit( event.initiator ) + if SpawnGroup then + self:T( { "TakeOff event: " .. event.initiator:getName(), event } ) + self:T( "self.Landed = false" ) + self.Landed = false + end + end +end + +--- Will detect AIR Units landing... When the event takes place, the spawned Group is registered as landed. +-- This is needed to ensure that Re-SPAWNing is only done for landed AIR Groups. +-- @todo Need to test for AIR Groups only... +function SPAWN:_OnLand( event ) + self:F( self.SpawnTemplatePrefix, event ) + + local SpawnUnit = event.initiator + if SpawnUnit and SpawnUnit:isExist() and Object.getCategory(SpawnUnit) == Object.Category.UNIT then + local SpawnGroup = self:_GetGroupFromDCSUnit( SpawnUnit ) + if SpawnGroup then + self:T( { "Landed event:" .. SpawnUnit:getName(), event } ) + self.Landed = true + self:T( "self.Landed = true" ) + if self.Landed and self.RepeatOnLanding then + local SpawnGroupIndex = self:GetSpawnIndexFromGroup( SpawnGroup ) + self:T( { "Landed:", "ReSpawn:", SpawnGroup:GetName(), SpawnGroupIndex } ) + self:ReSpawn( SpawnGroupIndex ) + end + end + end +end + +--- Will detect AIR Units shutting down their engines ... +-- When the event takes place, and the method @{RepeatOnEngineShutDown} was called, the spawned Group will Re-SPAWN. +-- But only when the Unit was registered to have landed. +-- @param #SPAWN self +-- @see _OnTakeOff +-- @see _OnLand +-- @todo Need to test for AIR Groups only... +function SPAWN:_OnEngineShutDown( event ) + self:F( self.SpawnTemplatePrefix, event ) + + local SpawnUnit = event.initiator + if SpawnUnit and SpawnUnit:isExist() and Object.getCategory(SpawnUnit) == Object.Category.UNIT then + local SpawnGroup = self:_GetGroupFromDCSUnit( SpawnUnit ) + if SpawnGroup then + self:T( { "EngineShutDown event: " .. SpawnUnit:getName(), event } ) + if self.Landed and self.RepeatOnEngineShutDown then + local SpawnGroupIndex = self:GetSpawnIndexFromGroup( SpawnGroup ) + self:T( { "EngineShutDown: ", "ReSpawn:", SpawnGroup:GetName(), SpawnGroupIndex } ) + self:ReSpawn( SpawnGroupIndex ) + end + end + end +end + +--- This function is called automatically by the Spawning scheduler. +-- It is the internal worker method SPAWNing new Groups on the defined time intervals. +function SPAWN:_Scheduler() + self:F( { "_Scheduler", self.SpawnTemplatePrefix, self.SpawnAliasPrefix, self.SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive } ) + + -- Validate if there are still groups left in the batch... + self:Spawn() + + return true +end + +function SPAWN:_SpawnCleanUpScheduler() + self:F( { "CleanUp Scheduler:", self.SpawnTemplatePrefix } ) + + local SpawnCursor + local SpawnGroup, SpawnCursor = self:GetFirstAliveGroup( SpawnCursor ) + + self:T( { "CleanUp Scheduler:", SpawnGroup } ) + + while SpawnGroup do + + if SpawnGroup:AllOnGround() and SpawnGroup:GetMaxVelocity() < 1 then + if not self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] then + self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] = timer.getTime() + else + if self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] + self.SpawnCleanUpInterval < timer.getTime() then + self:T( { "CleanUp Scheduler:", "Cleaning:", SpawnGroup } ) + SpawnGroup:Destroy() + end + end + else + self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] = nil + end + + SpawnGroup, SpawnCursor = self:GetNextAliveGroup( SpawnCursor ) + + self:T( { "CleanUp Scheduler:", SpawnGroup } ) + + end + + return true -- Repeat + +end +--- Limit the simultaneous movement of Groups within a running Mission. +-- This module is defined to improve the performance in missions, and to bring additional realism for GROUND vehicles. +-- Performance: If in a DCSRTE there are a lot of moving GROUND units, then in a multi player mission, this WILL create lag if +-- the main DCS execution core of your CPU is fully utilized. So, this class will limit the amount of simultaneous moving GROUND units +-- on defined intervals (currently every minute). +-- @module MOVEMENT + +--- the MOVEMENT class +-- @type +MOVEMENT = { + ClassName = "MOVEMENT", +} + +--- Creates the main object which is handling the GROUND forces movement. +-- @param table{string,...}|string MovePrefixes is a table of the Prefixes (names) of the GROUND Groups that need to be controlled by the MOVEMENT Object. +-- @param number MoveMaximum is a number that defines the maximum amount of GROUND Units to be moving during one minute. +-- @return MOVEMENT +-- @usage +-- -- Limit the amount of simultaneous moving units on the ground to prevent lag. +-- Movement_US_Platoons = MOVEMENT:New( { 'US Tank Platoon Left', 'US Tank Platoon Middle', 'US Tank Platoon Right', 'US CH-47D Troops' }, 15 ) + +function MOVEMENT:New( MovePrefixes, MoveMaximum ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( { MovePrefixes, MoveMaximum } ) + + if type( MovePrefixes ) == 'table' then + self.MovePrefixes = MovePrefixes + else + self.MovePrefixes = { MovePrefixes } + end + self.MoveCount = 0 -- The internal counter of the amount of Moveing the has happened since MoveStart. + self.MoveMaximum = MoveMaximum -- Contains the Maximum amount of units that are allowed to move... + self.AliveUnits = 0 -- Contains the counter how many units are currently alive + self.MoveUnits = {} -- Reflects if the Moving for this MovePrefixes is going to be scheduled or not. + + _EVENTDISPATCHER:OnBirth( self.OnBirth, self ) + +-- self:AddEvent( world.event.S_EVENT_BIRTH, self.OnBirth ) +-- +-- self:EnableEvents() + + self:ScheduleStart() + + return self +end + +--- Call this function to start the MOVEMENT scheduling. +function MOVEMENT:ScheduleStart() + self:F() + --self.MoveFunction = routines.scheduleFunction( self._Scheduler, { self }, timer.getTime() + 1, 120 ) + self.MoveFunction = SCHEDULER:New( self, self._Scheduler, {}, 1, 120 ) +end + +--- Call this function to stop the MOVEMENT scheduling. +-- @todo need to implement it ... Forgot. +function MOVEMENT:ScheduleStop() + self:F() + +end + +--- Captures the birth events when new Units were spawned. +-- @todo This method should become obsolete. The new @{DATABASE} class will handle the collection administration. +function MOVEMENT:OnBirth( Event ) + self:F( { Event } ) + + if timer.getTime0() < timer.getAbsTime() then -- dont need to add units spawned in at the start of the mission if mist is loaded in init line + if Event.IniDCSUnit then + self:T( "Birth object : " .. Event.IniDCSUnitName ) + if Event.IniDCSGroup and Event.IniDCSGroup:isExist() then + for MovePrefixID, MovePrefix in pairs( self.MovePrefixes ) do + if string.find( Event.IniDCSUnitName, MovePrefix, 1, true ) then + self.AliveUnits = self.AliveUnits + 1 + self.MoveUnits[Event.IniDCSUnitName] = Event.IniDCSGroupName + self:T( self.AliveUnits ) + end + end + end + end + _EVENTDISPATCHER:OnCrashForUnit( Event.IniDCSUnitName, self.OnDeadOrCrash, self ) + _EVENTDISPATCHER:OnDeadForUnit( Event.IniDCSUnitName, self.OnDeadOrCrash, self ) + end + +end + +--- Captures the Dead or Crash events when Units crash or are destroyed. +-- @todo This method should become obsolete. The new @{DATABASE} class will handle the collection administration. +function MOVEMENT:OnDeadOrCrash( Event ) + self:F( { Event } ) + + if Event.IniDCSUnit then + self:T( "Dead object : " .. Event.IniDCSUnitName ) + for MovePrefixID, MovePrefix in pairs( self.MovePrefixes ) do + if string.find( Event.IniDCSUnitName, MovePrefix, 1, true ) then + self.AliveUnits = self.AliveUnits - 1 + self.MoveUnits[Event.IniDCSUnitName] = nil + self:T( self.AliveUnits ) + end + end + end +end + +--- This function is called automatically by the MOVEMENT scheduler. A new function is scheduled when MoveScheduled is true. +function MOVEMENT:_Scheduler() + self:F( { self.MovePrefixes, self.MoveMaximum, self.AliveUnits, self.MovementGroups } ) + + if self.AliveUnits > 0 then + local MoveProbability = ( self.MoveMaximum * 100 ) / self.AliveUnits + self:T( 'Move Probability = ' .. MoveProbability ) + + for MovementUnitName, MovementGroupName in pairs( self.MoveUnits ) do + local MovementGroup = Group.getByName( MovementGroupName ) + if MovementGroup and MovementGroup:isExist() then + local MoveOrStop = math.random( 1, 100 ) + self:T( 'MoveOrStop = ' .. MoveOrStop ) + if MoveOrStop <= MoveProbability then + self:T( 'Group continues moving = ' .. MovementGroupName ) + trigger.action.groupContinueMoving( MovementGroup ) + else + self:T( 'Group stops moving = ' .. MovementGroupName ) + trigger.action.groupStopMoving( MovementGroup ) + end + else + self.MoveUnits[MovementUnitName] = nil + end + end + end + return true +end +--- Provides defensive behaviour to a set of SAM sites within a running Mission. +-- @module Sead +-- @author to be searched on the forum +-- @author (co) Flightcontrol (Modified and enriched with functionality) + +--- The SEAD class +-- @type SEAD +-- @extends Base#BASE +SEAD = { + ClassName = "SEAD", + TargetSkill = { + Average = { Evade = 50, DelayOff = { 10, 25 }, DelayOn = { 10, 30 } } , + Good = { Evade = 30, DelayOff = { 8, 20 }, DelayOn = { 20, 40 } } , + High = { Evade = 15, DelayOff = { 5, 17 }, DelayOn = { 30, 50 } } , + Excellent = { Evade = 10, DelayOff = { 3, 10 }, DelayOn = { 30, 60 } } + }, + SEADGroupPrefixes = {} +} + +--- Creates the main object which is handling defensive actions for SA sites or moving SA vehicles. +-- When an anti radiation missile is fired (KH-58, KH-31P, KH-31A, KH-25MPU, HARM missiles), the SA will shut down their radars and will take evasive actions... +-- Chances are big that the missile will miss. +-- @param table{string,...}|string SEADGroupPrefixes which is a table of Prefixes of the SA Groups in the DCSRTE on which evasive actions need to be taken. +-- @return SEAD +-- @usage +-- -- CCCP SEAD Defenses +-- -- 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' } ) +function SEAD:New( SEADGroupPrefixes ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( SEADGroupPrefixes ) + if type( SEADGroupPrefixes ) == 'table' then + for SEADGroupPrefixID, SEADGroupPrefix in pairs( SEADGroupPrefixes ) do + self.SEADGroupPrefixes[SEADGroupPrefix] = SEADGroupPrefix + end + else + self.SEADGroupNames[SEADGroupPrefixes] = SEADGroupPrefixes + end + _EVENTDISPATCHER:OnShot( self.EventShot, self ) + + return self +end + +--- 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. +-- @see SEAD +function SEAD:EventShot( Event ) + self:F( { Event } ) + + local SEADUnit = Event.IniDCSUnit + local SEADUnitName = Event.IniDCSUnitName + local SEADWeapon = Event.Weapon -- Identify the weapon fired + local SEADWeaponName = Event.WeaponName -- return weapon type + --trigger.action.outText( string.format("Alerte, depart missile " ..string.format(SEADWeaponName)), 20) --debug message + -- Start of the 2nd loop + self:T( "Missile Launched = " .. SEADWeaponName ) + if SEADWeaponName == "KH-58" or SEADWeaponName == "KH-25MPU" or SEADWeaponName == "AGM-88" or SEADWeaponName == "KH-31A" or SEADWeaponName == "KH-31P" then -- Check if the missile is a SEAD + local _evade = math.random (1,100) -- random number for chance of evading action + local _targetMim = Event.Weapon:getTarget() -- Identify target + local _targetMimname = Unit.getName(_targetMim) + local _targetMimgroup = Unit.getGroup(Weapon.getTarget(SEADWeapon)) + local _targetMimgroupName = _targetMimgroup:getName() + local _targetMimcont= _targetMimgroup:getController() + local _targetskill = _DATABASE.Templates.Units[_targetMimname].Template.skill + self:T( self.SEADGroupPrefixes ) + self:T( _targetMimgroupName ) + local SEADGroupFound = false + for SEADGroupPrefixID, SEADGroupPrefix in pairs( self.SEADGroupPrefixes ) do + if string.find( _targetMimgroupName, SEADGroupPrefix, 1, true ) then + SEADGroupFound = true + self:T( 'Group Found' ) + break + end + end + if SEADGroupFound == true then + if _targetskill == "Random" then -- when skill is random, choose a skill + local Skills = { "Average", "Good", "High", "Excellent" } + _targetskill = Skills[ math.random(1,4) ] + end + self:T( _targetskill ) -- debug message for skill check + if self.TargetSkill[_targetskill] then + if (_evade > self.TargetSkill[_targetskill].Evade) then + self:T( string.format("Evading, target skill " ..string.format(_targetskill)) ) --debug message + local _targetMim = Weapon.getTarget(SEADWeapon) + local _targetMimname = Unit.getName(_targetMim) + local _targetMimgroup = Unit.getGroup(Weapon.getTarget(SEADWeapon)) + local _targetMimcont= _targetMimgroup:getController() + routines.groupRandomDistSelf(_targetMimgroup,300,'Diamond',250,20) -- move randomly + local SuppressedGroups1 = {} -- unit suppressed radar off for a random time + local function SuppressionEnd1(id) + id.ctrl:setOption(AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.GREEN) + SuppressedGroups1[id.groupName] = nil + end + local id = { + groupName = _targetMimgroup, + ctrl = _targetMimcont + } + local delay1 = math.random(self.TargetSkill[_targetskill].DelayOff[1], self.TargetSkill[_targetskill].DelayOff[2]) + if SuppressedGroups1[id.groupName] == nil then + SuppressedGroups1[id.groupName] = { + SuppressionEndTime1 = timer.getTime() + delay1, + SuppressionEndN1 = SuppressionEndCounter1 --Store instance of SuppressionEnd() scheduled function + } + Controller.setOption(_targetMimcont, AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.GREEN) + timer.scheduleFunction(SuppressionEnd1, id, SuppressedGroups1[id.groupName].SuppressionEndTime1) --Schedule the SuppressionEnd() function + --trigger.action.outText( string.format("Radar Off " ..string.format(delay1)), 20) + end + + local SuppressedGroups = {} + local function SuppressionEnd(id) + id.ctrl:setOption(AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.RED) + SuppressedGroups[id.groupName] = nil + end + local id = { + groupName = _targetMimgroup, + ctrl = _targetMimcont + } + local delay = math.random(self.TargetSkill[_targetskill].DelayOn[1], self.TargetSkill[_targetskill].DelayOn[2]) + if SuppressedGroups[id.groupName] == nil then + SuppressedGroups[id.groupName] = { + SuppressionEndTime = timer.getTime() + delay, + SuppressionEndN = SuppressionEndCounter --Store instance of SuppressionEnd() scheduled function + } + timer.scheduleFunction(SuppressionEnd, id, SuppressedGroups[id.groupName].SuppressionEndTime) --Schedule the SuppressionEnd() function + --trigger.action.outText( string.format("Radar On " ..string.format(delay)), 20) + end + end + end + end + end +end +--- Taking the lead of AI escorting your flight. +-- +-- @{#ESCORT} class +-- ================ +-- The @{#ESCORT} class allows you to interact with escorting AI on your flight and take the lead. +-- Each escorting group can be commanded with a whole set of radio commands (radio menu in your flight, and then F10). +-- +-- The radio commands will vary according the category of the group. The richest set of commands are with Helicopters and AirPlanes. +-- Ships and Ground troops will have a more limited set, but they can provide support through the bombing of targets designated by the other escorts. +-- +-- RADIO MENUs that can be created: +-- ================================ +-- Find a summary below of the current available commands: +-- +-- Navigation ...: +-- --------------- +-- Escort group navigation functions: +-- +-- * **"Join-Up and Follow at x meters":** The escort group fill follow you at about x meters, and they will follow you. +-- * **"Flare":** Provides menu commands to let the escort group shoot a flare in the air in a color. +-- * **"Smoke":** Provides menu commands to let the escort group smoke the air in a color. Note that smoking is only available for ground and naval troops. +-- +-- Hold position ...: +-- ------------------ +-- Escort group navigation functions: +-- +-- * **"At current location":** Stops the escort group and they will hover 30 meters above the ground at the position they stopped. +-- * **"At client location":** Stops the escort group and they will hover 30 meters above the ground at the position they stopped. +-- +-- Report targets ...: +-- ------------------- +-- Report targets will make the escort group to report any target that it identifies within a 8km range. Any detected target can be attacked using the 4. Attack nearby targets function. (see below). +-- +-- * **"Report now":** Will report the current detected targets. +-- * **"Report targets on":** Will make the escort group to report detected targets and will fill the "Attack nearby targets" menu list. +-- * **"Report targets off":** Will stop detecting targets. +-- +-- Scan targets ...: +-- ----------------- +-- Menu items to pop-up the escort group for target scanning. After scanning, the escort group will resume with the mission or defined task. +-- +-- * **"Scan targets 30 seconds":** Scan 30 seconds for targets. +-- * **"Scan targets 60 seconds":** Scan 60 seconds for targets. +-- +-- Attack targets ...: +-- ------------------- +-- This menu item will list all detected targets within a 15km range. Depending on the level of detection (known/unknown) and visuality, the targets type will also be listed. +-- +-- Request assistance from ...: +-- ---------------------------- +-- This menu item will list all detected targets within a 15km range, as with the menu item **Attack Targets**. +-- This menu item allows to request attack support from other escorts supporting the current client group. +-- eg. the function allows a player to request support from the Ship escort to attack a target identified by the Plane escort with its Tomahawk missiles. +-- eg. the function allows a player to request support from other Planes escorting to bomb the unit with illumination missiles or bombs, so that the main plane escort can attack the area. +-- +-- ROE ...: +-- -------- +-- Sets the Rules of Engagement (ROE) of the escort group when in flight. +-- +-- * **"Hold Fire":** The escort group will hold fire. +-- * **"Return Fire":** The escort group will return fire. +-- * **"Open Fire":** The escort group will open fire on designated targets. +-- * **"Weapon Free":** The escort group will engage with any target. +-- +-- Evasion ...: +-- ------------ +-- Will define the evasion techniques that the escort group will perform during flight or combat. +-- +-- * **"Fight until death":** The escort group will have no reaction to threats. +-- * **"Use flares, chaff and jammers":** The escort group will use passive defense using flares and jammers. No evasive manoeuvres are executed. +-- * **"Evade enemy fire":** The rescort group will evade enemy fire before firing. +-- * **"Go below radar and evade fire":** The escort group will perform evasive vertical manoeuvres. +-- +-- Resume Mission ...: +-- ------------------- +-- Escort groups can have their own mission. This menu item will allow the escort group to resume their Mission from a given waypoint. +-- Note that this is really fantastic, as you now have the dynamic of taking control of the escort groups, and allowing them to resume their path or mission. +-- +-- ESCORT construction methods. +-- ============================ +-- Create a new SPAWN object with the @{#ESCORT.New} method: +-- +-- * @{#ESCORT.New}: Creates a new ESCORT object from a @{Group#GROUP} for a @{Client#CLIENT}, with an optional briefing text. +-- +-- ESCORT initialization methods. +-- ============================== +-- The following menus are created within the RADIO MENU 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. +-- * @{#ESCORT.MenuHoldAtLeaderPosition}: Creates a menu to hold the escort at the client position. +-- * @{#ESCORT.MenuScanForTargets}: Creates a menu so that the escort scans targets. +-- * @{#ESCORT.MenuFlare}: Creates a menu to disperse flares. +-- * @{#ESCORT.MenuSmoke}: Creates a menu to disparse smoke. +-- * @{#ESCORT.MenuReportTargets}: Creates a menu so that the escort reports targets. +-- * @{#ESCORT.MenuReportPosition}: Creates a menu so that the escort reports its current position from bullseye. +-- * @{#ESCORT.MenuAssistedAttack: Creates a menu so that the escort supportes assisted attack from other escorts with the client. +-- * @{#ESCORT.MenuROE: Creates a menu structure to set the rules of engagement of the escort. +-- * @{#ESCORT.MenuEvasion: Creates a menu structure to set the evasion techniques when the escort is under threat. +-- * @{#ESCORT.MenuResumeMission}: Creates a menu structure so that the escort can resume from a waypoint. +-- +-- +-- @usage +-- -- Declare a new EscortPlanes object as follows: +-- +-- -- First find the GROUP object and the CLIENT object. +-- local EscortClient = CLIENT:FindByName( "Unit Name" ) -- The Unit Name is the name of the unit flagged with the skill Client in the mission editor. +-- local EscortGroup = GROUP:FindByName( "Group Name" ) -- The Group Name is the name of the group that will escort the Escort Client. +-- +-- -- 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." ) +-- +-- +-- +-- @module Escort +-- @author FlightControl + +--- ESCORT class +-- @type ESCORT +-- @extends Base#BASE +-- @field Client#CLIENT EscortClient +-- @field Group#GROUP EscortGroup +-- @field #string EscortName +-- @field #ESCORT.MODE EscortMode The mode the escort is in. +-- @field Scheduler#SCHEDULER FollowScheduler The instance of the SCHEDULER class. +-- @field #number FollowDistance The current follow distance. +-- @field #boolean ReportTargets If true, nearby targets are reported. +-- @Field DCSTypes#AI.Option.Air.val.ROE OptionROE Which ROE is set to the EscortGroup. +-- @field DCSTypes#AI.Option.Air.val.REACTION_ON_THREAT OptionReactionOnThreat Which REACTION_ON_THREAT is set to the EscortGroup. +-- @field Menu#MENU_CLIENT EscortMenuResumeMission +ESCORT = { + ClassName = "ESCORT", + EscortName = nil, -- The Escort Name + EscortClient = nil, + EscortGroup = nil, + EscortMode = 1, + MODE = { + FOLLOW = 1, + MISSION = 2, + }, + Targets = {}, -- The identified targets + FollowScheduler = nil, + ReportTargets = true, + OptionROE = AI.Option.Air.val.ROE.OPEN_FIRE, + OptionReactionOnThreat = AI.Option.Air.val.REACTION_ON_THREAT.ALLOW_ABORT_MISSION, + SmokeDirectionVector = false, + TaskPoints = {} +} + +--- ESCORT.Mode class +-- @type ESCORT.MODE +-- @field #number FOLLOW +-- @field #number MISSION + +--- MENUPARAM type +-- @type MENUPARAM +-- @field #ESCORT ParamSelf +-- @field #Distance ParamDistance +-- @field #function ParamFunction +-- @field #string ParamMessage + +--- ESCORT class constructor for an AI group +-- @param #ESCORT self +-- @param Client#CLIENT EscortClient The client escorted by the EscortGroup. +-- @param Group#GROUP EscortGroup The group AI escorting the EscortClient. +-- @param #string EscortName Name of the escort. +-- @return #ESCORT self +-- @usage +-- -- Declare a new EscortPlanes object as follows: +-- +-- -- First find the GROUP object and the CLIENT object. +-- local EscortClient = CLIENT:FindByName( "Unit Name" ) -- The Unit Name is the name of the unit flagged with the skill Client in the mission editor. +-- local EscortGroup = GROUP:FindByName( "Group Name" ) -- The Group Name is the name of the group that will escort the Escort Client. +-- +-- -- 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() ) + self:F( { EscortClient, EscortGroup, EscortName } ) + + self.EscortClient = EscortClient -- Client#CLIENT + self.EscortGroup = EscortGroup -- Group#GROUP + self.EscortName = EscortName + self.EscortBriefing = EscortBriefing + + -- Set EscortGroup known at EscortClient. + if not self.EscortClient._EscortGroups then + self.EscortClient._EscortGroups = {} + end + + if not self.EscortClient._EscortGroups[EscortGroup:GetName()] then + 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 = {} + end + + self.EscortMenu = MENU_CLIENT:New( self.EscortClient, self.EscortName ) + + self.EscortGroup:WayPointInitialize(1) + + self.EscortGroup:OptionROTVertical() + self.EscortGroup:OptionROEOpenFire() + + EscortGroup:MessageToClient( EscortGroup:GetCategoryName() .. " '" .. EscortName .. "' (" .. EscortGroup:GetCallsign() .. ") reporting! " .. + "We're escorting your flight. " .. + "Use the Radio Menu and F10 and use the options under + " .. EscortName .. "\n", + 60, EscortClient + ) + + self.FollowDistance = 100 + self.CT1 = 0 + self.GT1 = 0 + self.FollowScheduler = SCHEDULER:New( self, self._FollowScheduler, {}, 1, .5, .01 ) + self.EscortMode = ESCORT.MODE.MISSION + self.FollowScheduler:Stop() + + return self +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 +-- @param #boolean SmokeDirection If true, then the direction vector will be smoked. +function ESCORT:TestSmokeDirectionVector( SmokeDirection ) + self.SmokeDirectionVector = ( SmokeDirection == true ) and true or false +end + + +--- Defines the default menus +-- @param #ESCORT self +-- @return #ESCORT +function ESCORT:Menus() + self:F() + + self:MenuFollowAt( 100 ) + self:MenuFollowAt( 200 ) + self:MenuFollowAt( 300 ) + self:MenuFollowAt( 400 ) + + self:MenuScanForTargets( 100, 60 ) + + self:MenuHoldAtEscortPosition( 30 ) + self:MenuHoldAtLeaderPosition( 30 ) + + self:MenuFlare() + self:MenuSmoke() + + self:MenuReportTargets( 60 ) + self:MenuAssistedAttack() + self:MenuROE() + self:MenuEvasion() + self:MenuResumeMission() + + + return self +end + + + +--- Defines a menu slot to let the escort Join and Follow you at a certain distance. +-- This menu will appear under **Navigation**. +-- @param #ESCORT self +-- @param DCSTypes#Distance Distance The distance in meters that the escort needs to follow the client. +-- @return #ESCORT +function ESCORT:MenuFollowAt( Distance ) + self:F(Distance) + + if self.EscortGroup:IsAir() then + if not self.EscortMenuReportNavigation then + self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) + end + + if not self.EscortMenuJoinUpAndFollow then + 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.EscortMode = ESCORT.MODE.FOLLOW + end + + return self +end + +--- Defines a menu slot to let the escort hold at their current position and stay low with a specified height during a specified time in seconds. +-- This menu will appear under **Hold position**. +-- @param #ESCORT self +-- @param DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. +-- @param DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. +-- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. +-- @return #ESCORT +-- TODO: Implement Seconds parameter. Challenge is to first develop the "continue from last activity" function. +function ESCORT:MenuHoldAtEscortPosition( Height, Seconds, MenuTextFormat ) + self:F( { Height, Seconds, MenuTextFormat } ) + + if self.EscortGroup:IsAir() then + + if not self.EscortMenuHold then + self.EscortMenuHold = MENU_CLIENT:New( self.EscortClient, "Hold position", self.EscortMenu ) + end + + if not Height then + Height = 30 + end + + if not Seconds then + Seconds = 0 + end + + local MenuText = "" + if not MenuTextFormat then + if Seconds == 0 then + MenuText = string.format( "Hold at %d meter", Height ) + else + MenuText = string.format( "Hold at %d meter for %d seconds", Height, Seconds ) + end + else + if Seconds == 0 then + MenuText = string.format( MenuTextFormat, Height ) + else + MenuText = string.format( MenuTextFormat, Height, Seconds ) + end + end + + if not self.EscortMenuHoldPosition then + self.EscortMenuHoldPosition = {} + end + + self.EscortMenuHoldPosition[#self.EscortMenuHoldPosition+1] = MENU_CLIENT_COMMAND + :New( + self.EscortClient, + MenuText, + self.EscortMenuHold, + ESCORT._HoldPosition, + { ParamSelf = self, + ParamOrbitGroup = self.EscortGroup, + ParamHeight = Height, + ParamSeconds = Seconds + } + ) + end + + return self +end + + +--- Defines a menu slot to let the escort hold at the client position and stay low with a specified height during a specified time in seconds. +-- This menu will appear under **Navigation**. +-- @param #ESCORT self +-- @param DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. +-- @param DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. +-- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain one or two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. +-- @return #ESCORT +-- TODO: Implement Seconds parameter. Challenge is to first develop the "continue from last activity" function. +function ESCORT:MenuHoldAtLeaderPosition( Height, Seconds, MenuTextFormat ) + self:F( { Height, Seconds, MenuTextFormat } ) + + if self.EscortGroup:IsAir() then + + if not self.EscortMenuHold then + self.EscortMenuHold = MENU_CLIENT:New( self.EscortClient, "Hold position", self.EscortMenu ) + end + + if not Height then + Height = 30 + end + + if not Seconds then + Seconds = 0 + end + + local MenuText = "" + if not MenuTextFormat then + if Seconds == 0 then + MenuText = string.format( "Rejoin and hold at %d meter", Height ) + else + MenuText = string.format( "Rejoin and hold at %d meter for %d seconds", Height, Seconds ) + end + else + if Seconds == 0 then + MenuText = string.format( MenuTextFormat, Height ) + else + MenuText = string.format( MenuTextFormat, Height, Seconds ) + end + end + + if not self.EscortMenuHoldAtLeaderPosition then + self.EscortMenuHoldAtLeaderPosition = {} + end + + self.EscortMenuHoldAtLeaderPosition[#self.EscortMenuHoldAtLeaderPosition+1] = MENU_CLIENT_COMMAND + :New( + self.EscortClient, + MenuText, + self.EscortMenuHold, + ESCORT._HoldPosition, + { ParamSelf = self, + ParamOrbitGroup = self.EscortClient, + ParamHeight = Height, + ParamSeconds = Seconds + } + ) + end + + return self +end + +--- Defines a menu slot to let the escort scan for targets at a certain height for a certain time in seconds. +-- This menu will appear under **Scan targets**. +-- @param #ESCORT self +-- @param DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. +-- @param DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. +-- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain one or two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. +-- @return #ESCORT +function ESCORT:MenuScanForTargets( Height, Seconds, MenuTextFormat ) + self:F( { Height, Seconds, MenuTextFormat } ) + + if self.EscortGroup:IsAir() then + if not self.EscortMenuScan then + self.EscortMenuScan = MENU_CLIENT:New( self.EscortClient, "Scan for targets", self.EscortMenu ) + end + + if not Height then + Height = 100 + end + + if not Seconds then + Seconds = 30 + end + + local MenuText = "" + if not MenuTextFormat then + if Seconds == 0 then + MenuText = string.format( "At %d meter", Height ) + else + MenuText = string.format( "At %d meter for %d seconds", Height, Seconds ) + end + else + if Seconds == 0 then + MenuText = string.format( MenuTextFormat, Height ) + else + MenuText = string.format( MenuTextFormat, Height, Seconds ) + end + end + + if not self.EscortMenuScanForTargets then + self.EscortMenuScanForTargets = {} + end + + self.EscortMenuScanForTargets[#self.EscortMenuScanForTargets+1] = MENU_CLIENT_COMMAND + :New( + self.EscortClient, + MenuText, + self.EscortMenuScan, + ESCORT._ScanTargets, + { ParamSelf = self, + ParamScanDuration = 30 + } + ) + end + + return self +end + + + +--- Defines a menu slot to let the escort disperse a flare in a certain color. +-- This menu will appear under **Navigation**. +-- The flare will be fired from the first unit in the group. +-- @param #ESCORT self +-- @param #string MenuTextFormat Optional parameter that shows the menu option text. If no text is given, the default text will be displayed. +-- @return #ESCORT +function ESCORT:MenuFlare( MenuTextFormat ) + self:F() + + if not self.EscortMenuReportNavigation then + self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) + end + + local MenuText = "" + if not MenuTextFormat then + MenuText = "Flare" + else + MenuText = 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 = UNIT.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 = UNIT.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 = UNIT.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 = UNIT.FlareColor.Yellow, ParamMessage = "Released a yellow flare!" } ) + end + + return self +end + +--- Defines a menu slot to let the escort disperse a smoke in a certain color. +-- This menu will appear under **Navigation**. +-- Note that smoke menu options will only be displayed for ships and ground units. Not for air units. +-- The smoke will be fired from the first unit in the group. +-- @param #ESCORT self +-- @param #string MenuTextFormat Optional parameter that shows the menu option text. If no text is given, the default text will be displayed. +-- @return #ESCORT +function ESCORT:MenuSmoke( MenuTextFormat ) + self:F() + + if not self.EscortGroup:IsAir() then + if not self.EscortMenuReportNavigation then + self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) + end + + local MenuText = "" + if not MenuTextFormat then + MenuText = "Smoke" + else + MenuText = 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!" } ) + end + end + + return self +end + +--- Defines a menu slot to let the escort report their current detected targets with a specified time interval in seconds. +-- This menu will appear under **Report targets**. +-- Note that if a report targets menu is not specified, no targets will be detected by the escort, and the attack and assisted attack menus will not be displayed. +-- @param #ESCORT self +-- @param DCSTypes#Time Seconds Optional parameter that lets the escort report their current detected targets after specified time interval in seconds. The default time is 30 seconds. +-- @return #ESCORT +function ESCORT:MenuReportTargets( Seconds ) + self:F( { Seconds } ) + + if not self.EscortMenuReportNearbyTargets then + self.EscortMenuReportNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Report targets", self.EscortMenu ) + end + + if not Seconds then + Seconds = 30 + 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, } ) + + -- Attack Targets + self.EscortMenuAttackNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Attack targets", self.EscortMenu ) + + + --self.ReportTargetsScheduler = routines.scheduleFunction( self._ReportTargetsScheduler, { self }, timer.getTime() + 1, Seconds ) + self.ReportTargetsScheduler = SCHEDULER:New( self, self._ReportTargetsScheduler, {}, 1, Seconds ) + + return self +end + +--- Defines a menu slot to let the escort attack its detected targets using assisted attack from another escort joined also with the client. +-- This menu will appear under **Request assistance from**. +-- Note that this method needs to be preceded with the method MenuReportTargets. +-- @param #ESCORT self +-- @return #ESCORT +function ESCORT:MenuAssistedAttack() + self:F() + + -- Request assistance from other escorts. + -- This is very useful to let f.e. an escorting ship attack a target detected by an escorting plane... + self.EscortMenuTargetAssistance = MENU_CLIENT:New( self.EscortClient, "Request assistance from", self.EscortMenu ) + + return self +end + +--- Defines a menu to let the escort set its rules of engagement. +-- All rules of engagement will appear under the menu **ROE**. +-- @param #ESCORT self +-- @return #ESCORT +function ESCORT:MenuROE( MenuTextFormat ) + self:F( MenuTextFormat ) + + if not self.EscortMenuROE then + -- 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!" } ) + 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!" } ) + 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!!" } ) + 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!" } ) + end + end + + return self +end + + +--- Defines a menu to let the escort set its evasion when under threat. +-- All rules of engagement will appear under the menu **Evasion**. +-- @param #ESCORT self +-- @return #ESCORT +function ESCORT:MenuEvasion( MenuTextFormat ) + self:F( MenuTextFormat ) + + if self.EscortGroup:IsAir() then + if not self.EscortMenuEvasion then + -- 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!" } ) + 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!" } ) + 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!" } ) + 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!" } ) + end + end + end + + return self +end + +--- Defines a menu to let the escort resume its mission from a waypoint on its route. +-- All rules of engagement will appear under the menu **Resume mission from**. +-- @param #ESCORT self +-- @return #ESCORT +function ESCORT:MenuResumeMission() + self:F() + + if not self.EscortMenuResumeMission then + -- Mission Resume Menu Root + self.EscortMenuResumeMission = MENU_CLIENT:New( self.EscortClient, "Resume mission from", self.EscortMenu ) + end + + return self +end + + +--- @param #MENUPARAM MenuParam +function ESCORT._HoldPosition( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + local OrbitGroup = MenuParam.ParamOrbitGroup -- Group#GROUP + local OrbitUnit = OrbitGroup:GetUnit(1) -- Unit#UNIT + local OrbitHeight = MenuParam.ParamHeight + local OrbitSeconds = MenuParam.ParamSeconds -- Not implemented yet + + self.FollowScheduler:Stop() + + local PointFrom = {} + local GroupPoint = EscortGroup:GetUnit(1):GetPointVec3() + PointFrom = {} + PointFrom.x = GroupPoint.x + PointFrom.y = GroupPoint.z + PointFrom.speed = 250 + PointFrom.type = AI.Task.WaypointType.TURNING_POINT + PointFrom.alt = GroupPoint.y + PointFrom.alt_type = AI.Task.AltitudeType.BARO + + local OrbitPoint = OrbitUnit:GetPointVec2() + local PointTo = {} + PointTo.x = OrbitPoint.x + PointTo.y = OrbitPoint.y + PointTo.speed = 250 + PointTo.type = AI.Task.WaypointType.TURNING_POINT + PointTo.alt = OrbitHeight + PointTo.alt_type = AI.Task.AltitudeType.BARO + PointTo.task = EscortGroup:TaskOrbitCircleAtVec2( OrbitPoint, OrbitHeight, 0 ) + + local Points = { PointFrom, PointTo } + + EscortGroup:OptionROEHoldFire() + EscortGroup:OptionROTPassiveDefense() + + EscortGroup:SetTask( EscortGroup:TaskRoute( Points ) ) + EscortGroup:MessageToClient( "Orbiting at location.", 10, EscortClient ) + +end + +--- @param #MENUPARAM MenuParam +function ESCORT._JoinUpAndFollow( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + self.Distance = MenuParam.ParamDistance + + self:JoinUpAndFollow( EscortGroup, EscortClient, self.Distance ) +end + +--- JoinsUp and Follows a CLIENT. +-- @param Escort#ESCORT self +-- @param Group#GROUP EscortGroup +-- @param Client#CLIENT EscortClient +-- @param DCSTypes#Distance Distance +function ESCORT:JoinUpAndFollow( EscortGroup, EscortClient, Distance ) + self:F( { EscortGroup, EscortClient, Distance } ) + + self.FollowScheduler:Stop() + + EscortGroup:OptionROEHoldFire() + EscortGroup:OptionROTPassiveDefense() + + self.EscortMode = ESCORT.MODE.FOLLOW + + self.CT1 = 0 + self.GT1 = 0 + self.FollowScheduler:Start() + + EscortGroup:MessageToClient( "Rejoining and Following at " .. Distance .. "!", 30, EscortClient ) +end + +--- @param #MENUPARAM MenuParam +function ESCORT._Flare( MenuParam ) + + 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 ) + + 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 ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + self:_ReportTargetsScheduler() + +end + +function ESCORT._SwitchReportNearbyTargets( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + self.ReportTargets = MenuParam.ParamReportTargets + + if self.ReportTargets then + if not self.ReportTargetsScheduler then + --self.ReportTargetsScheduler = routines.scheduleFunction( self._ReportTargetsScheduler, { self }, timer.getTime() + 1, 30 ) + self.ReportTargetsScheduler = SCHEDULER:New( self, self._ReportTargetsScheduler, {}, 1, 30 ) + end + else + routines.removeFunction( self.ReportTargetsScheduler ) + self.ReportTargetsScheduler = nil + end +end + +--- @param #MENUPARAM MenuParam +function ESCORT._ScanTargets( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + local ScanDuration = MenuParam.ParamScanDuration + + self.FollowScheduler:Stop() + + if EscortGroup:IsHelicopter() then + SCHEDULER:New( EscortGroup, 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 + ) + end + + EscortGroup:MessageToClient( "Scanning targets for " .. ScanDuration .. " seconds.", ScanDuration, EscortClient ) + + if self.EscortMode == ESCORT.MODE.FOLLOW then + self.FollowScheduler:Start() + end + +end + +--- @param Group#GROUP EscortGroup +function _Resume( EscortGroup ) + env.info( '_Resume' ) + + local Escort = EscortGroup:GetState( EscortGroup, "Escort" ) + env.info( "EscortMode = " .. Escort.EscortMode ) + if Escort.EscortMode == ESCORT.MODE.FOLLOW then + Escort:JoinUpAndFollow( EscortGroup, Escort.EscortClient, Escort.Distance ) + end + +end + +--- @param #MENUPARAM MenuParam +function ESCORT._AttackTarget( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + + local EscortClient = self.EscortClient + local AttackUnit = MenuParam.ParamUnit -- Unit#UNIT + + self.FollowScheduler:Stop() + + self:T( AttackUnit ) + + if EscortGroup:IsAir() then + EscortGroup:OptionROEOpenFire() + EscortGroup:OptionROTPassiveDefense() + EscortGroup:SetState( EscortGroup, "Escort", self ) +-- routines.scheduleFunction( +-- EscortGroup.PushTask, +-- { EscortGroup, +-- EscortGroup:TaskCombo( +-- { EscortGroup:TaskAttackUnit( AttackUnit ), +-- EscortGroup:TaskFunction( 1, 2, "_Resume", {"''"} ) +-- } +-- ) +-- }, timer.getTime() + 10 +-- ) + SCHEDULER:New( EscortGroup, + EscortGroup.PushTask, + { EscortGroup:TaskCombo( + { EscortGroup:TaskAttackUnit( AttackUnit ), + EscortGroup:TaskFunction( 1, 2, "_Resume", { "''" } ) + } + ) + }, 10 + ) + else +-- routines.scheduleFunction( +-- EscortGroup.PushTask, +-- { EscortGroup, +-- EscortGroup:TaskCombo( +-- { EscortGroup:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) +-- } +-- ) +-- }, timer.getTime() + 10 +-- ) + SCHEDULER:New( EscortGroup, + EscortGroup.PushTask, + { EscortGroup:TaskCombo( + { EscortGroup:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) + } + ) + }, 10 + ) + end + + EscortGroup:MessageToClient( "Engaging Designated Unit!", 10, EscortClient ) + +end + +--- @param #MENUPARAM MenuParam +function ESCORT._AssistTarget( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + local EscortGroupAttack = MenuParam.ParamEscortGroup + local AttackUnit = MenuParam.ParamUnit -- Unit#UNIT + + self.FollowScheduler:Stop() + + self:T( AttackUnit ) + + if EscortGroupAttack:IsAir() then + EscortGroupAttack:OptionROEOpenFire() + EscortGroupAttack:OptionROTVertical() +-- routines.scheduleFunction( +-- EscortGroupAttack.PushTask, +-- { EscortGroupAttack, +-- EscortGroupAttack:TaskCombo( +-- { EscortGroupAttack:TaskAttackUnit( AttackUnit ), +-- EscortGroupAttack:TaskOrbitCircle( 500, 350 ) +-- } +-- ) +-- }, timer.getTime() + 10 +-- ) + SCHDULER:New( EscortGroupAttack, + EscortGroupAttack.PushTask, + { EscortGroupAttack:TaskCombo( + { EscortGroupAttack:TaskAttackUnit( AttackUnit ), + EscortGroupAttack:TaskOrbitCircle( 500, 350 ) + } + ) + }, 10 + ) + else +-- routines.scheduleFunction( +-- EscortGroupAttack.PushTask, +-- { EscortGroupAttack, +-- EscortGroupAttack:TaskCombo( +-- { EscortGroupAttack:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) +-- } +-- ) +-- }, timer.getTime() + 10 +-- ) + SCHEDULER:New( EscortGroupAttack, + EscortGroupAttack.PushTask, + { EscortGroupAttack:TaskCombo( + { EscortGroupAttack:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) + } + ) + }, 10 + ) + end + EscortGroupAttack:MessageToClient( "Assisting with the destroying the enemy unit!", 10, EscortClient ) + +end + +--- @param #MENUPARAM MenuParam +function ESCORT._ROE( MenuParam ) + + 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 ) + + 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 ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + local WayPoint = MenuParam.ParamWayPoint + + self.FollowScheduler:Stop() + + local WayPoints = EscortGroup:GetTaskRoute() + self:T( WayPoint, WayPoints ) + + for WayPointIgnore = 1, WayPoint do + table.remove( WayPoints, 1 ) + end + + --routines.scheduleFunction( EscortGroup.SetTask, {EscortGroup, EscortGroup:TaskRoute( WayPoints ) }, timer.getTime() + 1 ) + SCHEDULER:New( EscortGroup, EscortGroup.SetTask, { EscortGroup:TaskRoute( WayPoints ) }, 1 ) + + EscortGroup:MessageToClient( "Resuming mission from waypoint " .. WayPoint .. ".", 10, EscortClient ) +end + +--- Registers the waypoints +-- @param #ESCORT self +-- @return #table +function ESCORT:RegisterRoute() + self:F() + + local EscortGroup = self.EscortGroup -- Group#GROUP + + local TaskPoints = EscortGroup:GetTaskRoute() + + self:T( TaskPoints ) + + return TaskPoints +end + +--- @param Escort#ESCORT self +function ESCORT:_FollowScheduler() + self:F( { self.FollowDistance } ) + + self:T( {self.EscortClient.UnitName, self.EscortGroup.GroupName } ) + if self.EscortGroup:IsAlive() and self.EscortClient:IsAlive() then + + local ClientUnit = self.EscortClient:GetClientGroupUnit() + local GroupUnit = self.EscortGroup:GetUnit( 1 ) + local FollowDistance = self.FollowDistance + + self:T( {ClientUnit.UnitName, GroupUnit.UnitName } ) + + if self.CT1 == 0 and self.GT1 == 0 then + self.CV1 = ClientUnit:GetPointVec3() + self:T( { "self.CV1", self.CV1 } ) + self.CT1 = timer.getTime() + self.GV1 = GroupUnit:GetPointVec3() + self.GT1 = timer.getTime() + else + local CT1 = self.CT1 + local CT2 = timer.getTime() + local CV1 = self.CV1 + local CV2 = ClientUnit:GetPointVec3() + self.CT1 = CT2 + self.CV1 = CV2 + + local CD = ( ( CV2.x - CV1.x )^2 + ( CV2.y - CV1.y )^2 + ( CV2.z - CV1.z )^2 ) ^ 0.5 + local CT = CT2 - CT1 + + local CS = ( 3600 / CT ) * ( CD / 1000 ) + + self:T2( { "Client:", CS, CD, CT, CV2, CV1, CT2, CT1 } ) + + local GT1 = self.GT1 + local GT2 = timer.getTime() + local GV1 = self.GV1 + local GV2 = GroupUnit:GetPointVec3() + self.GT1 = GT2 + self.GV1 = GV2 + + local GD = ( ( GV2.x - GV1.x )^2 + ( GV2.y - GV1.y )^2 + ( GV2.z - GV1.z )^2 ) ^ 0.5 + local GT = GT2 - GT1 + + local GS = ( 3600 / GT ) * ( GD / 1000 ) + + self:T2( { "Group:", GS, GD, GT, GV2, GV1, GT2, GT1 } ) + + -- Calculate the group direction vector + local GV = { x = GV2.x - CV2.x, y = GV2.y - CV2.y, z = GV2.z - CV2.z } + + -- Calculate GH2, GH2 with the same height as CV2. + local GH2 = { x = GV2.x, y = CV2.y, z = GV2.z } + + -- Calculate the angle of GV to the orthonormal plane + local alpha = math.atan2( GV.z, GV.x ) + + -- Now we calculate the intersecting vector between the circle around CV2 with radius FollowDistance and GH2. + -- From the GeoGebra model: CVI = (x(CV2) + FollowDistance cos(alpha), y(GH2) + FollowDistance sin(alpha), z(CV2)) + local CVI = { x = CV2.x + FollowDistance * math.cos(alpha), + y = GH2.y, + z = CV2.z + FollowDistance * math.sin(alpha), + } + + -- Calculate the direction vector DV of the escort group. We use CVI as the base and CV2 as the direction. + local DV = { x = CV2.x - CVI.x, y = CV2.y - CVI.y, z = CV2.z - CVI.z } + + -- We now calculate the unary direction vector DVu, so that we can multiply DVu with the speed, which is expressed in meters / s. + -- We need to calculate this vector to predict the point the escort group needs to fly to according its speed. + -- The distance of the destination point should be far enough not to have the aircraft starting to swipe left to right... + local DVu = { x = DV.x / FollowDistance, y = DV.y / FollowDistance, z = DV.z / FollowDistance } + + -- Now we can calculate the group destination vector GDV. + local GDV = { x = DVu.x * CS * 8 + CVI.x, y = CVI.y, z = DVu.z * CS * 8 + CVI.z } + + if self.SmokeDirectionVector == true then + trigger.action.smoke( GDV, trigger.smokeColor.Red ) + end + + self:T2( { "CV2:", CV2 } ) + self:T2( { "CVI:", CVI } ) + self:T2( { "GDV:", GDV } ) + + -- Measure distance between client and group + local CatchUpDistance = ( ( GDV.x - GV2.x )^2 + ( GDV.y - GV2.y )^2 + ( GDV.z - GV2.z )^2 ) ^ 0.5 + + -- The calculation of the Speed would simulate that the group would take 30 seconds to overcome + -- the requested Distance). + local Time = 10 + local CatchUpSpeed = ( CatchUpDistance - ( CS * 8.4 ) ) / Time + + local Speed = CS + CatchUpSpeed + if Speed < 0 then + Speed = 0 + end + + self:T( { "Client Speed, Escort Speed, Speed, FollowDistance, Time:", CS, GS, Speed, FollowDistance, Time } ) + + -- Now route the escort to the desired point with the desired speed. + self.EscortGroup:TaskRouteToVec3( GDV, Speed / 3.6 ) -- DCS models speed in Mps (Miles per second) + end + + return true + end + + return false +end + + +--- Report Targets Scheduler. +-- @param #ESCORT self +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 + + 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 EscortTargetUnitPositionVec3 = EscortTargetUnit:GetPointVec3() + local EscortPositionVec3 = self.EscortGroup:GetPointVec3() + local Distance = ( ( EscortTargetUnitPositionVec3.x - EscortPositionVec3.x )^2 + + ( EscortTargetUnitPositionVec3.y - EscortPositionVec3.y )^2 + + ( EscortTargetUnitPositionVec3.z - EscortPositionVec3.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 EscortTargetUnitPositionVec3 = ClientEscortTargetData.AttackUnit:GetPointVec3() + local EscortPositionVec3 = self.EscortGroup:GetPointVec3() + local Distance = ( ( EscortTargetUnitPositionVec3.x - EscortPositionVec3.x )^2 + + ( EscortTargetUnitPositionVec3.y - EscortPositionVec3.y )^2 + + ( EscortTargetUnitPositionVec3.z - EscortPositionVec3.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 + 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 EscortPositionVec3 = self.EscortGroup:GetPointVec3() + local Distance = ( ( WayPoint.x - EscortPositionVec3.x )^2 + + ( WayPoint.y - EscortPositionVec3.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 +end +--- This module contains the MISSILETRAINER class. +-- +-- === +-- +-- 1) @{MissileTrainer#MISSILETRAINER} class, extends @{Base#BASE} +-- =============================================================== +-- The @{#MISSILETRAINER} class uses the DCS world messaging system to be alerted of any missiles fired, and when a missile would hit your aircraft, +-- the class will destroy the missile within a certain range, to avoid damage to your aircraft. +-- It suports the following functionality: +-- +-- * Track the missiles fired at you and other players, providing bearing and range information of the missiles towards the airplanes. +-- * Provide alerts of missile launches, including detailed information of the units launching, including bearing, range … +-- * Provide alerts when a missile would have killed your aircraft. +-- * Provide alerts when the missile self destructs. +-- * Enable / Disable and Configure the Missile Trainer using the various menu options. +-- +-- When running a mission where MISSILETRAINER is used, the following radio menu structure ( 'Radio Menu' -> 'Other (F10)' -> 'MissileTrainer' ) options are available for the players: +-- +-- * **Messages**: Menu to configure all messages. +-- * **Messages On**: Show all messages. +-- * **Messages Off**: Disable all messages. +-- * **Tracking**: Menu to configure missile tracking messages. +-- * **To All**: Shows missile tracking messages to all players. +-- * **To Target**: Shows missile tracking messages only to the player where the missile is targetted at. +-- * **Tracking On**: Show missile tracking messages. +-- * **Tracking Off**: Disable missile tracking messages. +-- * **Frequency Increase**: Increases the missile tracking message frequency with one second. +-- * **Frequency Decrease**: Decreases the missile tracking message frequency with one second. +-- * **Alerts**: Menu to configure alert messages. +-- * **To All**: Shows alert messages to all players. +-- * **To Target**: Shows alert messages only to the player where the missile is (was) targetted at. +-- * **Hits On**: Show missile hit alert messages. +-- * **Hits Off**: Disable missile hit alert messages. +-- * **Launches On**: Show missile launch messages. +-- * **Launches Off**: Disable missile launch messages. +-- * **Details**: Menu to configure message details. +-- * **Range On**: Shows range information when a missile is fired to a target. +-- * **Range Off**: Disable range information when a missile is fired to a target. +-- * **Bearing On**: Shows bearing information when a missile is fired to a target. +-- * **Bearing Off**: Disable bearing information when a missile is fired to a target. +-- * **Distance**: Menu to configure the distance when a missile needs to be destroyed when near to a player, during tracking. This will improve/influence hit calculation accuracy, but has the risk of damaging the aircraft when the missile reaches the aircraft before the distance is measured. +-- * **50 meter**: Destroys the missile when the distance to the aircraft is below or equal to 50 meter. +-- * **100 meter**: Destroys the missile when the distance to the aircraft is below or equal to 100 meter. +-- * **150 meter**: Destroys the missile when the distance to the aircraft is below or equal to 150 meter. +-- * **200 meter**: Destroys the missile when the distance to the aircraft is below or equal to 200 meter. +-- +-- +-- 1.1) MISSILETRAINER construction methods: +-- ----------------------------------------- +-- Create a new MISSILETRAINER object with the @{#MISSILETRAINER.New} method: +-- +-- * @{#MISSILETRAINER.New}: Creates a new MISSILETRAINER object taking the maximum distance to your aircraft to evaluate when a missile needs to be destroyed. +-- +-- MISSILETRAINER will collect each unit declared in the mission with a skill level "Client" and "Player", and will monitor the missiles shot at those. +-- +-- 1.2) MISSILETRAINER initialization methods: +-- ------------------------------------------- +-- A MISSILETRAINER object will behave differently based on the usage of initialization methods: +-- +-- * @{#MISSILETRAINER.InitMessagesOnOff}: Sets by default the display of any message to be ON or OFF. +-- * @{#MISSILETRAINER.InitTrackingToAll}: Sets by default the missile tracking report for all players or only for those missiles targetted to you. +-- * @{#MISSILETRAINER.InitTrackingOnOff}: Sets by default the display of missile tracking report to be ON or OFF. +-- * @{#MISSILETRAINER.InitTrackingFrequency}: Increases, decreases the missile tracking message display frequency with the provided time interval in seconds. +-- * @{#MISSILETRAINER.InitAlertsToAll}: Sets by default the display of alerts to be shown to all players or only to you. +-- * @{#MISSILETRAINER.InitAlertsHitsOnOff}: Sets by default the display of hit alerts ON or OFF. +-- * @{#MISSILETRAINER.InitAlertsLaunchesOnOff}: Sets by default the display of launch alerts ON or OFF. +-- * @{#MISSILETRAINER.InitRangeOnOff}: Sets by default the display of range information of missiles ON of OFF. +-- * @{#MISSILETRAINER.InitBearingOnOff}: Sets by default the display of bearing information of missiles ON of OFF. +-- * @{#MISSILETRAINER.InitMenusOnOff}: Allows to configure the options through the radio menu. +-- +-- === +-- +-- CREDITS +-- ======= +-- **Stuka (Danny)** Who you can search on the Eagle Dynamics Forums. +-- Working together with Danny has resulted in the MISSILETRAINER class. +-- Danny has shared his ideas and together we made a design. +-- Together with the **476 virtual team**, we tested the MISSILETRAINER class, and got much positive feedback! +-- +-- @module MissileTrainer +-- @author FlightControl + + +--- The MISSILETRAINER class +-- @type MISSILETRAINER +-- @field Set#SET_CLIENT DBClients +-- @extends Base#BASE +MISSILETRAINER = { + ClassName = "MISSILETRAINER", + TrackingMissiles = {}, +} + +function MISSILETRAINER._Alive( Client, self ) + + if self.Briefing then + Client:Message( self.Briefing, 15, "Trainer" ) + end + + if self.MenusOnOff == true then + Client:Message( "Use the 'Radio Menu' -> 'Other (F10)' -> 'Missile Trainer' menu options to change the Missile Trainer settings (for all players).", 15, "Trainer" ) + + Client.MainMenu = MENU_CLIENT:New( Client, "Missile Trainer", nil ) -- Menu#MENU_CLIENT + + Client.MenuMessages = MENU_CLIENT:New( Client, "Messages", Client.MainMenu ) + Client.MenuOn = MENU_CLIENT_COMMAND:New( Client, "Messages On", Client.MenuMessages, self._MenuMessages, { MenuSelf = self, MessagesOnOff = true } ) + Client.MenuOff = MENU_CLIENT_COMMAND:New( Client, "Messages Off", Client.MenuMessages, self._MenuMessages, { MenuSelf = self, MessagesOnOff = false } ) + + Client.MenuTracking = MENU_CLIENT:New( Client, "Tracking", Client.MainMenu ) + Client.MenuTrackingToAll = MENU_CLIENT_COMMAND:New( Client, "To All", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingToAll = true } ) + Client.MenuTrackingToTarget = MENU_CLIENT_COMMAND:New( Client, "To Target", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingToAll = false } ) + Client.MenuTrackOn = MENU_CLIENT_COMMAND:New( Client, "Tracking On", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingOnOff = true } ) + Client.MenuTrackOff = MENU_CLIENT_COMMAND:New( Client, "Tracking Off", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingOnOff = false } ) + Client.MenuTrackIncrease = MENU_CLIENT_COMMAND:New( Client, "Frequency Increase", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingFrequency = -1 } ) + Client.MenuTrackDecrease = MENU_CLIENT_COMMAND:New( Client, "Frequency Decrease", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingFrequency = 1 } ) + + Client.MenuAlerts = MENU_CLIENT:New( Client, "Alerts", Client.MainMenu ) + Client.MenuAlertsToAll = MENU_CLIENT_COMMAND:New( Client, "To All", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsToAll = true } ) + Client.MenuAlertsToTarget = MENU_CLIENT_COMMAND:New( Client, "To Target", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsToAll = false } ) + Client.MenuHitsOn = MENU_CLIENT_COMMAND:New( Client, "Hits On", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsHitsOnOff = true } ) + Client.MenuHitsOff = MENU_CLIENT_COMMAND:New( Client, "Hits Off", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsHitsOnOff = false } ) + Client.MenuLaunchesOn = MENU_CLIENT_COMMAND:New( Client, "Launches On", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsLaunchesOnOff = true } ) + Client.MenuLaunchesOff = MENU_CLIENT_COMMAND:New( Client, "Launches Off", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsLaunchesOnOff = false } ) + + Client.MenuDetails = MENU_CLIENT:New( Client, "Details", Client.MainMenu ) + Client.MenuDetailsDistanceOn = MENU_CLIENT_COMMAND:New( Client, "Range On", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsRangeOnOff = true } ) + Client.MenuDetailsDistanceOff = MENU_CLIENT_COMMAND:New( Client, "Range Off", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsRangeOnOff = false } ) + Client.MenuDetailsBearingOn = MENU_CLIENT_COMMAND:New( Client, "Bearing On", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsBearingOnOff = true } ) + Client.MenuDetailsBearingOff = MENU_CLIENT_COMMAND:New( Client, "Bearing Off", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsBearingOnOff = false } ) + + Client.MenuDistance = MENU_CLIENT:New( Client, "Set distance to plane", Client.MainMenu ) + Client.MenuDistance50 = MENU_CLIENT_COMMAND:New( Client, "50 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 50 / 1000 } ) + Client.MenuDistance100 = MENU_CLIENT_COMMAND:New( Client, "100 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 100 / 1000 } ) + Client.MenuDistance150 = MENU_CLIENT_COMMAND:New( Client, "150 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 150 / 1000 } ) + Client.MenuDistance200 = MENU_CLIENT_COMMAND:New( Client, "200 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 200 / 1000 } ) + else + if Client.MainMenu then + Client.MainMenu:Remove() + end + end + + local ClientID = Client:GetID() + self:T( ClientID ) + if not self.TrackingMissiles[ClientID] then + self.TrackingMissiles[ClientID] = {} + end + self.TrackingMissiles[ClientID].Client = Client + if not self.TrackingMissiles[ClientID].MissileData then + self.TrackingMissiles[ClientID].MissileData = {} + end +end + +--- Creates the main object which is handling missile tracking. +-- When a missile is fired a SCHEDULER is set off that follows the missile. When near a certain a client player, the missile will be destroyed. +-- @param #MISSILETRAINER self +-- @param #number Distance The distance in meters when a tracked missile needs to be destroyed when close to a player. +-- @param #string Briefing (Optional) Will show a text to the players when starting their mission. Can be used for briefing purposes. +-- @return #MISSILETRAINER +function MISSILETRAINER:New( Distance, Briefing ) + local self = BASE:Inherit( self, BASE:New() ) + self:F( Distance ) + + if Briefing then + self.Briefing = Briefing + end + + self.Schedulers = {} + self.SchedulerID = 0 + + self.MessageInterval = 2 + self.MessageLastTime = timer.getTime() + + self.Distance = Distance / 1000 + + _EVENTDISPATCHER:OnShot( self._EventShot, self ) + + self.DBClients = SET_CLIENT:New():FilterStart() + + +-- for ClientID, Client in pairs( self.DBClients.Database ) do +-- self:E( "ForEach:" .. Client.UnitName ) +-- Client:Alive( self._Alive, self ) +-- end +-- + self.DBClients:ForEachClient( + function( Client ) + self:E( "ForEach:" .. Client.UnitName ) + Client:Alive( self._Alive, self ) + end + ) + + + +-- self.DB:ForEachClient( +-- --- @param Client#CLIENT Client +-- function( Client ) +-- +-- ... actions ... +-- +-- end +-- ) + + self.MessagesOnOff = true + + self.TrackingToAll = false + self.TrackingOnOff = true + self.TrackingFrequency = 3 + + self.AlertsToAll = true + self.AlertsHitsOnOff = true + self.AlertsLaunchesOnOff = true + + self.DetailsRangeOnOff = true + self.DetailsBearingOnOff = true + + self.MenusOnOff = true + + self.TrackingMissiles = {} + + self.TrackingScheduler = SCHEDULER:New( self, self._TrackMissiles, {}, 0.5, 0.05, 0 ) + + return self +end + +-- Initialization methods. + + + +--- Sets by default the display of any message to be ON or OFF. +-- @param #MISSILETRAINER self +-- @param #boolean MessagesOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitMessagesOnOff( MessagesOnOff ) + self:F( MessagesOnOff ) + + self.MessagesOnOff = MessagesOnOff + if self.MessagesOnOff == true then + MESSAGE:New( "Messages ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Messages OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the missile tracking report for all players or only for those missiles targetted to you. +-- @param #MISSILETRAINER self +-- @param #boolean TrackingToAll true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitTrackingToAll( TrackingToAll ) + self:F( TrackingToAll ) + + self.TrackingToAll = TrackingToAll + if self.TrackingToAll == true then + MESSAGE:New( "Missile tracking to all players ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Missile tracking to all players OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the display of missile tracking report to be ON or OFF. +-- @param #MISSILETRAINER self +-- @param #boolean TrackingOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitTrackingOnOff( TrackingOnOff ) + self:F( TrackingOnOff ) + + self.TrackingOnOff = TrackingOnOff + if self.TrackingOnOff == true then + MESSAGE:New( "Missile tracking ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Missile tracking OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Increases, decreases the missile tracking message display frequency with the provided time interval in seconds. +-- The default frequency is a 3 second interval, so the Tracking Frequency parameter specifies the increase or decrease from the default 3 seconds or the last frequency update. +-- @param #MISSILETRAINER self +-- @param #number TrackingFrequency Provide a negative or positive value in seconds to incraese or decrease the display frequency. +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitTrackingFrequency( TrackingFrequency ) + self:F( TrackingFrequency ) + + self.TrackingFrequency = self.TrackingFrequency + TrackingFrequency + if self.TrackingFrequency < 0.5 then + self.TrackingFrequency = 0.5 + end + if self.TrackingFrequency then + MESSAGE:New( "Missile tracking frequency is " .. self.TrackingFrequency .. " seconds.", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the display of alerts to be shown to all players or only to you. +-- @param #MISSILETRAINER self +-- @param #boolean AlertsToAll true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitAlertsToAll( AlertsToAll ) + self:F( AlertsToAll ) + + self.AlertsToAll = AlertsToAll + if self.AlertsToAll == true then + MESSAGE:New( "Alerts to all players ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Alerts to all players OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the display of hit alerts ON or OFF. +-- @param #MISSILETRAINER self +-- @param #boolean AlertsHitsOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitAlertsHitsOnOff( AlertsHitsOnOff ) + self:F( AlertsHitsOnOff ) + + self.AlertsHitsOnOff = AlertsHitsOnOff + if self.AlertsHitsOnOff == true then + MESSAGE:New( "Alerts Hits ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Alerts Hits OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the display of launch alerts ON or OFF. +-- @param #MISSILETRAINER self +-- @param #boolean AlertsLaunchesOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitAlertsLaunchesOnOff( AlertsLaunchesOnOff ) + self:F( AlertsLaunchesOnOff ) + + self.AlertsLaunchesOnOff = AlertsLaunchesOnOff + if self.AlertsLaunchesOnOff == true then + MESSAGE:New( "Alerts Launches ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Alerts Launches OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the display of range information of missiles ON of OFF. +-- @param #MISSILETRAINER self +-- @param #boolean DetailsRangeOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitRangeOnOff( DetailsRangeOnOff ) + self:F( DetailsRangeOnOff ) + + self.DetailsRangeOnOff = DetailsRangeOnOff + if self.DetailsRangeOnOff == true then + MESSAGE:New( "Range display ON", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Range display OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Sets by default the display of bearing information of missiles ON of OFF. +-- @param #MISSILETRAINER self +-- @param #boolean DetailsBearingOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitBearingOnOff( DetailsBearingOnOff ) + self:F( DetailsBearingOnOff ) + + self.DetailsBearingOnOff = DetailsBearingOnOff + if self.DetailsBearingOnOff == true then + MESSAGE:New( "Bearing display OFF", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Bearing display OFF", 15, "Menu" ):ToAll() + end + + return self +end + +--- Enables / Disables the menus. +-- @param #MISSILETRAINER self +-- @param #boolean MenusOnOff true or false +-- @return #MISSILETRAINER self +function MISSILETRAINER:InitMenusOnOff( MenusOnOff ) + self:F( MenusOnOff ) + + self.MenusOnOff = MenusOnOff + if self.MenusOnOff == true then + MESSAGE:New( "Menus are ENABLED (only when a player rejoins a slot)", 15, "Menu" ):ToAll() + else + MESSAGE:New( "Menus are DISABLED", 15, "Menu" ):ToAll() + end + + return self +end + + +-- Menu functions + +function MISSILETRAINER._MenuMessages( MenuParameters ) + + local self = MenuParameters.MenuSelf + + if MenuParameters.MessagesOnOff ~= nil then + self:InitMessagesOnOff( MenuParameters.MessagesOnOff ) + end + + if MenuParameters.TrackingToAll ~= nil then + self:InitTrackingToAll( MenuParameters.TrackingToAll ) + end + + if MenuParameters.TrackingOnOff ~= nil then + self:InitTrackingOnOff( MenuParameters.TrackingOnOff ) + end + + if MenuParameters.TrackingFrequency ~= nil then + self:InitTrackingFrequency( MenuParameters.TrackingFrequency ) + end + + if MenuParameters.AlertsToAll ~= nil then + self:InitAlertsToAll( MenuParameters.AlertsToAll ) + end + + if MenuParameters.AlertsHitsOnOff ~= nil then + self:InitAlertsHitsOnOff( MenuParameters.AlertsHitsOnOff ) + end + + if MenuParameters.AlertsLaunchesOnOff ~= nil then + self:InitAlertsLaunchesOnOff( MenuParameters.AlertsLaunchesOnOff ) + end + + if MenuParameters.DetailsRangeOnOff ~= nil then + self:InitRangeOnOff( MenuParameters.DetailsRangeOnOff ) + end + + if MenuParameters.DetailsBearingOnOff ~= nil then + self:InitBearingOnOff( MenuParameters.DetailsBearingOnOff ) + end + + if MenuParameters.Distance ~= nil then + self.Distance = MenuParameters.Distance + MESSAGE:New( "Hit detection distance set to " .. self.Distance .. " meters", 15, "Menu" ):ToAll() + end + +end + +--- 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. +-- @param #MISSILETRAINER self +-- @param Event#EVENTDATA Event +function MISSILETRAINER:_EventShot( Event ) + self:F( { Event } ) + + local TrainerSourceDCSUnit = Event.IniDCSUnit + local TrainerSourceDCSUnitName = Event.IniDCSUnitName + local TrainerWeapon = Event.Weapon -- Identify the weapon fired + local TrainerWeaponName = Event.WeaponName -- return weapon type + + self:T( "Missile Launched = " .. TrainerWeaponName ) + + local TrainerTargetDCSUnit = TrainerWeapon:getTarget() -- Identify target + local TrainerTargetDCSUnitName = Unit.getName( TrainerTargetDCSUnit ) + local TrainerTargetSkill = _DATABASE.Templates.Units[TrainerTargetDCSUnitName].Template.skill + + self:T(TrainerTargetDCSUnitName ) + + local Client = self.DBClients:FindClient( TrainerTargetDCSUnitName ) + if Client then + + local TrainerSourceUnit = UNIT:Find( TrainerSourceDCSUnit ) + local TrainerTargetUnit = UNIT:Find( TrainerTargetDCSUnit ) + + if self.MessagesOnOff == true and self.AlertsLaunchesOnOff == true then + + local Message = MESSAGE:New( + string.format( "%s launched a %s", + TrainerSourceUnit:GetTypeName(), + TrainerWeaponName + ) .. self:_AddRange( Client, TrainerWeapon ) .. self:_AddBearing( Client, TrainerWeapon ), 5, "Launch Alert" ) + + if self.AlertsToAll then + Message:ToAll() + else + Message:ToClient( Client ) + end + end + + local ClientID = Client:GetID() + self:T( ClientID ) + local MissileData = {} + MissileData.TrainerSourceUnit = TrainerSourceUnit + MissileData.TrainerWeapon = TrainerWeapon + MissileData.TrainerTargetUnit = TrainerTargetUnit + MissileData.TrainerWeaponTypeName = TrainerWeapon:getTypeName() + MissileData.TrainerWeaponLaunched = true + table.insert( self.TrackingMissiles[ClientID].MissileData, MissileData ) + --self:T( self.TrackingMissiles ) + end +end + +function MISSILETRAINER:_AddRange( Client, TrainerWeapon ) + + local RangeText = "" + + if self.DetailsRangeOnOff then + + local PositionMissile = TrainerWeapon:getPoint() + local PositionTarget = Client:GetPointVec3() + + local Range = ( ( PositionMissile.x - PositionTarget.x )^2 + + ( PositionMissile.y - PositionTarget.y )^2 + + ( PositionMissile.z - PositionTarget.z )^2 + ) ^ 0.5 / 1000 + + RangeText = string.format( ", at %4.2fkm", Range ) + end + + return RangeText +end + +function MISSILETRAINER:_AddBearing( Client, TrainerWeapon ) + + local BearingText = "" + + if self.DetailsBearingOnOff then + + local PositionMissile = TrainerWeapon:getPoint() + local PositionTarget = Client:GetPointVec3() + + self:T2( { PositionTarget, PositionMissile }) + + local DirectionVector = { x = PositionMissile.x - PositionTarget.x, y = PositionMissile.y - PositionTarget.y, z = PositionMissile.z - PositionTarget.z } + local DirectionRadians = math.atan2( DirectionVector.z, DirectionVector.x ) + --DirectionRadians = DirectionRadians + routines.getNorthCorrection( PositionTarget ) + if DirectionRadians < 0 then + DirectionRadians = DirectionRadians + 2 * math.pi + end + local DirectionDegrees = DirectionRadians * 180 / math.pi + + BearingText = string.format( ", %d degrees", DirectionDegrees ) + end + + return BearingText +end + + +function MISSILETRAINER:_TrackMissiles() + self:F2() + + + local ShowMessages = false + if self.MessagesOnOff and self.MessageLastTime + self.TrackingFrequency <= timer.getTime() then + self.MessageLastTime = timer.getTime() + ShowMessages = true + end + + -- ALERTS PART + + -- Loop for all Player Clients to check the alerts and deletion of missiles. + for ClientDataID, ClientData in pairs( self.TrackingMissiles ) do + + local Client = ClientData.Client + self:T2( { Client:GetName() } ) + + for MissileDataID, MissileData in pairs( ClientData.MissileData ) do + self:T3( MissileDataID ) + + local TrainerSourceUnit = MissileData.TrainerSourceUnit + local TrainerWeapon = MissileData.TrainerWeapon + local TrainerTargetUnit = MissileData.TrainerTargetUnit + local TrainerWeaponTypeName = MissileData.TrainerWeaponTypeName + local TrainerWeaponLaunched = MissileData.TrainerWeaponLaunched + + if Client and Client:IsAlive() and TrainerSourceUnit and TrainerSourceUnit:IsAlive() and TrainerWeapon and TrainerWeapon:isExist() and TrainerTargetUnit and TrainerTargetUnit:IsAlive() then + local PositionMissile = TrainerWeapon:getPosition().p + local PositionTarget = Client:GetPointVec3() + + local Distance = ( ( PositionMissile.x - PositionTarget.x )^2 + + ( PositionMissile.y - PositionTarget.y )^2 + + ( PositionMissile.z - PositionTarget.z )^2 + ) ^ 0.5 / 1000 + + if Distance <= self.Distance then + -- Hit alert + TrainerWeapon:destroy() + if self.MessagesOnOff == true and self.AlertsHitsOnOff == true then + + self:T( "killed" ) + + local Message = MESSAGE:New( + string.format( "%s launched by %s killed %s", + TrainerWeapon:getTypeName(), + TrainerSourceUnit:GetTypeName(), + TrainerTargetUnit:GetPlayerName() + ), 15, "Hit Alert" ) + + if self.AlertsToAll == true then + Message:ToAll() + else + Message:ToClient( Client ) + end + + MissileData = nil + table.remove( ClientData.MissileData, MissileDataID ) + self:T(ClientData.MissileData) + end + end + else + if not ( TrainerWeapon and TrainerWeapon:isExist() ) then + if self.MessagesOnOff == true and self.AlertsLaunchesOnOff == true then + -- Weapon does not exist anymore. Delete from Table + local Message = MESSAGE:New( + string.format( "%s launched by %s self destructed!", + TrainerWeaponTypeName, + TrainerSourceUnit:GetTypeName() + ), 5, "Tracking" ) + + if self.AlertsToAll == true then + Message:ToAll() + else + Message:ToClient( Client ) + end + end + MissileData = nil + table.remove( ClientData.MissileData, MissileDataID ) + self:T( ClientData.MissileData ) + end + end + end + end + + if ShowMessages == true and self.MessagesOnOff == true and self.TrackingOnOff == true then -- Only do this when tracking information needs to be displayed. + + -- TRACKING PART + + -- For the current client, the missile range and bearing details are displayed To the Player Client. + -- For the other clients, the missile range and bearing details are displayed To the other Player Clients. + -- To achieve this, a cross loop is done for each Player Client <-> Other Player Client missile information. + + -- Main Player Client loop + for ClientDataID, ClientData in pairs( self.TrackingMissiles ) do + + local Client = ClientData.Client + self:T2( { Client:GetName() } ) + + + ClientData.MessageToClient = "" + ClientData.MessageToAll = "" + + -- Other Players Client loop + for TrackingDataID, TrackingData in pairs( self.TrackingMissiles ) do + + for MissileDataID, MissileData in pairs( TrackingData.MissileData ) do + self:T3( MissileDataID ) + + local TrainerSourceUnit = MissileData.TrainerSourceUnit + local TrainerWeapon = MissileData.TrainerWeapon + local TrainerTargetUnit = MissileData.TrainerTargetUnit + local TrainerWeaponTypeName = MissileData.TrainerWeaponTypeName + local TrainerWeaponLaunched = MissileData.TrainerWeaponLaunched + + if Client and Client:IsAlive() and TrainerSourceUnit and TrainerSourceUnit:IsAlive() and TrainerWeapon and TrainerWeapon:isExist() and TrainerTargetUnit and TrainerTargetUnit:IsAlive() then + + if ShowMessages == true then + local TrackingTo + TrackingTo = string.format( " -> %s", + TrainerWeaponTypeName + ) + + if ClientDataID == TrackingDataID then + if ClientData.MessageToClient == "" then + ClientData.MessageToClient = "Missiles to You:\n" + end + ClientData.MessageToClient = ClientData.MessageToClient .. TrackingTo .. self:_AddRange( ClientData.Client, TrainerWeapon ) .. self:_AddBearing( ClientData.Client, TrainerWeapon ) .. "\n" + else + if self.TrackingToAll == true then + if ClientData.MessageToAll == "" then + ClientData.MessageToAll = "Missiles to other Players:\n" + end + ClientData.MessageToAll = ClientData.MessageToAll .. TrackingTo .. self:_AddRange( ClientData.Client, TrainerWeapon ) .. self:_AddBearing( ClientData.Client, TrainerWeapon ) .. " ( " .. TrainerTargetUnit:GetPlayerName() .. " )\n" + end + end + end + end + end + end + + -- Once the Player Client and the Other Player Client tracking messages are prepared, show them. + if ClientData.MessageToClient ~= "" or ClientData.MessageToAll ~= "" then + local Message = MESSAGE:New( ClientData.MessageToClient .. ClientData.MessageToAll, 1, "Tracking" ):ToClient( Client ) + end + end + end + + return true +end +--- This module contains the PATROLZONE class. +-- +-- === +-- +-- 1) @{Patrol#PATROLZONE} class, extends @{Base#BASE} +-- =================================================== +-- The @{Patrol#PATROLZONE} class implements the core functions to patrol a @{Zone}. +-- +-- 1.1) PATROLZONE constructor: +-- ---------------------------- +-- @{PatrolZone#PATROLZONE.New}(): Creates a new PATROLZONE object. +-- +-- 1.2) Modify the PATROLZONE parameters: +-- -------------------------------------- +-- The following methods are available to modify the parameters of a PATROLZONE object: +-- +-- * @{PatrolZone#PATROLZONE.SetGroup}(): Set the AI Patrol Group. +-- * @{PatrolZone#PATROLZONE.SetSpeed}(): Set the patrol speed of the AI, for the next patrol. +-- * @{PatrolZone#PATROLZONE.SetAltitude}(): Set altitude of the AI, for the next patrol. +-- +-- 1.3) Manage the out of fuel in the PATROLZONE: +-- ---------------------------------------------- +-- When the PatrolGroup is out of fuel, it is required that a new PatrolGroup is started, before the old PatrolGroup can return to the home base. +-- Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. +-- When the fuel treshold is reached, the PatrolGroup will continue for a given time its patrol task in orbit, while a new PatrolGroup is targetted to the PATROLZONE. +-- Once the time is finished, the old PatrolGroup will return to the base. +-- Use the method @{PatrolZone#PATROLZONE.ManageFuel}() to have this proces in place. +-- +-- === +-- +-- @module PatrolZone +-- @author FlightControl + + +--- PATROLZONE class +-- @type PATROLZONE +-- @field Group#GROUP PatrolGroup The @{Group} patrolling. +-- @field Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. +-- @field DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. +-- @field DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. +-- @field DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Group} in km/h. +-- @field DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Group} in km/h. +-- @extends Base#BASE +PATROLZONE = { + ClassName = "PATROLZONE", +} + +--- Creates a new PATROLZONE object, taking a @{Group} object as a parameter. The GROUP needs to be alive. +-- @param #PATROLZONE self +-- @param Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. +-- @param DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. +-- @param DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. +-- @param DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Group} in km/h. +-- @param DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Group} in km/h. +-- @return #PATROLZONE self +-- @usage +-- -- Define a new PATROLZONE Object. This PatrolArea will patrol a group within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h. +-- PatrolZone = ZONE:New( 'PatrolZone' ) +-- PatrolGroup = GROUP:FindByName( "Patrol Group" ) +-- PatrolArea = PATROLZONE:New( PatrolGroup, PatrolZone, 3000, 6000, 600, 900 ) +function PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + self.PatrolZone = PatrolZone + self.PatrolFloorAltitude = PatrolFloorAltitude + self.PatrolCeilingAltitude = PatrolCeilingAltitude + self.PatrolMinSpeed = PatrolMinSpeed + self.PatrolMaxSpeed = PatrolMaxSpeed + + return self +end + +--- Set the @{Group} to act as the Patroller. +-- @param #PATROLZONE self +-- @param Group#GROUP PatrolGroup The @{Group} patrolling. +-- @return #PATROLZONE self +function PATROLZONE:SetGroup( PatrolGroup ) + + self.PatrolGroup = PatrolGroup + self.PatrolGroupTemplateName = PatrolGroup:GetName() + self:NewPatrolRoute() + + if not self.PatrolOutOfFuelMonitor then + self.PatrolOutOfFuelMonitor = SCHEDULER:New( nil, _MonitorOutOfFuelScheduled, { self }, 1, 120, 0 ) + self.SpawnPatrolGroup = SPAWN:New( self.PatrolGroupTemplateName ) + end + + return self +end + +--- Sets (modifies) the minimum and maximum speed of the patrol. +-- @param #PATROLZONE self +-- @param DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Group} in km/h. +-- @param DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Group} in km/h. +-- @return #PATROLZONE self +function PATROLZONE:SetSpeed( PatrolMinSpeed, PatrolMaxSpeed ) + self:F2( { PatrolMinSpeed, PatrolMaxSpeed } ) + + self.PatrolMinSpeed = PatrolMinSpeed + self.PatrolMaxSpeed = PatrolMaxSpeed +end + +--- Sets the floor and ceiling altitude of the patrol. +-- @param #PATROLZONE self +-- @param DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. +-- @param DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. +-- @return #PATROLZONE self +function PATROLZONE:SetAltitude( PatrolFloorAltitude, PatrolCeilingAltitude ) + self:F2( { PatrolFloorAltitude, PatrolCeilingAltitude } ) + + self.PatrolFloorAltitude = PatrolFloorAltitude + self.PatrolCeilingAltitude = PatrolCeilingAltitude +end + + + +--- @param Group#GROUP PatrolGroup +function _NewPatrolRoute( PatrolGroup ) + + PatrolGroup:T( "NewPatrolRoute" ) + local PatrolZone = PatrolGroup:GetState( PatrolGroup, "PatrolZone" ) -- PatrolZone#PATROLZONE + PatrolZone:NewPatrolRoute() +end + +--- Defines a new patrol route using the @{PatrolZone} parameters and settings. +-- @param #PATROLZONE self +-- @return #PATROLZONE self +function PATROLZONE:NewPatrolRoute() + + self:F2() + + local PatrolRoute = {} + + if self.PatrolGroup:IsAlive() then + --- Determine if the PatrolGroup is within the PatrolZone. + -- If not, make a waypoint within the to that the PatrolGroup will fly at maximum speed to that point. + +-- --- Calculate the current route point. +-- local CurrentVec2 = self.PatrolGroup:GetPointVec2() +-- local CurrentAltitude = self.PatrolGroup:GetUnit(1):GetAltitude() +-- local CurrentPointVec3 = POINT_VEC3:New( CurrentVec2.x, CurrentAltitude, CurrentVec2.y ) +-- local CurrentRoutePoint = CurrentPointVec3:RoutePointAir( +-- POINT_VEC3.RoutePointAltType.BARO, +-- POINT_VEC3.RoutePointType.TurningPoint, +-- POINT_VEC3.RoutePointAction.TurningPoint, +-- ToPatrolZoneSpeed, +-- true +-- ) +-- +-- PatrolRoute[#PatrolRoute+1] = CurrentRoutePoint + + self:T2( PatrolRoute ) + + if self.PatrolGroup:IsNotInZone( self.PatrolZone ) then + --- Find a random 2D point in PatrolZone. + local ToPatrolZoneVec2 = self.PatrolZone:GetRandomVec2() + self:T2( ToPatrolZoneVec2 ) + + --- Define Speed and Altitude. + local ToPatrolZoneAltitude = math.random( self.PatrolFloorAltitude, self.PatrolCeilingAltitude ) + local ToPatrolZoneSpeed = self.PatrolMaxSpeed + self:T2( ToPatrolZoneSpeed ) + + --- Obtain a 3D @{Point} from the 2D point + altitude. + local ToPatrolZonePointVec3 = POINT_VEC3:New( ToPatrolZoneVec2.x, ToPatrolZoneAltitude, ToPatrolZoneVec2.y ) + + --- Create a route point of type air. + local ToPatrolZoneRoutePoint = ToPatrolZonePointVec3:RoutePointAir( + POINT_VEC3.RoutePointAltType.BARO, + POINT_VEC3.RoutePointType.TurningPoint, + POINT_VEC3.RoutePointAction.TurningPoint, + ToPatrolZoneSpeed, + true + ) + + PatrolRoute[#PatrolRoute+1] = ToPatrolZoneRoutePoint + + end + + --- Define a random point in the @{Zone}. The AI will fly to that point within the zone. + + --- Find a random 2D point in PatrolZone. + local ToTargetVec2 = self.PatrolZone:GetRandomVec2() + self:T2( ToTargetVec2 ) + + --- Define Speed and Altitude. + local ToTargetAltitude = math.random( self.PatrolFloorAltitude, self.PatrolCeilingAltitude ) + local ToTargetSpeed = math.random( self.PatrolMinSpeed, self.PatrolMaxSpeed ) + self:T2( { self.PatrolMinSpeed, self.PatrolMaxSpeed, ToTargetSpeed } ) + + --- Obtain a 3D @{Point} from the 2D point + altitude. + local ToTargetPointVec3 = POINT_VEC3:New( ToTargetVec2.x, ToTargetAltitude, ToTargetVec2.y ) + + --- Create a route point of type air. + local ToTargetRoutePoint = ToTargetPointVec3:RoutePointAir( + POINT_VEC3.RoutePointAltType.BARO, + POINT_VEC3.RoutePointType.TurningPoint, + POINT_VEC3.RoutePointAction.TurningPoint, + ToTargetSpeed, + true + ) + + --ToTargetPointVec3:SmokeRed() + + PatrolRoute[#PatrolRoute+1] = ToTargetRoutePoint + + --- Now we're going to do something special, we're going to call a function from a waypoint action at the PatrolGroup... + self.PatrolGroup:WayPointInitialize( PatrolRoute ) + + --- Do a trick, link the NewPatrolRoute function of the PATROLGROUP object to the PatrolGroup in a temporary variable ... + self.PatrolGroup:SetState( self.PatrolGroup, "PatrolZone", self ) + self.PatrolGroup:WayPointFunction( #PatrolRoute, 1, "_NewPatrolRoute" ) + + --- NOW ROUTE THE GROUP! + self.PatrolGroup:WayPointExecute( 1, 2 ) + end + +end + +--- When the PatrolGroup is out of fuel, it is required that a new PatrolGroup is started, before the old PatrolGroup can return to the home base. +-- Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. +-- When the fuel treshold is reached, the PatrolGroup will continue for a given time its patrol task in orbit, while a new PatrolGroup is targetted to the PATROLZONE. +-- Once the time is finished, the old PatrolGroup will return to the base. +-- @param #PATROLZONE self +-- @param #number PatrolFuelTresholdPercentage The treshold in percentage (between 0 and 1) when the PatrolGroup is considered to get out of fuel. +-- @param #number PatrolOutOfFuelOrbitTime The amount of seconds the out of fuel PatrolGroup will orbit before returning to the base. +-- @return #PATROLZONE self +function PATROLZONE:ManageFuel( PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime ) + + self.PatrolManageFuel = true + self.PatrolFuelTresholdPercentage = PatrolFuelTresholdPercentage + self.PatrolOutOfFuelOrbitTime = PatrolOutOfFuelOrbitTime + + if self.PatrolGroup then + self.PatrolOutOfFuelMonitor = SCHEDULER:New( self, self._MonitorOutOfFuelScheduled, {}, 1, 120, 0 ) + self.SpawnPatrolGroup = SPAWN:New( self.PatrolGroupTemplateName ) + end + return self +end + +--- @param #PATROLZONE self +function _MonitorOutOfFuelScheduled( self ) + self:F2( "_MonitorOutOfFuelScheduled" ) + + if self.PatrolGroup and self.PatrolGroup:IsAlive() then + + local Fuel = self.PatrolGroup:GetUnit(1):GetFuel() + if Fuel < self.PatrolFuelTresholdPercentage then + local OldPatrolGroup = self.PatrolGroup + local PatrolGroupTemplate = self.PatrolGroup:GetTemplate() + + local OrbitTask = OldPatrolGroup:TaskOrbitCircle( math.random( self.PatrolFloorAltitude, self.PatrolCeilingAltitude ), self.PatrolMinSpeed ) + local TimedOrbitTask = OldPatrolGroup:TaskControlled( OrbitTask, OldPatrolGroup:TaskCondition(nil,nil,nil,nil,self.PatrolOutOfFuelOrbitTime,nil ) ) + OldPatrolGroup:SetTask( TimedOrbitTask, 10 ) + + local NewPatrolGroup = self.SpawnPatrolGroup:Spawn() + self.PatrolGroup = NewPatrolGroup + self:NewPatrolRoute() + end + else + self.PatrolOutOfFuelMonitor:Stop() + end +end--- This module contains the AIBALANCER class. +-- +-- === +-- +-- 1) @{AIBalancer#AIBALANCER} class, extends @{Base#BASE} +-- ================================================ +-- The @{AIBalancer#AIBALANCER} class controls the dynamic spawning of AI GROUPS depending on a SET_CLIENT. +-- There will be as many AI GROUPS spawned as there at CLIENTS in SET_CLIENT not spawned. +-- +-- 1.1) AIBALANCER construction method: +-- ------------------------------------ +-- Create a new AIBALANCER object with the @{#AIBALANCER.New} method: +-- +-- * @{#AIBALANCER.New}: Creates a new AIBALANCER object. +-- +-- 1.2) AIBALANCER returns AI to Airbases: +-- --------------------------------------- +-- You can configure to have the AI to return to: +-- +-- * @{#AIBALANCER.ReturnToHomeAirbase}: Returns the AI to the home @{Airbase#AIRBASE}. +-- * @{#AIBALANCER.ReturnToNearestAirbases}: Returns the AI to the nearest friendly @{Airbase#AIRBASE}. +-- +-- 1.3) AIBALANCER allows AI to patrol specific zones: +-- --------------------------------------------------- +-- Use @{AIBalancer#AIBALANCER.SetPatrolZone}() to specify a zone where the AI needs to patrol. +-- +-- +-- === +-- +-- CREDITS +-- ======= +-- **Dutch_Baron (James)** Who you can search on the Eagle Dynamics Forums. +-- Working together with James has resulted in the creation of the AIBALANCER class. +-- James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-) +-- +-- **SNAFU** +-- Had a couple of mails with the guys to validate, if the same concept in the GCI/CAP script could be reworked within MOOSE. +-- None of the script code has been used however within the new AIBALANCER moose class. +-- +-- @module AIBalancer +-- @author FlightControl + +--- AIBALANCER class +-- @type AIBALANCER +-- @field Set#SET_CLIENT SetClient +-- @field Spawn#SPAWN SpawnAI +-- @field #boolean ToNearestAirbase +-- @field Set#SET_AIRBASE ReturnAirbaseSet +-- @field DCSTypes#Distance ReturnTresholdRange +-- @field #boolean ToHomeAirbase +-- @field PatrolZone#PATROLZONE PatrolZone +-- @extends Base#BASE +AIBALANCER = { + ClassName = "AIBALANCER", + PatrolZones = {}, + AIGroups = {}, +} + +--- Creates a new AIBALANCER object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. +-- @param #AIBALANCER self +-- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they are alive or not (joined by a player). +-- @param SpawnAI A SPAWN object that will spawn the AI units required, balancing the SetClient. +-- @return #AIBALANCER self +function AIBALANCER:New( SetClient, SpawnAI ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + self.SetClient = SetClient + if type( SpawnAI ) == "table" then + if SpawnAI.ClassName and SpawnAI.ClassName == "SPAWN" then + self.SpawnAI = { SpawnAI } + else + local SpawnObjects = true + for SpawnObjectID, SpawnObject in pairs( SpawnAI ) do + if SpawnObject.ClassName and SpawnObject.ClassName == "SPAWN" then + self:E( SpawnObject.ClassName ) + else + self:E( "other object" ) + SpawnObjects = false + end + end + if SpawnObjects == true then + self.SpawnAI = SpawnAI + else + error( "No SPAWN object given in parameter SpawnAI, either as a single object or as a table of objects!" ) + end + end + end + + self.ToNearestAirbase = false + self.ReturnHomeAirbase = false + + self.AIMonitorSchedule = SCHEDULER:New( self, self._ClientAliveMonitorScheduler, {}, 1, 10, 0 ) + + return self +end + +--- Returns the AI to the nearest friendly @{Airbase#AIRBASE}. +-- @param #AIBALANCER self +-- @param DCSTypes#Distance ReturnTresholdRange If there is an enemy @{Client#CLIENT} within the ReturnTresholdRange given in meters, the AI will not return to the nearest @{Airbase#AIRBASE}. +-- @param Set#SET_AIRBASE ReturnAirbaseSet The SET of @{Set#SET_AIRBASE}s to evaluate where to return to. +function AIBALANCER:ReturnToNearestAirbases( ReturnTresholdRange, ReturnAirbaseSet ) + + self.ToNearestAirbase = true + self.ReturnTresholdRange = ReturnTresholdRange + self.ReturnAirbaseSet = ReturnAirbaseSet +end + +--- Returns the AI to the home @{Airbase#AIRBASE}. +-- @param #AIBALANCER self +-- @param DCSTypes#Distance ReturnTresholdRange If there is an enemy @{Client#CLIENT} within the ReturnTresholdRange given in meters, the AI will not return to the nearest @{Airbase#AIRBASE}. +function AIBALANCER:ReturnToHomeAirbase( ReturnTresholdRange ) + + self.ToHomeAirbase = true + self.ReturnTresholdRange = ReturnTresholdRange +end + +--- Let the AI patrol a @{Zone} with a given Speed range and Altitude range. +-- @param #AIBALANCER self +-- @param PatrolZone#PATROLZONE PatrolZone The @{PatrolZone} where the AI needs to patrol. +-- @return PatrolZone#PATROLZONE self +function AIBALANCER:SetPatrolZone( PatrolZone ) + + self.PatrolZone = PatrolZone +end + +--- @param #AIBALANCER self +function AIBALANCER:_ClientAliveMonitorScheduler() + + self.SetClient:ForEachClient( + --- @param Client#CLIENT Client + function( Client ) + local ClientAIAliveState = Client:GetState( self, 'AIAlive' ) + self:T( ClientAIAliveState ) + if Client:IsAlive() then + if ClientAIAliveState == true then + Client:SetState( self, 'AIAlive', false ) + + local AIGroup = self.AIGroups[Client.UnitName] -- Group#GROUP + +-- local PatrolZone = Client:GetState( self, "PatrolZone" ) +-- if PatrolZone then +-- PatrolZone = nil +-- Client:ClearState( self, "PatrolZone" ) +-- end + + if self.ToNearestAirbase == false and self.ToHomeAirbase == false then + AIGroup:Destroy() + else + -- We test if there is no other CLIENT within the self.ReturnTresholdRange of the first unit of the AI group. + -- If there is a CLIENT, the AI stays engaged and will not return. + -- If there is no CLIENT within the self.ReturnTresholdRange, then the unit will return to the Airbase return method selected. + + local PlayerInRange = { Value = false } + local RangeZone = ZONE_RADIUS:New( 'RangeZone', AIGroup:GetPointVec2(), self.ReturnTresholdRange ) + + self:E( RangeZone ) + + _DATABASE:ForEachPlayer( + --- @param Unit#UNIT RangeTestUnit + function( RangeTestUnit, RangeZone, AIGroup, PlayerInRange ) + self:E( { PlayerInRange, RangeTestUnit.UnitName, RangeZone.ZoneName } ) + if RangeTestUnit:IsInZone( RangeZone ) == true then + self:E( "in zone" ) + if RangeTestUnit:GetCoalition() ~= AIGroup:GetCoalition() then + self:E( "in range" ) + PlayerInRange.Value = true + end + end + end, + + --- @param Zone#ZONE_RADIUS RangeZone + -- @param Group#GROUP AIGroup + function( RangeZone, AIGroup, PlayerInRange ) + local AIGroupTemplate = AIGroup:GetTemplate() + if PlayerInRange.Value == false then + if self.ToHomeAirbase == true then + local WayPointCount = #AIGroupTemplate.route.points + local SwitchWayPointCommand = AIGroup:CommandSwitchWayPoint( 1, WayPointCount, 1 ) + AIGroup:SetCommand( SwitchWayPointCommand ) + AIGroup:MessageToRed( "Returning to home base ...", 30 ) + else + -- Okay, we need to send this Group back to the nearest base of the Coalition of the AI. + --TODO: i need to rework the POINT_VEC2 thing. + local PointVec2 = POINT_VEC2:New( AIGroup:GetPointVec2().x, AIGroup:GetPointVec2().y ) + local ClosestAirbase = self.ReturnAirbaseSet:FindNearestAirbaseFromPointVec2( PointVec2 ) + self:T( ClosestAirbase.AirbaseName ) + AIGroup:MessageToRed( "Returning to " .. ClosestAirbase:GetName().. " ...", 30 ) + local RTBRoute = AIGroup:RouteReturnToAirbase( ClosestAirbase ) + AIGroupTemplate.route = RTBRoute + AIGroup:Respawn( AIGroupTemplate ) + end + end + end + , RangeZone, AIGroup, PlayerInRange + ) + + end + end + else + if not ClientAIAliveState or ClientAIAliveState == false then + Client:SetState( self, 'AIAlive', true ) + + + -- OK, spawn a new group from the SpawnAI objects provided. + local SpawnAICount = #self.SpawnAI + local SpawnAIIndex = math.random( 1, SpawnAICount ) + local AIGroup = self.SpawnAI[SpawnAIIndex]:Spawn() + AIGroup:E( "spawning new AIGroup" ) + --TODO: need to rework UnitName thing ... + self.AIGroups[Client.UnitName] = AIGroup + + --- Now test if the AIGroup needs to patrol a zone, otherwise let it follow its route... + if self.PatrolZone then + self.PatrolZones[#self.PatrolZones+1] = PATROLZONE:New( + self.PatrolZone.PatrolZone, + self.PatrolZone.PatrolFloorAltitude, + self.PatrolZone.PatrolCeilingAltitude, + self.PatrolZone.PatrolMinSpeed, + self.PatrolZone.PatrolMaxSpeed + ) + + if self.PatrolZone.PatrolManageFuel == true then + self.PatrolZones[#self.PatrolZones]:ManageFuel( self.PatrolZone.PatrolFuelTresholdPercentage, self.PatrolZone.PatrolOutOfFuelOrbitTime ) + end + self.PatrolZones[#self.PatrolZones]:SetGroup( AIGroup ) + + --self.PatrolZones[#self.PatrolZones+1] = PatrolZone + + --Client:SetState( self, "PatrolZone", PatrolZone ) + end + end + end + end + ) + return true +end + + + +--- This module contains the AIRBASEPOLICE classes. +-- +-- === +-- +-- 1) @{AirbasePolice#AIRBASEPOLICE_BASE} class, extends @{Base#BASE} +-- ================================================================== +-- The @{AirbasePolice#AIRBASEPOLICE_BASE} class provides the main methods to monitor CLIENT behaviour at airbases. +-- CLIENTS should not be allowed to: +-- +-- * Don't taxi faster than 40 km/h. +-- * Don't take-off on taxiways. +-- * Avoid to hit other planes on the airbase. +-- * Obey ground control orders. +-- +-- 2) @{AirbasePolice#AIRBASEPOLICE_CAUCASUS} class, extends @{AirbasePolice#AIRBASEPOLICE_BASE} +-- ============================================================================================= +-- All the airbases on the caucasus map can be monitored using this class. +-- If you want to monitor specific airbases, you need to use the @{#AIRBASEPOLICE_BASE.Monitor}() method, which takes a table or airbase names. +-- The following names can be given: +-- * AnapaVityazevo +-- * Batumi +-- * Beslan +-- * Gelendzhik +-- * Gudauta +-- * Kobuleti +-- * KrasnodarCenter +-- * KrasnodarPashkovsky +-- * Krymsk +-- * Kutaisi +-- * MaykopKhanskaya +-- * MineralnyeVody +-- * Mozdok +-- * Nalchik +-- * Novorossiysk +-- * SenakiKolkhi +-- * SochiAdler +-- * Soganlug +-- * SukhumiBabushara +-- * TbilisiLochini +-- * Vaziani +-- +-- @module AirbasePolice +-- @author FlightControl + + +--- @type AIRBASEPOLICE_BASE +-- @field Set#SET_CLIENT SetClient +-- @extends Base#BASE + +AIRBASEPOLICE_BASE = { + ClassName = "AIRBASEPOLICE_BASE", + SetClient = nil, + Airbases = nil, + AirbaseNames = nil, +} + + +--- Creates a new AIRBASEPOLICE_BASE object. +-- @param #AIRBASEPOLICE_BASE self +-- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they follow the rules of the airbase. +-- @param Airbases A table of Airbase Names. +-- @return #AIRBASEPOLICE_BASE self +function AIRBASEPOLICE_BASE:New( SetClient, Airbases ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + self:E( { self.ClassName, SetClient, Airbases } ) + + self.SetClient = SetClient + self.Airbases = Airbases + + for AirbaseID, Airbase in pairs( self.Airbases ) do + Airbase.ZoneBoundary = ZONE_POLYGON_BASE:New( "Boundary", Airbase.PointsBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + for PointsRunwayID, PointsRunway in pairs( Airbase.PointsRunways ) do + Airbase.ZoneRunways[PointsRunwayID] = ZONE_POLYGON_BASE:New( "Runway " .. PointsRunwayID, PointsRunway ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + end + end + + -- -- Template + -- local TemplateBoundary = GROUP:FindByName( "Template Boundary" ) + -- self.Airbases.Template.ZoneBoundary = ZONE_POLYGON:New( "Template Boundary", TemplateBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local TemplateRunway1 = GROUP:FindByName( "Template Runway 1" ) + -- self.Airbases.Template.ZoneRunways[1] = ZONE_POLYGON:New( "Template Runway 1", TemplateRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + + self.SetClient:ForEachClient( + --- @param Client#CLIENT Client + function( Client ) + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0) + Client:SetState( self, "Taxi", false ) + end + ) + + self.AirbaseMonitor = SCHEDULER:New( self, self._AirbaseMonitor, {}, 0, 2, 0.05 ) + + return self +end + +--- @type AIRBASEPOLICE_BASE.AirbaseNames +-- @list <#string> + +--- Monitor a table of airbase names. +-- @param #AIRBASEPOLICE_BASE self +-- @param #AIRBASEPOLICE_BASE.AirbaseNames AirbaseNames A list of AirbaseNames to monitor. If this parameters is nil, then all airbases will be monitored. +-- @return #AIRBASEPOLICE_BASE self +function AIRBASEPOLICE_BASE:Monitor( AirbaseNames ) + + if AirbaseNames then + if type( AirbaseNames ) == "table" then + self.AirbaseNames = AirbaseNames + else + self.AirbaseNames = { AirbaseNames } + end + end +end + +--- @param #AIRBASEPOLICE_BASE self +function AIRBASEPOLICE_BASE:_AirbaseMonitor() + + for AirbaseID, Airbase in pairs( self.Airbases ) do + + if not self.AirbaseNames or self.AirbaseNames[AirbaseID] then + + self:E( AirbaseID ) + + self.SetClient:ForEachClientInZone( Airbase.ZoneBoundary, + + --- @param Client#CLIENT Client + function( Client ) + + self:E( Client.UnitName ) + if Client:IsAlive() then + local NotInRunwayZone = true + for ZoneRunwayID, ZoneRunway in pairs( Airbase.ZoneRunways ) do + NotInRunwayZone = ( Client:IsNotInZone( ZoneRunway ) == true ) and NotInRunwayZone or false + end + + if NotInRunwayZone then + local Taxi = self:GetState( self, "Taxi" ) + self:E( Taxi ) + if Taxi == false then + Client:Message( "Welcome at " .. AirbaseID .. ". The maximum taxiing speed is " .. Airbase.MaximumSpeed " km/h.", 20, "ATC" ) + self:SetState( self, "Taxi", true ) + end + + local VelocityVec3 = Client:GetVelocity() + local Velocity = math.abs(VelocityVec3.x) + math.abs(VelocityVec3.y) + math.abs(VelocityVec3.z) + local IsAboveRunway = Client:IsAboveRunway() + local IsOnGround = Client:InAir() == false + self:T( IsAboveRunway, IsOnGround ) + + if IsAboveRunway and IsOnGround then + + if Velocity > Airbase.MaximumSpeed then + local IsSpeeding = Client:GetState( self, "Speeding" ) + + if IsSpeeding == true then + local SpeedingWarnings = Client:GetState( self, "Warnings" ) + self:T( SpeedingWarnings ) + + if SpeedingWarnings <= 5 then + Client:Message( "You are speeding on the taxiway! Slow down or you will be removed from this airbase! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Warning " .. SpeedingWarnings .. " / 5" ) + Client:SetState( self, "Warnings", SpeedingWarnings + 1 ) + else + MESSAGE:New( "Player " .. Client:GetPlayerName() .. " has been removed from the airbase, due to a speeding violation ...", 10, "Airbase Police" ):ToAll() + Client:GetGroup():Destroy() + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0 ) + end + + else + Client:Message( "You are speeding on the taxiway! Slow down please ...! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Attention! " ) + Client:SetState( self, "Speeding", true ) + Client:SetState( self, "Warnings", 1 ) + end + + else + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0 ) + end + end + + else + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0 ) + local Taxi = self:GetState( self, "Taxi" ) + if Taxi == true then + Client:Message( "You have progressed to the runway ... Await take-off clearance ...", 20, "ATC" ) + self:SetState( self, "Taxi", false ) + end + end + end + end + ) + end + end + + return true +end + + +--- @type AIRBASEPOLICE_CAUCASUS +-- @field Set#SET_CLIENT SetClient +-- @extends #AIRBASEPOLICE_BASE + +AIRBASEPOLICE_CAUCASUS = { + ClassName = "AIRBASEPOLICE_CAUCASUS", + Airbases = { + AnapaVityazevo = { + PointsBoundary = { + [1]={["y"]=242234.85714287,["x"]=-6616.5714285726,}, + [2]={["y"]=241060.57142858,["x"]=-5585.142857144,}, + [3]={["y"]=243806.2857143,["x"]=-3962.2857142868,}, + [4]={["y"]=245240.57142858,["x"]=-4816.5714285726,}, + [5]={["y"]=244783.42857144,["x"]=-5630.8571428583,}, + [6]={["y"]=243800.57142858,["x"]=-5065.142857144,}, + [7]={["y"]=242232.00000001,["x"]=-6622.2857142868,}, + }, + PointsRunways = { + [1] = { + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Batumi = { + PointsBoundary = { + [1]={["y"]=617567.14285714,["x"]=-355313.14285715,}, + [2]={["y"]=616181.42857142,["x"]=-354800.28571429,}, + [3]={["y"]=616007.14285714,["x"]=-355128.85714286,}, + [4]={["y"]=618230,["x"]=-356914.57142858,}, + [5]={["y"]=618727.14285714,["x"]=-356166,}, + [6]={["y"]=617572.85714285,["x"]=-355308.85714286,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=616442.28571429,["x"]=-355090.28571429,}, + [2]={["y"]=618450.57142857,["x"]=-356522,}, + [3]={["y"]=618407.71428571,["x"]=-356584.85714286,}, + [4]={["y"]=618361.99999999,["x"]=-356554.85714286,}, + [5]={["y"]=618324.85714285,["x"]=-356599.14285715,}, + [6]={["y"]=618250.57142856,["x"]=-356543.42857143,}, + [7]={["y"]=618257.7142857,["x"]=-356496.28571429,}, + [8]={["y"]=618237.7142857,["x"]=-356459.14285715,}, + [9]={["y"]=616555.71428571,["x"]=-355258.85714286,}, + [10]={["y"]=616486.28571428,["x"]=-355280.57142858,}, + [11]={["y"]=616410.57142856,["x"]=-355227.71428572,}, + [12]={["y"]=616441.99999999,["x"]=-355179.14285715,}, + [13]={["y"]=616401.99999999,["x"]=-355147.71428572,}, + [14]={["y"]=616441.42857142,["x"]=-355092.57142858,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Beslan = { + PointsBoundary = { + [1]={["y"]=842082.57142857,["x"]=-148445.14285715,}, + [2]={["y"]=845237.71428572,["x"]=-148639.71428572,}, + [3]={["y"]=845232,["x"]=-148765.42857143,}, + [4]={["y"]=844220.57142857,["x"]=-149168.28571429,}, + [5]={["y"]=843274.85714286,["x"]=-149125.42857143,}, + [6]={["y"]=842077.71428572,["x"]=-148554,}, + [7]={["y"]=842083.42857143,["x"]=-148445.42857143,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=842104.57142857,["x"]=-148460.57142857,}, + [2]={["y"]=845225.71428572,["x"]=-148656,}, + [3]={["y"]=845220.57142858,["x"]=-148750,}, + [4]={["y"]=842098.85714286,["x"]=-148556.28571429,}, + [5]={["y"]=842104,["x"]=-148460.28571429,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Gelendzhik = { + PointsBoundary = { + [1]={["y"]=297856.00000001,["x"]=-51151.428571429,}, + [2]={["y"]=299044.57142858,["x"]=-49720.000000001,}, + [3]={["y"]=298861.71428572,["x"]=-49580.000000001,}, + [4]={["y"]=298198.85714286,["x"]=-49842.857142858,}, + [5]={["y"]=297990.28571429,["x"]=-50151.428571429,}, + [6]={["y"]=297696.00000001,["x"]=-51054.285714286,}, + [7]={["y"]=297850.28571429,["x"]=-51160.000000001,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=297834.00000001,["x"]=-51107.428571429,}, + [2]={["y"]=297786.57142858,["x"]=-51068.857142858,}, + [3]={["y"]=298946.57142858,["x"]=-49686.000000001,}, + [4]={["y"]=298993.14285715,["x"]=-49725.714285715,}, + [5]={["y"]=297835.14285715,["x"]=-51107.714285715,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Gudauta = { + PointsBoundary = { + [1]={["y"]=517246.57142857,["x"]=-197850.28571429,}, + [2]={["y"]=516749.42857142,["x"]=-198070.28571429,}, + [3]={["y"]=515755.14285714,["x"]=-197598.85714286,}, + [4]={["y"]=515369.42857142,["x"]=-196538.85714286,}, + [5]={["y"]=515623.71428571,["x"]=-195618.85714286,}, + [6]={["y"]=515946.57142857,["x"]=-195510.28571429,}, + [7]={["y"]=517243.71428571,["x"]=-197858.85714286,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=517096.57142857,["x"]=-197804.57142857,}, + [2]={["y"]=515880.85714285,["x"]=-195590.28571429,}, + [3]={["y"]=515812.28571428,["x"]=-195628.85714286,}, + [4]={["y"]=517036.57142857,["x"]=-197834.57142857,}, + [5]={["y"]=517097.99999999,["x"]=-197807.42857143,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Kobuleti = { + PointsBoundary = { + [1]={["y"]=634427.71428571,["x"]=-318290.28571429,}, + [2]={["y"]=635033.42857143,["x"]=-317550.2857143,}, + [3]={["y"]=635864.85714286,["x"]=-317333.14285715,}, + [4]={["y"]=636967.71428571,["x"]=-317261.71428572,}, + [5]={["y"]=637144.85714286,["x"]=-317913.14285715,}, + [6]={["y"]=634630.57142857,["x"]=-318687.42857144,}, + [7]={["y"]=634424.85714286,["x"]=-318290.2857143,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=634509.71428571,["x"]=-318339.42857144,}, + [2]={["y"]=636767.42857143,["x"]=-317516.57142858,}, + [3]={["y"]=636790,["x"]=-317575.71428572,}, + [4]={["y"]=634531.42857143,["x"]=-318398.00000001,}, + [5]={["y"]=634510.28571429,["x"]=-318339.71428572,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + KrasnodarCenter = { + PointsBoundary = { + [1]={["y"]=366680.28571429,["x"]=11699.142857142,}, + [2]={["y"]=366654.28571429,["x"]=11225.142857142,}, + [3]={["y"]=367497.14285715,["x"]=11082.285714285,}, + [4]={["y"]=368025.71428572,["x"]=10396.57142857,}, + [5]={["y"]=369854.28571429,["x"]=11367.999999999,}, + [6]={["y"]=369840.00000001,["x"]=11910.857142856,}, + [7]={["y"]=366682.57142858,["x"]=11697.999999999,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=369205.42857144,["x"]=11789.142857142,}, + [2]={["y"]=369209.71428572,["x"]=11714.857142856,}, + [3]={["y"]=366699.71428572,["x"]=11581.714285713,}, + [4]={["y"]=366698.28571429,["x"]=11659.142857142,}, + [5]={["y"]=369208.85714286,["x"]=11788.57142857,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + KrasnodarPashkovsky = { + PointsBoundary = { + [1]={["y"]=386754,["x"]=6476.5714285703,}, + [2]={["y"]=389182.57142858,["x"]=8722.2857142846,}, + [3]={["y"]=388832.57142858,["x"]=9086.5714285703,}, + [4]={["y"]=386961.14285715,["x"]=7707.9999999989,}, + [5]={["y"]=385404,["x"]=9179.4285714274,}, + [6]={["y"]=383239.71428572,["x"]=7386.5714285703,}, + [7]={["y"]=383954,["x"]=6486.5714285703,}, + [8]={["y"]=385775.42857143,["x"]=8097.9999999989,}, + [9]={["y"]=386804,["x"]=7319.4285714274,}, + [10]={["y"]=386375.42857143,["x"]=6797.9999999989,}, + [11]={["y"]=386746.85714286,["x"]=6472.2857142846,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=385891.14285715,["x"]=8416.5714285703,}, + [2]={["y"]=385842.28571429,["x"]=8467.9999999989,}, + [3]={["y"]=384180.85714286,["x"]=6917.1428571417,}, + [4]={["y"]=384228.57142858,["x"]=6867.7142857132,}, + [5]={["y"]=385891.14285715,["x"]=8416.5714285703,}, + }, + [2] = { + [1]={["y"]=386714.85714286,["x"]=6674.857142856,}, + [2]={["y"]=386757.71428572,["x"]=6627.7142857132,}, + [3]={["y"]=389028.57142858,["x"]=8741.4285714275,}, + [4]={["y"]=388981.71428572,["x"]=8790.5714285703,}, + [5]={["y"]=386714.57142858,["x"]=6674.5714285703,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Krymsk = { + PointsBoundary = { + [1]={["y"]=293338.00000001,["x"]=-7575.4285714297,}, + [2]={["y"]=295199.42857144,["x"]=-5434.0000000011,}, + [3]={["y"]=295595.14285715,["x"]=-6239.7142857154,}, + [4]={["y"]=294152.2857143,["x"]=-8325.4285714297,}, + [5]={["y"]=293345.14285715,["x"]=-7596.8571428582,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=293522.00000001,["x"]=-7567.4285714297,}, + [2]={["y"]=293578.57142858,["x"]=-7616.0000000011,}, + [3]={["y"]=295246.00000001,["x"]=-5591.142857144,}, + [4]={["y"]=295187.71428573,["x"]=-5546.0000000011,}, + [5]={["y"]=293523.14285715,["x"]=-7568.2857142868,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Kutaisi = { + PointsBoundary = { + [1]={["y"]=682087.42857143,["x"]=-284512.85714286,}, + [2]={["y"]=685387.42857143,["x"]=-283662.85714286,}, + [3]={["y"]=685294.57142857,["x"]=-284977.14285715,}, + [4]={["y"]=682744.57142857,["x"]=-286505.71428572,}, + [5]={["y"]=682094.57142857,["x"]=-284527.14285715,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=682638,["x"]=-285202.28571429,}, + [2]={["y"]=685050.28571429,["x"]=-284507.42857144,}, + [3]={["y"]=685068.85714286,["x"]=-284578.85714286,}, + [4]={["y"]=682657.42857143,["x"]=-285264.28571429,}, + [5]={["y"]=682638.28571429,["x"]=-285202.85714286,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + MaykopKhanskaya = { + PointsBoundary = { + [1]={["y"]=456876.28571429,["x"]=-27665.42857143,}, + [2]={["y"]=457800,["x"]=-28392.857142858,}, + [3]={["y"]=459368.57142857,["x"]=-26378.571428573,}, + [4]={["y"]=459425.71428572,["x"]=-25242.857142858,}, + [5]={["y"]=458961.42857143,["x"]=-24964.285714287,}, + [6]={["y"]=456878.57142857,["x"]=-27667.714285715,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=457005.42857143,["x"]=-27668.000000001,}, + [2]={["y"]=459028.85714286,["x"]=-25168.857142858,}, + [3]={["y"]=459082.57142857,["x"]=-25216.857142858,}, + [4]={["y"]=457060,["x"]=-27714.285714287,}, + [5]={["y"]=457004.57142857,["x"]=-27669.714285715,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + MineralnyeVody = { + PointsBoundary = { + [1]={["y"]=703857.14285714,["x"]=-50226.000000002,}, + [2]={["y"]=707385.71428571,["x"]=-51911.714285716,}, + [3]={["y"]=707595.71428571,["x"]=-51434.857142859,}, + [4]={["y"]=707900,["x"]=-51568.857142859,}, + [5]={["y"]=707542.85714286,["x"]=-52326.000000002,}, + [6]={["y"]=706628.57142857,["x"]=-52568.857142859,}, + [7]={["y"]=705142.85714286,["x"]=-51790.285714288,}, + [8]={["y"]=703678.57142857,["x"]=-50611.714285716,}, + [9]={["y"]=703857.42857143,["x"]=-50226.857142859,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=703904,["x"]=-50352.571428573,}, + [2]={["y"]=707596.28571429,["x"]=-52094.571428573,}, + [3]={["y"]=707560.57142858,["x"]=-52161.714285716,}, + [4]={["y"]=703871.71428572,["x"]=-50420.571428573,}, + [5]={["y"]=703902,["x"]=-50352.000000002,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Mozdok = { + PointsBoundary = { + [1]={["y"]=832123.42857143,["x"]=-83608.571428573,}, + [2]={["y"]=835916.28571429,["x"]=-83144.285714288,}, + [3]={["y"]=835474.28571429,["x"]=-84170.571428573,}, + [4]={["y"]=832911.42857143,["x"]=-84470.571428573,}, + [5]={["y"]=832487.71428572,["x"]=-85565.714285716,}, + [6]={["y"]=831573.42857143,["x"]=-85351.42857143,}, + [7]={["y"]=832123.71428572,["x"]=-83610.285714288,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=832201.14285715,["x"]=-83699.428571431,}, + [2]={["y"]=832212.57142857,["x"]=-83780.571428574,}, + [3]={["y"]=835730.28571429,["x"]=-83335.714285717,}, + [4]={["y"]=835718.85714286,["x"]=-83246.571428574,}, + [5]={["y"]=832200.57142857,["x"]=-83700.000000002,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Nalchik = { + PointsBoundary = { + [1]={["y"]=759370,["x"]=-125502.85714286,}, + [2]={["y"]=761384.28571429,["x"]=-124177.14285714,}, + [3]={["y"]=761472.85714286,["x"]=-124325.71428572,}, + [4]={["y"]=761092.85714286,["x"]=-125048.57142857,}, + [5]={["y"]=760295.71428572,["x"]=-125685.71428572,}, + [6]={["y"]=759444.28571429,["x"]=-125734.28571429,}, + [7]={["y"]=759375.71428572,["x"]=-125511.42857143,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=759454.28571429,["x"]=-125551.42857143,}, + [2]={["y"]=759492.85714286,["x"]=-125610.85714286,}, + [3]={["y"]=761406.28571429,["x"]=-124304.28571429,}, + [4]={["y"]=761361.14285714,["x"]=-124239.71428572,}, + [5]={["y"]=759456,["x"]=-125552.57142857,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Novorossiysk = { + PointsBoundary = { + [1]={["y"]=278677.71428573,["x"]=-41656.571428572,}, + [2]={["y"]=278446.2857143,["x"]=-41453.714285715,}, + [3]={["y"]=278989.14285716,["x"]=-40188.000000001,}, + [4]={["y"]=279717.71428573,["x"]=-39968.000000001,}, + [5]={["y"]=280020.57142859,["x"]=-40208.000000001,}, + [6]={["y"]=278674.85714287,["x"]=-41660.857142858,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=278673.14285716,["x"]=-41615.142857144,}, + [2]={["y"]=278625.42857144,["x"]=-41570.571428572,}, + [3]={["y"]=279835.42857144,["x"]=-40226.000000001,}, + [4]={["y"]=279882.2857143,["x"]=-40270.000000001,}, + [5]={["y"]=278672.00000001,["x"]=-41614.857142858,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + SenakiKolkhi = { + PointsBoundary = { + [1]={["y"]=646036.57142857,["x"]=-281778.85714286,}, + [2]={["y"]=646045.14285714,["x"]=-281191.71428571,}, + [3]={["y"]=647032.28571429,["x"]=-280598.85714285,}, + [4]={["y"]=647669.42857143,["x"]=-281273.14285714,}, + [5]={["y"]=648323.71428571,["x"]=-281370.28571428,}, + [6]={["y"]=648520.85714286,["x"]=-281978.85714285,}, + [7]={["y"]=646039.42857143,["x"]=-281783.14285714,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=646060.85714285,["x"]=-281736,}, + [2]={["y"]=646056.57142857,["x"]=-281631.71428571,}, + [3]={["y"]=648442.28571428,["x"]=-281840.28571428,}, + [4]={["y"]=648432.28571428,["x"]=-281918.85714286,}, + [5]={["y"]=646063.71428571,["x"]=-281738.85714286,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + SochiAdler = { + PointsBoundary = { + [1]={["y"]=460642.28571428,["x"]=-164861.71428571,}, + [2]={["y"]=462820.85714285,["x"]=-163368.85714286,}, + [3]={["y"]=463649.42857142,["x"]=-163340.28571429,}, + [4]={["y"]=463835.14285714,["x"]=-164040.28571429,}, + [5]={["y"]=462535.14285714,["x"]=-165654.57142857,}, + [6]={["y"]=460678,["x"]=-165247.42857143,}, + [7]={["y"]=460635.14285714,["x"]=-164876,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=460831.42857143,["x"]=-165180,}, + [2]={["y"]=460878.57142857,["x"]=-165257.14285714,}, + [3]={["y"]=463663.71428571,["x"]=-163793.14285714,}, + [4]={["y"]=463612.28571428,["x"]=-163697.42857143,}, + [5]={["y"]=460831.42857143,["x"]=-165177.14285714,}, + }, + [2] = { + [1]={["y"]=460831.42857143,["x"]=-165180,}, + [2]={["y"]=460878.57142857,["x"]=-165257.14285714,}, + [3]={["y"]=463663.71428571,["x"]=-163793.14285714,}, + [4]={["y"]=463612.28571428,["x"]=-163697.42857143,}, + [5]={["y"]=460831.42857143,["x"]=-165177.14285714,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Soganlug = { + PointsBoundary = { + [1]={["y"]=894530.85714286,["x"]=-316928.28571428,}, + [2]={["y"]=896422.28571428,["x"]=-318622.57142857,}, + [3]={["y"]=896090.85714286,["x"]=-318934,}, + [4]={["y"]=894019.42857143,["x"]=-317119.71428571,}, + [5]={["y"]=894533.71428571,["x"]=-316925.42857143,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=894525.71428571,["x"]=-316964,}, + [2]={["y"]=896363.14285714,["x"]=-318634.28571428,}, + [3]={["y"]=896299.14285714,["x"]=-318702.85714286,}, + [4]={["y"]=894464,["x"]=-317031.71428571,}, + [5]={["y"]=894524.57142857,["x"]=-316963.71428571,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + SukhumiBabushara = { + PointsBoundary = { + [1]={["y"]=562541.14285714,["x"]=-219852.28571429,}, + [2]={["y"]=562691.14285714,["x"]=-219395.14285714,}, + [3]={["y"]=564326.85714286,["x"]=-219523.71428571,}, + [4]={["y"]=566262.57142857,["x"]=-221166.57142857,}, + [5]={["y"]=566069.71428571,["x"]=-221580.85714286,}, + [6]={["y"]=562534,["x"]=-219873.71428571,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=562684,["x"]=-219779.71428571,}, + [2]={["y"]=562717.71428571,["x"]=-219718,}, + [3]={["y"]=566046.85714286,["x"]=-221376.57142857,}, + [4]={["y"]=566012.28571428,["x"]=-221446.57142857,}, + [5]={["y"]=562684.57142857,["x"]=-219782.57142857,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + TbilisiLochini = { + PointsBoundary = { + [1]={["y"]=895172.85714286,["x"]=-314667.42857143,}, + [2]={["y"]=895337.42857143,["x"]=-314143.14285714,}, + [3]={["y"]=895990.28571429,["x"]=-314036,}, + [4]={["y"]=897730.28571429,["x"]=-315284.57142857,}, + [5]={["y"]=897901.71428571,["x"]=-316284.57142857,}, + [6]={["y"]=897684.57142857,["x"]=-316618.85714286,}, + [7]={["y"]=895173.14285714,["x"]=-314667.42857143,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=895261.14285715,["x"]=-314652.28571428,}, + [2]={["y"]=897654.57142857,["x"]=-316523.14285714,}, + [3]={["y"]=897711.71428571,["x"]=-316450.28571429,}, + [4]={["y"]=895327.42857143,["x"]=-314568.85714286,}, + [5]={["y"]=895261.71428572,["x"]=-314656,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + Vaziani = { + PointsBoundary = { + [1]={["y"]=902122,["x"]=-318163.71428572,}, + [2]={["y"]=902678.57142857,["x"]=-317594,}, + [3]={["y"]=903275.71428571,["x"]=-317405.42857143,}, + [4]={["y"]=903418.57142857,["x"]=-317891.14285714,}, + [5]={["y"]=904292.85714286,["x"]=-318748.28571429,}, + [6]={["y"]=904542,["x"]=-319740.85714286,}, + [7]={["y"]=904042,["x"]=-320166.57142857,}, + [8]={["y"]=902121.42857143,["x"]=-318164.85714286,}, + }, + PointsRunways = { + [1] = { + [1]={["y"]=902239.14285714,["x"]=-318190.85714286,}, + [2]={["y"]=904014.28571428,["x"]=-319994.57142857,}, + [3]={["y"]=904064.85714285,["x"]=-319945.14285715,}, + [4]={["y"]=902294.57142857,["x"]=-318146,}, + [5]={["y"]=902247.71428571,["x"]=-318190.85714286,}, + }, + }, + ZoneBoundary = {}, + ZoneRunways = {}, + MaximumSpeed = 50, + }, + }, +} + +--- Creates a new AIRBASEPOLICE_CAUCASUS object. +-- @param #AIRBASEPOLICE_CAUCASUS self +-- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they follow the rules of the airbase. +-- @return #AIRBASEPOLICE_CAUCASUS self +function AIRBASEPOLICE_CAUCASUS:New( SetClient ) + + -- Inherits from BASE + local self = BASE:Inherit( self, AIRBASEPOLICE_BASE:New( SetClient, self.Airbases ) ) + + -- -- AnapaVityazevo + -- local AnapaVityazevoBoundary = GROUP:FindByName( "AnapaVityazevo Boundary" ) + -- self.Airbases.AnapaVityazevo.ZoneBoundary = ZONE_POLYGON:New( "AnapaVityazevo Boundary", AnapaVityazevoBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local AnapaVityazevoRunway1 = GROUP:FindByName( "AnapaVityazevo Runway 1" ) + -- self.Airbases.AnapaVityazevo.ZoneRunways[1] = ZONE_POLYGON:New( "AnapaVityazevo Runway 1", AnapaVityazevoRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Batumi + -- local BatumiBoundary = GROUP:FindByName( "Batumi Boundary" ) + -- self.Airbases.Batumi.ZoneBoundary = ZONE_POLYGON:New( "Batumi Boundary", BatumiBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local BatumiRunway1 = GROUP:FindByName( "Batumi Runway 1" ) + -- self.Airbases.Batumi.ZoneRunways[1] = ZONE_POLYGON:New( "Batumi Runway 1", BatumiRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Beslan + -- local BeslanBoundary = GROUP:FindByName( "Beslan Boundary" ) + -- self.Airbases.Beslan.ZoneBoundary = ZONE_POLYGON:New( "Beslan Boundary", BeslanBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local BeslanRunway1 = GROUP:FindByName( "Beslan Runway 1" ) + -- self.Airbases.Beslan.ZoneRunways[1] = ZONE_POLYGON:New( "Beslan Runway 1", BeslanRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Gelendzhik + -- local GelendzhikBoundary = GROUP:FindByName( "Gelendzhik Boundary" ) + -- self.Airbases.Gelendzhik.ZoneBoundary = ZONE_POLYGON:New( "Gelendzhik Boundary", GelendzhikBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local GelendzhikRunway1 = GROUP:FindByName( "Gelendzhik Runway 1" ) + -- self.Airbases.Gelendzhik.ZoneRunways[1] = ZONE_POLYGON:New( "Gelendzhik Runway 1", GelendzhikRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Gudauta + -- local GudautaBoundary = GROUP:FindByName( "Gudauta Boundary" ) + -- self.Airbases.Gudauta.ZoneBoundary = ZONE_POLYGON:New( "Gudauta Boundary", GudautaBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local GudautaRunway1 = GROUP:FindByName( "Gudauta Runway 1" ) + -- self.Airbases.Gudauta.ZoneRunways[1] = ZONE_POLYGON:New( "Gudauta Runway 1", GudautaRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Kobuleti + -- local KobuletiBoundary = GROUP:FindByName( "Kobuleti Boundary" ) + -- self.Airbases.Kobuleti.ZoneBoundary = ZONE_POLYGON:New( "Kobuleti Boundary", KobuletiBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local KobuletiRunway1 = GROUP:FindByName( "Kobuleti Runway 1" ) + -- self.Airbases.Kobuleti.ZoneRunways[1] = ZONE_POLYGON:New( "Kobuleti Runway 1", KobuletiRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- KrasnodarCenter + -- local KrasnodarCenterBoundary = GROUP:FindByName( "KrasnodarCenter Boundary" ) + -- self.Airbases.KrasnodarCenter.ZoneBoundary = ZONE_POLYGON:New( "KrasnodarCenter Boundary", KrasnodarCenterBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local KrasnodarCenterRunway1 = GROUP:FindByName( "KrasnodarCenter Runway 1" ) + -- self.Airbases.KrasnodarCenter.ZoneRunways[1] = ZONE_POLYGON:New( "KrasnodarCenter Runway 1", KrasnodarCenterRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- KrasnodarPashkovsky + -- local KrasnodarPashkovskyBoundary = GROUP:FindByName( "KrasnodarPashkovsky Boundary" ) + -- self.Airbases.KrasnodarPashkovsky.ZoneBoundary = ZONE_POLYGON:New( "KrasnodarPashkovsky Boundary", KrasnodarPashkovskyBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local KrasnodarPashkovskyRunway1 = GROUP:FindByName( "KrasnodarPashkovsky Runway 1" ) + -- self.Airbases.KrasnodarPashkovsky.ZoneRunways[1] = ZONE_POLYGON:New( "KrasnodarPashkovsky Runway 1", KrasnodarPashkovskyRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- local KrasnodarPashkovskyRunway2 = GROUP:FindByName( "KrasnodarPashkovsky Runway 2" ) + -- self.Airbases.KrasnodarPashkovsky.ZoneRunways[2] = ZONE_POLYGON:New( "KrasnodarPashkovsky Runway 2", KrasnodarPashkovskyRunway2 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Krymsk + -- local KrymskBoundary = GROUP:FindByName( "Krymsk Boundary" ) + -- self.Airbases.Krymsk.ZoneBoundary = ZONE_POLYGON:New( "Krymsk Boundary", KrymskBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local KrymskRunway1 = GROUP:FindByName( "Krymsk Runway 1" ) + -- self.Airbases.Krymsk.ZoneRunways[1] = ZONE_POLYGON:New( "Krymsk Runway 1", KrymskRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Kutaisi + -- local KutaisiBoundary = GROUP:FindByName( "Kutaisi Boundary" ) + -- self.Airbases.Kutaisi.ZoneBoundary = ZONE_POLYGON:New( "Kutaisi Boundary", KutaisiBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local KutaisiRunway1 = GROUP:FindByName( "Kutaisi Runway 1" ) + -- self.Airbases.Kutaisi.ZoneRunways[1] = ZONE_POLYGON:New( "Kutaisi Runway 1", KutaisiRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- MaykopKhanskaya + -- local MaykopKhanskayaBoundary = GROUP:FindByName( "MaykopKhanskaya Boundary" ) + -- self.Airbases.MaykopKhanskaya.ZoneBoundary = ZONE_POLYGON:New( "MaykopKhanskaya Boundary", MaykopKhanskayaBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local MaykopKhanskayaRunway1 = GROUP:FindByName( "MaykopKhanskaya Runway 1" ) + -- self.Airbases.MaykopKhanskaya.ZoneRunways[1] = ZONE_POLYGON:New( "MaykopKhanskaya Runway 1", MaykopKhanskayaRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- MineralnyeVody + -- local MineralnyeVodyBoundary = GROUP:FindByName( "MineralnyeVody Boundary" ) + -- self.Airbases.MineralnyeVody.ZoneBoundary = ZONE_POLYGON:New( "MineralnyeVody Boundary", MineralnyeVodyBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local MineralnyeVodyRunway1 = GROUP:FindByName( "MineralnyeVody Runway 1" ) + -- self.Airbases.MineralnyeVody.ZoneRunways[1] = ZONE_POLYGON:New( "MineralnyeVody Runway 1", MineralnyeVodyRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Mozdok + -- local MozdokBoundary = GROUP:FindByName( "Mozdok Boundary" ) + -- self.Airbases.Mozdok.ZoneBoundary = ZONE_POLYGON:New( "Mozdok Boundary", MozdokBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local MozdokRunway1 = GROUP:FindByName( "Mozdok Runway 1" ) + -- self.Airbases.Mozdok.ZoneRunways[1] = ZONE_POLYGON:New( "Mozdok Runway 1", MozdokRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Nalchik + -- local NalchikBoundary = GROUP:FindByName( "Nalchik Boundary" ) + -- self.Airbases.Nalchik.ZoneBoundary = ZONE_POLYGON:New( "Nalchik Boundary", NalchikBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local NalchikRunway1 = GROUP:FindByName( "Nalchik Runway 1" ) + -- self.Airbases.Nalchik.ZoneRunways[1] = ZONE_POLYGON:New( "Nalchik Runway 1", NalchikRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Novorossiysk + -- local NovorossiyskBoundary = GROUP:FindByName( "Novorossiysk Boundary" ) + -- self.Airbases.Novorossiysk.ZoneBoundary = ZONE_POLYGON:New( "Novorossiysk Boundary", NovorossiyskBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local NovorossiyskRunway1 = GROUP:FindByName( "Novorossiysk Runway 1" ) + -- self.Airbases.Novorossiysk.ZoneRunways[1] = ZONE_POLYGON:New( "Novorossiysk Runway 1", NovorossiyskRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- SenakiKolkhi + -- local SenakiKolkhiBoundary = GROUP:FindByName( "SenakiKolkhi Boundary" ) + -- self.Airbases.SenakiKolkhi.ZoneBoundary = ZONE_POLYGON:New( "SenakiKolkhi Boundary", SenakiKolkhiBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local SenakiKolkhiRunway1 = GROUP:FindByName( "SenakiKolkhi Runway 1" ) + -- self.Airbases.SenakiKolkhi.ZoneRunways[1] = ZONE_POLYGON:New( "SenakiKolkhi Runway 1", SenakiKolkhiRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- SochiAdler + -- local SochiAdlerBoundary = GROUP:FindByName( "SochiAdler Boundary" ) + -- self.Airbases.SochiAdler.ZoneBoundary = ZONE_POLYGON:New( "SochiAdler Boundary", SochiAdlerBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local SochiAdlerRunway1 = GROUP:FindByName( "SochiAdler Runway 1" ) + -- self.Airbases.SochiAdler.ZoneRunways[1] = ZONE_POLYGON:New( "SochiAdler Runway 1", SochiAdlerRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- local SochiAdlerRunway2 = GROUP:FindByName( "SochiAdler Runway 2" ) + -- self.Airbases.SochiAdler.ZoneRunways[2] = ZONE_POLYGON:New( "SochiAdler Runway 2", SochiAdlerRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Soganlug + -- local SoganlugBoundary = GROUP:FindByName( "Soganlug Boundary" ) + -- self.Airbases.Soganlug.ZoneBoundary = ZONE_POLYGON:New( "Soganlug Boundary", SoganlugBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local SoganlugRunway1 = GROUP:FindByName( "Soganlug Runway 1" ) + -- self.Airbases.Soganlug.ZoneRunways[1] = ZONE_POLYGON:New( "Soganlug Runway 1", SoganlugRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- SukhumiBabushara + -- local SukhumiBabusharaBoundary = GROUP:FindByName( "SukhumiBabushara Boundary" ) + -- self.Airbases.SukhumiBabushara.ZoneBoundary = ZONE_POLYGON:New( "SukhumiBabushara Boundary", SukhumiBabusharaBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local SukhumiBabusharaRunway1 = GROUP:FindByName( "SukhumiBabushara Runway 1" ) + -- self.Airbases.SukhumiBabushara.ZoneRunways[1] = ZONE_POLYGON:New( "SukhumiBabushara Runway 1", SukhumiBabusharaRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- TbilisiLochini + -- local TbilisiLochiniBoundary = GROUP:FindByName( "TbilisiLochini Boundary" ) + -- self.Airbases.TbilisiLochini.ZoneBoundary = ZONE_POLYGON:New( "TbilisiLochini Boundary", TbilisiLochiniBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local TbilisiLochiniRunway1 = GROUP:FindByName( "TbilisiLochini Runway 1" ) + -- self.Airbases.TbilisiLochini.ZoneRunways[1] = ZONE_POLYGON:New( "TbilisiLochini Runway 1", TbilisiLochiniRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + -- -- Vaziani + -- local VazianiBoundary = GROUP:FindByName( "Vaziani Boundary" ) + -- self.Airbases.Vaziani.ZoneBoundary = ZONE_POLYGON:New( "Vaziani Boundary", VazianiBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local VazianiRunway1 = GROUP:FindByName( "Vaziani Runway 1" ) + -- self.Airbases.Vaziani.ZoneRunways[1] = ZONE_POLYGON:New( "Vaziani Runway 1", VazianiRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + -- + -- + -- + + + -- -- Template + -- local TemplateBoundary = GROUP:FindByName( "Template Boundary" ) + -- self.Airbases.Template.ZoneBoundary = ZONE_POLYGON:New( "Template Boundary", TemplateBoundary ):SmokeZone(POINT_VEC3.SmokeColor.White):Flush() + -- + -- local TemplateRunway1 = GROUP:FindByName( "Template Runway 1" ) + -- self.Airbases.Template.ZoneRunways[1] = ZONE_POLYGON:New( "Template Runway 1", TemplateRunway1 ):SmokeZone(POINT_VEC3.SmokeColor.Red):Flush() + + return self + +end + +--- This module contains the DETECTION classes. +-- +-- === +-- +-- 1) @{Detection#DETECTION_BASE} class, extends @{Base#BASE} +-- ========================================================== +-- The @{Detection#DETECTION_BASE} class defines the core functions to administer detected objects. +-- +-- 1.1) DETECTION_BASE constructor +-- ------------------------------- +-- Construct a new DETECTION_BASE instance using the @{Detection#DETECTION.New}() method. +-- +-- 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. +-- You can specify to apply multiple detection methods. +-- +-- 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. +-- +-- 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. +-- +-- === +-- +-- 2) @{Detection#DETECTION_UNITGROUPS} class, extends @{Detection#DETECTION_BASE} +-- =============================================================================== +-- The @{Detection#DETECTION_UNITGROUPS} class will detect units within the battle zone for a FAC group, +-- 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_UNITGROUPS}. +-- +-- 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. +-- +-- 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 +-- ---------------------------------- +-- Use the methods @{Detection#DETECTION_UNITGROUPS.FlareDetectedUnits}() or @{Detection#DETECTION_UNITGROUPS.SmokeDetectedUnits}() to flare or smoke the detected units when a new detection has taken place. +-- +-- 1.5) Flare or Smoke detected zones +-- ---------------------------------- +-- Use the methods @{Detection#DETECTION_UNITGROUPS.FlareDetectedZones}() or @{Detection#DETECTION_UNITGROUPS.SmokeDetectedZones}() to flare or smoke the detected zones when a new detection has taken place. +-- +-- === +-- +-- @module Detection +-- @author Mechanic : Concept & Testing +-- @author FlightControl : Design & Programming + + + +--- DETECTION_BASE class +-- @type DETECTION_BASE +-- @field Group#GROUP FACGroup The GROUP in the Forward Air Controller role. +-- @field DCSTypes#Distance DetectionRange The range till which targets are accepted to be detected. +-- @field #DETECTION_BASE.DetectedSets DetectedSets A list of @{Set#SET_BASE}s containing the objects in each set that were detected. The base class will not build the detected sets, but will leave that to the derived classes. +-- @extends Base#BASE +DETECTION_BASE = { + ClassName = "DETECTION_BASE", + DetectedSets = {}, + DetectedObjects = {}, + FACGroup = nil, + DetectionRange = nil, +} + +--- @type DETECTION_BASE.DetectedSets +-- @list + + +--- @type DETECTION_BASE.DetectedZones +-- @list + + +--- DETECTION constructor. +-- @param #DETECTION_BASE self +-- @param Group#GROUP FACGroup The GROUP in the Forward Air Controller role. +-- @param DCSTypes#Distance DetectionRange The range till which targets are accepted to be detected. +-- @return #DETECTION_BASE self +function DETECTION_BASE:New( FACGroup, DetectionRange ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + self.FACGroup = FACGroup + self.DetectionRange = DetectionRange + + self:InitDetectVisual( false ) + self:InitDetectOptical( false ) + self:InitDetectRadar( false ) + self:InitDetectRWR( false ) + self:InitDetectIRST( false ) + self:InitDetectDLINK( false ) + + 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 + +--- Gets the FAC group. +-- @param #DETECTION_BASE self +-- @return Group#GROUP self +function DETECTION_BASE:GetFACGroup() + self:F2() + + return self.FACGroup +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 Set#SET_BASE +function DETECTION_BASE:GetDetectedSet( Index ) + + local DetectionSet = self.DetectedSets[Index] + if DetectionSet then + return DetectionSet + end + + return nil +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.DetectedObjects = {} + self.DetectedSets = {} + self.DetectedZones = {} + + if self.FACGroup:IsAlive() then + local FACGroupName = self.FACGroup:GetName() + + local FACDetectedTargets = self.FACGroup:GetDetectedTargets( + self.DetectVisual, + self.DetectOptical, + self.DetectRadar, + self.DetectIRST, + self.DetectRWR, + self.DetectDLINK + ) + + for FACDetectedTargetID, FACDetectedTarget in pairs( FACDetectedTargets ) do + local FACObject = FACDetectedTarget.object -- DCSObject#Object + self:T2( FACObject ) + + if FACObject and FACObject:isExist() and FACObject.id_ < 50000000 then + + local FACDetectedObjectName = FACObject:getName() + + local FACDetectedObjectPositionVec3 = FACObject:getPoint() + local FACGroupPositionVec3 = self.FACGroup:GetPointVec3() + + local Distance = ( ( FACDetectedObjectPositionVec3.x - FACGroupPositionVec3.x )^2 + + ( FACDetectedObjectPositionVec3.y - FACGroupPositionVec3.y )^2 + + ( FACDetectedObjectPositionVec3.z - FACGroupPositionVec3.z )^2 + ) ^ 0.5 / 1000 + + self:T( { FACGroupName, FACDetectedObjectName, Distance } ) + + if Distance <= self.DetectionRange then + + if not self.DetectedObjects[FACDetectedObjectName] then + self.DetectedObjects[FACDetectedObjectName] = {} + end + self.DetectedObjects[FACDetectedObjectName].Name = FACDetectedObjectName + self.DetectedObjects[FACDetectedObjectName].Visible = FACDetectedTarget.visible + self.DetectedObjects[FACDetectedObjectName].Type = FACDetectedTarget.type + self.DetectedObjects[FACDetectedObjectName].Distance = FACDetectedTarget.distance + else + -- if beyond the DetectionRange then nullify... + if self.DetectedObjects[FACDetectedObjectName] then + self.DetectedObjects[FACDetectedObjectName] = 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 ... + self:T( { "Sorting DetectedObjects table:", self.DetectedObjects } ) + table.sort( self.DetectedObjects, function( a, b ) return a.Distance < b.Distance end ) + self:T( { "Sorted Targets Table:", self.DetectedObjects } ) + + -- Now group the DetectedObjects table into SET_BASEs, evaluating the DetectionZoneRange. + + if self.DetectedObjects then + self:CreateDetectionSets() + end + + + end +end + +--- @type DETECTION_UNITGROUPS.DetectedSets +-- @list +-- + + +--- @type DETECTION_UNITGROUPS.DetectedZones +-- @list +-- + + +--- DETECTION_UNITGROUPS class +-- @type DETECTION_UNITGROUPS +-- @param DCSTypes#Distance DetectionZoneRange The range till which targets are grouped upon the first detected target. +-- @field #DETECTION_UNITGROUPS.DetectedSets DetectedSets A list of @{Set#SET_UNIT}s containing the units in each set that were detected within a DetectionZoneRange. +-- @field #DETECTION_UNITGROUPS.DetectedZones DetectedZones A list of @{Zone#ZONE_UNIT}s containing the zones of the reference detected units. +-- @extends Detection#DETECTION_BASE +DETECTION_UNITGROUPS = { + ClassName = "DETECTION_UNITGROUPS", + DetectedZones = {}, +} + + + +--- DETECTION_UNITGROUPS constructor. +-- @param Detection#DETECTION_UNITGROUPS self +-- @param Group#GROUP FACGroup The GROUP in the Forward Air Controller role. +-- @param DCSTypes#Distance DetectionRange The range till which targets are accepted to be detected. +-- @param DCSTypes#Distance DetectionZoneRange The range till which targets are grouped upon the first detected target. +-- @return Detection#DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:New( FACGroup, DetectionRange, DetectionZoneRange ) + + -- Inherits from DETECTION_BASE + local self = BASE:Inherit( self, DETECTION_BASE:New( FACGroup, DetectionRange ) ) + self.DetectionZoneRange = DetectionZoneRange + + self:Schedule( 10, 30 ) + + return self +end + +--- Get the detected @{Zone#ZONE_UNIT}s. +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS.DetectedZones DetectedZones +function DETECTION_UNITGROUPS:GetDetectedZones() + + local DetectedZones = self.DetectedZones + return DetectedZones +end + +--- Get the amount of @{Zone#ZONE_UNIT}s with detected units. +-- @param #DETECTION_UNITGROUPS self +-- @return #number Count +function DETECTION_UNITGROUPS:GetDetectedZoneCount() + + local DetectedZoneCount = #self.DetectedZones + return DetectedZoneCount +end + +--- Get a SET of detected objects using a given numeric index. +-- @param #DETECTION_UNITGROUPS self +-- @param #number Index +-- @return Zone#ZONE_UNIT +function DETECTION_UNITGROUPS:GetDetectedZone( Index ) + + local DetectedZone = self.DetectedZones[Index] + if DetectedZone then + return DetectedZone + end + + return nil +end + +--- Smoke the detected units +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:SmokeDetectedUnits() + self:F2() + + self._SmokeDetectedUnits = true +end + +--- Flare the detected units +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:SmokeDetectedUnits() + self:F2() + + self._FlareDetectedUnits = true +end + +--- Smoke the detected zones +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:SmokeDetectedZones() + self:F2() + + self._SmokeDetectedZones = true +end + +--- Flare the detected zones +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:FlareDetectedZones() + self:F2() + + self._FlareDetectedZones = true +end + + +--- Make a DetectionSet table. This function will be overridden in the derived clsses. +-- @param #DETECTION_UNITGROUPS self +-- @return #DETECTION_UNITGROUPS self +function DETECTION_UNITGROUPS:CreateDetectionSets() + self:F2() + + for DetectedUnitName, DetectedUnitData in pairs( self.DetectedObjects ) do + self:T( DetectedUnitData.Name ) + local DetectedUnit = UNIT:FindByName( DetectedUnitData.Name ) -- Unit#UNIT + if DetectedUnit and DetectedUnit:IsAlive() then + self:T( DetectedUnit:GetName() ) + if #self.DetectedSets == 0 then + self:T( { "Adding Unit Set #", 1 } ) + self.DetectedZones[1] = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) + self.DetectedSets[1] = SET_UNIT:New() + self.DetectedSets[1]:AddUnit( DetectedUnit ) + else + local AddedToSet = false + for DetectedZoneIndex = 1, #self.DetectedZones do + self:T( "Detected Unit Set #" .. DetectedZoneIndex ) + local DetectedUnitSet = self.DetectedSets[DetectedZoneIndex] -- Set#SET_BASE + DetectedUnitSet:Flush() + local DetectedZone = self.DetectedZones[DetectedZoneIndex] -- Zone#ZONE_UNIT + if DetectedUnit:IsInZone( DetectedZone ) then + self:T( "Adding to Unit Set #" .. DetectedZoneIndex ) + DetectedUnitSet:AddUnit( DetectedUnit ) + AddedToSet = true + end + end + if AddedToSet == false then + local DetectedZoneIndex = #self.DetectedZones + 1 + self:T( "Adding new zone #" .. DetectedZoneIndex ) + self.DetectedZones[DetectedZoneIndex] = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) + self.DetectedSets[DetectedZoneIndex] = SET_UNIT:New() + self.DetectedSets[DetectedZoneIndex]:AddUnit( DetectedUnit ) + end + end + end + end + + -- Now all the tests should have been build, now make some smoke and flares... + + for DetectedZoneIndex = 1, #self.DetectedZones do + local DetectedUnitSet = self.DetectedSets[DetectedZoneIndex] -- Set#SET_BASE + local DetectedZone = self.DetectedZones[DetectedZoneIndex] -- Zone#ZONE_UNIT + self:T( "Detected Set #" .. DetectedZoneIndex ) + DetectedUnitSet:ForEachUnit( + --- @param Unit#UNIT DetectedUnit + function( DetectedUnit ) + self:T( DetectedUnit:GetName() ) + if self._FlareDetectedUnits then + DetectedUnit:FlareRed() + end + if self._SmokeDetectedUnits then + DetectedUnit:SmokeRed() + end + end + ) + if self._FlareDetectedZones then + DetectedZone:FlareZone( POINT_VEC3.SmokeColor.White, 30, math.random( 0,90 ) ) + end + if self._SmokeDetectedZones then + DetectedZone:SmokeZone( POINT_VEC3.SmokeColor.White, 30 ) + end + end + +end + + +--- This module contains the FAC classes. +-- +-- === +-- +-- 1) @{Fac#FAC_BASE} class, extends @{Base#BASE} +-- ============================================== +-- The @{Fac#FAC_BASE} class defines the core functions to report detected objects to clients. +-- Reportings can be done in several manners, and it is up to the derived classes if FAC_BASE to model the reporting behaviour. +-- +-- 1.1) FAC_BASE constructor: +-- ---------------------------- +-- * @{Fac#FAC_BASE.New}(): Create a new FAC_BASE instance. +-- +-- 1.2) FAC_BASE reporting: +-- ------------------------ +-- Derived FAC_BASE classes will reports detected units using the method @{Fac#FAC_BASE.ReportDetected}(). This method implements polymorphic behaviour. +-- +-- The time interval in seconds of the reporting can be changed using the methods @{Fac#FAC_BASE.SetReportInterval}(). +-- To control how long a reporting message is displayed, use @{Fac#FAC_BASE.SetReportDisplayTime}(). +-- Derived classes need to implement the method @{Fac#FAC_BASE.GetReportDisplayTime}() to use the correct display time for displayed messages during a report. +-- +-- Reporting can be started and stopped using the methods @{Fac#FAC_BASE.StartReporting}() and @{Fac#FAC_BASE.StopReporting}() respectively. +-- If an ad-hoc report is requested, use the method @{Fac#FAC_BASE#ReportNow}(). +-- +-- The default reporting interval is every 60 seconds. The reporting messages are displayed 15 seconds. +-- +-- === +-- +-- 2) @{Fac#FAC_REPORTING} class, extends @{Fac#FAC_BASE} +-- ====================================================== +-- The @{Fac#FAC_REPORTING} class implements detected units reporting. Reporting can be controlled using the reporting methods available in the @{Fac#FAC_BASE} class. +-- +-- 2.1) FAC_REPORTING constructor: +-- ------------------------------- +-- The @{Fac#FAC_REPORTING.New}() method creates a new FAC_REPORTING instance. +-- +-- === +-- +-- @module Fac +-- @author Mechanic, Prof_Hilactic, FlightControl : Concept & Testing +-- @author FlightControl : Design & Programming + + + +--- FAC_BASE class. +-- @type FAC_BASE +-- @field Set#SET_CLIENT ClientSet The clients to which the FAC will report to. +-- @field Detection#DETECTION_BASE Detection The DETECTION_BASE object that is used to report the detected objects. +-- @extends Base#BASE +FAC_BASE = { + ClassName = "FAC_BASE", + ClientSet = nil, + Detection = nil, +} + +--- FAC constructor. +-- @param #FAC_BASE self +-- @param Set#SET_CLIENT ClientSet +-- @param Detection#DETECTION_BASE Detection +-- @return #FAC_BASE self +function FAC_BASE:New( ClientSet, Detection ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) -- Fac#FAC_BASE + + self.ClientSet = ClientSet + self.Detection = Detection + + self:SetReportInterval( 60 ) + self:SetReportDisplayTime( 15 ) + + return self +end + +--- Set the reporting time interval. +-- @param #FAC_BASE self +-- @param #number ReportInterval The interval in seconds when a report needs to be done. +-- @return #FAC_BASE self +function FAC_BASE:SetReportInterval( ReportInterval ) + self:F2() + + self._ReportInterval = ReportInterval +end + + +--- Set the reporting message display time. +-- @param #FAC_BASE self +-- @param #number ReportDisplayTime The display time in seconds when a report needs to be done. +-- @return #FAC_BASE self +function FAC_BASE:SetReportDisplayTime( ReportDisplayTime ) + self:F2() + + self._ReportDisplayTime = ReportDisplayTime +end + +--- Get the reporting message display time. +-- @param #FAC_BASE self +-- @return #number ReportDisplayTime The display time in seconds when a report needs to be done. +function FAC_BASE:GetReportDisplayTime() + self:F2() + + return self._ReportDisplayTime +end + +--- Reports the detected items to the @{Set#SET_CLIENT}. +-- @param #FAC_BASE self +-- @param Set#SET_BASE DetectedSets The detected Sets created by the @{Detection#DETECTION_BASE} object. +-- @return #FAC_BASE self +function FAC_BASE:ReportDetected( DetectedSets ) + self:F2() + + + +end + +--- Schedule the FAC reporting. +-- @param #FAC_BASE self +-- @param #number DelayTime The delay in seconds to wait the reporting. +-- @param #number ReportInterval The repeat interval in seconds for the reporting to happen repeatedly. +-- @return #FAC_BASE self +function FAC_BASE:Schedule( DelayTime, ReportInterval ) + self:F2() + + self._ScheduleDelayTime = DelayTime + + self:SetReportInterval( ReportInterval ) + + self.FacScheduler = SCHEDULER:New(self, self._FacScheduler, { self, "Fac" }, self._ScheduleDelayTime, self._ReportInterval ) + return self +end + +--- Report the detected @{Unit#UNIT}s detected within the @{DetectION#DETECTION_BASE} object to the @{Set#SET_CLIENT}s. +-- @param #FAC_BASE self +function FAC_BASE:_FacScheduler( SchedulerName ) + self:F2( { SchedulerName } ) + + self.ClientSet:ForEachClient( + --- @param Client#CLIENT Client + function( Client ) + if Client:IsAlive() then + local DetectedSets = self.Detection:GetDetectedSets() + return self:ReportDetected( Client, DetectedSets ) + end + end + ) + + return true +end + +-- FAC_REPORTING + +--- FAC_REPORTING class. +-- @type FAC_REPORTING +-- @field Set#SET_CLIENT ClientSet The clients to which the FAC will report to. +-- @field Detection#DETECTION_BASE Detection The DETECTION_BASE object that is used to report the detected objects. +-- @extends #FAC_BASE +FAC_REPORTING = { + ClassName = "FAC_REPORTING", +} + + +--- FAC_REPORTING constructor. +-- @param #FAC_REPORTING self +-- @param Set#SET_CLIENT ClientSet +-- @param Detection#DETECTION_BASE Detection +-- @return #FAC_REPORTING self +function FAC_REPORTING:New( ClientSet, Detection ) + + -- Inherits from FAC_BASE + local self = BASE:Inherit( self, FAC_BASE:New( ClientSet, Detection ) ) -- #FAC_REPORTING + + self:Schedule( 5, 60 ) + return self +end + + +--- Reports the detected items to the @{Set#SET_CLIENT}. +-- @param #FAC_REPORTING self +-- @param Client#CLIENT Client The @{Client} object to where the report needs to go. +-- @param Set#SET_BASE DetectedSets The detected Sets created by the @{Detection#DETECTION_BASE} object. +-- @return #boolean Return true if you want the reporting to continue... false will cancel the reporting loop. +function FAC_REPORTING:ReportDetected( Client, DetectedSets ) + self:F2( Client ) + + local DetectedMsg = {} + for DetectedUnitSetID, DetectedUnitSet in pairs( DetectedSets ) do + local UnitSet = DetectedUnitSet -- Set#SET_UNIT + local MT = {} -- Message Text + local UnitTypes = {} + for DetectedUnitID, DetectedUnitData in pairs( UnitSet:GetSet() ) do + local DetectedUnit = DetectedUnitData -- Unit#UNIT + local UnitType = DetectedUnit:GetTypeName() + if not UnitTypes[UnitType] then + UnitTypes[UnitType] = 1 + else + UnitTypes[UnitType] = UnitTypes[UnitType] + 1 + end + end + for UnitTypeID, UnitType in pairs( UnitTypes ) do + MT[#MT+1] = UnitType .. " of " .. UnitTypeID + end + local MessageText = table.concat( MT, ", " ) + DetectedMsg[#DetectedMsg+1] = " - Group #" .. DetectedUnitSetID .. ": " .. MessageText + end + local FACGroup = self.Detection:GetFACGroup() + FACGroup:MessageToClient( "Reporting detected target groups:\n" .. table.concat( DetectedMsg, "\n" ), self:GetReportDisplayTime(), Client ) + + return true +end + + +BASE:TraceOnOff( false ) env.info( '*** MOOSE INCLUDE END *** ' ) diff --git a/Moose Mission Setup/Moose_Create.bat b/Moose Mission Setup/Moose_Create.bat index 09be17acc..a6ebea40e 100644 --- a/Moose Mission Setup/Moose_Create.bat +++ b/Moose Mission Setup/Moose_Create.bat @@ -40,10 +40,13 @@ COPY /b Moose.lua + "Moose Create Static\Moose_Static_Loader.lua" Moose. COPY /b Moose.lua + %1\Routines.lua Moose.lua COPY /b Moose.lua + %1\Base.lua Moose.lua +COPY /b Moose.lua + %1\Object.lua Moose.lua +COPY /b Moose.lua + %1\Identifiable.lua Moose.lua +COPY /b Moose.lua + %1\Positionable.lua Moose.lua +COPY /b Moose.lua + %1\Controllable.lua Moose.lua COPY /b Moose.lua + %1\Scheduler.lua Moose.lua COPY /b Moose.lua + %1\Event.lua Moose.lua COPY /b Moose.lua + %1\Menu.lua Moose.lua -COPY /b Moose.lua + %1\Controllable.lua Moose.lua COPY /b Moose.lua + %1\Group.lua Moose.lua COPY /b Moose.lua + %1\Unit.lua Moose.lua COPY /b Moose.lua + %1\Zone.lua Moose.lua diff --git a/Moose Test Missions/Moose_Test_AIBALANCER/Moose_Test_AIBALANCER.miz b/Moose Test Missions/Moose_Test_AIBALANCER/Moose_Test_AIBALANCER.miz index d7d25cb116dc289ca19214c49e911d4fb83ee65e..94e4c40890d5169011c2d53282ace0fb9a64d5fb 100644 GIT binary patch delta 143848 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

qiSi6xD|m2@FPpk#Cy%)swmg4GjVFIw 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 M0{{R+XaE2J0I&E=mH+?% diff --git a/Moose Test Missions/Moose_Test_AIRBASEPOLICE/Moose_Test_AIRBASEPOLICE.miz b/Moose Test Missions/Moose_Test_AIRBASEPOLICE/Moose_Test_AIRBASEPOLICE.miz index 6c59f6f1ffea04c74ad5f7a7366b9345a3e9a40c..f22c23be21915dbe88728540fd13d527e748bed6 100644 GIT binary patch delta 143923 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 delta 787 zcmdnHjC=1zrVW{5+duAPsu0@VxPz&Har*8{Oajv@&oEW-E#1kU{Ed-;p^lY-L5yL# z;zcHj`lTTU^Bx%p*s^!lOZ*IC-?%I#+}7ohLt~f+cL;a&id(CUI+-U5?cOwZ@0xG- zua|A=Ug+rhO0~;2|JmM|A9)_{_c&+V_;A(r*9VifMx9UiwL?b#neYsK_51aH=^O6# z)aM+ywO*kmuU&SIn3D$E_a0- z>cBLq^@4lu-Ck|!-=($n`ThDm#+3`I^7S@%shgSb?UrR&!K|U%tC@N`%e~CU+B8u9 zf>f(Zrrj}y zh~>VE+>#rfQM;I;Ivr!ToS6`?bjFn%r41rY%Vu^qN83j4@CXb{v3l7w>xl0W!4G?W z%zuy`qF=Psrr{5fmLFImB4jYDW0gm&yRNUX;56Q-&lyhj*LR9{nI6L+ot}?pL%XuaQ?)9tO4H4EFuikHGG&(O|QDZB(S+sOqX-|fs0Hc+nIcs>a(|h zKEu?`JiYi5lN56_Fttp$#H2l456EM>tTDZR2b1LVEf;|a3z)j3n4Ps4rr)^4q%MP+ z!Wh5+nBaimtQI)EK{VxF1RC>Q2P7ggeeOjjb&w0Bn0D$;pLT)CnJLw5`t1u$a?^KQ zWKv`PWyUc5;YB7RZml^C4EY5mnfZCe)8AiW(o*SM#K2IVSd^NPUs{}69N^8$2C|43 N2y>Yk7_63pcmTPSR>%MV diff --git a/Moose Test Missions/Moose_Test_BASE/Moose_Test_AIRBLANCER_with_Moose.miz b/Moose Test Missions/Moose_Test_BASE/Moose_Test_AIRBLANCER_with_Moose.miz index b50ef932df1ef950a216c365f1c3c93e68c60472..1d19f356a61634e4ff8101db22d5699a13ab610e 100644 GIT binary patch delta 143692 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 PjnAEOb0d1?Gapc2 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%0A@!=4`d1$(PKr!2U`7|B3gVB9#S`+B*HacdvZ{ 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 diff --git a/Moose Test Missions/Moose_Test_BASE/Moose_Test_AIRBLANCER_without_Moose.miz b/Moose Test Missions/Moose_Test_BASE/Moose_Test_AIRBLANCER_without_Moose.miz index 15ba5dbfaeeb557ed3d4bebf019a74a81b2822cf..4d06d7f0f53ddc736ab458bc056465c9cc3760c6 100644 GIT binary patch delta 143662 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 delta 644 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 delta 635 zcmV->0)+k1>k0Fg0k8@f67FNzNTs<4WAp(40Dc7k02Tn3P;>$qf2CBxj@mE~J%hwQ zjC@%e(Xgb|9wKp|KvzfwszMJ{ceOH!4UrOiWjno8{rB2V3T8K3fqIEDo;UN}j6K7| z&nOpMVz}w|`>Pf9+lT;b|1VAJvh)ZXr`zz>eCeF+AP7qlHL|Ds%R)-+>){q2^!@ zc_mVp8k1fZ0O|zVDC^4DuG&X?X1tns0BD0qq-CX2=D~`YN(qNfN@~&rMmXvZ2_lKE zc6c;+7n5Y~e$m4N8lWK}uDUE#@hLA@r~(>?KezBs&Ot~6e<5D~I72;xIWS?NopVrt zd9)OP>9D6RqsEgUh@ueYOaxrX61?l!IVJasmcD_+<*J*;EeX|{DTDnDM1`aow|Q_| zWE)phR1^X6Np0aS;}}F<{4MamR4;R_ZHJGluaMn@UL?Csw-c_ERDjV`Rz>D-)X_8( z!CfZwkJNSTe}#58cTE=@2g@#MMyGkq9M`sgr#0zyov%4Bc{XR14Ws{_hU9hR*iK=p z@@J!meme|NgF98#;KD(74B=)$t*PJCOJ2slrhBu$p80Gt{VIBSYV-Pf5cq(Plg&KY zDw?vjSaXiSsLC&dwv~EZrSsJ+SfqadP)h>@6aWAKw~j;tqAw5bW7tTgxd&tP0RRAg z1pt>nbOJR6Pe-+n1DAPp0zCsL8UUBMbOJI1ZYuzn?sNh&1I;l2mm_roLIXWB0GDWW V0!0J0MF5wubpjg(XGj15007`G9oGN= diff --git a/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz b/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz index 47bb18b13c86977d88c35f791411b6ce8bc4d393..68b9d0b7be9d6598eafc12ea967cfa73d307fa1e 100644 GIT binary patch delta 144056 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 z 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

9_i6si^Lf`wm7^nZKd7<~Lb=QcTisZG)P_0&w7 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 diff --git a/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION.lua b/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION.lua index 39698124e..d98bc2215 100644 --- a/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION.lua +++ b/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION.lua @@ -1,5 +1,5 @@ local FACGroup = GROUP:FindByName( "FAC Group" ) -local FACDetection = DETECTION_BASE:New( FACGroup, 1000, 250 ):InitDetectIRST( true ) +local FACDetection = DETECTION_UNITGROUPS:New( FACGroup, 1000, 250 ):SmokeDetectedZones():FlareDetectedUnits() diff --git a/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION.miz b/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION.miz index 5135030a6f397a129355f526876608740374439e..366bf2c74d182bd165efe60c6f244a3715a23ee8 100644 GIT binary patch delta 156646 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

u;s8x%>POxAxu=Jupc5HI(S?Dq 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 L007hL0ssI2um4Cf delta 6747 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 U0GfIQB*nNu1OV7z|NZs90OCThdH?_b diff --git a/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz b/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz index b4c142eb39005f98cac9c191c23450d309839f7d..c9e9d4835c9f5fda1fae2e57305abb234ee1ef8b 100644 GIT binary patch delta 143700 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 ab5KhK1^@s601N;O08Rq{09EP%0002=6E1}S diff --git a/Moose Test Missions/Moose_Test_PATROLZONE/MOOSE_Test_PATROLZONE.miz b/Moose Test Missions/Moose_Test_PATROLZONE/MOOSE_Test_PATROLZONE.miz index 90f46503d5baf4fb3b78c80d318aa297c5b89e9a..2ccdc62a588d316eb8df24137108f7966240ff46 100644 GIT binary patch delta 143658 zcmV(#K;*xhmI3+d39w8U4{=7>NJnjWJW?zI0NL~mlUo=Yf9xG;Qya_iGpTz2VS+0q z$zIm7h+k4pNP-Q1ro!O>ey)T#)S_L%#*$XqT>+Ad{Py%Q=N>u$W0IKX2fIBz-90@$ zJu^MWM#D=#9`=%^Xgq!TRO}rb9BqrE%hUF6U%ud+{iGZ8#aRG(HpJ;qKm6i{ zU+fIK{c(uzUvBi9|2FPNSs8|Cz45S%teQe55WIzAg-CF1ZB6_fq;WFNM4F8Aco<~} z6@MBe;TTX|U@*=vl2p9y$LAM$HyP$>(g!kB$SlgYf73Kc_o6Hd&ZF1K_4Y70>qlX; z7xc5JrPys>=V{Q*MbZ;{J4eS_#LRbi{FI_{FcXWQOUQIYm<$`a=w1ZF^GM_uQ5G3Y ze-QjLNq>&g4Cq3(bvr2@)+L>d<9-ORPKS6r^v~C4N{aiC$Ng+gK)TZb0k1KRf^6cPP;(E%D58uL_Qfs3MBr$Ay$dNDjLNQ zQC89@AE!gXC63$A!UcFrw} z#9&EiqojCFaIna!==M2EQmFrPEYndRoJk`Cand;G$J6LELrAA&B*`$^h1Vm6XB$g? zf7Wja0fZG5a-rx&0>P>e`XKcXUNhhe?|mTUiD3e!J{Uy99ISf~gy1X^kw&9_(2YdW z4^bJU7mzAXA*W`E1zD-G$qKX7A~yvHiVoH?PL_RRLo|p?gKP|nqOyb3{fW3r($ASd zn;@+0mq>xCzi6sJPTT2xL*-h~r?Hhj}jpgD8BiBh| z4o04EtrPiq)IMzxId&jWn!z~B#aRR<$3%X(t2Bl70DXVl)uy$ih+OMNvrr>tf6X?V zq+3X117+PdS^}!EkaU(L{U{hVS}j}ikj#S6Ls_qse-3WLBbn>%i(7;bT~;^9o3hBQ zW%2+=l}EdOw|FdWW0A7Wtfj|T;OY_&R3D%KFLD{Dr_^OSK4WdIe~!1opN|SvDX?4G0n+jCGycv5{3GRgVn_TFeMAt3 zQ3xIn=&1rwN?BJ?JCPD zl6zGW>AeDuQ>+li>X4**f8KH(P-)z@mDTiXIGtml4}-M`?B9L)we{I;r=-k-ksZTmTJyYNS`B3CAM7=&>!oKH*=dJaVEh`|g8=BCHV z{+>;ap%y&`0HK$id6eEpQN9SRw!hx~^>6E_?e85YdxU7y+TXM2f9&r)oh45Xg^b_?w zy^&62F6QKhX1H-Kf3AW|K#*(@VP-QD)f32B?lH#Zcv{=}E zC&ojdJZ;tf%QAPA%o9&c6=E6bepdRb(JmxA!0 zz?Y%mWwD5rN|{xHW63iLo$;1ViGDyA_ zVN4uCP-zOoe;XK4hA}*l{ZcHINQ31kFvhur1i*zqe!ZCk@vS&*0+Pp>b&VovkeIqg z7%vPvh~!T_B6y8xjDWwNDY8Ux9|l<$Z%{-w6iqko5%%vzTj|oF(NX;{wc^n@CwL4p zQ&c|bVZH>=MzPY8)E^=iRR*vO#O^|9NOh$UT*^=Am{>&teck@ql*DEt@HV8Lsi8Zsu)h*d~3d z(y8g+R!8fL>uBB8(OpX;6DB5MvPk)48Q;!cUpR^fqkeRlj3E=ELo&3)a|i`rf=0p- zg-=sVf5tgOfNc=1FpRqK02&AdeX)pHj5!L}J5S1IvPr4b#n9UL9{i+%;G8IKND^LWlKD#H&RM{7(J9@{*rVm!JXxpXf>?v zq|kUl&LCt=JqhX+d%ip!gQj}TR=Fdi zFos$Q(mkm00)LOppn|=B{S;F)XMZB!r}BMD?=$(GN&~GCrIafi&D9Po<|#t4Vx&&^ ze|@6fr~E#xmaRLV%NIdfFtnwH4eg0ki~-5&GU838t_(<4o}qee)K~O<1sN^jnp8Xg z=x}NMiGG^?qtp5aH10~8=zl*9;~bhyfwXD1%(f^A;*@klGCYS=%RuPW*ayCfngXT? ztO?RoryxwnL-&veC5Ego9tCuhtjSoqe=%?ZEXTu#(sa`;Qe$Di_R{#=m3iGo z1>No%sskU!5O|wl4-*C53;30xuYNwn;S@ah0{eC_WY8Z>XnyTsXYkTqURU9py`K(` zY@Oq~hYZ*~;}edC+eI&pc>aguJskdW{ICIk7>vKR;`1~ZT}U6kd`6R03K_K#e~N+; zP6z>{s=l&G6t|^fn%F76T*GpKEwo!SSQqqjPn>8ZTgj?4Og}k+#8*H30(#c1y;rK^ z=dlS^DQpxO=fDH@)F8%D1xgk{m^4Hb9#SMj9z|d^DQv)_*FIVYEKQ#e<6hhihB#I} zk8=>bqzV69ztz zEg@9=!7?R@g@NGxhP0Fd{HUR{Mb4?LfPb_|AZa~OIm@sV?Cyp(6kZF3 z*^1B;ngNu|Xb|>dq<~lx~LJEFn zp0XB?rp(4JKJbyb856ad#|BTcV@4nqwctDr?Xx>#6C zZ_`13l&4se-86#EkD4lbe;)K$(ib5FQ&h#O*};nP&A$iE#wdn~JB{#3D8mlh!>`(% zuwkvLD50+6FvlS3x_E|^iC+7Kzy6{vu-6H4m;eNfg?{2kk7SFk1DF_9F_P|+aT9v z87?DRGIV7#u2i}?#|x-x*L{a+YfW;=kP~9Z7`{ak3rd2^l zK~2+QI{Z-8w7C4sHZ4}!?V1+keVC>NjJ{3NGK`DOtFFb|rLh=p#RgMo1LZLlggO2- zh7f1?N(4APOKCw5f8rnTW6~&$1*sgtLTQsxPO&P;);B4liLv@T;g|yqpJ|~MEMt<4 znee-@6KeK4(S@ioh>K#GR7 za!?{k=~jzO>L_B`^B3(l^w1p@-BEcKl)@~n615gnQl>7OTh%&qdmYU$m`c+FIGZ0* zkwrn(sB)N+6_&5nUJ1%wEi!4ityjgD$~$BI7wMAb3(|n>8>}hFsC&2F_^o6d4Sy-b`3`F_4Sw8OJhB<16MlE4-stORE>Z2M>+1ydP@COTH z>4b^ge^GfrLRC0dui79S?vDp-vsC4@Bmh(DD8${1&=*{QSMEotUAIuiZA^Q|NzR^$ z7L*|lVgHxzHGZkbF_MUp4lTNIp=JDK@l++-yKHBw3swebn!HEIx0-L4eB$rWL>Ep1ae-0vijwYTeui3fH3?nOhCQl`hbGC{O zPxk8us>0gLS3&3mSbh?;_X=^Gr3bTdjs6r@A4&rca+GM!YL^hXKJ1y%C;rh{05fj+ z5F~kz?qz5ACQiHkh&`M~qn2^zfga$j)*-!Ux5uGSv0+v}`ELrul0j4BArZiG(!?|O zf1NxzA^t(U(AwgR9UeWYqS|CJPET2F0kH<0_up^Ga@d6BYC}_|tT{z|ikzR>AU!@X znHANimT`2~e~pI3KHsrR&G=Px(?0k+bQ#KC~5rSe_%jmsu&X_hw$j^nmdQY5iCxER95gm&W?lZ zGje7BgY%BPIK#nd!z29#X)wqX0yX?dy-Dq2YRz%1Cb9Df`3C;T-`1uOmaBR*1|sMnMIV4$)T1{DN+gM$iwdTA~iOC@DniGn=Wn+LNcv_f^Lf@@bwLbji#)9_Z>nQvP ziYq2uME#gyWg>hS@#Fi_P!SdpE}?bCaFi29)#mMJ1Rl^1m|l%kw{#7SY(uGlQny#I z*=e)Q7D|FeR0VOAulWE&{aPk9t(> zQi`Ze>DTev=Jef}4Dl#L4afSVbPmfy&9X+}IGdmbK}&epKjYk?FwtgzhMocQ9fJc$ zTpGmzedE=yMtTNO<%?(df7g%ik-Bth6snvRD z4<(7A@#(dk${sv(dY#HHr<^Ib_4Dz)6bW^)5NUA zQ%ck_%+*b$BP!x8<$G+;L+FK}-v5=$dHLPrJW7w#`R;KZ#N#aLaK4(yp&9RSa!8RT z%;0V^4N@zjrRMPff0Y?wD0V0p>ogV>S7Ff$#DF}D-07}GH4danOUlI zdIA!A%zRvD5zmtlu2e#Q0^Pb7tLehH1H&UqN3ba71k6WUu$0U@e<~DT*`ka9#wk?$14+eT_TX3- z?uu4UMZNo~VTai|`W7aBV%IMCp(jNBlUstq z_l@xh6Y+A6e`B(?WM$LkC?;NSrtbxV7g#ipGQMgC zf|}jWYT3OD%S!o9=IlC@BhS_p+7NE01Va=#Jp^sv~lsIr{4;&fy`Ib_Z=Qp>8S3a;m0c ze`qByrDfD_N!|RL%6o}zYlp6w_=l~!F$U}=L|B^SA;ld^pssD znT_a2?+!lfZsDHb^CSVwI~(WVxiCEip9Ss29(9_l?q7vppLmROI3GHn;%q;oTO-TmH>vHXce8nGDYl(oi(AX&zvUKbSxfBp9M zHQpD%@RrsH2tA>zF#BbagdUBtRh3Wj=~H|{9ALA)inEy+Xe*Gh2BV96wS{$^1|?Bx@OW1ff0?oI+t|S@ zTLP@|Y1Ar{p^D%h#DQP!VE2g&gWX{F9$N* zbk5>2lofbUa!txxk}FRAG(pJ9vpyyyXnh!>&T3xq@qkyv8EcHLf9##nsHlP8qoe&F zX@R%$y^pG$-Ggs8jZ&sN4N^m$#;BnW(GZ!_yhg}a_s|Rr7Z-^`qC#4u`r{rj9tP02 zt4kaLF!=y(HdEIcY5>S>Fs57^u(=rX!Z#D!(u-MxoOQvsC+sXP#hFTyGYZ8$L9 z?80sEXXcX6mJ`O&OevZp?}gwSApoJ?9_Ghn?$a99Ik6nGnICr<-AB-6AWJ1F;KLt1iD2CVLQ!>q zhu0s##Y+Hz*>{pcRa<(*bodydTzDxK_*QdJ*Jo?6tZQ8Yo#0kcxP*SjUXdqGak zf1=hGB`f{)SU&uHW8dC?%p#fH2{>bGqM%?wzxq|yFpG2aaX>PVU(pmm<}TjQBQs|l z(c=9FNW%_=P=L#=L30rrK6vu`Nuv?o3?gyi(RUdmE4q2gnsrw-JUYlOYeMGs5aiZ@ z^+u^$_51*!o4JiWgYNXc+ly%aHOe0Sf4bEJw$a_)Wm+glR^fc8Nk@%MLUa2IDF-NE+- z6f;^bI|4|U?FbfZ^{)@Vb*pzr&w4v4Rt#VAcNWR(i$c^*)hg1RmTn%{kC4n|e?KDC zKSoH;jMa~O zHmMNBkz@de(Pzyt9_P>7R3gnuu!)%fhOn3a=%`IBv-$e?<~5hT$zPYigdh zmSf!GN&uC`d^JRKB&?Wrg&I(gwI6>f6xEPY2rx`Ok&mAkPs^(x%0{EDbSHZcHv}E@ z=xp@P@NWqKo8nE7o+kwI#BM;Jy`~h=!rnYj@q=1D=S1|IaS9z3okrW)Qr~LemTic+ z8EEiV#xNklw89P_j24pFzj>dET`QM$u_gtgd?W|Ca*M8)2@ecauz|m#e*8m}5A8 zo#93G2%S~sBuF)tRm8Nc-w?&*!zhDKCg_iNRA4~Va8|NRe>07+2mS3D*i@E)_tZBg z#Mpc@blKT>gn8w8fm8rOSAJ!j(nI`M6Krju%$XV(Y8qhE^35Y6UhLv;+GUW3ak46zS;=^hTdEj*^zh8iRK7+Xh`xk6-lY z!AbPhSmL^re_}qAQJqA)3(HC7iyBf&xSp9~}`~5~KRTfOg z%IT-F1-RA7sKzH4r%?6|+)>@8BB>QWqKbM<)l^+cFG_Biq^>|Vq?DVCo5n|?zjQLa zT7?l~B^~_`f21KYFq8pmEyv92WA@=oh-89v zDd+6I#uNC55O2}%%QQkFEwEL+#acP(}5d zhZ+5pf6BC&@2~HwOocB;(eAGbQqStM6szSJ$!?3Y*&Wv+)8eBXd~>%vLt^;cY4QK) zG)Nb#s1Opn2rTzJ%glN1+U4A4psaeE`U%gYn(s*WRMh+84vO&?b5RS7rI(oT%ngE2 zgTF-;QfquPb@a$;sHQJjEcR5986!~h-8T@Oe;0_NzRwM-9je7I8*@n}@vJ%bb zBXsmzRWc(`wJsD?cIuX3_f@$PVmK23mUxJZ%W>7bta>tM>s#0ea$GzBE`%EZ4;Ku8 ze+yCKGS?VE5Ab8%H#WOQUpb`l^BDB0`~nmq4Hq`8#GJA#S-eFoEv}|Qa9id=k`cU= zV5F}~QWm9~swv`(_NsA~ZL_A;R)3_{MKyRbGcRV(s2`VaLe%26OEfxqbfIG z(guzDOkO$W}JHhmEuPF)=7;2nSiTvRNH^m}YHy7^bvR&1(Ur1VrvKfKwE|l!4iTMphP7$jXw|Qyy+Ff1?mP z-#1js1J6R^-uzh$Pdtk{Sy(Gbf>mQ^8tveR5x6Bqc!iwOPDwv{URF09TdXWuu^@LW zM^;~mVi^{j$lSsHx4{!de0^iRPe3Hu5atbMRYp?)IpiZEJ0TNuzs5iyXQJ@iB(w1l zTxKq(mPs_9RG{IdrY*URRMlw%tCUiIsfAV5!thgc;rv*rj|vu8e=$tO6xw7p?bT$V zhP1&gRaqOKRE2-=&iLXAns*w}&R1xq=vO3@G8Z5H8SSks0e!9*N_$e1sIPvt8Q9-* z)t{mpT{?t3fa^Teo?=A;FLuRZQLo`U9NBwTOMo4X z5)Cc@(5RizCzw zfuzP}DlqQRC}6gUA%>ztFLNr8jsHY97u;Q~sR3$zR{KQ_e_ffHN-5{kUs|%$(NJf4 zDRlltnC@f=25yaZZ}_{IL7I({ASt@Y`Be+yJiFBz7y4C`{NaFrLzCe48d zvbuKl(DgR;BL6q_^F&wq!k-1VO76K@ZWX>eV1#x*JAh!R7>#iftC}w$66FG>8qk?Z zty@JKM!Qx|u>e~zBTaBPkDgP*jf0`U*G7>})BUPxnK64c3eg1Y@x`K9RE~u+oKlWf zwNgxZe=v!hLK(-X*(oUg(%#xJ3TDk=7PmG`-8vZ@y6V?$OxD(er;U!EjJ+C8Q~+%G z)Z|>95}1n;CS&Mk&w}pfM)6A#-Em3`%l9~kQ8ap!j3!Mbe9QR;#1oa%6CF>iz2Nq8 zt5O3cQ)u;KEWw6pzgph>UvT1P?obv;CGw|Be?HTvi8Gq-@h4Nn$M*oIGwB5E2Lvm3 z%iUv`ORURrfjKn$o`xI>tO2rLG!i+9dQiX*xcEYaBdm$@XALr@zY6gyqBRZXHbP8R0mmXhy*^Scy>43qphU_yTt(CO}|bah`le};cEEW7lD;u$LkKk+`DcTs$Pk;7IG{OC9W zoJAjdn=&S7Wh18idbP<4x?*6nWh3g1I_m2%4Ak2b9l%r=cVXmnP$otWT4_@#>Wkj0 zOb%};{o0z|as#VAuy+M6rcW9Fl}n7)a}0zx)R+tgsQ_##Mr9S^N)M@6<)`%}f4i7# zHbUM7>vGJ#BGZpIsMoUuc9rjC=Z8^fB?ACOS+y}X`+dU5;XuEg zel!ZMhDUspCevk}d(m(Vp7EjpLX>u4XAY)q<~j7Zpt%0eaLWNSaJ?jCS>FH%@ZqVd zEUU)GC^O#)y`I~X-$Dx0Cuw8`0+9QJfgZJC}r*C%-x5Zs~Y;V3f-Z|Jm zg@4EI;O)4IWf{xg{&{n2+lUbNN=o{-v!Y%Uax~5^um@=tMEt_N8rM8&e;Im1t0&Zp z5k-FJh<3J`Ef4Q*kFdwXf*=e3V-$>%;WmN&&D~wNQh~_-C7LYw%&a|lFe_6y;7xA06qa%naq7W}?nh~Z8MBqkLle@D>?#};X6V&>B zm=>tn-ERXdmZtNtrRm&nY38_-&K=!JJiO%FkT7DOsgGP-K{@W|RrV9uJwCIeUM(Ph zbJs#r%=9gUQR`eNwX;zEPHq16h4Qcezq%*Vzytax;&(>}g^^s-f2OMn^nfmk_}$S* z%`edU0~cuho(nX`>#lzluRFw&+}iCPq-SwH-{B(KR~p5=a$W6Ry+^%=`nbLM9=yf7 zgWavi;-g$fue5y&Y0+9QA%b0_#>f~wFe=rMg8`2@thEme~!~YzWms30~Y?*ns4a8zLlZxz=<%Fk2iE)1u@S5^?9;*2sFlI zxY@0({TPDH2ff~WdzXmcE&k3H|N5`*H;;}^H}|(rw~yXzzTaNNfPQ-`1HwvMgIc?_ zdAv*d;e6XbtnY^LZ4Be(tqcQdjQUON)9>Ow4v$~YHxEEse_fy?Ki;Y&hw@_0MEp4o zvSAVi>8(q%6#>U&5-niz8g-G9{pMCB(=4bw>r0l08s26&Ae;18aYjJ1?gM|Tj&0c7oMSn5LUk?gWLvPQqggy-fq|y;{)LDP`4}z2$UB$jxhZpB1f7?vX|{n`M^< zxmG2oVEk9&Cq*6j7LAJ5w9zmivEH8Knm;9}>P1Mgq!6+-$t$cE_zgS@tzi{g!>ZL9 zDsrsO3FNNo-4|7YbiRrp^1Od#5NMu6>;GZzNShm{f1#iEUx@B7B#;fza>Fu&9#GiQ zr3vT4?6`^A8dAI1PN6XU@4Q2&WyMaDatwr7nn>@`)6>(_eJ>I%86LF>^u`7SS|yBK zF4dbGl*;V_JFtFhgRC3+tTy&&Zf#_4*em;Wl*HAR8v;(S=0rK(L*f7EAacXD{Rr~P8 z*LG%GgZc?#Ds=}bPkodSW+S?h-tkaL7*D>y1NtZAEC>}xd^ns^3 z8(6GD=kZEhVP`wD@T-QkUmL zWGnk1Zt}KDv_bM;R-+{rXXlUgS{gPXzb+p60!7+2H%G7G^N+qW&skTHJ-uei*4PY9 zfvKR;*0geSYHcN2tPY?nG^iC#Zxv`|3UO1lX0p6dag{0P4t{{zRR_38f5VE4%W_28 zR-3i+m)7P*S(;$9eOY>Oo<`tR+Sv9++L(=W8u~nM68xpcmdH9cT4=)b#fi^ltYor% zCr)e@*OtoDW;7BBX8gm9e!q1@}1Gv=GYPS)Y%|VFi z?F};b>i7~4%$6UVZB(w;CSs@in%)Go+&CmK6wWl_emRAksf#M;QSeotGU;eAZUZyv22|CiRu-4}IhXChHp+7IY(ni=ZRx2Bc?;ABWkh>Ju-% zwmtK8H~_Z&B~0jxt0m=L0!4VYs6Bh#93<8*aSP^_PIL5lG-R{Us3x;o|`tE1ot zrN0xuHF)9&GLD`k!0s`c9dibeDi)ob$}o1GyNWfH}!9Tfm;;zIU6R5`f(KU zp!Sh&RKpXSe@o+?kV55zK99q2XamK$%GWl!4H+JO(7d)^+d#4K^V=qg{SL%7LF<;@ z;Ky72&cw4V(Eiqs>k;({k{elzrbqAfI}-AR!tU=*GHs%4p(scJni|h;@m9gv%nx-2 ze$0nKP3%3`F(jDHFUpbChC%w50&9Lez(c8@q%sUBe|I@~wf$BlzPfZkqYD)ltIiSj z?=Uy~hI>``OL{5k3la>=Wv^J#=;4iiwV5^XlFu0iXn6)Jla-tq83f~tEi9W!rSNo1 zK*X4fL~s(X(=G}*e2D{70~~Htv4s42ZcYy?g+p@8rI|-FZK@N76=(@kmA<^JSz2Dr zlN(eYe?#Cm4+3^)!D1;AzpipFK;o-Ibd zKGhjih&JO=X0*hLwa_ja&3Hcgkf60r?2 zFfw&2#1aWVo-gF)MMSD=%Lq-*yKczuE$-0ypbsZI1Cfn?{Av-r;iZEhWQPC z!bRbYwKP3wae}*}0*vqqDNgrpk@C}i7q<=>Pib|~8|K*MN~yXyO4z^dUMX{Pwx9dR ze<5iXtS$7r^a*zS_}TG*q1$C)o4X*aW9?cBwTfN!rZC3(+b#=R;fk;4w1?VuYhKFm zAf3yyA^ppRT*Tma^|XJ}R_*h&tT5yqXR{M|Ho(7#LtiFovoCa&=8<_%k+0w&(N@774vfB&IV zlV%h3Kg{Df= z_DLNS3>uZ)g~YnH%HKLvg%OsGj(>tiI-nY5e^N5x$4f)M zI8Z_z5eY^?p5AJK3}m-&ll9Y`)6J;JR zDsQ8MZ=la!q5{11qw2nv_EXwsm&zbm`Y`Y@n+g4htG=Jsm0cV0YqfN=WllEEor-}` zpZQ^9zOY5QZ|fR_VN)FD$6yaQG2AHZifai{0t2{mhyKf8kR>5lfBZ3BFKG1k_qJ4w zl~GlUo6_%hB;btaY(gjWnk!O7>d8b(RgEj)D-O300>9=|k+FKNpYYs62opr2%$s4l zSv`{B=0{vw;nCa~ftlJV2*WsZ6aIkCJvv^h#2H`K?E`MbJck7#*KvQ|!SWH`By+ls zVoa9HRu5Z;H{6u9f9qZvJcsQ*8Z6g~;f*+0eEif#$}hb%X!0%t-ag)6-b;8>POe4| zanL9DorzLB$rF6r==$~H>s*I?YHxyXfnMe)E$u5#(u^Mq!FPAXbe@#u5FrKq@Aba; z=#Ph(b<25_`ndjqRHQ6@VDsi^xww*rO2WEK=5tKv6j_Rye>{VkiW$9RoPsqUACLDP zAr32X0R{&C@I9L-#LL8Sn%gs>WQJ*WA&Zo@cHqkM6b`z~G^e45iY){!E~iKLci*iD@B|N>!$=Sti0s zT;e3-f7-Q8#;DLKa$1$PaK84@;3joU%52klA*sBl3Aj&cB|GX}==@B}Vij|pq;vHD zO6erM?=iH08XnxfM-p+VPGMd;%akifP(FV%g!Ui~1R5K(z$vLP z0d3~<#bqYmctanuSAK%L#4wOyqGd3b906=Pf7Q}kIgmdIcg0pKuK6WAR{N3@}fjMK0z)yY>k=DD}C_WRa*QJI|}q>2|m*UNa?~9FPT0w1x9y zf9T0D%%KIGOjc*bcVWY6zq&s}^QH47u!VoXbu_d)nS~ zgX&nk$Ov9~Q^pYF3{d#0GY%H75?t+ddLc{=e*)8k1zQGurXHQgk%9C6@o6@(Z}`l!%#ef z@tjQPID_lY)bP{Kd4gtu6V-k)Y&X)gB!0#&s*L9d!}KH4kjgdrltmM3uhDqHe+_&n zkIMpGFemcQvsBJ!oR6azLdoz;e&*Mmg=Ibj34eGme-zx39%VBCZ=^5y89$kkkLC8W zj5>1OgAXS-+MwV2;Fc=ZDE_9~G0lqpt*bD)s0BtO8S(Fye^5+a#;0I!Zp1x=)YOc_s{9K7u?|onVC4Km&T4}& zJE$1y0e~G&P;)7{WAg?C6oK1;9)`g%@^ih1s#kJ#f*gS;<@}6Od7gulu{gvLqHH~w zYaFM3w7|6i`l^SwGYR>H#6o-8@C{}%8h<{}vVj-0A@5KJ4+IkqlWYMnf1eBBXFS!e z9E)KbyAc2eE-qE(XEjixYr79j=51`2LEq`vg`kE^nBp-9z{=0|C~-h(NCGF+43_>v zFvG7^rz9R*HUwhfSWYV;&PTA3=d;{+(-ig(msNTW%|xVJa{W3hnq(m{q$g-O8xDtJ zFV9}81e)K^qRfYOg3C$`e=>W8j6eU%`F&LDE)8?Y&HqZt#;EL+xU3RyKWZtfOGv9Q zP3g`6@e~c|>iP4O54jKsq&hxSf8{+Y3?Js|9N)=>2Lj>xXSf>RT|D^b!w-Z@nMCud z$6ndwIRl&~&|M|h78{D{w!MBh+G=g;F3qzrZT`WiG?3M_n+O0oK*qm4Wq&@5sef5i zhhFLi7Q@hGFqpL(-~Kswpg7o*ww%7qkQjiEATtWnScYS{2oYfM7oJsR;{F~1&-j`I ze?Upr_!xwz2T4rMcl$Lzg%@{+G|$dCzBRr#0fSST)4rX6SqO(tUl@C1O5F_(u!HQPQ4adU2qQe=l6Eu#H%RgyGK`Gb`(dfOjzGx`A^yli-$Ye!6@mf#T8NLYFHf;MzSr(Z%URE?$Tw@;8azs;<=qUs?B2rPs7QmVcG%ZRcrO;milx zkLBb_TW{Jp6GUe$A5y$6=>J~nv}~NEw>7pm;L&VG7(GTD`1qzzfA2s6V2Vl`QbPIc zq4VRF*LerV5|AJHFM!eCc1UOcruVxYbDz(A+o51Q4Dg2Ak_5zqHS}`o?T{LNN-JCifIvS9{Xn9ORi*22 zHd?Q&#=W$>XFW29P?78y;3tdEH;*=zU~T(q#1c{_(*qJb|*3c+uP@6&{Vg#iUzE z#YUHBs%!cK4rM*AtLxeJkB|R&wpA`pVY9$gZvFW9&3^$LsZKBP>uc~e&C)7Os=U}D zz;yN;zP$d{JMX;l#yhVKZUN$o5pC|9ufgXH%)}G~N1CvQK<_YzBzy|>;L+=E?tXMK zI(qtOlon#FW`vLO1uuc(`>c=PiB=$VOYTE=d4J$9ed~vWSvcj{$S)04W|i`-c<@Ij znX*7S%73EM`AUXbA{DEarq$%L{WyiWVM^Ce>%KANTHu2RXnwBc z4ZXHCKoB-U%a;-zGqhq*j;qYau3VI>EfW87ijnfM5g3!f)J%72nm_%qhf70KgkMSd z?=i)wv0yPG#?rwY?o{E}{obj7z)Tp`&Kr}G)Bw9CyagndoJFQ!+oN38_PRC8Rm!u-JM8COC&`*Fa; zOx>kt#N5n!g<&DtTw8F6bS$(V5;mW55-+I&2%gQg*c@b<9jH0G&t4q>=g#9qb%6si zI%6q%SeAfJ0AUEGXAbwrAt^^6TK#pnv42}79!=Xoz$WWy;khLKFqr2u>!|h+nSU&=Ja&sekA{qQ7$DW2`Xc@s}5sZc5n_V0>BZLjL(+5AS7u-7!BZ6qo=Ek&O7 zoey!=W`89bTCp!( zu@QE51EUxQ6Fn#=L+EYGxOpbOLjAvz&)M=iBy=TJNwKFDK?nYT#lMR~{ zn&6LV7|QKQQSPZz0hF->6(k68)zc9DdRw(p_nZ>27w|VC*&p>Oes|AddtCWY?ZbJ3 z;Em!?PLBaxNjTv#XP7==zkesTye*&fikZgtWF;yX9h;3|dIMJnv28u`W-F=_G{WpZ_1dS@eUR73Ygf8c~kK!-_g*8sgjt+MO4)=H~}Ji!%^=*!v#B z5KiAyghZX>gCf7AG=E`3zn zoV?&T1CLhnfOUHywz4_;2+PSYHnXw64G%v##$X2+So$s(XPICTqn=Ds~JQ-WZN?R`+1+fx~F^NPlcu6gFv%!q$kr9<+vDiIqSThi~ERS2-!Q1H7y=3T?Pxs&bqYqX^nDYGtzZS`ry(6p2)rD93W)#7g`o0k7E{~VZhFlo>x}c+{ zhviVi>}No4%B@)en1v03q{Reo=QScwZ&-Z0?;|m=y=aOH>z;Og zul>p;#-G&c5Ra2zr!zX&ZEvseFC(&yM52(*u_jk-_1d7jqg{g63JqmEKr;$EN0Fyt4P?zr_8qkfWp+|xQfJ=?Q# zDxIBoD4`o&`LY1Br6{1p&fQbH{ek(>6Msv_T2r^G$tlj$Yk&F9Gx*@Rl3A&zSpc9H z(DI@2y!FI)cPaZpiTep@p0H4uLWCMUEJv8v^A+PO!r%2|t5)sg!tG8bjR|q6Y9WI_ zm6H{7@z_Axjga0>E+1Zxy!)cj(_#yWE88+`MYF$$p*MwRS)LqUCj7Rrkqq4r%5L zZ(eGX_5Grg0yJp}E%$ zLzmun@--w?^M8j!a1@T0ah>PI4L9bbe#>tid{35iadBSU)iNAnyP7waCsMr(!L96m zs?c%(V$a>*&kSuWcCSA)%KFi(*O1a*R<};gn&%I7qq~EP2W{aw{&f+7XCwey6*p^{h@$aO{T-$=s%rI94~|n= z+=opNkH54<&-<$^L4>`5D(}p?b;re1lm~fNG%b*4^*&=ov+>5u zLu7;25QuOOR)f6$9+N@NHGg}dG~ZZ29t-YUij(n|bt?M5PSdxCdvIv?@ZfOt@sr5I z1c%BW;B3r87rbFY*R!IvCw1M4-423uo8)z=beigQ5#kfR9@x@pUk`G{$zK=Mp91zO z^3D^%E|EJ<2fHL9lfvrX6Y({ zkJD|fz!kH$V&G@`>js|hZdg0;BxzhhNd4lutQuDnTmV{A@K^*Z3)C_DLp&r)z3DSN zfIie&!_nahTq*R${(p}GKS*Vi7FY8mlRzy5{}irL+C6>>*BAY$z(1Aqbc)w1H^P5% za{Sd7dvuf0j|~4wft|7|e>11?r-x68hY@UikzO@}PENks#S5i=G@#m^82+|#QN+`_ zT^eyE^A<>4_@-qNuLZb28tozM;KC)8kfROyoIG9=@rZ3=QGcaQ&t?xp>kFU}Hge(L z3a(daH|ktEEW5b4T^3(l_>KX%E77ur7?*ToFzy0$3CUgfATW0`y#*RKBeG26f~>z- z<5Ih~C7V@jB))v(lDSVS;Q;3!W+mK|o27`F$K4lwTq>&$+&V4&I1KLYPqeM9z~r6` z24l=sj7EsR#(!+IT%mVaws_P`BJPIPSV&sO&_ZJi>$CIXf`?@1pEhBeb@I_g2bW~H z^zheM%qA8iTzYFSN!;B+9NXwJ6kENL?`NrE1MbL3)zu&UMYg5I3fc3WQAfNdi8f0kjQM4?s27GgrwxINx^QRc3;xZ={x)8p|W-dP@Bnt7U+ zcZhl>wU>t_(z7N5d+Ck;={rN6QHX)J&sm1TFwids_zK8i74~;6m9#)^j#<4#CQ3 zr`&x;{*=3hk4?FIcI5tOQm*fHB2(^`V>som^MA~gyCJsXl)JTzI3Xm}We%Mmp*Oc= zYeGA>;!1rL*AjiFdGT7k(GU4)#upgR(gHwyP_eTYbJotRhQ2D(3-F??I}Gpwxv`#r zbs&61miUaD1zRD=v%+$ar%8M*r#nr-p3aX3dm5l?u&3c0gFQFX=|zQjj8#)xeGd86lcklRxts14q-Rm{^6wd9BLk>S8nmxr=&>z2hsuI`>S`Tsjr#W-`E#6 z)xMT09wBLnx+z4-L@mOCb&Hx?SCZ5tvQOeGNxRNe=R*x1SxIWNq)o3RHGc}U@=B7X z(s?CGBP?G@GGOg1NgA?oC5azxW^3~x%@0|0Ty`?p;j)v}p1ckR%Q&Uo3tUP~KsVt;U4PO*YGN13HOjbp%^$TnQ1=N=6S6E?{5l6unju4(LK3*v zWvyoTbWvVRfa)!H;X2@0R-DBGBF&`43lNMfkQ6u)HcUh$mDpy$Z(%yy2lKN4c>sRO z!5I(|oZ1)&K3gI9C(Yw?iqhnMGQ9}YBlsFc@CEa9ibc{BQL;qBT7P-A%vLy4M06lYCJzRoBrzeE1M;6q}^Q z@-37ho3lZTpJli%C4ZAs;AYCfx-hqaxcl~cS2+*{q`rFQxpeJ~3j1@G|BBWHT9fbx zO>!nHaGTQTB_-cGOMlPKBwej|rfx;_%RR7iG&0L1E!_eS!$7e$FuclZN;q>=d5~rZ z4n9XD^!UD}{qoC+tGkz9HjB*`xyjd{8IP(enf~myjNA7_53H~+I7=kHo9#gDD7oUm zqee>4kX|NN`shIKbdk7mVbi8Ie&Zov^dR+O!`tUH}r$i?(?Xz!&q0BV4@l#d7d&*@vHQxc_M%uDKIZ) zvLG-@s&WnOI04an(eYP_g zRo~~Cb;g)f7nAE9C?Mp+?~lLOe||FBJN#c%6DQ!Kaku*BGp^KkW zp4{&&&3}ldOnsSZREVc{Gr5bMRYRlQ@xQ3psb4uSv0SKqiwyf^r}{ z|5+A8@kQ>u!@8V41rVVlI?)01QCgOHWQRsl1!lSAIS!7qo%*QPK4wwDUJcBGgHsr4ybl#2ep-}34qI{= z$B`s-j2&wBSBY9K1^3Nn7{Ji0XlB9~p;D~fX(vPH1Ul0G=4AEgT;p@lwswRzmz5u% zUC`sri7wgF=q#bc4QU!fP}cTFL(t{|c7KgOH&e7f**n(eHfrEs(WD=6;cC*Rya#4N zlR}0^ATjg{{Ta$I4e^tuZp7^Q7G zPj#Yxk)Ha*>OZxT(1}?AyQpodPc{7_dCi4KSEREagY9?H>Ejkp4@q|Vu{6d}F7Gh(6t-M=(zhx}S$$qvT;QFl^-A7i3`WvpTy{NL&Lo!S znFpUc>0mNbbac4?jMk~1R#IN~fIhsC3tWu2?gk}+?hCwsnNKCdT1AhuoIIs!EdTq-GdMGk=^DKk;hvAdaXqeHu%g8Cr-qu)Tx!sr#+iK z`LR5bIn5E>luUj?)psfPHP#@@~ffhd>*pm*O_^B^E~f1KZvc;@Tu6U zG*d&agj?%jY?WJM7+aM>!~>)12|eihLIPG{-w0Km@j8J zT^4dI8;*0rfr90hu)~|bT*#?c(jJro0Qu^ISEegjFK10XW?I#94X;AKgj&F$pDwxi z{(-7mHtsqAZ-2Y8$8J@tQ@g3algoBTiu?AdZ{4Ss_l&?iAgPJd^Y_R>J=Ul*@sE?7 znToD60c#2X_(D=8qx<3mUyA6T<0s$l@BQ-q{t-=eE~Zpvwt@hioYhhx?&N|wg}u^{ zeKM1Ir5$`i`7;h!>?IZ#&U$->G!WHmM7s)h z2yc=*qhg3E03vR!3Hs>)t|_esRv67Ro>yEW?(2ylarcNqWQ13g{WNsPtEaR4g_CE( zF-+#K`D__0ZHZ3R%SQox0281D?p>o@HOgl$X%64R|E1K5x28R!=4FQ7%%?oFbY_O2 z%&Wewi+^s9FjQj4O?hER)&bo?#<<}zfq$a;ni7D~pD8#?F$3G*(GsT)appS;No{68 z{7k}m9Qm@<;ZVYQ8~+4_k%M;V1ljJaclNhzs2&;Qsh+PB9Zkh4-Af6&7ZbaC77|Q_ z{kja$2EApo+>TmdpSN#EsY3VEUngm$F7fCaIoL9Bu$anMK_6L&L@#+5DLa{H| zbALfFJ@Ho7}K@@mW+{E30w3Evvs(OTQ8SAXX+_mcXT9C{7KwSDQ+qXA!(ld=tHN$nWC zQIh@98;6Mr2Tl8YhIR$1&~6DD3Um}|_v=ntQu1ch1Fk`JWuIo@S0$Kv43o`h4;|Sq zf)4Z{8!8EsUvp58%psro(nY@H=zoC^z11W_s*f#7rUt6Qwqao2w5U%jiL^y|&RzF& zbLF&vBK9mDnp5-qRWZ+Ju>P1Ynxa7qSkujSAr*9L@xy>PYz3Xhj(3DVifyW8GktaP&uF2v12owQSS{s}!wF9TTBLfr`fToPQ;vtT?v| zVYOTc7`MPJq9-9>f5R$bb1wGu1(d!()sQ?DU?EqsuI(+AG-tRxYf7d@2Mijz#@=B3 zP$v_G)HNh8T&^}~ZB1iwh-cE4RV`IFRg&cs?E>e7c34zQmy&6eRYj)=)0D6j>r;P> zBM{y2CN6ysR)lGqE`X$%eSZdAksZ1?%9NKN3VMb~fG~qx(C0av08v^=jsB#N*oL3Z z;QzIyQ+Mbz-593Ehq6>@sZTPUN2k|&b$;eFH8y2it?@mo248hZafZuTQ%?(GLy85Y zTvU>3l(a=^V}Hv=zHYJ08`O;c zQnYH#;CPKHa8*^~g|X_Ik_L`GI6`nXmUn!Umm0QkB*L`JnN>4y%F1jnW>)WHW-w*# zUhZ`gBD-4}jI{=g3~M55jdP8`76QGOF-Ty%QIhb6$^qc;?WKb~TU@A-t?n}8Db>y9 z=@_yks$+L(}QYT(DM4jat6qOFaYDraGq{70V(?#;5 z`-meHEjxfP-eFrK_tw_Ze zq5K`XcsSJnF9^Z!;WMtn&Lm=@O!JLfvvF%SZq3H6S;ei{7}x7Cu3NlxX=LJDe&YVQ zz4wU}sVjDKj50ov97s&T;W)63@YT_?@8a9M7V_*2dYJC2V7amvM%e(-vULzC!|}|? z81pr=!|yH}2Y>9Ok+9z@80r2T9pUvbm*LK+2%HA4%QySksI$4oOGvp1G-;7Bhv1H1 z(8n?8;Tb6C9-hHXMt@I>9c|QraUr0!?crmfrL376Fw|$J1%5LYv1{cHv`-T}3?*{? z_Uxehw?uzy*MBI)-pl=H@4;zVR?}iZnzKAJm5~OUGJiRSmW^TjRvX6J60;^Sl2zBT zCKEUykw~i{Nfe8SD@&8K9mm=d*jR|`vJf{`O=#69o6vbYV7M)@x&^b|N|nKav#e?s z&8C=QO%;{%UdHKmR<)p%sLmu1ahRO8PoPwP^MrAQ)`>-xHcl|Rm)T+9IA9$A_O?0< ze?pVP;eU(mIf6?Y8BlSDjghc0pkUI#z|0|bgIJ5<0A|CRxg%~>lS52g0kU9sm8KQKlra#WL$ycN*LgWk7UIYXVE+SloE6HL71LF+9)XP`#~2V zt+HCQhxlPtoHRdCp0@f!E#fCX3euTp;r2mdbAQ1Z(sWbfw-Tf0oyTD~L2*Ug55(RS z3eM?=YJr#?Dh10A!wQ7dtQbEzIC}E^J{1eJ2dCO*BfD>2_!b{HG`A1hGOx_u#({1? z@}xF{`~UcjYZ5%5lKuW!iB-L^^FJYLSH|LX#mZRvblq^g*8_@O_oBUS$D$a0jKfTQ z_J2XN0;vk5XF80|VKdX6-Kg4YGJ3aXlhLXZNUPXggmA_$IG{nFd_&AX#hjQsJ$%V| zv@@EIgz>KKMjj-4diE^ z?eYr)_W&*4oTq>5zgCrQOr(v8v@wx3Cep@4TC<7do!}cO#k)eF$m-_NI;(VyBd=lU zU0crYGK_d)<6}`pH3gZK2h;zRh2*iT%Rb^RHIWqmPb+D)*R}dx8F<@KZ)h8~nus!E ziblqi$%~FBl(u2#6%D>n;MUw-w|{#8ua~WR<951!akb>F*3Q-E#Hw@Mco67Xm;gUZ7`Gp^-@u2&LXO zab6m=KfV&%W&iRpPbW|c=HdkslbmcDRc(K~u?@nA$cM?`IAyIveYUOC4;>Kz=MMiCs{phO-E z9+;JWwONQrY0_sX-Yqmz7()8nis`UVwGG)vCk>V|C20fSiPi6Pr5$Yjz9nd(sosM$ zNPR;e>zhk{nfwF*yzH8=QGZggSh}zE1E!)P{IaSQMF;UZM1ivvN^{4mK*^i^gHNZY zZ=_+41~<~2hBwl1%j9&NnlyK~!}-hZ^*Sx`xE*SYO3pw~E@gM8;7C4$`mqc>m3}IL zH-%jA)0E1yh0@)q#_R2rm@@i4uN(g!sy*4{&P`!y+77X0l>}g!rhkI_knBtM1?KfS zqFl)+A~2cl_bhB{UxhaquQgRvS)3YudzaIb_DbJN46JE`Wr-e}I77lNm?q!2NdOtQ z(RzFEPiT6FO=k2qWIu$kIzLs~kKh-gr=`!F91yq91yXVQmYuebAw9*>cw?dkV!-Q< zA{y{e{M$DP-AEDGiGL;Dx{lBM(i&U%bUMH6MJsCd&=@V^_w$jvrX*%=pD9TaJdg&KNfSlQKe6h324B-FcU_o~s6WUss)Yb} zHQYa)Cz=lm?vrioL@JZ6CxLcH|nm zCA_Hl>%${h{oMtnq;wNrD0cjz%QLH~{O8OkY9F7DL)3w3{~?*Jxp=z!gkOTHrm`Y1 zN@_|C?H)21$%UL>#f0TPpCnmQpE{1#pI}|`(VvT1ekH31_FW@1-_Ubpl@CZafmUCy|-F zV6DHy^E;f(lqRlz-OHPNRxG?TEW6m2S~W#X6$C#{wwSt-RxI$|c&@{q#<9nL^fiJf zSJ?P`IcwHz`-6-;U*+ahhdG(%LI1NRDMe_*0g#%)ci+%4PmTs781HUAKE?|FPe3P z@nu^(df6RH5zi50&91W`2ChC>c+-7GYk%ItP;E6M)Nknqbi3UI;!|u{y#_^`BN)FK3+o^eOndRnLQs?g|DCEvDA|T_)?jPk&3v zJ|26y$%vAsG@DU=(1!J%7Ujz?&U0^_BFXCV8cf{T4FA$5nRUV$dWbPN z%)egYy{LCm>uqAmHnC)zSh7tl*`Qdm&68J~C$HY+Tlw$8)bC!u)%L;g7{9xC1M3c` z@h)@>xgsK)s1d05Ht%8G@q1ViKYuFwe?6APV)y3O<=65wz&rI=R@Bd3-=Ug2d`Jt^ zHvZnm-`n_m8-MSA>hEp5j&*n)n|oM>c~tEu!EWWVbU({A$d`Hz^hCU=)H7k6yLl!o z@l06U<+V$AZ*BVs1;b=diyrSDE-XcFTl5l&IhcAp%RWprPWNbl^Z^35Ht zZV`%f_?z#%36Zu!?{UFM_i@I$`;W2SSqF-J&o`#7;3R5(r2J~jb&lzLs!M8GRtMt4(es-Ymb zV={|V*LUpn!!~X`)PIMP)G6Xd#tq6)(#0!%l7DRP3Ar+9IAwNUFzdOVPs_^GhczS` z}2tE#w^Q<{T|g+;?!so$c^dWLfHrhgNu`a#uy^7Ofk`xD9!N{%67XfB+-9u&S9#v@G%bYHB z@n@j0R_+Vv2Y<_WM5y`Rl=^zcT)coGzu=f_Gu}_Gs3n6UeYhu7InxQ{nL>R*>8mlG zj7QDfJK;FdNMB5+9xpX8|JGg58VWz)F_fkq>NIEFjjsa3AKfoR&X5CjksBh}9FlcY zuv5!8(JmqwUK8r|VljGL6}Tz0+gv8jol4!F+__p}6ng@*Q3* z{uI;?P2P}hQ^ue{ef+FVeW0r-(3KC=@RGyUWLcpe;+!oXhF!BRDDNrrNY-;`)}Q8N zt`7hkG2q%Yg>+nw-?lCn`Q_H{kn%9oNi}drQrfmj%NH+#w98mx-AGwc+M`TOAOXWC zrDZq&9)CO2m7DC$SWa@1p%%ij^C^s^!%JC(Kp{76M#xK>{T6YO2(W#eX%YiPW%Q#> z_SI?lR`cr0>;Is&c3!8}+IcNn>+hCEnl*it8-P96B?rCatKnr2f+Oa{2` zHf>zX1}Pair8AF2Q^+*4#yiKCGx=0?%t(azGN3tu5y)rJDO#M1LO4*Z2l9Tod=h?&RR`NAXlMg1{|X>ZZc0 zVtbfK&NETAS;`*DEPhY7F#P)U3TF1Py#gmOZE*E8xw?%mn!@`TOmUM5P)d~@+DebM z#fNZ}|HpbFOqe1%o%m0A3{E_?LTRxG%JR-X`w}A!EB?Fu-qS}F}5-m{h*@2s!G-ocB)^=ATuXv=%h@Y!HVB`hLkb` zcafC+0^ZMSJ;8qcx|MdTenl^*vJMYvBweoBRi?FVD@u#o)H2Ihr(!nG4mVn5OxvVX z^o)FB6V7NH$ZneNzsh07T|Y?q+ka!Upw$oiB80NVXAK$Hk3Y)%3><5evxV>DZMAZF zc-VYsZ~#K?3nO6%rVU{_`nldAVAwXCbvCx#mISQ{oDerNa7X;y&@l-SC$mFm#pa@& z1wSaP^{mwxznS}!T`K<3qff@4KHUE3(@!6M^2y_!He1bO(cH*Kt^6w{;eYYYLqPNB zvrl&5-xkO#0(tP!gkzXaG70s0`g)fTe)OX2Z^WajZ zTeR(c%{bQdn#;cW57-@ATMU^txHvy;bD3Gd&teX^Q-GguRaHncALYbZUjd1OJ=cyI zg-DEZ?XR3|uh&{)EJrsiCiu1!gLWHF0yNbe*kodI_DXSlS``uA0s;t9-lyv&E@f>Epaq1ArRTe%NC8tga=&vd~TU570U` zXmHFxohcc9Tun2u(Wk@AdWphJV3WhW!_T4qmu2-Q*AE_jIn@FBfTSuU-risd8jn*R zHVy>$41#CqCBl@vb$`nAg4*-F-N`Q6wqs3x?cu6_i=zMCfQ$RY^CZWq?zOU;@rI`s z)FA9)B8|kiiiKld2xjt={Iq=ZPj6w%mo*)9A)f`0sFTy8$+{M&v%DU3nnO7=U&|N8 z!n!ETU^=(MOIzHdzyvx)%s2Fn2_6XW3l+84PCSx04QhxX2Y;RrYAj%I5)3r1Q7I2Z z<3d0IKmRZK?BV7TP$0;cTc>E=@$s*_6-FA7A7zafrDRYzqg&=1aX^2yWZy`N-I9 zmNSuJ?10}P9bx~t^(Nt*tae?{q}+Blg@EZsMinn0D!T6fPB0c zS4s~E)wHDITwfIMH;wgohYqs#IQt&|{ovv6H|+9sqJLI4-i<4jmMdyJ1i3;ri}AM?l_Y25FN2M?VQnZ}AHc9=F0D-&)%?T58Q8Mi-HWL1^b zNNj1w6Wh-4bS;UB=i+@Xw!l;ok=e3yPspFpC`9G7v9Ux+8-digUQ#oWF|~T6`N|?g z2xV!}1%Ezfb11*KzyKr@Q?w|90-%L?4Kefa@$|Fgz){M|FY|(k(^a`all?+Vj0h^WyBS*Cjc{T3x7Pqll<*KhokYN9pvcSQ9HncuZG88 zI-q`r$B=SXJrl4ZnX5r|9N9&#bRxU|k=4V<^dWM%+#o^RXyK&QhwuYseB2qp<@OG@ z^ScEf(JBwHgjM!;U5%>u&2ap6|0|K@=#@cgBrJy>5YC{6RR#9N3-Q+T+o zQD$sdDApof0uoH1jVi#GmM6)z{{1C9_kY2M)y?nf^rF+|G%M_%dNq*~gr*HGy~Gn) z5H2#3jC2CBD)6j<;%Ko3h~0c05Si0DMBlDOLxxwuxLaVJRCj9@5Km}u)$51*G3Q!N z_HmWXX`Ybe)#>=+lQxS3Oi&N%O+LpQj7|ploGw0*44omNZ1(o=_Pma#0^Dp^^nVku zUWj|@H(z$-6pgQv1r(UpO4t-sz1bAk(TA!QOT2Fglncy{mFzc885!+b(3aYHO0Bft zWf#(-t04owSICmP*};o0_>Vnk(Mx7M=y_Btg@g21-1~OWKRr1(TMq;czr~f*`Y&`lAIIi}K?Jnd&|tv##_w z$<4_^zKAXX)u3FSLudgqF9M4lSYZA%c(Skpw4WrX0Nv*iQmpmqY=Ji~;D04kw~rE5 z_=2*-T>c{i%VPx%>NUXU^0DKFmhY3w^`8|vs{H?OGPbulA@TNh3ACF9(!9SBD_%#VRmk-rDJ~>mR zkK}7$3Nu;l2wLEMi8r)KN`Iz>e3VRha>_&wh{peF*c!0c)x`YBLzpY?CzbQR$?;D6 zj>Y>t7Oz;u|HmojeLZaOP5)r< zn6oiyXmM{NQ2xr6`lXFzcotyv9nAi`=^xozkkUQKl>gByR-iB z!P#KE-#^`gKaS|Uf`3u4*^M8kbjvp%Z-7mNQz^7sud?hHYm2jPgwHC{=1y!-o!$Mq zkk)w#*w5bhnRD;k_?8dvRCMroE}sV=6hu}t!4I48j=^NADHkoMej21Y_+3tyr3BSx zyz`w9NG!GYjHmK9-G5!v%j2w+v_X+KlPjFVG%1sKp8P@YPJ+eZi@>5ZXG{WHBnfmh z7*G16$>89XHm+!2C!=W>urJd5aCbwdVp$1@cjPvEbdxjtJ?vP-^npTCW;}-7+*Evo zK>jXPAC3yVV;`Qe6PUM4^)e~&Eg}&cBUL>^#hE+iCELM_HGk>*M|L9%0sqOdj#%ID zel&HkfSdB=Xoe}S>=}zfGHj3rD6>zHB!xls_A5=4SXndqJDp@;x5Ds$y_}cH!m=CJ z!+?~jiqLFaZ2UAy#iaaoDbp#RX<-zuShT?Fp6-f3f$`1U9p>Xt?Fw#p4H*ua& zYx73c16)8~@_%FG zqDF#P*`WE4PV1kPYocG?OB%2qFS<=0+#vt9)D*~=4zZZu{rqxyEuo|B^{^gQ!v*VZ z5g%<-$9+x7kGuMhe4t{-xem+CdR$o?Ch#qYjY{mO;D77$N2B_#U;MFn%f#nqhH3&3 zKyIfKVlUz|1#F$*uhY2f_}lJ5M?Jmqa#??)L`L2e$W55UuvIG(ZK+(Nz=GLT-?(>(52&;%v z4}atw7{@+K&|1mU5-B!4|=8%qcHdZhAgM*HyZz94ttoQ}O?b&O<` z1CnfEuyGI9|K)eJI=P1UaLhrJDhA7$;eU{?6a~qvvuG{kFh(RGiOxvA(WM{USq0i# z(;PU0*7(0bJC0?Q;p^sH8ZUvxTpZ5f#VWOGQh7{R)7%U%7cn(l21=RFR0!5|h6ltE z{4cxkc*ADOg_Hw9fYpfA%@q4cxjHetqigXNi@S=|ur<4bg9d4ucVieCpz~D6QGdqD z)+iSKc9l%8#4~!aEh7Nz58D{pe}Ps^Z&$|r5E%3rS8cG4-`>ShH8uiJ!zH&Q1A-t2 z08Bu$zhKRzfJXe6(bh-o=3N=lo4UZj;7a8d%m&vx3lWrPxZ^Byi*cDuhGPf61yp(pFe^^sYYpT=#)`3F z3OWI^t1+0UV)N{l$^KkRBvJt`LbTn>7!G4}Hj8pxyG`MO0nTOln*`c#QGeg29M*q6 zDIV@ogHEzVTa`5R*MxE>-SY#5l0@y^-g>-O-LUeF9DE`LJbukYukEUSO!q1 zZdZL|16nv-wV?U{)V+7xo>dT3XUzi}CIu^;pwS|k*dTr|D~=}y4c|-|SLydJ5N+6! z%o6}Cv#Qc$XG&oHh35=;rW3}93Ig|<`;LYb1?2eOwu5iw#5^^j&|Jyel#z zX_f`ge2w5d`0gt4^M}1=IpIU2H+TVv!e3Ci7E>!x7%jR2SsN6cwa@|HNpghqN|~dG zbcbc0Ul*4O82ftD!`IC_Vu#v@#9~Ib+oKgm)7EV{ljqCJUYW;Jc@8_iJ6-ScV{WNs zYxo3HESEGC74T_1DT~+aR;BaYbU8E`a?Ok``U;N90J^ z+@Q2IF1NvtyOaYt#5!zIjq|7$wyWRa+@WzqscM2*L~>D)q+GKjI$CDraRSfZ=t6{1 zfBdWReG-7N4>tfaQe4IJSRlM!DK_vT=Z7EFN3YlYhAtb*#Fanun5Td0gddzuRkMUG zDCce?Qz`@ujLjqaYpamIDc~Zo$ij7ROpMB4a=P~xj5z#jBfH#TQhPhzz!o_|M$2+{ z^tja!kGZ(07S4Y!2_gRSXVhj&-gB>+-*8Y7qG?1iyGt1P#^Y5J;iWc2P->kQYFMrwUXUT)Lu~ok*9HP~TF^SnSzn1hjv0Fc>Qwu;#_3XXB$2 zXz!LC4ZWgC|I5M2;bFb_E7*TjFWVpW$4B+T!50JC!Bj6F4Gw?59>5(OpVuo627M3n z>F}$Qa1G8y&tMl696ud+mCuIbF>aos-7`&<1HU7alanvcsxLB)d;`{#Q;(hDXmaF9 z_3LMSIDpe1eg#Z=@;Ux|csyVhzdmiMJ^FfbaPsZ3Czr4K-w#FrHG%(reLS2r0DLv* ze=}GC0G)mIjO>5Ovyqbt^p)6atPP3qS^qm;Q#IbeM&0ZUc-x}w5y{N?#UIzQ+!U%K zz;+3HtX%?olHhwPKEW3*MTfF$uxuAaWd<39t|8F(FAEQhF#5FcQ01bbxZYxNS$aHE z=>|LlbQ_*4urLSAvs>K6GoQWlOTuubFP?=I4JKm3W8i-yfl-l}v~U|*se0JLmj1!? z&9vpWET7MM@oZ+7Gq#2uEIxbGbOK|1hr7>%rr}rD13fFC|5yS4gph`m0k3_rG+Xlu zQ3gbf-zCh7tuuEfqM?U9zs2tFvJj}5>OtV5a;~DG%AI}NiuHs8TpPJW77klMc&}?v zG*$yn=gofybEC~dgPYtqSgp6{fLzyL`q9v}v95=$kzg6EZB|qDJ{}H~m<64r2Qr@7 zDUi%b(XqHhA8w&${>s9FR2PVbKOuRakJfD6b3Pg=^P|kmUbIcH zj-V9Ghcyd%65ex&l5yA#n51Wms!5hBIdojHM6Q1bBEx!Ar{~5O7fmlUchg~~s1}1X zx`6p15v{Uh^*32oAKmA;vo=*`mI{>+e5W*$ z&g24G!k^V<6J%H*bTxYS+L+~Io1OlKyj26Nymte0`y7RtOgqiCrI30bV^sN_H=yWu zT7rK8c3f?&*7J>iIvXBTgCc|U>YquR-v&(MV-Wsx*pN0hr8ZV#k3A-LdcFbdpJGW6 zxac8jPa4t2wpGWlRRiO3wKAY8tuuqDTkZ~+waOpsZ1VWp0at{eQ&Quu{=r8MhS);Q#`UR{)=;sR%*USP<`6qt!<=j=zj1j+W#hUqonQ=Pg@0U zA+{R2k=Lz7Zu~g8L9lpiZQna^qfnkAZlnAd`$Lz9Hq^xbF>Irf?-5N~MD0h5+3W42 zops<=f)_T@!bVP$c~<@l4aHLM^BjNS|0CbY)>#F-^8I+@`&LJHWeV(2&OQJe~~8_7x!`C=N~C5X16vKsJ2YLh!!nPWK&mu%7CGC`yys+ z-5>@jyi+a5SIhDs`z^hXM?e42;qtu2bfdQM_eCt(%yc$&_NNRfHC1oZdU$_R`3vJ| zV?20p>g&ZlwE9o59ai)F?Vzl%wJQ*~yQRC-Cv3;S*@?|LE37$$k9oDZP42rcpZ$xRIg!*NotF9^cA* zkd_j3^c3!1Q^r;`OvgE2Xc&Jr{FRJvW`R@wsW>);AfW2m@w}#+0r#nnpr?xhEL5mlig} z2l@h`;ajfw$c77oFi(F@5wbIZGvO{vZ@gi{81aT0lVNdF!!?KALA%H+1fR{+N0_SG zgSd>%$;@y7)@L(WRKW;>$}|{N{0W!-7(&2dUN9NAcRTxh$8+s+PU;U2%sY|Yu^k%h zp)kzpon^djnd`YnQa5X6olIlW_N_NfQf1ktS?SZ#=J`-jDN%oT!f5QS-=TIc2LE&4 z21uvzqFByj^*9l9TF~))@l2*mQQQ`#yhg)}p?4)hzR<}by69VqJ9TBG7^hW(r*LnSN3jnUlAQ7B3Z7T$C zYk`dm0lnxtPd!9pmy0WyMlDtKMp@Mh7>Gg{F?Y9Kt8T-xRb{lK@%qZ*&g1VWL@f#t zS*KE^)dn+qDY>x7iod9sVgb~>_iBTZEM#C|zgN#vEre22zo#;70d zDY!{B7E_%;dMS9;E6)ipYp1ru~K zs~#QA-2zkaiWc`UfgGe^?~AuywNFagWxT`=mr$3gKf*6>zXS4~#c2@k$nC(d#?! zUf6$bz<~wx!>{L={_wy7!;2-HT62BZ`n-$bLb;o+Gi*Du#CoTFLF%zzX>#23$8cAy z)wy=ywF@xJEgUAyw?b6Ag|}ItJnN1${vVxZ&|HCbf2!MtF#uM&&o8NS1x|h;?#&(e zpT@;9HY}+>IP&yHJHESg2tf(HZk>9-qaH>cbDeUlT zM|eME-z%UqAC&?N`xf+$D=+&JFDx4#u;S_qM1;qz3K0xbvEQ`)2g{;`46x9X+`oS; zIwltlQIA?RhADSUvHGwTY&6_EecWE8^E4^AXuU@>PyVgW4T!A1+P@Xz|88w(iLPsCTp|ybKPeYzH|TGmxlPi8>d)(==a%N) z$kwKlY9ThARilD8$uZg_7;$5~G=Xfhn7I|tZ#||y;m{cvINwk^ld69Wt}y8?(zq*Ti_aSY&xAV92o``=`UAr$7cN zV4F(bbHw$dq`s=R_#4+sHABl1QxIY>GFu>M@QtioS_ynbZ zhZ_f@!SViJ{EFyY$G=FU{Ypw;I2SUP(C-3`r`vn&HBI;J9$0?_0c$84qpq?U=UZ=t z|Drmuc_Crzo2M56Mt{RnrmfleGR53Pxlbfwrm2*znswB9x-PT@EuKrgn~iZ%-_Ab$ z6W>(C!RxMS*)zNJ653iPMO-2^G1vC3lX6 zVLzxBJ5@J!g6`ULMWFa6T^nwLO~v`GNP#=nMS{5{y%c{eXVqRra#Hy_OwCMMIJ^kr zGD4Slf(WIMkY_}q4D)6pFWLs~TZI2Z>#1BIH7jEDuJ%N7^ajgwKQO3@sTuBLs?IiY< z=aDdnzqWrwC?)eVq3InJn##ENrFB#qs7MAeW_@lWysE~&&cfMLMvJ31?1gAhMYrX+GOkpu}_XQWwAnjO;{+7LWX zW>rrZ75w{-xP}OW>oK$BCMn2evI|z)p6HWI&_wrj3AJ1_0(@+n-BJqVl5gA$O#8Aw6K{h z!EfZOHrOQ>6gW%mYHo)k!$*i1MNvK=uL)FS4a_t~R#XpXMuzD02o5n!#B{vB!VL*c zYzytR*Ob`yOk*dSpsDuD685T-z2EJL4p@I$S8$n#b;i`(@L9azbGfy~dRZjaLqO+z znapQU5t*lABO!ZbZ`xf+0}j^J(GzYgZ)o^gc6|<%bgKi2*%8GLJ|C)bl|`1|-kDSz zRXSUZazo$&@vKm;-V-Lutj@rJAr8Q%1=>;-4a} zGMYHa@%=DaG1y>@hyDFC-y+59LUB2%{DUGvVI=k@ohyw6ARu{U`K)@o42$T%2u~L* zrxYET%In)o?Tn`j;$`b>?&x8X%YJ`}ig5&p#Vn|A2K(<+mbFYv%wVpsfj`b$3IXa% ziYqy5LQnaLmgAvHR~kgwfaNHg&us4Sx6@OOT`-ph)GKhDW(6^>_+dl~Dm88dtMe2O zx!gqEizF{fI`hjVt9iy-pOwmw;AQ;%lhernNMbn&ptRkT=0aBz#<^@k57mEV>HKyD z=6?ADOi~zsh176Fii0)?vik$f2G2(QgW=cXrpR=XpC{#hl27LbBbD7#B1B&$0pM`7 zgi$VMay|WiiGjl7!bYdLXe6UjdQ)iv3{3>>8vIkE`HtkpQqJwzrc2ClnaUVXR|!a1 ze}VbCIL-vEK1oz$17aFr{fK`sQu*OCm{Vq{PRlsW7jc#P<=9%s&huLitSf0vG8C*& z@tL0Sljg1|bZ3eZJN{a{?>+`zv|b-CRT@*XasB}f8c?!aCmEc@Ryf0`QVK|M!HDcM z4`vf8F$!mSPA#VTF!$OtZ@M+?sO5kJ+7&V_vb^Z7ORSo5qlz=iLcV|P?~hFa0#295 z7bQ7*69PSOnwdB!i9?5jR%3y!3IyzxczpKV#w439H%XLV<9c_?Xs)n4Z+&?{;%hF9wuClC< zB37LUrzSD|dZ-vN$6`@FFvkjaVr_!;K=vmzWUO(=YG4Vtqvu-Q-1Ob9IHgqyc1=HU zxpU*G%*!}&;CQ)?{R0I9_46z@A?RFQ#WzW|%qjSU!|%7WOgn$;PdWKA!<y6K zb@}99F)e>N3Q7J&lpj2Qlv9K@HTjOxBnGft#xHb4vdC+pd3J^0?yw@^vBIPh?Hp+AF4uCM^w% zeNBIuA|^eu7oyCUQY06cBynO^TMo&k&tr(hDR!$FeE|dVgYX|`Wh3$wiXF6@Qc~Ka zc{nSR5XR}P0#zTaWe%1*qaoZ`rlL>sn0Q3IQ^EQ0w#eqU*IB-Rk3KxDV@d^iC16wO zl5>A&oAsV>yaZgiIGiV!S7nuo*;_|RNZw9SDs?x8Hg0fXu!}^_XX>9|GFI3zNR{Rq!?X&OB5CEjj9`q zIu^QatNntu0CDSrgTcM~*VLHuo+esV8Ev`v7nTZ@voVocvqPHVeq_G66D6whlwcar)sUt- zva0Y%l{W2uI>R$nv_;bB$pEvqT&0+eJj8EsHwxlzql$oQdU)=m3Es<46VL-ByGnmB zhFu*a3*Nq_%vlBaO-z+38e0vRsMmE=E!6Ud(~jly<~HK0B^aL)k?XnU@QP_S-ZpVf1 z+WK><*65Hlc)-`!S@vsI7C;Nx1+I)^1uk!@bv8(FcwY{yZN@m1`anaO$m4`=lT(#^ zg{`e~bweJ~;adIh0Pp9*%_e*~zl%hj=4s<@HPu$VeJ-lS8Oku7$=@RqoqK;ZvoltZ zWIJ8!&{M@6=OJ`6?|vQ^R~>e_YEhQLhq*)8V{%WX`ga&mhs(u1R& zzLFiop20jk2*te$cAIKz;g6a_cVJh=VW(8JzE_&MO=NCw0i#s$e!^E{@xF};I(DQ# zg-5t54oiD!l~ANJGOb9AuabYoDy4wzw;3u|E5;^D2T7H?{ODR$50*Ah;dSM~Pnh7V zp6x_U;AZClH85gnZo|h!W_ujG)jMf4VDiG&VRFa ztj%rIz|UcZ{~*#2*ug#81Q@1JhR_BGkEWA^_W*N^FXX_n!`&Hb82H2d3HEW)O1C=u z&T+~U7~+#wtJUsm^;&7`^0(^0Nj^5G9$I>R7CkwN#+)5!YE0~N@!DpW+k$6WanT|E zXKvcDQq{*Oj?dj8Nsxa5TI9!>N_sY{zlFyj9pOTlkNcR;*qlnb7AK!QF1WUA9H;p;Cc|FQj9h zLhHs1KEfP#8n3M41OpGDj>`K4G6u^9j6&U-N$2 z8xZ4YHGX<^e|mp?iP}n9C40yKe~o}`rW7PY`w7rJ(}B)(oY5b&LMIboc9E77*Q!(F1=O8PUt< zdoRc~Csl{3ZM^(@%CtESmU;~A!CLf>`-vZo;kI|)SFC?acC|rOk$?9c%(qg)k)(BL zf*ZuR<)2i<@*53-Oi~bXW(`k6yDLY%Wpvt#CaNl@0J`BVq365UVq0(fn$AKf-3iKv z3ZyeTSYyY1jNW#Ve;3~4a9wT9K5NCY7Je-+#8KwoZF1+Nle{eL?eY@Jw7jHzD6b%| z{}u|*eCvN}SOdCC_Y*W~Rt#HMoKM#fAwZ)-mA9yZ2X&?R!8Kn;oaB&*sCvi~uyZ*l zP$vffl5B-P5U9%mEbT>_Vsx2-g$uKK$ZKysc|`=X=L=?UbAs9HAs9+_1+{cEUd>(3 zZ0GKtH+1l#pkxOw`zBFYbN>2XSj+bULiZ&46gPjTik$+J=mD>y%sIV={%qdkB-$NH z$xM5q4Tz|f8wCL5273G8Aqwp9VRVYgGS!EGe(yB*r6e%GZJ^n3w^S!k?1X9wM#zSi z7>UFihAm~T@&UVw_Q`GW59R${xd9itf0}Zj58=O9F#=J?wIR@$Kpi&i^!QKHjYqTU z->-id*Rm72FZi4kf$xO6!*07n6~d+7R?a6? z)Q2c9dJOf~ol{eN$3%=bqt*fOTaL+rm)#4=VR<+)_lXFn<$g||Nx5>`a!=>U34Pg5 zkabsIjZ+EKWj{-~_V)?c?cs^CQn=R_6v%)5F?P|-iOFJ&3dv@MBKl{G#CFon2&8sa zsfyX`YI8#Iu|@^M0RJYjumjL$gaST68x#g$iwglW{!Jo4pQ@e$XkWF4FFN6f$PXFS zGZ9rZFWbtFIM=d&<8u*9M_6m?Tm;~crZ?XIyjt8mgy(-94_cPE!(z>@)V+L)bE|)F zQfgxL%N*6sQr(Ym>Y_`Bn&{{EpT_umRhQ}0{BnM2e#(Gtd9_d*^ZZC33D~YXL`{J^ zrJa7_L9Bg`NMRk^cW-Re@Asj)&g^ZD^R&ce(GXLa_@2kKA2%yJN7h7lz5w*o8tMks z&#MJc+_|pSVQE1wm>m`@BF&0}pU!_O__`0$sVpQ>c_%q%n#y43J!8J5K ztgv0*0q}i-QQE$mQR&moGb(-BiBT7jy&+DePdjodecFXnTrH3N%P&XL6VHDGbIOlY zG?rrC9=hH*hfNY&3i{@K0#2SbG8Q)D7t9cNxk@3RlIEIrFfg|q01x294Q%%iUsmt= zSP~pK;Iy|Chjv>?a^)73SQA|(^HjbSW22?s&r*7uFDz)2rC7+Uub4+)Cn=8YAq~l5 zMVY6n#M2ce7OKQAD@t70W~qOcazT;7uTI`^RBh?JNf_U9ldFy=v0gxsu})~g21DPj z3%bMtl)T5mfe%D^zIFgn1Bcqvd_86zZv=5w`IwPOt-4M2otv&V0_sX2xyo^40sc(N zWSnK-(0#QStYU^B6lR#=a%NC%*W?6a((e@VX=U7%$G-g6%|YV^7?XbxwF#5h$|d1W z%DjPQ1rPq9mBR-FZ&?cJR}Z?J7}$a89Sk~PPF-z86W#Qe$C&9MCR)L9;DLnTq2{nq zUYa{etd4`}Sk(|i4qPDASis>V7-&^hr`$G`4*>Viuv_Z#U(dK_8U+FCZEIBSnM~F#f_|uhw5NPE@jbhDY!Hlq>BcXXzSFMgy z1iI;&O+%3%a1h^in9V29NitBZ6OIVM<~n|*pS^98OT39HL$M8_yq)aa+BWviiIkHO zGx}`8y>k9!VD660ZE}0yV^|Fz*5*yV-MTe+2%yn;vH$m%b<=-H4|R(zo8a1GBj+;9 zy=22FwDOYiNeZBFd~o^>fn~jRN@An%(2VsZr`q zYR5`5A)VF}D-nOL*P6jflW~XrAuEbmF)-Us6{oX$MM0{Ic8ejNdVr>UurCa-(V&SFO_-Y?l6|`h~zt75yI5xTd0Tke{(A%YRH)zSyL$ z9B1Rdy{>-%jn~nYCzE;hpH-HP8kTn^^S^fF>Y^=36x?6e04#e#HM6v3_&9F$vA1mE(gVu#qE*p}6y zK|Q7=As^Z!gG$K_1qMY_-Qt2GVVemH+K~Fj;({WwFf6F?f_7rA3JZ#feS>xSa#Q%- zJDPtRsRbk(u&hUrWUO;(jAVw0he+l+T^Ld%h`>>q+Uy_8v|+5-8qCXV%;Q;^|K$1o ze|&TVTc-_0pw0Gkv7v&Dwu_1)E3aledtz;@?HoN~!hua^X3S3{&GYgC@RT{!nNKke zL;)x`@{fxgd4>kD`Z>$M%(zzKw2swU#NmI^M^vLs=_XlK$-62{6~BX7&Y-|mUV-WV zB^%Sz(9mOn7b)I>7=_)C3xY2BkFMaGgtb0Vt!T}mEJYB=#?;3`_NArM#`j!N=8?pe zIJunt0M)-c0r61ftK-VHbXVWdmWUPY#yR2Tqj+Y&SU5)=(EyWrq;C|azE^-WFgbrn zJu1@acM)hTHrrcqoqn17*O!PjI~B=Q<372>YRg?Kn^3ooZ;7e*dy4Fx{? z$%TSVD~#J~3SgH#?6I{n-4*0F%&t6d6L{SRgf@I`{PWeWEMd#NG%u)2cVVS1O4EN!VB&4WS6<92>TIMi&@IoZ`t}O&WP#a5@weV#vWuauXUX;y|Gb0VSeLR z$BJyDln!v5dhZIV$RrL7*98R;cV!va^ZV|N-0sG#N z*86Exg=Z}&qFr%`CsihI^10+HM*y5oDS|Ggx@Y-#&>)ln&95=d*xgadz?Cbn7JaR* zT}@g_?LE9O%(7pDNx#Da6$gJCz$~7*^1!cSZoP&JpDz(M7B$4hW0SLI(lbQ9vqN!0 zOcgM^4%je2l?<}vI-k$_1g6#tKLmq>M}U!YP7USk%XwKr{>o?!x`Dex8S+Grct%fx z4jU+8EBW+ocJB8|S3o!Z2oYk|;q;h_N;`F^2g0#D(u2E9uJpnMeBgh?b>cn92=D++ zwvnF-j0ac-6X_riTQR}Z} zWy#!yq5ks6mENDa5!RVpwR&ygaMP_hd|VX4!rf%ykjgXPr zsy!|^W98kYw)h@yRcRkA3+@GoEIQm;{6t}DeN~!Z+aHxSrpZb>Qw}^_HMca2+fQX$ z7~6bx!Pe|`$lQMs<4Yohe!jz5p_PQ4*uGfGiQa8Ht>*0;!~LhTZ2T9+hcwtWEGzuzSrlP;Hwlt>FFITW-vouh|cUF;C=mMutDPcnXK z*`2)j=V%t3!U+|i3=+1FATch9?u!@GEg{O0eQ8zBh&vlWZ=$?(GciG&(Xew@u&~IV(y*cT z^!NR2nsQNCR|`m~Pcqo;%OK~)TQAWK&lY6`VxwUtZ2ODkDVrYz-3D7>*J`gXN?H?9XTG+gHwtaxE60aM_J=xyJcy z8C_Qz@Y*ISc02Gc9M={OSc~+mKF_Yw0tC}lSKW4lIlM+YEjFiB zxA>1aeWtD5Q1?QWdB(F{s`6+$k`G1@^ft~=eXYH8Yv&ua+Pos0q_oqLUcy40q;`Kk z&n9L-+rf8|JJ?U}CU=Hv1(jE|P^ZwQDxLmNCghgJ9lFS{cjHI}*@Ti|FrPaIExVrJ z@+nJsMv_jkrp}ryOQG(q*sS8b3w1nOy}=p-9ibGZA`IBY7Drb|7g;)i3ykJrmh#LJ zl2V&&-n_rAm_G5*vleVtARp!D&tQK8#S;kC7zl(?lt37;zd)E{F4zxq?i#GG5#6u| z?mT-L+|fd~qou&T_0wyj|Emg%FN;m-(+Ul zP`*5hqeNt}oBM4~E5}|QVk-Q%=ztW)#q|fml?=Hg9ea^EtIwsn$P$$PZzO+Dpr)rx zJH55N5wQYo{Y87T!fh3A?YKAvm!}zi?(8^AC(@4l3GF@%f?e2htLNU$oc*8EymIjv ziHyj_kq|HYA7KGY9Z-6SUT)mil`kPt4rCXhfhS(r`vY-@DJ~o`p|$aw+8qOLGN(+sw%0Zy0~g%J{Qs0>=b7VEK%cpi)qy84Lz>33#L8HkWY;!*6!Y zOU42G(ggSg0EXY(NnXW?8aI6?#LF(#HYx&aWO1^m9F)MlEG&Q>O_iWTE)oRO+)~4; zbW1!wOefBfn4PedA1P7mF-b5)E81Cc=@AZDfD$$a_p-6MjYq zrp-2le4+*$XhEAJ-Lm#9$lYtR4PqCv8)^|FU)H4W&8*jEX z$JzLX+5(tWL)eF~FQHUuKxI33afFT28scdu&X6$rkl0l-+G%TbOI=PWu(}VO-DKX6 zO2E0CMzTJAsO)MA`_X?%SeH`DZm7LTr4pN`mC!CH7CmHpkqYpeClru|WST>F$zh4p zT!$Dp2zH|(Zjdt@iEx96VgYUn89F8g zr^mvVNI<1{jGTe4O5zN}D>HaGq)$PihG*sNv2vo3a#+h&yw!hzi(@{8&&rX>+10xJ zo(Z3_yY1@?icPB=ugc@O5ugrT6E0GFBPTsOn?e0)6N0Q@(wC^wAgZ9X)atNm8UP@%5RVHx>WqbiuD|wzqRc9g8TA(5TkdNcDZ&gWxw|T69xh87fdW`4DbiU7qTj>0k37yE1qGM(c?3&HZ#K{St)I_m(hpcE!q zxY`W9bxQbpTw8SohyJEqh{mQTF7dw0$Gr9ntham47FM&($&6mxuu};Vn?t|+sMbGG zTuM=t$7)725F)~D%`m-FWa$p`pMD(LGj4yfg&bnsJ=jC=Yw*S$A-e?48%Y;Mwa3x~ z7~}P?#=Qp5@oq+D5hVO#ehb;nI75Cvq+y1J$LW|h6auyStv~DQx&k!Barz-OTo zJQ;};1RwZ2C*0sW+{`=Xx1b$RjOU%Ttu`eY>;81#YP0+1RHJWgLRhrfjJtI^_%DB2 zYyRF18WwDmmaz>CdQOL*Hd@_2&XN-YzKVgLj3M3@f(NZ>KeT9Ogw)4p)}!^N);KT+ z*whdfGl$~);Bc$KrF|UK9t-W06P_E&G{>V+;}6xJ_kOSi&^< zjPp*b2BTYhAnq~#tSsD%(cFb}BYc0=m8@_UFcK02FN~G*g4S7u=fnZ#cxgp!i5WVn z)2v^EO%@K`7YvXI|23x+*EJ1o@_&4E_~`W8PY)jK>9=*_HbVyxvO#$Uvn%$S9#Sds zY3AjMbMDEDv&owBjT)zsC7{(v=@3E`K}ga>6521ug*D|`tgK4xa`q?GvG;%49lw_S z>35UNeUjkQ39e;q^w6t(XBYEryg({I!vdh<|CyI9evXC{A_G`1v*TlbnF(=GUy`T3 za!Kr%vspQ?h=zc|wz_s;8u};}0g8o1QRdSwD6EF|Y~WsdC8_ zSb_O%1HI0e|NGqy_B(cpiAk?R2MqjFqeFO?e#e;g zNws$J@)|K7s_V3P1GAy)a_hu#%huYFYt4zw2Ds@|sLLF(qY|k}X%~N{G;Pn;GIne= zTkVQs!_^c{vbUP5biJ0Zo|jLvpB?rN8r7v-T&H~Y2@R_>i|z2T*)Zm>;C8qR7Xq{? z8;`=*zbTE7O0_abo>hbm?9Cqc?}azK zJIfTUy+7+q8;f<4IFLE;@Q}wp7nYRT=ie8gf?9yM0Sx|U*!f@0XVj~A$S40&;*IPt zcaZWk+hJx}{yBThmgjbp*(vind~X|~I^b@dD^khENFN{Q_3D3RtFu|GAyZyq1kqJt z-Y(0LHvn|?qJhy+!4Q$^FojN&P>DCj2M|_ zV$kM{nW(o0!mfW3IZX`)2>+>PKz)YeIhzkXhhTq3${;%)1_8!odS;OTe>22R5W{XGP9Q>I~UXX$|Z^YlVqIEqluF+uHl6|brd%KV}3qt?A!xbdT z@JAPgCp2-b=RBwS#wgXN=g{n1*Hj`1OVoD8!Hs4w`u2a*4To=ahgo{Iq4`2W;o3`Y zx_*-f9I@*UE~BBij?PhCPe-Q*)fF_x#!$u;Xtn>fN73I@-(Zb$1y}bGw|Hwm-U~X$ zYCY+-Z-5St6b(XEWTBI&)byTabh^=H9-hRx9BgY@u`F34hxz`^m&fcYR`RFzRO1t7 zZJwrJnu>pP0qj!l1QAy>u~8v*?JA~nlaKO}sJ5gci572HlDeGX`jtlPo`P}qj~Tab zH~EPO)!=B87-#}t=FNcMx1N8lgH82uuCT3WPS+C}aJ$_dk=bu5Pa;!?(~MW|J!Y9EfN@7DJj!uO| zvnE5|b{f=#%VU|Shls9S@(i;j>T%ZitU zoM8kLv{<(;hUp81sr6v>^O42f>dxS{D_Lc7{+Z)XsQm6qqqUK}>$Z{ z*Y`7C-jmPFecmEoqZg}A+%C)Oc5mEUr+>AYzGcF#^WX0`!M=}y4NXeQXa5Oy?xBBe zgKpLXw+q#Nz9w=A9cR$Zs^DQyv>r$7FbLOxBIE$wL7xgvgtif8djz1r1&$0BNW(~% zJKMCgbgkLzI!!O_DQYiUPaLonhxIcAPx1=)?aqE!U@wN2jiqI5gSk20Ox7IJaUsPR zH_)c>3}?E4hvOI*)q*TJFzFnw`{sWc;(!HDl1QIJ(kQZ$?R#OCe7$p08|F5DYX9I5 zp@%^q^((4tvYnK&_)Id~hetHY)4L=312$x277>6211tc*{1$2(W0r0kKUZO}P?LRf z$!t1(4o|jpRidqwbX~9bzSG!syyX4zap^iWAZPi|BHRUwAo+_}{=zH2yP|)5EPv5l z!|aZfy;pWd8FbVnP!=Fz1l2fu&P^KNpSNPRj=GRepA}Go5OA9Y_~*@@2zD94f+<+U zC|I;0SRjH0Qvl6j1VBMg1T_UttJTd2WE&I6yu%b`;C_I#@F$f$q8ln%#lf6XQkNHb_^yAiwQevsEDDnZ{wHl;~3I~`WW zcu`)YSJ{$P?y?20+OBsL2KJMZtk0|fq1io6%O8$sb9|br&%xQUohhkp<@o@Cj(Y4& zEPW;C!AFM&kLt6sr12ucg9*+=ZZU|y(k*-UYu)CiGF(MzcyOJS7@mI|(Uv0!=_?><_f+~`~+1;>3o+Fj~S0p_;EUgETUi= z-%rZ6<4^i31$~mC4V;&3O4;&%e0Xwl=pH^$(P82k((4^p7&LLPQvj17Y&4h|A$ zi*KUWj2oFEr8j?6fE8E#s#a+zj+p}?nH3p~ZyEPA6_l8&=2x=9PE-WnXrVpD*{7g? z2toyC<_B8+aksXu;Ht14)Qau88QZbmnkXLF2B2_++*n!ASDvvDm+NPlvux~Q9a0bE z-UYmu_xCia(5ZyDke3`~q>7W~xtm~bz#hvHkk7I!tj&Kj2MOk#=aX!i)SV=$6n8gl zf*tKciT*f;mHLFcYmq@0NT-hdR=+)a$!`sDeu9buG5_z`_|A=Dv7p(^BpW+h$xzoJ zp_n&R6UaGW-{HrPkB(3GAD!Ma=n!@C{?R8NJv5IFK0P=#C;N}~PY=I5K-8t<^3gjV z96UHR#|MA!9vmM$dT?;^f*D+qmOrw zj|k^0c*7V|f=5!g%56;N_HhRCK+@>xe7jpC$)|rsIsi{Vu)i&F5Y<`lfXbfZdj0~Q zD)FOFHSJPn?0u=f^zQQG($c(ePh0%sbKC9_T&nAn~Z=jG}dQz>QGr1H{F% zx}BX)GyWuoJmio$1w~*}I;ICFpVa2y2?FTxg$-Y72R|?~6uxLiFpRpfobZ)yj_jqM zI3vIzkZ*Q>a6ul%?J9tqg3_y}1}6{RKX~}bM+e8r{&-yH4$O$%9xR+C^Y zOw@~p-?*`Dxd(*5H%li2^Dw)b%oZp6uQ9Qh$gm23o>?^03F z+0_@pC_n*HWlCbN&h{B;QxxbLS5A&)G;pjkkJC-v;{ z1kA|Ug*!x}m@YSFnwv~Nt~W?5y**x^gEc^ZTY2AET8}-Pp7;Z!2VwJL?2$}wqQBel zi2xHvAe8w4!9z36ry>zpO;OOI841aS1TdFPy=1bPx3vKtIP4>X56o=a z&+U${tXSPpwULh4X{O=1Y&Vq&dZF!Imad*!)hIn^qBG02&DSYal;o^A>fl0u##$@U zhr!}gS!Pw)waax{_RtAYxAl%Wb?}$-vOYXZCAuS<#l@9ds%TMA1H!3-Ty3^L6K_AR z5%T8UX1rJ$QeDg&u7!p+AaPRVw@W%up=nG<1J!U64e&%-bXb0j04J0mxjGd#wK=Wz z%A$uI?=iA2eFd6=bM5V~4W!zCkCDs$Oa0Uj1?c^@^@fD6l5*PF1-$yY%tO~Ac ztXk@toFk^MiUby!k1&!b1yb7ctKPFa$D>^IJt)Jeo+iri7cdWgQ)WFXm@gJ6+(6vX1cz&sLh(Zg5 zS5aG@1)Xxu-Vq2%*-e0gj^EBaJRW<;oAoB?-62kbX6^BKJTo4@#vU>yJWXKadcdtc zl^txr(V?XGiYDcFCYQ>up!kdiw1+F&Fhitp;{VR@tt^u-B;28Y{~L8j^Clpnfqx4> z5K(L~kH^a~@P)u}2`RfBW;DQ}7?DH47n46gt!gtH=z}&px$3SMmnsdtbSjVu#g@v%W(U7D2eruYP@Vn z^~YgURI#U}Xe%2&rd(xqN|>9FB-^jOwGyTGkhvz3{S}~@gQBvX3Pk#Y7DyCGzh032 zZZ0P_z|y5V;l5hM9P4FZ>vX#{EI+VIeL?A_GJ;xv{zwdV_6P)A;!7!Ru8^0uo;^)x zi{0GJXvWA=_AtYa_0SfTOp7+Cz;xcIPk5Ow0{u9Vg>3VgHZFdFg5t^K>GA0yuMzb+ z8=H{PaeOO@8v&KFy>U{_+dVL-le5XFZR+K2bc686(@%y~olfxTprAW}%d+}aLJCGG zlufpOu$np}yx*L5)i z0g1Zk!enSiun~P`=7v!rjsrDang~;>IK@mX<1rIK%tzjI6{t6g#ci6BkRB6l%?faB} z`FX9UP`t9`blOtmpTRnl$UpZBOtTQs8li(-Fi}voplv(IbD+#`c&YyG*!7fq1{He!ZaQ zfKX%P18xl)7Ym>F=8xJor|Q2#Kaom{Nd=oNl`O)fUb{Dkx{e*FmPqBEZ0TNq>d*F= z2H)ru5PpJHef*PQ3gUns*4=v&hlNZ)d{)mMc+zLJo15S$Qv7(uUT1=4;=j=xfmxZT zTZNQC+pwB}kV|1pIT@}YQG)hM9ar+rqnH=QKDA@IoRtUbNFJek9hh-JH)RijmeT=_)y*^``5dhNsR$Dk>y zL6fh8CT9jpUmPiG3!FZXR_Jkny;`~_8!ENBW)%<`TT>d{G*7H#w$bS}CpAmDlz zm!%uDF86dEV|ehv>F1vxeQ}(`RGiN54r~hsX}cp{Qv)97pR6V0(W6d(I+P56-iQu9 z%3(ru1QF?2r!#-jp&~MU^FA#xRYE4e*b_o@;37<_YyS`qUBx%4sV_b3k70$n^iG1( zDR~FXP<~DT+9zigLKiqF)^Lf-EG%6}>eUoNpe)k9WZIrljg|!;i`Ro)pbZc-QV>J5 zx#SEZ>TC})gr2br?(w0217Ad?+6KGYkiBiTF6}^v)A`Y~3U{apaZ`Nw$We~m-@V@n zCrw5t$=8Ewb6HgwUbV0)M~>~vYIg{?=T1-d)VWI7pNaYUwo4|;FZ!WO#eX}cn%Anj z`0sdh;rs$_U4D>$bO9&#)2llSl6Z9C%SBCRaX3MShat~L7vQyjcJ%&dTZYsRA7x+? z_|E&id;C>ozsk^fS|P$Vp8dM0m#Nnk9yr9mR znKv}KeYbHrlgVh^xZ#RhE@yIPzw4RYiKO0OM}ZTf3u%mhzj-@~Q_~mFI4>-zZirDq z-K^(Sy?~}=Y1JCv4O8Is-7t}P@@`m66qU8@*SlQ|-s5gqsFpZp#3)*CC|M$KG2>S- zS~VmwLa3jAoMQj9M=4Oy9HeMz6PZo30-ka?HMuzx&7;wo#G26ehGd@Dn0Ugf3|(68 zxH3InpY=@icq(Q9(&8enF3cH*YM?K3wI(LQxkG>r$W8qYe37&e*8aSL=ZXB)~s zpUY&k!BnolOx1U+Wxy(E*s(pImz1`C&t(iHdZD-(huI z%txi>H4{<~)IB48WBBF)Q^qAw=hhfLmb*2tw1Gg6@9~IKgVCGah@txY^b{DG(3hXa zb@9j;Pew@_3{_RaNj*Qi%&P0G+XC$&omVawbXX1$t7-icpsJ@(Gt_#sSXF>x!W;qL zf5!uVe}FX(8;z%{)D2=u`K$reyY#QS&dQ|*N^`V9kE1Co6u6!)!SerAPGBCj7(iDC zzKrog<-qh`F3ZoZ`(d8{;#9?H9#xMf9gvXYB)cIk4Nu2)sJ$Nvf>7w6FRD^Ir5|3# z6RiF#R^AmS_4)P~p8cM{HF7WZmXQMBV;3$R*d|b|^*W*b$ z{Q1YDFA138&wrX;3-FWhN#%m)=I-T_AZnq!tPGF42)EdLsRG7}E&*y=b#b9|#LlsQ zBGlznV>YWZdZ97k$mrBE}M2dk@p^hfwL&2lKT#Q5-fG%gR-|TGr7Z9((dw zZf!(}=?F(}HimX|(_x@h8d|3n3D4NHwuUrfMklI4Xmo5tT~UaKzbP7flbUQNYoIAp)GL@5+-xgohvtrd`#YRY zP+%Ur`W@YlWT}>CDp#VwN|n>COygo!qMF$$&!Q<(J6w^K4i?$ML|tW$>80*siR<AcFac?|p$I7EXQ%}{Vw)6NyEXp#Z56s)_LEa$2|GIW5*Qut zT1p?`oz-V4qhn(|g&rfEW0gzB5EqPVAQpOgWcqksye3fxd3T{;lhsd1p`H6c5VNhj zO*@BGolhS>)0vDT!3a&*U_=)ca{^pr`eG?kcM{L>YkC9e*#D-djv()Unl>mFbAt8$ z+x;Y(=yq69xExU`Ze=!u)jdPOV)aI-N|Opy!E=P!=#VHfGd0+3_UZdz9@d@83h&Zn zPCAO>wj?G*7^z7{bNXot8p(#aUb@+`HDND*FDVuoET*T>D`o3|Vq-yK@#e7=mmKtk zM```^!ojI>@!?*74TX^kh0 zap~YR6h>KDXsK>dWC{cA`7KIB$B#7kY4>rx2oU1-#Sktp!?eqPHt7^U#`3Y~a%I%& zcq2Qd;zaZ7curRZ^7xm8`-_PIm%NAzrdbevA_51h*fMSqkpz9prZpgwRwt>0gMcJ$rJ+4(0BCjR8O zkr*6npJFKWYYH-d%J=fn`Hv3_$CF>DbALQlT(7F@MP1edX#mi#KxM^(^OxFP(8`m~ zq0Wnw^Bx|3?f?|(;&aJ394C9&U~mCF*#|waOx0Vc_wGHOEgp_%_wG4037*u^%2)y@ z3(XEmeS{8?e=MqB!t---yvK8Fk}fRYRgh^{14hUv->kcTya7{{;A~Nqlcp29FFyqq zkAX*PeV!=qJEq2!D5EZ;&$y0%A5Uj^*y=F{XJyniZ4S%hkMZo6nBR4|9Qfxq)m@|>I{_k5U!NTE zB0HeWHv-CkP=rn(gF=fkI5$_O*yodsmtS*dOxZ&C_AQprgvWIELiaqR)C z=j9%hCniUpDbTtvP6h(_Q#qSnEv~@?8fbP)`QY@+i<2`C|9kn<^lFwujconm_yKa? zL)YMcm|{TLeMMo&k2(c)arV^*7hj#7XyZfgmD;(lGzLH%FsC!}78}!Ouz2JSgC2r+ z()_UmdC)W4dLUEwDNH{2=#PIc=|Sy9McvQOF0L#1@h8ph8xK7TDQ2#&S&2AH$Aq`p z8t16aGuY$z`IE*+b+lD)4r&r)Q4jJ@SZb$#OHPeW5KxvQXBTWyw66P}820DYrG&}g z7sU$ag5!cVAwZU^j$+dNrUxfqLuWf4oqu_B0Wnd|4o~OrPpjom5`N_bU*vXa14e$( zQtr4MPoiR+bXt8-jq9$$1d~@<{zEqunq06s4+9PB`+mvFc|~;y3$_hV0W|>)hqfYr3Yikpu29iy{n}oUY;ivh7iB6a3Jqcu791L& zbnO`xm~DkNTn(llml!HV_)aD;V(}*WXF1QcSmt{p+}d#R@n@Q2HQ`PelgDX0QWZu< z^y>AlRD>NjRl8KcSYy^g-M9DA6e5&vtK1m2OL7dgx$F!#to&>fjSSOwGgFj*b`sil zh0>V0=vseZ>Np`Zc9}OE6SpH{5p!0h!>K$BaL?0LRZ)}ot8zyrGgr* zUJG|W;SjAbd7ABjJ5*c1HrMS|zNmJmo7$=0TqaF#C%J1KcGtS+s*<~uP|LHtZCjmn zV^)NGXm`!uvOu3?D0qLRxoZm`7UJn=QZ7b#6J1<=!1*TzSAeE!2YbRK*i~3eXO7H))pNX(Ov4gcoVN3 zPTjjB;Ltjo`28?Gzd64i|1o!N>!afVfAc;hCK%e_*Q(ZMcwyJ&n=fedyn8>;9z8swpOlf-Skms1I@L@&JvC#8d)(YySJBrnqque(QPLgmdM$ma(%qk z@m7z4A`ZqUP5nkL!n@(fWzA5GZcs!PC^QP%Q_UJdii<~aIsY9mqkcVxP8^LHyiQ+Xiz{32LczarX$boM1}k?E%&Lg%$kKLHam zdAbyrV199bh7SYb^$?uq{7Ux^xal#^s5HW+(uZ7?hD%)oWa;kF_Aq>z$?kK(%1rDLoPYAjgAGA+Mv-S$*=fzlwRhw(|`o$4Z2sT zNcBb7^s>q`??ae)Qrmn*_FTg*kt}!l%gAXx6`~QhLWINJNdpT0mPk;Y(siMn8s>?n z^O>ObgUZJ1H2IR)woZpCs4{O!j4qO~Q(k<3QL}Rq+<%d)er(i_p4+JQMX_C2d$c|q zgsEpsm=~#@VY7qPGq|u^=S5mV-z94RGrJPtnxTbsf1u@nB%)^*XIhFS=X4EWb*PAc zYT)EHSIRzJi)ZX!Dze>l`<*OuLhbHr1fJ?;l+oJBD3`idX1U$>E{Qh`2>kDk9;W?& z#+O*%RXmv9%})gShyScLdp}Mtu%|>?1&;T_W55GXwzk_D7Wt{IjtF!L;Ms=%nbxT- zkgvFH>sm(8d!CH;j%i(F)4fr5drhS*-uPAL!vZQ-*;Ca9qwU;{uH9oBc|2p|Nhf){ z0B|wz7nQR#PpzMOS8`p?>uhMizY}YJ`nB^ZuPSMI6D&!bf7vr};}_KFOsw4RbIjlH zn%~0Ag`p5Ouy$ebr)2cFO2D8Wz04jL>9%_e$F@Pg`&d3#VlSXHZTr@EMt2$p22NQ9 zMb$73{Y*lCrF3)jZmkr+gkDNkn@UPPDrI(A)<-S;MY&p5<5_n3FHXL?I6L}(Z09QN zDnu0em8sNTUvr+^}w?1%~h*4t+n#5mH0IEF`S` z5lq3jTU;%}tqeYy-B|k8jh5k`O+HOv^P54+V`XCqCkS z#joSe8;^6$qbFO2Jy&CY?oEq*L)QTB8PKDonli2)gTGkWP&Q0%zAdPM`WG1TeLDAg z!};P9@w(2USPtkI#J_a*gjGg6jOz0$usR(#4H1|D*wE|o)h~|Tpombze=%@1F;Vve zIsFv~X#F~#mq}P_g(+|p;dTyh&?kA{#hpJ;C{k~;p7%4WWwi=_AHt$?%q+kSv}pzW zrqRB#mYbrmn$sebb8xSltY#n+txAB{QEz~5yHTz1y@K8kDOg=Qym{vF?+`?1qH0Ab z7x~I8Q{y2~4XL173Mom+wph$k9PXL)VqX5aq$t+z$=$`ZL1}b8L~AnljYg#;OZ2H| zRU9IP3jHSGqW|%KSD&4nadZ=UO2GpR@cEJA_2KKUzoCDMgYHe<4b3H)!F%_}%-rKw z#TrJF(w;w)h*TMa7-1v#ICew5!l-D)m3oW(xVI{JH}Sshae#RN%w14)KYpn#JQ*-U!+c8bG$|vW8=d$A zFPUwo7CRaz!WZ$LhIY7T&pO}M*+xV7#&S~)IF({66P4Ie)25(fak&OqwwSR1dfW zwF2sx3yS!V9s#HG$$);uOiv&SSuT|_0|90|12bB4>4<@5srta587NU%UgK?5Uk~Wz zCYUepqTKFc4T5PXL0Zn26$t|&I5;|BSkB7g;dDu{QK^pC%0Ka;M(l<+!_7#b{JShX zs*w_Z!W+ux=O@suU3B&7a=Usi@BSG#_|GlT-4MFhx5V;SOw^5{)3vqvxmizxf2mI5 z0>()X(Ltk-9Ma>s!(3s;gXv_zzf7NrahnbkZj9+G>l_UT9DT|rEb$0~nb)yo2Z!dgSKK#!|ZkSHf9VEzNdMFb7>Gv=sP zWO>O1#fXra@P$;c{}zBBIZbErGpy-6eo3_@S6)RGeX4(2tY#C6po~$1FpPISu5S3! zt2V@_M)U%IT#YToL*G8hL_m#Lc%X~2`R)XzOJS31QS9GIA$hlW{osIGE#2sDE$3^0 zFNZYu(@F^~&>UtPip2HM{h;`Mh$>OCajH$0r42;(>ZDF-hbLRw(c znL>zT%(;>)J z{K#LVZM>Q-kv49MPzVH)!ast4PdK3!-U+61lEi`MfJqd5zy`Vqsy3;c0aoya$D$HX zA+AbaV?YrgZ0;(AV9yso$uH$iQ$NO4Q>lhf`xESw&Ga)O=Lv04brM)eKpFCYiW>Ol zfxKTYu%c{9w#$q2DSq~0L*73ZduK9zMAlA8^QtQ0Y7F1tV60nl&1g}J8;OU*~gpPyQ3q8>|9stma4JXU< zFjw^uj>At#yavU~9Vb+ODCN`;j_5^sLJmN4EZm_6xJXtp43uN|rZ+I$qYHxEuMemL zYuUphw~bL-`KVBg@^~We#IUiL6e~2lDcu-~Ppi9SK}N^`G0ibtRo3|OA4R{?(C>9A z;hFG_8st9KJag@Jp;If`qpzy*4Qiq0po)6>)z(cKJc=0mR-iL~;zfB?p#_sEF-(6?3CbnSEL+9b$$X@ zP9VN?inXZX$_EmEF^+5H;#dK9*bF5hBMVKVzuYuM!bi31RF!&rJh2E(SPjGB`5F@lFg1aH&=|Z_$?H5nfZl0%K9BYJ zi_hmtQ}G+==f}^ZV_#N)WJoqe*H1CVW@|N2Mmh6@qmWW;ZR=CK(Gx%Ft zWAs~OC?RHljlnV9Zf%Ld*Bx%IH(zwT#fuJZ#5QXVv*b{$$rT6ZWh^)l%&s>q{%At- zmR)clXtdtIguEGY+)Bb!_giaFBiuzhyV6h)rWK(!U1uPg)G~uIGFKTyO3>?uZ>f%K zw8q$MiNRe*$1hLA77Gk4p0U25mPR+!dao`JMaJTPBCjT0T69!(adW+KEi17mo$Wz8 zv`urcd`@e4?UGy1Q(C!T)qNH&QNwyHTUyossV_pXQeA`Oilb`<@)oZ^xNz%t>ZQ^t(-f3oiQFHg*i$o6Q@^}4sMFSt<~hrG(8|+EuW>P!M--ox?&KN~X0@pm4ix4M_2Jnqg0u-VPUjcm!t=Nf!VFm@!7#U;S|z6*?n7c$bOSZB_=(K9J?p~{5*Pgv%#E_nLzVBtuvbN zb&u3$ju+xePVzK6W0t3ocA94^ij43(cAn>;*+nocpED(~?G}7Jr+U&ReU~tr>{&pj z-ob7<-E+uN^F7JSobU-*K}Vt)pJp|GM~po7?sU%QDA{7t=P+c<`W$3n%vn^K^S(`| z46fRZ<_xZEk4b~H$uin%!`qQIx5`1g#)UPoMqGVti@ z49)uCmtkb&&CrT?=zY&!aR5`t-{Tdurz$?2O&|XR+iftPU(EDYgbcqt9&!nPTwnMM zPLeU3E;(?r0N~|0ynXQjB5;=q_at*~09i;2U9p3YCsMH;af0Dyz@swCWlX|M@9&JY z*VlvM$}i^zyl|nPyk`UEmKf>voL3oam*ZC>JSp~3@|Y*98ln`tekTs^+L|zoCf_|d zexE-{!)4nPN&qEgRZ`bnXvhSAA2C5AbqeuuRBHq@QL}wr_dPN6B-nwz(GX`y@YFD@ z?r8oK7%K7mM^Jrr44DJSsl0=e_r|oc_??NNuj0P1EqMLmJM@zmw|W41<8_Sz2u|{v z!&fWTKTq``b)E4%x|idWD+;kLX{flJdf;++Y3hWF1tTr-^%WQ4vyiKQ`DB=4{sSa+ zKR_0TG3E3RvABe5g5Gqg;6ExGLSW&BM$hHZ2MTvKld+jBOFLi%e5h0}1n+sgpcHw6 z<4{Bsluc4JsMYos)F7DcovOTwF}DdASpM1Bs&?UNuF8({TLmk#xBxaO-J?k)+kueJ zGET~~xX(Z_&v>TV!Zz-Ipq6nw?VUj9glVSSaT~w=HLatzxGeEsdVvUJv5t9JCJ& zak;ipBK%zYwi)YNdWz1g0$tPS{mM?Y%I3|3V5tyBF|lT&8NEcu?D(l7GRC8NG{2gy zCMB2M7aV%^+J>FdZhg2Xm8M_*Z?|jd5K<5LY3kAWmq!=yNa@+3Jgv_yiJsdZP#WQ~ z<@lj^DQ4b|?xZtUkS&T6w&}i;sc@*<&HNAj?-NMp%X%(2}eX| zP|^YgmEVqM#~f9E~@+K4xp%qRjWt zqe2Z81*fIi?{!;gpoZ0G^368&Ngri9pE}_#P*UH$*RzR#8#8Xgw+_FMp3ygVUVr93 z5_kE-Hy=MfyRYpWLMi8ygl}e7XM>BB*sx$4)>b@ap1BTwt2MYO%)4HSs28Z*=WtXl1vqbun&ylTJ7A5 zr>d?$^Ka0L$|=2p@^0O#y{U3jze5K|5RK0#@2ixZq&>c~^7M4u`*==ITi#oFdfMdX z%G1+^cUPXCHoCo%+3i)7(tzB~FL4oymeB4#%BtIcFi}xRt<<6VR?YI)?~6w~;3t02 z|D)F)B{*u^8;5e1&Uu${P{yoVhTd&_>kYd`YG!s`Ox!-d)_G%CBK$Tzv1>iKteGm( z94q@0BXh+^r*|23XV0$hGODpE&rYmaVKe09Ax0jpsp2(z{mm*nyq{>3nQ9GHdbwrZ zQsl&cCcB}&1gniE)au@1b773H8M4EicKFU8yi;;)YR!P2t>1aAWFu9O3Y(?kV{pp; zGJR{;_gSwD_eX8p?e$GPJ1;A>U(TEB7#ke-F}15(dG3Svx`k3Z2Xz_qUC;ffxvWYZ zAhoZXfiTAfRw}5^Tdb&zu0OxtblXz!gjwWOKc14xzXZC_2 z(9Hcpsp=Iv&?ouisw0Tn;x4RUHH?M+RuY}O=2vam?c?LkTmRjgxB9p*%N#8vlJf4+ z+Ax-5+`i5U4Widz;=Yv1ak;@HWQ(!cT#XS$DqcsGuDuwebWKW&-77!z`xi35rYkRh z$RG)JnAc5&Cf8(0aei7LLaO#5=ugLvAycI-uhMxiM-kl~&Q)q}Tk6V5!Z{~oRC`Hh zo+3w9=8hdsZFI-Zq4@~o)w}VM+PikT@)Ezms2fCpm$;%2`%=SEv+-wrW#Jag>@z3m zv~<-h4QJd{JA?5=8i~{{(F;GuaV>6t*FVb|T)~({Q4FEu77}kDXan0|Nd7*Z{doJz z$(^j-?*2*b%0v_>uq_t@`2j2|BL#I7#fOz`1F*`&sJaP6*HaQlNXbX}$NkabAeIw7 zxhB9PJ-HS0qhcncGdo^nGoQ4elO7%VW3C4Sh19@Kh@|J|Fu~$Vl@b9c|3|nFfgRMRKu{FsTf|l#sTFavzlVp+ z@S`4bnd7X2<$88|vzja{*VB)`zI=Z1g=f4s^$Zo^Z{WKGuGm;_NfgAAj-r&KU0KmRzYu0o2FpkjEDMHNS%R^1h>n3b`E4rn>RVrFcKEDmlmePMyZD%>E2W6IV5 z;TU*~JzTwmwDOKQ;79RE<#%axuzwp4rkQiB2k_~2GnIp(PSPdXmV&TlI%KgIYNt)o?x)haM36?J#L?iiW&Ta9tVN3knj-#%SfarBRnKgNZPR~6~?`X?sN$mQKIQr z_5O6rPnhPUeF_ZhQ!=3(1@py`pA3$8qSx5FRC>L4QOWFAD4U+7boxc*w|BNeks*|- zb~dmWXEO|y&ZaDXmChCm!J~CHoiCHG>2J6iavE1N>b}(M);^`h4xvG{M=1yF zZ|R%;NjR$ADH5Si)|rIDzNA0lN|Itd$?Ex%f3Y7)rdl_D%5@}Zd|7j;H(e|i)i*5Q z09-TawxjNqO-o1JO+8Ha40tLbg*c4~Pk$9$8Njnj(QVBIw)HG6Zm0!U`&GE5VSUT; zRQs1ORJ&IwKp(7g34we|e!;bn$9R_2@}>MB=aOGpzLg60sW)|F^B|^&+Yf8qQu~`2 zprQ(<8fnmfBf@uYmU02?fOqgcOlkNd0ZdPLqn+7xzhJVKKt|X2kr<7Tm#af5IBhPI z$l2B8)|Ik$w~f(BtQ3xFaXG$FhrU_sZa&2?uc&zJ+n4!Yt8M-on3UPXz4Y6*x@*hw zLQdW2z68;lGKS3NgLI4jr&%MA5EcV)g*^6izsy#Da6W5f8OxyFJmD3tm*gI0iEQez zcj67~s_LdQ!ojb*^3iM!rX8EN%a7|e`h;%%(B0dC zq!d)X^riMdlDSZW7VrPy1IN{ek-(fs;I$^lkS}KJMomHpx3PQU5BRqKwsO6{6raB1 zUoskhk!AVOf6nP<=0@Qu)o1)aaJBOHnukHljCyuMfAVvhu#b$_P(?VCyTI~0WYa1~ zbqU$Rpu#ZS9d=i=hmD3YNI?UPG|)90Rp=mTq5S)Y>6pD=(jloW z{!g9py0@zbjy?UTAl1tmNYIz=TGk(=m*o^pP7;Rc4F}&bz$7Zr9E98NX%sAkRfQJx6_|p5 zG(7Q^1Wq$~gw7jSWzFuxms-9U>bVWL&(EuskKd8WrdFe+zdJKXnc1eX%1BLt3B)Pt z54??22-BVMiRAgT^$1&9wMVEF>kvvw`hz{^X3IdU9B;5f3TMb?Hol-_;|jKc`|$)X z+&Dt*IkoWv=CN*IPnN9{*pjM!fH_isF2Dq8Nt9#Es)zsM`Sc~2U>GZ{+Ahq|msv_@ z=VFtrGv3fHV6kQih@VeK;iEB)EwI`=!a&xMGmkNS*?Jf?u70;DDs(h>XAq~vmTMy} zX*%%qVmT2V8V+IIHtz`*FqRtaDCpgDCdfhwH8B>-;S)-+p%W&T4VzFpLMD)ca0x_9 z+OkeOlub!An*|qUvqj$eU>fBbar1?tG)iq7Nu#FcQ3J-eaWrZBQ_-(8MdWSi1XZRl zgv0tss*Inh^Z}4-qGw`HFo}uS88x^*8JmNU8#tr9WBSo3Y$gnuahcfem^cf^W_1bNW%%-vO7$MVV zgbex8?gC`Uo(~!yljCT|=$Q7=F*O60E@UWy>z;NrPeW{sJZDG9Y;rSMoWsK)zjr81o27%bIAuvBtXNry@?sgFo0GHUxkDbgw@PAbEt8bnE9*D>@d!?O1=Qlw=2 z5UFNiQiTOt8Rr-ywM~o^HDrguCnPQzd!jUJ#(v_X$ba+0qriQC&T5+AD6ln*jiM~s zp;5{_$`RPqO%EhP7Jm)2@q9r5Vq}1Q3#uahnxn-jSL2W>%Ct3PoP_K-V*Ftp>_9`QumMcJ z>ha>lW#QtSe4tT(R9*B$H~Tqu!3XbxhZe5UN8j7aNDVS+Uf0W-^YrmubW-J^;P-8N zNo7AFqUk9I9i-97Q~HY0*n1zziqOdOl0%8lsDU?pNk1FDQEXI(f%qUz55Fa0%PdOT>?=!%JjQx3d5fQO6#GgP0X$!klfxOxUk&hzSInAQMCCC&)xf$h_Kv znKeuS`dO^Hk~T&waGT^n)mc<7Slu_7$_HA#NU>mlb8lbF>aofZ@sOTAE%|cwMMoa<4vsBH#w5++^57wKG_T>d*z_ z5+*qnz5vJ2XX_gwDLaS(+_F*AK9GU4$Ds_GMlv&o;CL{AI+0~#he1$-q>ru9)$et~ z3vwfWBTKpsZ{TDT;J~SwArAav>ov%MYq{evhp0^3=EqQnUPB$&r*;_Zz&3r@aEDxn zJBB=T9rB>g26(b0^%?fSHr+|!L#AIHgCBBTqsQE`Lj&bW7-@z6pF`t6T<7+l~QDc8s2w)s*XTR4ct2aBkZ z{gH}OBuz}?gq4c+jB^R@MxToBim8v~L5*XXX}EFMfaCZKEs#1m$6_MF?|$NrjD`Dh z=H@DHz%3dSCy+I0W>Z=>Q0BhD%tq~hQui7pOoz^f&SZW{LvcHOOy@1GQKzWpqmh-1 zT3g4B6R4UdKj)3liSxkGv5zJJ(%nL&wZOPM>z_(#>z+Vgo1(fvUH6N-HjQKaGUnLI zExinQrKYrXN}oN)C-s;n?T!Y-y)}$G4dj;6vY^}s%$>|@?S=YmV=KxJed(!xrHv?S zj(yAtiLp@%8{Q#0Tnh`!vZI9%l7mGsR%k<2g3imOjH+D<1@3nggOx;NYXAvOhEy zXDuJHY-4zl0K3a`OS4Pn(CYesCj!{301L4PDSbnOLt#_@P9#~7J!my3du2<*>_Hct z{l$Dmd&o_J_6G}xcim^YT2fBq@9ctOtxEZMg`u4xYB4buU%Cu(d0AC0w4I@blh% zLjrm&DW+iIT5jrGX#UfkS^!-@qQCZf=4LzV8wVvSEh6q^T|04^|S#<*btM&Ft!Ie{hkK?6<|ZY%=(Yhp3s~0QM0P%XM1gaqXgLQ{L(>{Z!gW z*ELSHq839`C^WE5$7(8;=GRkUIWq887X#y$WR(|N*;Xny)t5e@Rc|nu7nK$@P@Ig` z(bP2Tr660}OSpPHFCOvHo|e!TFK4IN7hh&B_{FoMMYCZqp8w!*e=k;Vd*tMKx<|ek z!Kk?PUXwy~)wB-LFJ9vA;4i+wJp4;D5A_)X2R$U{i&44KHM<7Cl*De~mlgn{f8w)I zBPDz{#Wa06o$9jT*X8tfG1FrsStsyBK+Z;WpN9YU&WW8Xyn8QOEm78X4L(^=-5$FRw^}Y_ ziYOL+%=(f?K$9@w1Bglf`7^ne}Hi^K-YOJLB42 zECfPkQtGqDfB7;qUC3lNOpv!XxRa<1kOh>11_5;8)75MybCmh3SMK$@E_lXF8VTF; z*)+}M2%hEJpXWETG!v6N+gGc}^{Wa#rYYk`i`xn|q5v&ImaD7PPmZUyR>V|WD`v8_ z`ff(M>1jTpL1E)I(EFo{=UGRgU;XZArq`ysW`vyt2mRPyt3s@jfWfZ^guWJs_J+1h*&2?ezMSxqq$w z$#0iGfAL-}c3Is<#=G+78p$64IWg_&(rxOGH%q=_$#=Puzy9ry$!fZ;5&9Pk{VP|f zSNA!+RO6ke@=U3`TLOweksNCBZsZDfv*#=z697@zQW@(85x;_5qo1=__lHHFyZ`RP z?U!<7gL8rQ#Me}&27W`5&V4P4f^UWR0p+>vg%0{n0+ ze~gd`C#U`A#cwnB`r`l7;%`kqXrB7ZuW$Vv7yRRLxtL9^h4+i))h~{bR(^wDU8<~r zeD3vN!Q^rJ93pQ0v}d7ePN|_b?r0$YmwJvwl~JToyi50YgPixV2SbD6co<1z^3d1^ zf5(58Sne##UnLgjCzk2XGW~GF?`y3LF_f4*gHYq_`li-#w?r44oqHE}Yw+&)y%fg} zVp6R3{p|jwI}>03@`#S2CE;)RGZ+wUK4r=ycTw7p%S&P$g=F@uHM1ZY0)&eTh?$a% zE|Azgx_+5@OV_f6A(@#-rnQJ5fBs<8T~t9_*A$Nw3lT{&{{~a(G#q&_%wb9; zJyF-21iYoGOZFhgax<1fsZPuEVZdg3BS@o?+v|Rh&V2otwHA>v?<$5kfWcQI=0o$Wo@OK%a@}W&tlu^#+h4b$2oKKf8*JG zYXv!XI}JH&mWpn<(ON;5x1D+}Bb383r}M!9Yop}k;^Hs2)8#NOL*1u38E6tuljOI~ zQ+csFn9f%->HEY(yJ(Z!#f|dPXO_lTN+mDuF zO*?8Rmer`8+P#8Vl*`(Y+D?*HI=R(-X12OP3U*dtP&ZHo=#_XkTt{{6l|xu^M;K(k zv*&cQdokcj?!|z7NP976+oW3Z7w#4C*^C$|@CrRC>>YYyGykbTA^L9+f6erewCVsz z)%I8@Qj&(yNK)WBGDmhi|biAMjX>iUZ zjvbIv66lru^3k8P#&dGq&pZC9hrq6RV!=3+j--YUZ$>%7GvKUED!a)Q$fFiNF>{JU z1E~IHo9oPMa}Dk{A_3q_Gl)yV|qhM>iIyxYI*9cy#rH1IRb@E=SVrU^|= zkJpDnVM1H(GW6O`65g-LHNKu9jZ2&YWd?pb`;fenS5E9C<#-$%TrBObR@&7{TCJod z{Vo{kHn5~oZ)+7~s-SzsNO8VcMG|MJHcB(7dzQEgI8*Gq@~Q?9f93~=WL8J-p zpgk*KN$N!3M{h;Dt8ni$?j7R3h5y@+-&IGt4P$=1f=yggY21OLfyVgbi&B@>MQore zF1?0|!aA}{J(_5S2fIQQeBk?%z04S{@lZ2g_f4lh5)7uIrhI&Uj**ae`69WF5yeEh zV5AVtP+I6^!uSO^fA*;IaQ{4%&M}jroIVHcrhI-z=fi;}iY2ScH~aq6s{A3G1Hiz6 zc_@4W$nfOoHX0 zVukCTWfg=jGdx=mtPX^7XW@p-@eF>rq7@nFA`Lcv_6Uw&e^lkdQ@EfAcc_6YKuC!B z3ZTJwGM=vjvX8h{!d;}7Ki%F`Q@NRDcU8G(ndImmSXs%(X`VxW2}%jKX+FCN3gc${ z>nyAdza-aHs+x=^!ETjS4fTD19+4swyf;l?D~ z;0s=fhB80te;rYB5y1sB=VWeY(~|@iR`W4OH>dFD`UdJap5aV=4wLKSY_@|_=-W$J z(Jo?ZYL5|(SCxG92gk0P@!}G&{3FzKs>iP0e&91c{ozG#boA(C5FK*9*&YSLdkzCq_}ue>NRP_NSC??aga8%Q9kYgc&|? zOkv8-!K$1=OfcM~or$mq5?nrf4aiThxXJ0f44zrNgW(%0_ETaXrWo5;IULM^~>*n^! zG|iuRC4#RO)`#}GThlmrpY`=ESfjhxjh3^Gu{2&zCIuE;U*mIhKIor4bR7s6Mkqb> z6i>NVabJ&wx9NErAX3ytTjtU#?|9`@*eMUtj)Xb;B4MQs~KbI!kk4+*4dQ ze*~6-37nwCLCw$y?3hyJQS*l&f7Ai@aHFUa85d4YbLx}QArT6@B=N%2U4NNj%dT~I zkg1TZv7I+xv$2RCLT>aqp6$EyERwul%Vn|upyhz$@FPnU56spbAvU`%$c?g*SLdYw zGE>ee^CIK0fWch3&p4USvpJ5wBnOtjfAwt+4_%sPhEONw$(7XzWy)IKJtX$O@(_4% zK0Ai_hS_BKfu`=9bUr_tkMn0;u63sZnPAq&enbr@xRk;;A`;3k794%t^q-r>QkLKZu!&M72xe>vWrwEhe;Z=o zz=cm+pTuOLpoEkS;4U>EPtq*92JARGqOfl|j+*Di*gGJIy$_>L9_+8^_u*ctdxmf< zZG)fKD4%`&_~h&}Zjv3-19zM@>`kYHo*RUt^T&^SXU8QZjNY1JfDGud9a?s}Qc|~& z;vm8KAmIRtt4-Kkn*I)WW8v_Ue;FwW4+uL{f~1)Rp&?cv?f3N@RbUj?0 zA=E_1n*lq~AHo*S+4>Xz8yS=orzEVE4gS#=)l9nbfh6PrT)Fac@J$Y=Rkv@6ten5X z;*ljR8UL;-)GJf2_W(CImxYcu#BU3gPSy35al}HJ{LnWEW!$K@Pb{oJMpE>e~)k_oy~t5L*?uN zPf-blj)|&9T1)i8?VD1~zbj)4$7-eajbA5)YB&|PEpKv8)z_46S<+o4&2Cv#oFH7- zZ@D>~jGkC|mlppPV=G6TIY$mQQ@;>!p4t~~m}l87tm9|d9GxC_@B`QAH#Zm`@#GeE zo_D5GdhiC^S$K!ef3M@axO`@}HN^XHp5c_@3eeGK;|$2=T^59aOTgyj;?Mm9-q0D` zE+@RkHdVokloULsDtKvig&Z&u;UW0bM=IUw| zIY~Yh3!EY+uS=5s0{uFmO6<2o2iZsRa!%QJ$j-b{Omz6Uf2|Blt3Xn@=hgr*-^HCm z!~}6Z&drrOV_@B`;n6!fbH1!|?MVVDNwJ1aCLeu76_v_h?{Rtg6ncW<*R+8Avl4@* zdj9$OW@UaOcEy%oyL1PaIaw1orj-lM#y28>P@53BNM>+g;%*BhgcDCPu58MN=THsS z)xr=?Ly5c5e_QWv$bWRW7Syc%fp_7=$#B?vcw+o$Of=eQ!79@kFY&9j zV}_<^49>C?qy^(0!RaXj!AEV*7DhO^L&=T$a8+fPAl)SwM<)Fs+C%#5kW_57;wa*d zH_8^{=|Pz==j{bltm_d%C(*$u1D{5_BN?vC2>hyTe{X`)`m}#~`oqP^S?_f86)Ybg zz!91UZ@t?M4Ni5&9~r^IGcTWrBnp}G{7z~jeoQ4!YqwMq>fzcpgeWxZ16wL}jowFi z+vyaEW-HODioo$(bNjmR98(At>L!n$J ze=?0C4(gKnlWA#o>NP`jxEf?PdUwA*#e$O>qy?7dM(fOsIMQe$TSvT?Pr%xFRIgFL zGc%m5ij0DG=NPTF52aP7DID3miT!V{TWETi&$iE%|U}KXv9lN9VoM z{-}R`=Bznr(edtncey4Kf%RLus~mJoe=%h;xq>Ym_q?_#cwH&Z084(!6=QbP3D3k< z+69>j(9aqem6oIqu1sy*&l;HQG4`evHKr7W8Tk-q)ca(f>R7pwnf@SpK&WdOiG%2i z-rx)b`fAjF8r|U;t_+Wy-QpF}6!!;nh))K+(V&0SKc>6PIo56*neJdhG@e1&f1kaQ z{sDFkq-D>L9i4wRfEU4ggHgYCdU8xuAOPlZe>j9MbIc;m?Y!vK=-U|uFf4GT6Wy3r zO7nwycEi)|xA#|e{W`6@+G1Nsve#PM8|uTmzCLi^f!!3u*t`oAFD^T915vF!6xM+W zD#yAv))J!#80spzfbYC4m2jFbe-*N8pvCtfB9eylmu&K)7(2{!UKZQ=H?=ACK8_QPh}{uK?I3*@B^8f2*q8R%>IL z!m%dJy7IFzM66&0?KAS4WeYUhL{dW18P|RZax8u_DxQ=1XL$DY*1q&;D_6&x=yZL( z*1ElVC4nO$tRtEzxDHjTe4U75hB+kd?}aacyS{2eK@F*>T4ae_o z5CpYG@ROjq+)2#dinu6=*DFa-M@6YEGAeG3Ej2&3&)53V)uLwPDnQnWTm`UNk*fe# zFLD(CpJU`|y=E*r_-=cFwKi^hN?WruQUJ*BywJ$hZ$s;#!#kk;WQl5}E- zADJ2yvBVTWye!0Yb$}^5WLEMQ4AHFL5Y_RTT-6P^DMhbtf6ARAhum(DoNSYBk*0CC zZkZ}^3V>TCYnT-r*5-$)$yuZD@M2v#?!4X%S71KQvCHdpUcaI)}#KY6z=-ZjCRE!jhY?F z7^ylyTkf8-e^_Y{`RQQTG!IGI$^LRtOp?a1ji*3`zHh&)l#!|M&06tOG(Zbz{MYk?*C#NP ziYB_7-g^bBoq*^Rc@Ic;1f3MeroFLn>P^bVz1>ODEXtnkuBQZCk}$$!~>&iCZ#PT$cBxF{M1Efy=Z|Suj-et=TXv z!Gj9*0+puB7}xEeVackPejc_A%U#!)5iVOZMYE|nE2gkVbn=1QGfl+8Dbu1(KVU8P zfBj0-Eut1!KseDJ$fgbdne!SQ5R>MxyNqj;SZys+WL68fqB`r!T==$>j0V&zw3$*! zL>%jYK&dELohw1MV(#4-Li&r#^v3M@g*v%4rhdKGJF*#k(g6$GYr8cez z;(I^xo4%$clQ1y@IFsrd%@@w3zuB2|@5T_z z?Yh-jZ4F;|rS8=#uJ4ulc2>tPRogJWa7)!uv*+!WLZKG~o4TWF>%t3f)c?yH_3i9l z{ZY|kOSCf|3>-%rTPoa_F<5~Q4nq~90 zE%nW}-`n5sbW8!W$LXvg{(Ji%qc)fP#(O}@(n5%4w1AMIgG}KUu|rh-e->b{IBp%Z z;uxXqZz?o&==vOdXYw?WeTpwy(2HQ$>YUT?`7!f|5Rhy1bQm(j*H$j!#C^%kdq6BY zO%|BrzIP^co+MZ4jNafWEAu)pkChP)kaY}U)ICLa3jvmPa!;M>bkilKPx-;eG^4+= zT)G8j3zojC&dED;0R1uWf9WKhLpBr>|2j_>34FFYXwAO)<}|y?zx@ucKvVR1c*ei7 zJf6VR5@()Y?Y(}D2JQ7nd#^vbE6r8e;d z_UG4Kpr8&339?sXd1&nf|31KHwh#d+ibkX}=Gw2W7uOkP^njq-e-LVHUwLbFTZ7x# zD5YQgm(c^0OWFXwSIMx>U{nlAblkdLqCz!v1Hr43>JXDeA?5|bTE=tBEDWsX4KS|> zOf{oJD{Qb_cP#543R!pbMThe89h(Tcie#M5@Tb>L^_zGxNM6O&ItSxUfGj?97C0Kfq~a9P#`88a zqM|_R6-Obbu&kyr(gJ@l67y4yL((Ut@im+pUI3c4xb`{9YUCcHjBGJ1xgfl+!-R4R zA9d>|=&}kLxwk0#G>CSPknV9z$9yy=<28C+bm@daK`$t~e-3&@Ypg*i)Edpnlv+ch zH-Emcd3muB(yVlDf&a7w)fh!KU5Qxq-bs8bhKSU$D>N5qlVoXeP)f7&Ee4 zGE26#vxj}k6Kgs+GRMdC5XcTg zJ|_24yF|g3e^x3lbRt;`#e>2|)F8k>c-vH8Yw%s!cT#Wvwc^5q@6@y*RF&W{RpFrS zc5>kIhnnT13I>Z-TgHKl8l(g@z?a30dLmh>btOAkb;(!!NtT)pgn3xWL3R1nrAsSw z3ri;tNjQ{Shmux%omqnpGOlPes1Y@$;QJXqevO4ne_$qUB#kD?E->URW&Q`!ZT3zV z|I#=zIbDgf6N#(HA_xv;hs$woYP7l>PLwHGeVl+&Ho-B<(WD$?uqkiQ4mELDX`0oC zahlbKahlbKaq8Bmq&s;X-7z>aFQFV63j=+EA~2&)jnjWH1;}Y`)M?uLE)f&av|s3` zH+Xm+e;rN7d7k7vRpW&b=OCE;%P97x1yGLYR-8PV(2MXB_X%a|V?CLqi;ORy zp_`Z~GsjnO@?=pU!t$-f)LRiin`JONZg7qXMO{ka%gQ^SUjq1I&hxBK<{1VT3yTmJ<7h$W=UZei_}M1ZWT;& zhW&?d5Z;h|Y4p{_iT(Z3@bUSl^cD4wqeI-H8=ZVP!cC3*I{PVUMSpY&?vvBrz=3;9 z;GRy$bA&@M20l7JJs%+KON9DxaB_0y7cuBRe0Vaja4@64x`J6Hm3Wj*vw8e*4l8I| ze+E5cj|l}g@ZPh-OC5snmb6Q5o=gg2U%=U4r)qE4A@{{I=sGUJUooK|c|Pc!J#=Wk zQ-|jH9Q_3jQCL%9l90uhs)gvgb%^3S*e;(>rnf@xtCQ2y^Dl(rdzBPP$V~C81f3Z! z%{xjlDggh(|Nc;q(v!FK_iSe0dAUS&f2H@!pWrfbItA}$GQn;)Np7auT{0=U9iv%$ zgjOA|HAk1p)7vR7VyME1n$9LEPL%15f4-{L6m*kb{scBc=wD+u<{~cU*)Qn?Z2}j? zE8{U5luN9*y~EaC!foApi;Pme?r1^LpBv%jNtvk!it~o~k8mvudCA;9fMfeEe=qq^ zn=YSW-k43BFhYLiQ>-C9fY0V7ht$hw*m$!Lr_zpIF}Cd1Ge~Ih%GrtqTj7Av=znk6 zN93ucrJ?W|;B-;E$ul^vJ^(mS*kJT}CR6Y!5tFb6QD&;>1jQ&Z9yDv&R1 zeI^M$xjw)1*?e*rP3Gw@R0fSffA+$3Yp1zH&w(Jew8|kS0@bb(u8CC+kx8l96B=&f zAaRj_CeGq!kpOT@nvNhj_wi@LQFL}b!j3cMmHlNGYftV>PHkOhPeAl7c7a6BXfE}q zEeF4{-4c5pUU*YWL1+KCH#|A$&!GRN3l6L9MirDI@(sKs*V|T>BacZje|TIT-n?%M zG)%9cCp}8w0fhw)0+7D9=c7CJ3*>T%z5+~Ei~=eZo<0?>oTbQ1!j)tl3aH@0s5NtI2Ee^cR<{}Stv&9+xvhL8>(CY+7;;q_;e7bwY&`h*DPT_Xd4&z;@z(K;z49|g>lFVw~K`i1HF@!yZ@#ps>^2pc;bf^f5gt+K^ zafY2FEW(4+^cp+VgRbSGCa><^dIQCRMz-@rrCzL1BGX`p!2fVae~T~&cRgswgVhFh z*QjeEFzOmCK{nR_MS*WxT~jSU6+A+~iI0IyQ0qLvvPlzySVOYCyfZ7V$f|xys%4vx zWu+>_5b#H050;9OkHZiZbkfqG*ETC8V`SMGEMjH>b9=HCHMPNfUpK5O2$-t^iiW&G zD2d9o=b~as{y7cFf9vPOJ)}P!oA$@q93^51GUrNc6fdYuJk(2~8L>3N;UPuvNJ>!~ z0S9G4sov&i+04-x{Kx0ke939GJ=*1U3&kqyJSm>@+D_ING@eoVPgk9m9FQaiq)8U@ zTh>Tc82Q`LFyme`NK%nfqn~A_DSN++(H#Jb^{RG`Yxfue)Kv7x?zV=gH;UZG%_Fh-v#mC+^}ricxf9#<)g2 zbc7VMUm-?^e?m--1O(wa8I85`uQ3Uj7p84ha@Q@2SDD^Av}34=*liEM47Sfr`9+7u zYJQ2>Cos)lgKLU(7S6T8O81q&Ww`P53#X8UR7J%cNk@8C+`*|I00ow7yOcJCvGN(g zqU0l*=H*Z-hGJ|>1%evj*Jo8jaw~?#za8l>6@5c?e?{yesViHpMtq9|sY^$GazPDk zhZ3>tp}uSsmkY2!kopBNsIoCS&k)7V6NC@jv;oCD^Z)^-=>!(MTF<}g=#8_BFI{s? zuTk~plXviBKKH7F|MfZ4oE)UjU+(1GeIAl0r}%TPKDqPnx%Nve9$Mt>)gQ-!hV@5_ z_dKKzfBpWs*ZukQd(!*oUiZI4??bic{g&rmecmg&=lWN=t7y^I*k>hv$Y^6H)Pv3@ z?j|m}k<-bPB?z`CNePt{b}WTwo%P*JECO+5tA)8Gq`lq+T_RW7+a?bLWwdCcdej?z zHnf}5XS^4_-^Gv9^WO0Z?H|+UXJDtAbNrqC*&DF(F=d_1#Vs4g2v1-@H~fQ3NI(3K9N8Q z*JId08@quIP-wZ?ogEd93bhU;`;$FIbv9@)jmVXDWNJ`1+cE~r^`r^1m&qa(a&9b$ zf6zq;`I21|$MIHstHkV**r%tK>1E}D3i{DmGMT~o>N2+N1POd>6pMJ z1C5WBA~T}0@}!x7$iU6rgM^~lp-{c_i7qLbetj! zVQhBARH|Xw3h5b^8dtmwMz=Gmn1{3&$Flk+&Fl5H73(m=KWgw}hD&F^x<%0Pe-=b} z3uB7xP@sj?;WBJcwRyHsf9u=Rp!=))$#KJ~QxMSKQFCj`wy1n|vIL+tC*JNZSe?n9 zEjOU`)&0~{^Ysfcs$8d>WU^T?*o0N3Sm|wA4hc(2lF-nHgY(ZWg7as|ZqXFi=TCBL zPAbg@De)+|hLdFr3&4X*^wP>ne`muVQHm>) zqNo_&dj3YB>|1`AQhOH4GSc%|X&9SmtH)9xgwn>a%-e$d+5TeKE`;gtP#A->gse(s z^(&tTX?}vYdAaLR;Z8O|oNa2_y;(Wm6^5R7(kj$P5L>Y=Pdix+-mx?c)avTLORjc5Vav4is4AH4#yp) zykQRTtjb;DgP}N5bCM-=G@4hzypB$bXsQWP;Q%!Z`(+Ud=bY~+{AmY#TV=n(R#;m2 zR9RI()r1@it_9dgr1pnifA)&V1q>xK#16>i@(r{z5LG&J+K~JZc$neI`0^({-avG* zv5_`4t1fVLZZ+A5_-RQl2yqt!D^Dti`nM6WCHdFZ^;uI+if$25~Gmb?le>!9|>NKrXe};Hv zI$atR6!%u_S|vOw%7fIJ5g-~K`pW$NQF{rcIo-fXy5=ehGfD!4|n^trkGjw4>FgQF10;t~Ij~spX-AdxDZRBI(MqKLR=-So( zFr75>cdX&l08XW~f9Gj3=b$A9<`_W^WkF~S`Z)U~X#j327R0dZY$ALg+cbfIVNv47 zcOa?Kf}~iI;`*~*I`?2xOc6ja7Y>3A1-J3u*O@uyc7<$NKldfK69;|ENs5$4XKS&> zK+TY9Cs(n5Rwu(C@+_Ug0SF*<`BN850<{uq_E?7l#AiAtfAj1{gXPJ%6U%{MRWItX z5h))+nKq@i%ZmrIDN7>giWdJ3An0_ZO^JWwMg8x%bn-HOk2;Eoqk=-pPxlDwY$PiT zGS}a{#((cVfK`GR5){;I57`l1vyabvgX3ZU_=MK_5|my=Hi&w9^2tbwD#hH7 zAnGG8f}9Pp1EBf@f1utWdJ%xH8vjtsV-Kuu8QKsg1eHoSjM7+wPSL&`HzH>k^C*fm z?L4kV+e75qBd773w>}bR*8IC`H2>~@wD~{o9euh&~ru^vG?{0 zesVmpdpk`&F*EnJ!)k^klWx_Ti|hACS6#-m8@*#HFg$v6a{Srp$v_UBb=N4skn1jk@h9BQK8}f4o+0NFE<<%f?|6cDLyQCKhl}bH#p> z0EBm(B){e!kolm-uNBqww`?%UeoNH`tRL{Q!Cp{R`z_lKvQ6Q0xwl7-cQ0fO2AfNW zSc8lVllM2;3vN&JSp~@6MszLR6>AIWj-Vti?ZmJ^mNowov zf82COZRK88HeVV@RdPwz-?y%aYc9W>o?Msis>&oCoaQ=DT8*F@|eznYVR`+Q+D>TvcnW^*=2K+2lwHW zHiCHJmadC|1@z!$$=aT5*t4o{!F@bZf4-GySh$_rC=$e8uEN?8hjQ8#{&2x2x1>~% z3enzPs`eHA%YxiCtCD1Sy%Jb5epLs}BPS+dYgcBG*Aib_XDlsGRP#g)%l17ZH}-8qN1L zj57TVI~!14g(Uq#5ZxR>w)oyQ2=0Iw>(LGdOPA}>4brc(%|Iw>pJ8|ke`j~_#7pH) zgMd`+H3&q_4FNeTV$;RAu)gEn`S=<)R_z~h+NBP+W)Gm&jkTl?oJi4mDkPr<883oa zZV-!?pNf%yMqv<-@~gvY>7`*#KPmm%>-%p{T2|krWy)mjV8!o9aZ})Z=HC8CHlHV# zi|HLk$P4d&<8cKfVWYD>f7Lo#`;_Zn>>X=!8#VAV%_fVhZguuKaUMX+(E9XPt)$)6YPHhR+R_Z5yYkxT!fZXH z#Sfd9HDe7ZFUj@0?;O=;gSE`Gr7&E| ziJ^Bm)~w0hk=M-C+U8_$P8z>jt%QiwXK#GHU*Qsb1F2|NYK0xRT?}9sqnK{cx)AxMk2@hRfXRBt zeE6q*c>5(=f9Qfsbxr#F1Rxhs;-g-XzJ!~U3#zrb=pU+On=uFH#Uwq!)pU>*7-H7t z6k-d2*2_?97+(i>DYYe85U z5C$Q5vOe$-0uTu$>!Rqms6cFi(6MGu7>+;G$$CfTf5Cgl%SQAmsMPAbKY9@Q6b*?( z#^~8hU!p!zeuEpkYRl# zS4Qdqf5E!YvNI||p|VO4r_L7TwB8h5?99U6qDqK7d!w94&M|d5h;n&i zzRjl;p~w-QP#p|-Ih`Ou=u;+&Q+NiLWO2;m5d&<%NIBu8C%SKL^AtVriW|%{39#5lSoDK)( zXqJdf>QR=tZoBwm9Y(_OHk zGjbPK6*x@_))J`4oR=MEHryk{%4}8JzyO2sHmK8(?b;!WH#fGvHm|WANX?I3kjPe- zr44Xp>+5W!kYI*bukEarkc;(H+T?^=e{I#9(M`t>Y({MzLQ^7^?;Ct=ogNuE%SSKr z(F4x_3@B%wp#lYti)7*{UW7IQy{;N`)E0w@)=kSKyXH}Lp+rehvh>Vp3S2fhhjHom zK$zjGx&j#(PL!ly3Jqf7*dXsr(X*}9Wo$m@s)U9bbcMMrnQ^`D{n7>7y72DDe~o(8 zC|6~&!o_l<% zwl2c=FXTue84V~@NeK(ukpI<#f7-H;3^YQLFDOtca{z=UTh}0q_DnT-`LAt5!Hd7F;+`Zf+5^P<9~ZIhb29W;AOOfAxje890B` zUcqa5`Bq*nTOzu}CzOo$B~F@$!nH`uOCXSs@t;MST|%duH@4J1UiVDj*o;QHvjCOV z71e93l+;Ib;cL6KZ{T??>~2Rc9|ielv%aRf&=Og~s;kHSpNr{H8zS1h-0HSkoysRW zvcE1Dsns$DjjBLRV6sHee-HC9dn|-K=q?GjZX6*wIa_SGLh*?~jEo#{)GjJ!p_QTM zR)vO(0;$e|g-@QCrIll;wp{JF)Qq(x!I5hFqT_DjbeBf0ijiQfgo|KiX?t{1 zWP>!J?sP6i{QJ4#$5piaml!pb^_)!{Ii^xnIt!q)Zg zj;gVqy?w4=yR>Ktf7`hc!?7~dBQ2AWo>>su4OYQBfx;~gNd*BxPq8rNTtd|(kz*^#wN$pQOv2Byal8%4t4S9GMwUa}Q(o(JuNZ1eG?yAT8wW?UAc z8b8@8?p)73KZf^s*1GXt8&lI*?CMZ$GqnwHmwZCOZz2`WDjjvo>7p0y*(x-h6M z@$;ONu_{Hmffy(CGhRivEoed859z%1OiqKLEiwC&*|sMfAc~@0#qpNT){x@Uxn3rdMUg zytbR{V#lQ{)s}G(ypx^B=`j{=>()5myfzyTv#L&pf7}$PX5Iq_6CQSrJO?Za@s%GQ z+u7S3Bcy!i?IC23G?c=kMSfksWrHd7w(o^TfSJ$B5EK33bU>F`Qf2~~;1Hl3kQBft zSeYF)a-YExhulY2Cze_QjT|T3S&1#8+iY{Ay@{>wvs?JQRo735GMi*C&T3M3K}MrG zF;1Irf1$0O1ywps&&;5S`K~e_Vfr8AKGFqT5Ey12H@nBz9hFQyfWt|uY{^xj5 z=r}e60VfJ=`#*1#FB>tY=1hfi?Gj16>R;`Pe`>9%`N_8N#WbC!+ILvF7xNa#s)AUM z10N;~GlaGo*|@AF_jt~%!C+E44WqV+KAc+zpI-P0pY0wT>^|AMNYDq@iHw6o02{_% zCam)j?(oKdc!oOsi1hB>;3OMm1$^6A4@bFkS(_Ht9dUH-wyj_+#k=S*X}$|Dw-|BY zf9;C{um2y9FILm8yf7D(%=<%Q0#{wiX>~FEvx7%i1YF`UV~^izINbdVDxxFd1r>U@ zkHfq7;9DwM#=|yG_8w5VF4*rr-`P5Z->d7k4*rkrF<6=dZjpZ4=*=rDl=O8kBhp1! z+~63lq^6_(xl3_`T;AaI6TRKy`aM76e}H^Oc{3cQI{zL&{UHp|QoM8FYbA=#|pPS$Zr4%e40#){u4Gff3|=V*gAgY;)i9e8aqan$MR|SkkZ1etMMWL-5Ou z4p9U84X8I9J~$G?zI2*E@rIQ1?jv{G@@`&B07)go$W&+oQLAdmT88H)P9sg2BpiX} z%w=tl5*9tg6ZL_3mtgUi97Xiie>m!E<$Jl$Eiy#5Ix>)Z`@PEL@YnufbX}sH*t!I5 zk0&9YyY)q~Wp$x%Ve=q)E|U`yx5DHRJQn1Ej8!Gk=UnRDPkbF#9?4PM8y0G5_6iH!0VeaXX~G%HW;K9=mIJ(}%RxT2 zyYeBH17;3NERr&xtp+%eWzv2BezGtN(Oh*A+)wezJW_gn-^|^@J*O8uiXn?DHPp7S zn`)fiI5%OE#bc^AAdyc_vI&efzU zQF~cM@WI3_o)HQViLgqdeK<%~3GY-lfc za!5CL<)Jd?H@J9drgCfradi&k_6Et;${jxd=~*4_nG0nDAOJ~ee}+id+#oujgQ7Xr zwYc*Rcvjo+!S`#; ziymQSAtX15;-vuPIV#6@Gr<2KPX|_;pp2_GP=?fr!IpUO?vW%eb^xac>;~jW*y1J` zn{j~mxkS4|K$*zxKg^$wR@P1JW>E^!EXih6=?0It_O{^_r5f!(3dHmSJ5Z5x34$Oc zxU%$IO!xZm zIOA);zu{rpL`kxwRlnxgMWKG3X@PtBC0i(sP;$@RFuS?PL3P}QQjp6?%qQ6^gdi@& zOcZ8F7@M$BW`m$GzqbwQLiT&RqbeYo)>U$OTum-ye_|O=5o z2O~Vv%*uUM)zZQ5+&XPbqRMeI%wHC3NfFU66=KiZijef82N3NdPJOIKikoVZ-08;* zr*MRlv}lNvG{w^_dO4~3j4@!U>9YE8 zjE~}viGIxp)HNx9H7|>vs0<=0%%;do&Z|l@f6>_}+t_Nl5F^nRER+<(0v+3o$o(d( zPtdX~AubEL#y^D^)Ov-LYj!OR*vV0XL4Vb(uZ@&`|FzINrJ-lX4YYF_!PV7ppE9T{ zy`CLy7Dyi0XZrrt^?fH{X3U{9S66_2#~9??jxi*it>Nh2v6rFCy1$>EfRi)T{|rQ6 zev5_2X{h!a3x#qf`+9eBsvoX67tAj=bubATX2 zQx&Mws~!T>H<`viYnI~fyk2G)Kfm2Ue`F9|&6+OGdrjdXIjapbCAbE5vE*S|Oq61X zh5YkYp-1U%W$wG-_;tOJ>c$z)G7p!r2N5%SUu}|{Mw7LBE>BvAoF;8vZitA_xm4Bm z(7^IgF04B>ht-l_XLFcia7YJSk)+PnV9>zeuyYrVya|y7PrF}uey$P>Md}s6f9GcE zf6pyT{d?{jwZFJAVZ|8}NJ`2>ZpxluoVGp|ZN2?)eXWDa`ifG#$x=_{B~P|{&Nl{d z(tqldP%Iq8!xzGpHCY-e7vcu%tSbY+bb+qj)8kFuHHnEID#SHpx~Q`Nd~gq!qx!}* zH>>md#9MCGMX?1W(Bu0gAEyyxe>?zzAwKH$f5rJPkeB%Ygx@b6<6!gFjA^AvV57QJ zb!a10hcIqIpp(9uYtG;= z;t9tvU=mEsqbi>~cIG#&;=2?_)uC2p%=M~OR~bcOqJQ{L zPxuAU86%Hv(*03NIKm)oJ-BK$%ucdNvD|6l$8dXK;)dHD*-!#80*JH^i#El9L_A0s zCUeyhKbVLtY2`9k)gHx-QpE`gbyn^E!iwgXd$nGXk{?wxzZ`+FwpP`Y0!pW3u(#$$ zNl*5>^QzQPtPz|BeQd=@-u$W6mw$Vg@ak;j4iRxUBn8 ziK;O8voHu(on@ z+azD!EHM2Kw{{=zY;(1_Ox=9fzlZ>D(f)q4f=>*junJE5eW-Rk#aq9vsIW41qL0gx zVs*lk39t*${W93gIT80I-`0<){T! zsQWTz+-FqUZ1%21rBL~QL8Z{o22>iOw0Y|x(aCku(h7~S8((#AQ(XyU#v zM?ue`lIihhsBQWTKONZZy`%SJCTYgEy0bUBb=%y>vp2bqYqz+!w!sb2xb#*MmmuYU zWf}AT;4}lHaQC;%{I*XG=kI*8^We)v@XwK>6!v0agT3%w`Suk0m8N4X6go+&z`$_} zo=pzo1TVO2Dsi@Zynm}y9}VX7MB~k}jh}9BD>yUXIPDG2`L!JT)=!uIH5on-8H5c= z5Jo-I%w?HnFbt09B5SW^6~`Z9v6wF|#3?FfG3a>Cikjlmc{FGI2rM{7)UZra9?pWC z6~?a}TQ^rPg0HQ9iv6bt+n8riLFsLDCY2 ze{N&V^U+&~Lp-y@bMvhZ%z?UFALse6I4t!pmNM|tg}9#Es+EhaMMRt(kA?lT*MjYq$ zNaNBnlc*g^+7DhlC2KT+OBgEogYm01B8vE!RiyLZR0-h6T#ewyon0DunJh-r&UB_O zda(bIsn-Wubp|4PW+gn|1Mvb=z>&X?hv`|sx~EzH*VXAMu`b5yAEpjMVr1!zvoY`M zwU=?|W`8Va$;)-ExgF;kHV!Py!RC5hY_8yB!`)oIqs>*EL@w`Y)6hV5X{$F?)ZFVb zm&L&Q>1u&*T4B%X)Zo)`jw^g(wlQ!r-+9vP?y1I&yeBoAyENf+C&Gn%uHWP6D&%zS zK1a`}?nbGOHG(S~Cp28%)wn*&^MUy!KT6E35r4*!RVMl?Y-ZytGUYDc&|aO3$~rI0 zyxs3FV=kKQcm>(mwpZ_ZVKl2sBj@anNNEiAc2V6>dvx3oQ6TEaLwwWO@m79ZMc}G|E3@qwEDo>qvdNNLt+-VhBdin~+eMj) zBwZb9zzX{QIxkR7?HS>VaL(7FJ)=eK1%D)ZRVhl> zwn0B1=jYU$gX|9|4ec)S7Gfw!d~h?w3FQ~IaH@~tHNMw&jd5$Y-ral#K8zMJOZ%mx&h;U58IN2X3fe)NJSQPfFf=okM4E7k_Mk zmHG3tAS?3Wqf&@=3siUZG02%G@B%f4IVHG2K?pX&a{jCdlIp#rlBq1emlSO8IKxPZ zFYL~502ay}4O1%ZoUbQ2RKnA1OzZ?@8xn>ZD_A&?HhfZs zo8*W~MX59=PIRqSQBUao^LQ4$Xc*7J8=5Ld{0HLI*psTJt)0)Fd`0nZet_38D!C-s zu-?Z{9+P;(e_3u4`d<71Dn^K7BK@$5@(f)ocyNv{o4RBtkGUJRJby@yCx2U1UL2mv zJ3uY}wh#6e)8Jo+#2##EFbV&4(l&Z9tNOgY7WDV6wXm!A!cMyK(z`d-RKF;RyTf17 z75PTw=_}~KS{(NVh~JxscZl}7!up;djUSA&dzsN2U1T|i-Uj)I~O!r6lFGm_+FmAPkm{UB6aPRl&$XeH1T zC-Nu6S)<_GAN7j#CC~vstsC2OVXn$|(F~a~e!;{BP z_VI)F_!y6wH6EU9m+ivN6(?}Q`ye0Y<76Lg^@o=Cw#*n*9ngdb%A@_AojrlGF%!Au+H zMw!8L?NXd$El8R})8B2l>gr8h0U|jem@VXIwg*CcVhJvac_xdS|pTv*;M72e^ zqffUbFlO$aKtiKMw}jA6uRw`F(}(i32itA~)`TgF*XfwwN`*d+r_{bPmjz*HkX%@` z-^*E+w4_`#B!7y_Zg>!Z%L1S3>J3YEYz|UhY1%drkyY4sQ8b@e!@9&tuPbz+1HZZH zCk4K)-ro}R(HcZUGE+&f)j+aF?RE2Bq!N&{O2mRM$v&?Td$A-U0#f3;Du^Gbxaj^; zmi95Qu z&GgO_Rh#`>bh>&kh5Okk+EEQHqEKtcw&E4pW0R%N>t)HRNOI{~ELE(7V6nlIGFUMS z+7k5$rBJr;hRmQaD=>0v6@P$%d7oP_URO5S9)Ab``z$T_Gm81%{ffo;6+vqK8-0+L zv>1=@w12?CG#%y?u0Wi@zy3y4yr=yfz?C-cM!69ArNcE%AxoK5cgc#K~^acBO1=fS;+I3NkQLy82;0=?&x6<+@2*Rr@?0_tO#4Q&{(v&by`( zmcXCFa^R|cZqbOebnq0Z9bEZE58XHoiY3_@p?^y?1Dd2b%CzJFa5Ccb$Jvp)8*d8+ zP}opy4NlL^hrtDtD!n7ZKEW$%iMbIDklWW_7P3SyMj@fq%kfGRW^oM&H?&q;-bq?L zFAx$+a469_H-1Duj_2YO)dk2CM7p>QHZ4a}*1&$BwH)?!ZP|EtlvGfX#JmfrIGq%h za({7S$VCmxWJN!i7zjx%#(6Ca8rUZuDoo}W1lP9#6b^+oMgdg|Ore@IVSBPtg&7UH z$hR|9CwbKgmNmU7HR z6jJ*FGnmLfC7snw_P3Q(S&%rvsh#dS(Aw@FBFJ!nzH=pikQVAnplGbkOv*Lcyf50m zADmqo>sdpK3l|>Q3Bu#Kw`Uh{5|E{Ev>1#x>f!!GjW~j*V8j#U(sK@fNog{aqkl9V zR9gv%;)BafzrAYaSE3pGIfDZMeifba?Ix2dQDHPg4To+!tQTcp36h?6>j+5|5t_Ox zS;eTq*%W3{OVOwl&)}wXU|xkXMEi`FqaJw_Ml%*CGI0XqiOIvsyu0KfI`T~j7b`QA zD62?;2C`%Rfu6_*J$rpVR3DySZhr=?cn})O{8l(u8mnvKE)m5Xi`jv{5tDw`2$5?b zk&;51adi2c!Oq}sXE9n9oph-HCh;r?D%291F*POWLTVvGQ|Nz(o?JI$MCJ18S14Wd zng!H?)YqWUYq}G2N%hh72(!CQDS-*-#>CBnD-vPXY(*+3@w7BA{l8{X%ztXPIh`lH z$ew7@wv*!_4`{bK!WX_JMhb>h1eXBN2#NpFEqObH z2If+zXvQ}6GSVVipRwksZWFX)in-W_(g-O}A@X&hp368oXYVutY{8tkFil(w+E#lV zeQQE!zU)RfY&%pv=9j0LYa)ndZ+O3ZX?Ff=>$r1v*>mA7teG@cN`FL@@oU_(Xz{F9 zp19mCi-|hZi&_!qo(NI`7k;>N$U%L%iJ15O}mQJOBRdxCt;c zoC_$0T0N}yWz~!0pj)pdtkylr$G`weAT++t$G;jk+;n7;mY#Jf`ag@~Ax%b1lG`A0 zhW~XhVH91PfUfNBH+hQThg|(t?mWs_g*(rjYZK)y3-bR{ZGW2%o&M4}L@RV4@$Yz4 zYi(BHI7Omi?LQSB7ovF7)VKE-^yTor0`}?x4}@9 z_127Z+c-qDx0M{z>by-|UhYfyBS5!3RTd7UUNyAr;N-c}q39 z5766b)EKoy8O-B$scTY#YR|1;WH0&U>Mh}$F% zoXBNU$H>rij%W0-1p1(>F1JY_G?mMy5K>I>rp+_zxGZ&m%jfuJ6jPk1n^jDoQO1=i zKyk zIx07ho_ze|vmLDJzfHiWjPUcfbm)QvQ_|BMX6^`G%lNpN&!CIbw4WVkeHvMQJ|T3` z`D`bAp+H)dw+SRwy-)yVZpn*2$t2mWu6J$v!GAdQZcIxdO{#w~sdiyHFC5thcf1dw z6cVjVHIU2)u?3p2foMO5v1u0_12a#@V3X<@s;A6aXK9UuiEEy+IT$2a$-mv0bDwy}px9{BGk21M zl*`A~JE43X0J)CeIHQR{QCRRRODuj6hb14Qh`-d&m|J~_oTFAn-e`5cMlV?{NE5)o zd-3O$RY+o`h%S7o#_*e6&s>ngGGt3)(w|A6%SM6fM-H9i6v&JQw6H!(J$f*N`uX-f zb4FU172W0?DybW1CKuRw*;z{c@K2<|i(pw+Y$j{7$723>IuwX#>c$)0-)qvVSR0tWqmXY0V`Y zKv(JVe#}cRogNtE=boUir<;vPSuRba;zV?*E){^!etlS1O)`4(L zr(SyIexs@}+Aw$&G6L`1xE(0VFU*n?>YTl)pAkey?kc^h&|E-A0Yw5K)qdhz2KKASB?G+C>ig_+N7 z8a7lwu&lNojK-hso$h~lcml5)vkpkmDxJ^`nG}PTI{R~o;nY%TjS|fwmoLkR(A`v? zh&J~u{TZu>_g-+k7Wypy5sCjhEj_xum8s2gp5gM1CV$XQreG5lNa+=(>Xt$06&v!k zA4%IBx!>aEerqo`bj|xh-74@*vJWssN%(XjCie$;HN(jXS?Y8{<%)B-Zp>oHadD0e zNzV&_)in$ZiG`F9hr(eh=+C-L{0iX&RLogcl2+C9Twl@|IzDb22>U zf#I>)woHa#7A!{n3QJhkE6iT2dTFV4)r)MUWp9<{rJ&ZIm)${cAvr?Yi$1J?8B9$w z+#9V)MVi6S2qezaMcbmd(ehhY0k#_keS7GW;eX3EXVzM?(uQM$EA8FZ&HF5Ye%JKG zw^AhN|A74zjqxA2=xibusXQ3!!rwa(9dDe?$^y*~n2_)=jfoKyG4D(Kcg z$A#mQ`~p@Cl(-KQy`f);xNY68r#!Q^-C(r{#Xr{y!g0p8hC?xUp3QNB>ye0&g7&n` z%6~yy#)`vQskIVO3rg(y2AQ~iA1Yw1Ky2M+ZnV!_eUA11G|LwF@m`7Sobi<+lc`RF7<4y?N!r z!gty$|G(tNAlv87U%Kk!0faCG9y`dlIczX<(@lzQ3pP6#YxEg5DuQOyZb=@p`3-XLz3)fYxWeJn-`V7)CH=t8@WVs#?n-O4DiYk-`u)^O|3m9{ z$T2)}v4=8(VGB(4@9C`{eY=_d;3bYz6L%`>-_^2Q04&MAD5miI9HMjx#-wacYROL0 z@%cywo6@ zEw8!T+nBrBb5fAVftSc9HJWeiQFl!sc~y!Z_x>v!EakQR>aqQ*lZxA};(uA?>RhaK zf;$$KsVXVUAW;3KU`M5&hbP=C88BoG=_qf6&Y>F4Nj%hG9>=KfdQ?J`2l0r}m;&(Q zDFBB@sWey!Kpy$wDr10ts-yVCS~S@?)dRFHEZ_6&A03U>nq%@`@$J>lYGpQn;C-^@K%0Ppm z=O||K(#X)IsJ5^h6%fu}TuN92Z$uM?bH4>8UbL9>z$;Qp@=puSf^urX3!->ZoVQ6B zCo{t0C`;!$utgowAGnm=E&9Kt07-PI8tV~k4Ikh~)%=e2qsh52Zb*u5w`OyI~8yE3Y z7&igmJp4{|2g~D99*E^Xi6=wb>)r(QSjE*p;MJ`KHwcK@aeweUU3~A$jmOf|=b=?B zHU{yHdv>GpxB+$FH4m!)4hFU3nAQXq)4Xq}{srBRqud`a-Jmzzgl3qD4Jr?5SVsZ$ zn~Op(dM7?F=QxGGX@yXZvJ9mZ+qSI39o(Vr-LdO#&}Ic#xk#O4SH(}6U8jt`MT-#@ zfwhSKj^8hf*neD&CRho(&GqQhR+Xe0W2uX0owMeI^k|V?Rh;Eoc`9yo5S_L3sQdK+ zazf0oBF#%BEzWGos|&;@fpY`w)woB9H`R_i;Qw5!WZ-sVOe676Q8Dt1d+P$#Aaaoq z;W`0zcD2p04^w%qjM`>Pu$^A4aG*%3D!5(qaG7YIaeqONgI?47?33fKn$3EX?0Q<< zV0>w{?6Ip*H|w6lrXFjX1Q)SVLta!^zZ-3Ol5K5z3>mF>jC(f0@8zuBrgu>Fk~C!}dUW(e%tkG{ZOiGW#lPKVWcvNDwHle8{%h?<8u2AI70dEAbh#H^ zsOyQ8SwOLjBn%%aH91k7QW;^gD0&MdA}BtI(tj1l-#z1&(hKkp@n`_Jq12f zv3{*_W7@i7NDFp>sY3^4AWnz_TX0y5=BO4mG1pHBu;A8MAQyqrt?pR=^!9Yn+ zDRN5?$5=?5F#Vk06x;PyH7=e}OsGvv(>wjaK z`3HbFnwaO7dq*Pa9Brgih%Vf(uZ|43DDD#ckKx9AqKTGOG^>eQD7X2#(@6moZs#Ly zv&kKA6K}jD^~MV~Re7m#0PU_S;)}in)f~73qF~#bfoHx3wk-i&BKw~9O6P~B*%*Vv z2$3flaWIC=dix!>Yky1xLgEj1T7S?WZu9=$Jc-n1Uo>wa{Y7R%<~6cAqwGdIAzK!@ zxd!^#n@wo?_RGOvW$tY5$87T746k@+(JjLJ)6sZ5IzEyIBd_pkR`K(UgW>8zu96*p zvC!rqPFw5_ECnwx`0mf}K3%*Ry!#tR7QQWqKE48fQJ-#0mo3g&I_+uED1UUsJi7#j z$mY?K0cAb@x9}6B!6kE?$TP?XO`i3q+XP^9(@zXC&XC(^(Gog@OO^*zU$7*dQ$U1g zGr;M+w9KAGQOe0MZhg2w4Qzl0m}kozFWlPeoG zS8I+z?G%qGlleaM_;Ew-X?~TB@J<@sBdI~%2V`@?R0uMDw7-8i9>ed4`1Ad}(Is9JLc2zsCYDGNmNi>ES;KjYoNzd{G7{3#41Et!|r+?WZMGdsexf-Um z#sq8=3LG$13lMGncivSGORZJ3h2$$W22mu9)w zUJro3NSLuqu=yH9;q4LU$$t@|Xk)!=U#RENl*)2(5`bK#b2@S!XXnLif^HT-Elu6n{d}0h9&lE^;F@FBQ3L zTFfqS3239|d5WcwaAh{5-06)l#Z`^MiG%%|k9VYWl=qam|1fwL%hE40F|wF>Cw!#K9Hfvm zlVB^16j)d9(4o&#V7y{cA{;+ysUM&U=YZK1)LN1(bAMWTO6G}Iov%hnPC)$3N(>9W zz{gCpGK>W8X5irKPL_F@58cN@q5zZc9 zAkVltaQ|{Tl@ahXM^Z1T68NxWq)?&Ok98&t8n_1=aQPKdA_XJmHMi}r^=0S4h=@H8 z3~e-)vwump$j*Tdk=BJQ?#ae(7}5sjG9-bHGEURr_bl9BW79vUH`hfD$*ad76Ucune>NB0~{Hx5#tsfF&m5J(ISH z(fEb<^m?)6S2!TEm|x~;0#F@nVkL|kG&5(+AAjdp&$z=`2^Dboa522Wl03@Hqtnbk z`tf6yUAq!;9|M9F6=e~Yk;JO7Gpr+ce_|sS7)i2Hh`h>IkXeZ4^J?a0v&$SfcFyvJ zuswqdgup;0JP}b$Cq1H3?=%Ne_kgEaHMr(U>?iJxkx43c5Mm8>X?~T@yik?lMd;eQ`;07IZzD&B zhB5V42z6M{i+?0f4t~upf68&y|2QqL^C2N#B1El&0LH~-I-4#pad7ZihI@_+&Hq^1 zs1SHE($r7XG-^cG#h;5}Qt5Co)4(=AC4ZBc+xw}=C*e@V5|rU$K7&l$$JO)(IlRcH zzy~P^1|}v=ezrnqH(7}*>I~H-$h#p9y9R*3f-Ha62wqsb8Pt!^Q@Y6;agg2g&>kk# z{D*bzdstUdhgNY^hb*^iwo`I?^4qiJ%F>Km^RFeQMoVW`{5oxZaIkzI%E;u+uuL_^s`S!V~}jU2s5xJ1}H6x5F?8~ zYx525+Ge=|XNx<0*&nQ@6v!6X!G9H1aQekMG97d2&4_e-^uaNhy;jpl5wY$1R=d$g zTZ0>m_aMwQl<7{G&!F_igh6}Ydcr6ord@2cGhuvd_u&_uSr>G5p(9!R4T^!=ge+(m zTsxfv4cjWV*>xgeQ=O;K7`|)Pu7#SWNp%IK#Mf=Y%z{@GSuQh{*6=El8h@1qu8m#{ z{8f*HBbH_L>EHxdrOT2|IGP1;lDKWxQLnBYra`42&&k61`bq| zhYxg-a^7iUry5!Y+^c!?*e5zrJr`A-o;%nh&sT|zx5&}5=?&9(J6Q(7S8<<$A$sov zeRL5`Ys6T4@cT0{SlTg+tbgpa5e&!BTGm;6(M7kpm|j`-vxI8tQQ8VFF-<^OBE&qw zC`UO(IC^K-R+sJs4t4Eib`8iEJw$sVz_8+eZ26vOj`o+am%lByrc|||$ecR|J zU+G;Pu@U-Ba5NuZC!<3x9(YQFVW+=ie>+Oj0oTe3huj(DpO+||9Ud7fdq-*t!uO)t zW&px*gth^d`gW%0`+qF==s@d9F9aK`16a-sG2)4T3u$&P%jH=gQlIM$d%eNBm4jz) z&kc5D_Qtn0Fg!!bkLFafeo^Sk00zD=kF7f}>*k0}u9S=H{{otp#AeEy(=}Sh_`;GcqY-dH% z_Un{$1F6d`qJQVy>pM!K%CpkT}J~ z{kCP1h@H?3JANzNXTyYbghUzW^GgJ`n}I-@!oU^IM`Lh7x0QA znYN4h%zpX&}_zv+9kqmO^nX`GBR53TAD{kD~`>5Rfw4u82On@;Q# z7nj#fV#pRO-qb~MQ4mk$=lL~uR5c@Ekw};0TC#YvpjTjCi{S$t{w5`g-jpQOj3b%y z3xAR9$WqltrM&iDE@wn)kf^c}1-6iVpKq^JAEp5NaCo?Q-}zSGhhr}h&fB2vJo@mZ zhabN1;qmE9JaXc1^6>A=iXc%c#QJ{K*to|hd!K$*>+-Ar@-Ev!e&t`@1d>@V9y8R}ybsdnA~)LqRoJeZzkz{C}5(zu;f?n2ysU;fsUeQX?mux1qQL#%Cb3 zwI&IyxuG{B5>FqP@SW#PMOrrBnCc>N;lD8rryBY|Pb*LW_dGN!bD7p$itFepC$gsu zoI+|C;HaSXxi-pXv}BlY;B{nLi}}GaYo%HaYCC}Dky9s5?E)gtDYqyW9cMYr>kWMdNy#Y3-3D;R@^$tw9?j+xx&mQR}_kbm_2yIZU$Md%UCpcrDo*HWqnheUVqgBJOrAIz%?%5NoG< zDL`+Z*Ia10z0@n6O1&zjVhov#%q}L5n?=8!bKJlWl0s~b*27ATs4#nr1?VAce!oh= zw{#AwNO9GFMbsn)XE|;?ZGYqXmjBik7&h+g+t^m&4BacVblD|QOLI9DnJuBi_-@rV zS`M`r{MBAy=WvF%9S?ufllta@30W33AykC82^Z)=U<6U&olmk^evzxmU!kaT;-}GF zoC`fXz^gdm2I=znSfS&hqH9U8;59Gmot6pg81err26d`WnXkCrMt_TH(;Y1>pvZR% zY#5!@@in<9qL{)PU=WQSlS1#cGBiDi_rqsZWDmcEF}S8>hnO2kJrRy5??3FmDH>0H z3~nsXK;d9x@|cD>9CzV{lzHRF>?T<;#N~<+F6{`z?4j&z_EVD2E(%b0J)@}g&+Y0# zW(fvdImpzPY5h^=^MB1cvNqNHet$Sdegqs3!Z+X0Ltxb|%g2hK>vKC2AHZLxzMv~_ z3s+($?GLMJKIGcV_=n2~hK?THn}(rdhZMB9f^>%8a+yx{gw)JW$YO9}8iOa`+y?qz zus;~zOMa;Z`{eM;!~I96;PSPyl)sd@vJAUPVG$(Rcfi`s1%GKF#$rcs!`fd5b*{pL zE`CzJ-UNMx6RNwQuSTI?RmWEoD(&`W?)bfr4);$zCH0)~Ct?b6}(YoM|}1%~;RPq2;|!gRSPu2S+;pWbkMSASj{O_1pl6zE*I;C#B& zXQMzS*-o09%YR{JA_)Q>c)DK3$M295a)($`sz=r+G4$GL&+#5g4`0_TzEN3X>T9n( z&~#t)b#rsKwKL%zUg`2Xf^F-)TGQ{b3}huV{q4j*ZWN^<+qViC4tGNmi3|h9wO-Cr zLo-6f-#YP0VzHY^qfdQ&wrdga#VQvR=jab}Oc6i>{C|Y}65m52=}EcRVLE<+Lk8($ znqEo>Oi&~Ne}Dnqi0+UM*-F5Z%zH+N2R08U2vpZ(XX}k5xbk6@3wp3ZwWGJHB z>{Oxd?SD05?BWQEJPt@(VsBVLvb0>#eNV2&Hkw?>og{9orv^$tC?TZtUf79;A5(@M z4}F$mAcIJS>1rKPJ(R(a!XVBvpk}tCbsy3VJ}DZS^Q2CqguDPq-#hG`j6&A!yae^Fl|Uptd6 z6mBdacPmij&LSrDEUHQ=@0FU^Gj>$-{fex49JwsZuJ?=U8@AE$oK>S(byfIhrX#x< z(NB&?0LR7*Ui)Ab=g?6D{+gDFw5s?v)EWecMEEz<#5-Exw&S)ygU!jY9)0lXbJ^!VL((0)KE&%#8fUGMtYaDP5&Q6j5S?{-TY}XkLT<+yv)wdZ2x8+LAgoug_yllBYGRO!^Koh7qqX$G zv{LqlQAs||Mzw>Z=#cd6MI_jY%75!yt?Vx?zK|rUZnA|Q%?;Ie8jtwuCwB^;zx1kr za?crT(qJ8!O>e|?(KLshAG)$&4d!BrMldRb`wc0jHt9s+H>?{^wqNVmpx4L;J%2r* zffIV36?(0_&|{MQk=#HH#PcJb7Ya@nE6tbwhIUO8=9vF!D%!kyDKc?ec7Lm0APH&> zxz>U^->WMhb_|oV{+jD4!)Q$5gyVICqk1BC+I3T5t!=;cQ@=tTNubweaW@^QdHZ0s z55@Mb>W7L|tZ{;hrBb0;NSKcCJT^qqiYx26>H*Yw#*?31Mf;|#Y#3E@KH-G=Fv!phWBGlvit^2FfaC9q8TVXVj@mcMI$8`&9|tFRrJ=Cd*C@`6^1AJMvnUrYp%waVj}3|3 zw}c#N*Y&HucL;5wb2#$9An?b(zl3aJ4!wrqk>kjDv~x2Mtjd7_hGb))hs%>_m(GQ0tuyP|*VahBjpc`#AnzH$H*o4$odQ*91J%$j)CB6CLfJJe=918AuxbvpRM=`gr2HmSC%;oWc559y#a@|@ zk1_!axi|w%3feiYy?Z0inBvlkDXb(W-giTb{LJT%=lL{Wc=9@S5A&-Nts8iEU^a=3 z--)BvJxYK>!)*oexW1T%6~D28fK2Q$9@)ImpSy!rHe=; zEK6ASVBYD_-iDq+|Ie^LVurEfuJgBbd3`Y6R~8zxN5?S2t7mcyD&(MU6Po5TFGlyC z%WyDkZCv#8+PlvrQWBe$@F@m5D?@-3pKtRWv>y*Zx37~? z6LF*e=soPOUn<$evhA7*dn!ZF)KB5X`=AnKaJkA;c6%7q9J&r76wC*W&GNX}cDE_x zet+!}2r#+7(%dxiZ)1-!<9;n81nP0bgG5OV$%qC87;@no5<{zodPn?)^_oqSJF>|L zg+qSPmj6yr(~CyNl?^YRa+v#R2?2}alhA(e`3Da$3`t*rsK@im?hPOU=%aljXgO;j zLCoGWcGPc4&mGM~ToBKdUg)*Ghx7b=hR( z@N8rchdgz-wS@XCh2;ACby`-h9syJZ9V5!OxT3j3Lz>GEydT3;k5*@;PW2Wsp#LKv z4D80Q5YQvD>2iubmN+uLKAqiwqL9&pDzA%-i+907I1|JV{>Rbf!yqOgSAP|*-OK0v z1jnv$9gD@^+&2Aor)OY=EA#E4Bz(MFq?iDnmr%=g5P zoL&Z6dHlpcwT>PQVGio2MfU+7x)e7cfjE4P znsCbe3Z9->6ae{bxnSq)(x0&B7@0zE*JQusC2H%>bdrA(u=rW}(|^&Q$1I37V1_@I zo-lfG;0<|hQ|6h5g@pRt4H9xm(lDvM_dTXc{jl|+ffrAk)n$3|5FdvHiH%Wm!O9Y* z@8snnP)$QIn{bGeOsryzYET&((ii6;gh7xc14=>gf^J zRP6~p;rp&^fK@9lz<(cXnO)5WBZdxnT}+%92?5`srLsOFEY zQNKDqIF{q2vn9T~=pH7oC$F+6Km-u^EK0D9)`W+ThoNb4OjGfic($Pq+~8Em4BAc( z3pt3hEe~$6dPWj@AC+CRL5c|OeB}tRXA}k;&5>$eI4;?1n}5QQ7gx|;C)iZ5*TNWq z%Lfa5RaL(UE9j{Qt30fR>V%v^1%eV(;_}U*?mY+b%*9!UHxQ%NGIt# z`evm-`@)I0oPUh}8}^|R$!L}XO_hgm|I@vA60=ji%;tb-V$~o~+8se*iUr5%n}d{u zhORO|1lgca9#TBN@#E#<04^xPB{o_@8exd8MtNXjfWp3URX$g>fkx0r*MCeCALffc z2JmP36eIeklkVV2+OGk7Cy1*-QlTdd6D&&`&=pH-zkd;=UkZWXRG^OmC8m=kBS>Rz z@OuvX^!@n5N2dqJUmUd$l^bjf^K|dz^wDRlK=Nk11IQ0Yr>o%L;uhrtOK#rC{>k3> zLpx5Lz;`0d!QtM4g}(uYV~Cb&MqTPF6cafL{*6?13c>AP);cE~s2x|FpD*Q=biys0 zaNKRUI)A|Kys1;ENIpyK4U$f~8LX;xnsB35o0ey#PPmS3nPp5_9kr4jJ{c+(%Zm$t zH%fx2xXF?Ot0M-e_$J_iJSSa<`=?i>bc4VSTYg>cdAD^@uW321B5ZztIkyTpj~!jy zN1bPYM}`wf$}jkYkax*^Gc3nQ1aX7pOK#f3mVZ=nXsV&Ry{KXhn-E6#74LsN;HUfO z0nW9~L*hfU$`*@2bp{^P7#2J|#cZr@Fl>!21MmEwNekxV=&NNJ^YtGvQ&9|cn5cAB z1kmtK|I$fx`sW#7yCw~()h|)Mh^AL6_|&H{tNr;6Gh9PgGc|fgYS(XWRW*F*;_;8^ z&3|xZ2b+5UYe1C0Hk2`e#X zid<#9^KSAiN}4^5OaXricJIo}58!{*2fECH z{KD{?un*+jgGbFx)xfZT&#u8+UBeblavQJV4xN9=)fd}_uJ^K5Hw7N_2i!q6@3g~l zZ?A%(xa)@4lXge;!u;e|V@DW)4d(+^t|o&4yKX{so)prIZ9r#*eHJd}nA6L}#vB86 zo&?7L7|Ssx(=dz{=)y2q%rcB-J^_XSD1QXQDA-nparfgGXrUv=#NG%?!X6|Uu_2doRUF?{@-F7Kh(>jA+o7Pr?bC|LTlrETR@u9rSCcq zqNB6%at?RKD5ey@{K{cjVSxv~%-)c{#~(tZ+T$<2|6=d-@I(@$A1B9q2i5nZqc8Tp z>cNlOYM~(_%kw7j>(|x1)hQA>KS}PoX=0~A?70xVh8+qWR~6`~%_yQ#&BeYhXIOtc z#c?$aBWZxs7^wbKXVK`?y}dQUR!@7in8<&9)KIF_moHP_EFxMf$ZKrXR5I(LJ+8KT zr5zN|6!CdYG}N`9coOXI5B5&?&>0EC+pxbiFBrCS99jJ&8(*hC&w7f9?bhen`K$3N zPj5J5q((hf_8l8TaB%TIs5q-SNnp-l1%Y=l>rxLI4`*MSiW7LT{x!xfn-AREW^Z)IiNr@ybUFnmXXJT5ySXanStD;g`B~E#6-zq4b~mV{4Kejr zU?YRq{Go8GMpU4i2pr*NGk2z=Vj-lHc>rqi$?2i$$J(H^4zVJ-LLh(WncxLQRLExt z-$4UIKK1m7_uODpPpo#-W0hX84pqp3iM3+`tMCJE%@Rnyi`GdJRE>+h;*c9 zslY9l7&?Ey0&=Sx7PnMmcawkEWsD3^A$)pEzWAALY?s)$o7{klCBJ?^f!Fv2Oz;y+ zOS;pCcTryQy9*75&bNQz%WQ!XvK(T+;dE85U7TeQ5j-!JbG~c9AW^1rn|u_e(WAKl z`-w`4VZ&p*E}P`!!t`Hw(xtP20rpn;5@ z&^@7$bz6V9Tkq<8IhZ|nEK{RBC^Z3U4X0<$&(BBxwHW-7^V*)`wj&wg=*9M%Z@xM9 zeY_-nu&YqFF18j6>1DBK?RM~l-(BmWLf zcPNhE%1muLA@^ylrV$6CEta?cu?)s%AIdK9Nt<6$GJ=+n9 zrMBV5LW^Ufouas=c-J~|4g*j|D|t~WUM$llDGCMBgLQnLfGz%rnTL^qhFoRinJC?{ z-IIS}5iux1Jm-btE4mS7pauW1*(Q65i9ROSv33O4yxdIJy9TB!Irhuyzo3ph7iEDR z$$BQ1l}mZCLiR}aG0VmfcB?00yfem36{zV{)YqVeOK2ZQgqeRW2wSeLN*nHR^nusz6ktx4kADe>GT7CV)q;!vvA2-b9f&rkR{oS@)=iY%D7MG2D)nuEQ`8Y0053l9O% z+QL1#3V?B(18jf;do^aXCg~ArIZ8ZM8OWTT0uf6j4SqVy&KE`EXZUPxmN@ANjG=!j zMk)qnoJ1b}rH_Sq1V1hy7VwmfDCyZ*c8YI~lzVo@FUiW%p8KvX4{M(>U>@S(v+f_H zOax5iC_&`nfQlJ3O zK+EZbcX)O2(=KFF8aI&r!HlB@V2Bq$m4!Sso9PCjHJV7bUlhp_THZ^3sG9tgmDzVw z$^3=LEaUB7Lm$(GDCM)C`%Q?1a;2E995t$WvlXs#r>-U_k-)jq)<3 zAWG9^+gRR*^@uhq8A`agLsj82FEdg95`gjGlf#p%HlTbv-Uu?AQS+}LL#uLKnCUHs zL^QBd=*R%ZpguUd|KQVS=)a`=h#i5zsTC}#TT9aF1-Wm*k|&%UtR;Uv2wc*ib6AB1 zo$nJ~i=xUYP#&DDsaJ-vsv|)`)-0*&Fhfg5O%3D>4#wmn(wwVvAdj6WPJ+u3BV;Vq zvce-l+q&FwXuy0lsE}9$*!cB4Ro==93DuDyI$TpjE^#tPA0LelHyUa^*7dlj@6kOS z_=-(FjDcpDqA{p`rA~kBd;+@2%em|#d>t}pjh9FLj-hFSLV78 zyd2sg@rFpRbGB(pwcGeANsv%C4J9`trO{!Wy!4U%Tlmbc7)^il36z`zu8-J`;&!)& zlxIMgOi}do&66pK9E%!R=A*pG0C5AeJZxa(L5j=AhPUbkvnP)Vp{tMS-2@3;88ALFXG6{i;Cq6S*+0iR+~I6p5p)AXq#i z@*(tL?7c*&85h45w6I}-#i5XUfgYH_xbxb<+_{6;qH2E)aT*K}7g-YuwfIRq>o$n+ zC;KP&;gWxvo#vNxtW0O;30mVc5czx#EJyQ7FuAjb?;bq-Xdj{*?GZyskl}X^+(-Lc zuWr9{w14l@tq*w5dJp#MS(#!yMMc27ZGDQ0e+*=U$~O45W^DW5Ha{grhR-7P*ySI? zu}aDD&4_<6N-qZb%w#gz(5nDF)kvR-u?X^Pg?`kEY7^aYkT(d!)C5r;`3qe6EH26P zfAt`1M=Lvv+s5&fnpa&zY24xvwQJm>qGHVne<%KnB&}Xrh_zT&iJrjaz=Fjnh~eMM z%M@n@rtj1XLDH?qRnL^Vh1@Qhd%hc7qe{_Y$mH ze4v(Cy^xd0kq2ZUAFIM2-hgT%X9TPUb08_WapRtC2z{xnO}_)+YI0@|d`p_?lSSuB40PF$80|=wiEqZw)MAOj;HRwgWH% z*F`~WVKH#ERJG9lIQ6zUIezQyyIfkvw^o1ioB`E3`iv|@t=+s2@EBdm5sj;trd3^? zMMx1qDhh6(#0JI6>2WpM7!3wQ{-lPKWZ05Ju1G#OD4iA=-M{GhfuL}=+LK1tON$~e zU?Z(|s$Es`TCzE;mdTf)q3nT+^gVw# z-$h0uJ$HEoXueB7c=OCDQrtZS=wp}l*I%w`yw6>AkcsIwp-<~=nGTUmkQ2^hr-l!vJ;;>P` z5l>2`4Ey*;D4FqbPmBInNdH$z|5txV|5r$_gTns`>3>flT^aZ|^aQwPI0*T^i$j2S z% zR-(eJwQCKLWE04U3+Z?qy4%J+RZPqs`v$iwTj?8I;HZNX07ZW`fO{Ktl5FB9&4@9QJ629yHwuqQBVexVl9J4df}gl@ zae0Xv8Q|WC0-%qpmIVr|ibaa|cCI04@09HGOZb4v_V`sFS)G0Jn=Uw_ENPJn5HK4{#aomdI!EDkGL%ay*6F78E zC$*oGVp4Y4TaushY!XAm;*=f#674!oifNXT?}~c5>F0c=uAhJH13OA4*`kzT75>-E z5n}i!-eAlKg#$=mkv_{&;NxFpFh|KWKB|bGm$=z6jpNrZLR=+7xO3T=li^0_QHCW>u%ucEvjnzz zX?uIy^TmyC?ssE{W!}t2)P>#AOy!!`7{zOJ6mWLWJ+326yV=DU%8Tdr8ljY`cfFz+ zqoa-B_qrw?<-KqKfIM$pz4olyEJ)+7r{O3&C+X-3ay@?tNtlR?BtZOB1Vb^;-QgxO zX0aq0_!y=vn>A(o{4NDJsmM{XQPA@uv0sG#)WqC=O;l0{S-i(9E<{1J=q0b7q{Q@74%ftWA`{oWD@}#3u1Z30tH0I+C~zpsMNhI>PIu8yt>w)%9Z|l zWNEdp!4>QL$#gYpodMaltMpUj8UPrbt-01-D}bnJ9dp(Au5A%$BSsG`OLQ%YTq3u1 z05-Bb(#9D-RXfk=Eg4mXMiV`IV6ph5GpK*FqySqcYdtf(8*ZJ67CyE(2IIQ-3#uxlTQ#+7P!4~25?C>t1{dr60@58L+rF3AStqpM9zA$?`~bR* zMeWJ^JBraq#qy&3;T=G0%i~1&m7B4oB|*9Kh6-GQAHHrKSn;|8O`su(*WKp#n*%F% z^|9xmt5~hM!^F~*Vbu=3&Di+sX;Vww8W_e(ProDPy>Lm&c=#Rslk#SG-Z*ubo3-)>`)lrDz)NKJ$a%jt67>cN!Johg7KM0)=80avPnK- z@NJnq4bxj-X&6`6L%z33R4paIA3b=ZYSeUr8wP!#rJg}&_;E?`@4}1e_?RpEVlp@H z^-9gA-pv{x9_c+*nzOXebIyOwNgINUE3~R;$6c-jy#}eyoV&hv)I8nLIi01*&&*mo zeZF^SCjIMt*5|=GQA)3k6zHdV)*2hN)7IE)Y-pNr>_s#jUU>f+lTus~Q*_BFPH=mt z6>p`_HL{DhVE}!%^n^PjM=-XFT9-A(aX>YtEtms8svOkgGYmEU3tNBN)FfVis2K>YH~ zoz4KiM1Y+{ljx1_k!*jhB6lb?YF8k9!(lH$xZK{_?|Of|fqQcsW58xW?b&1lcz+xJ zh5x+TbYvzMxmzKEgc;YBh@ z%`z6xXmK%TcwgYHZ(Q`HE&77BSX;F!zrp4HN#!LkwEA)sb}N5{ktS_@D8CLn{&pOb zwL=5?73N*xNW1a)gI_4&eWZS!d6X^T&)=Hj5<#S`R83o9Wf<8x zt}&}htCOzFqLGF2J4dQo1~28I)*a&FDMd>g%CQt0~y zLR;S_)_qc4a;LE3!Xr1YG3Q$F!M6eMG~gCc@{k0b);{SFb{jN6FmZ1v2P_Tj*-&ZH zEw}njF^vHloI9=}c^9RLOz3+*q_A6+@ip=Oe7K2MwZ4B;;cIGr*~R3%g&RBSge_6C zY)IkIr1_vsF_O3pS|XH&Q8ez|zkhtt$yPx`;b>3pBn(>_$9ImSIO)k6Hv4+$CVNx_ z>U1`5w3y9eVlqU0!$(!Z39q(8Hx!a9xr;t=%5Ia`)@HznBFVW=J%X6q?eU*JVg60j zAi%VrHXMJ<+#P<8ILqhZCsA~?2-QScJ2YU;Lhi%MUf>}WeT+HHItQe36M6>r!z}+9 ztQT-au}tT~ajc<=oFMc+@M-ZdP#bk@MhVzzvp_Tk5CI7Rs#OuRd>D{06Hr=Tp}DZ7 zPeQ@1mjt)JW-O#z~E2A~& zee}`mYNTDeR1L99$LrP78}&;)x9g@i(@wi$)}Wx?Kt=7^tI<+bPwlCx-dI=digFBd z1@eFL{~N5nK8wGT?z_HA$tUDr5^D58s##gcAHmJHYyl&G{ZG~;6>(96523!wGuKk1 z3&tPF6Fx9iLIVqEzc^o@TSMuFaYoNOl_K$pH;sX?r|kuuBQ6*7Ip1HqjiU|M8U_F7 z*olDOoR?$YLDL%MFL#33sijzqjR>4oLlb{24m|)rit0$zg)`{SQ3fgAh`Z8R-waE# z!h_X2=f)@gsi3+KQoY@cuDfci>0l_qP?upKWfW(0j!u!7n<)09EY+_icp#G5{3mp8 zn9Ua1TpqAtl|pBp7DQ* z&ZW16YO6Os$x5Q}%6>i*k5cMT{Y!ax3B0MyOq`z>uNEYz+ZZT|5|4qj+Gd|q%>Ctw zDL$spZOu8D{2H`kboyLR^n3dvt<21D7W+w@U~AL#ntJz&D=>kJpNGA={haAA zq$J;JV+2-p?v`#|d9~_+i2J(!9=m_&Nhm>>o-SY!bEsGLz%O^JYV_B~`OoZ4yz3m{ z|GWe58Mg&Dim$pC9o#CqJ?u4Z^&z-OO0%HV3t=n7O&YyR=!6RM)UN6;T zJjSsd4hd@?_uRq*9CbZ{fsJTH_PQw!X+F?JH)>da@$qC$-K#1gxqg*w*f@XVwuyXI ztx1J&*DL4xHFJjnwY##HY-8 z4sX^c_T*^8#PcD1{gF|oqmib&0?G{Agq5E(41O)1`DH&eoohvuVa0Af`;t)5zidm~ zU7&8H37W?wJdA1w)&zMvbFzPIb*kEvUqC#k>0&}sd0w)0PG5gYFLE!cU!v!`?<>nl z=y^3pT-9t49b-J`yck`V(2>uUDHBU4f!dU$FA^DMN|GEz1PVF{nSS>nxW`whMQl^`NWP$gN86rSevN=+9=qn>;pkSh4u zCxOlJw|VHT@7UX4)HQ-XoXtY;0CCm}{3rKMpo{en@YxtSxbLGD4fVDmO!BEOJ@sLs zm$$zl7quC4t@w)3yHdxGW7on?+RB_&IK z>>g4;4oO{&s;qpLjNde#one(If6u#>Py@Z44!c#+#%FNWsl!{6rn|1%WiS7?hn-rD zS9;G;3nB||GE6F-EU149x~6d53>6X3I_gFojv4_yvmI)ZBOHZ9jmI#9+%5lVsbSHX!-aM(@fNBusO+&a>X#d-ubqUao1*M6xxul10yjQn{{3EZ4Z3=^qUz&2vgU# zg&BQ=_!H}4q9RP;rC35q{z0t(%t2!mC%0!}lF)`Oe4u}LMq^XoFczSH+C03>0#^fOW&}$igVK_r9alhB8V!%_=rF zo4{?3#|&{i-ehbx-FUnjWvs9{a_hk@yMSA|;aUz2MD>%HBnD3nNC($1%tKzvY@93# zR2aE*qh5cj@>Q(Or02u%>$3he5$F7kyP%60&~TScmhM*@h{GWj#@Va{JMJo3jZst> zUh^i<$MM8o3Wb;X4Aok>?djtK%?Pi~DUjw3i0};Mdee+mHY!sbB!aX!ee38A->J*_ zofA_cK2B?>n?ZZvry-vV$UwmTRlPwcIVLv;N_T&iQcI3RM3VxnD3zg`DN%}_vmsu%2g ze;-x&2`Is9)!+u1P6T3^)S~UgY`(|0eMXf~Fnjc8)TX&rs7?!!*R`~IxX`+*R`}RM zyM})oGXFgz=wap{H=@b(Xfjj@@)Zsh%?M^H289rgRXe_ z#se`k9Dlx{%OcNx?DZ<4*;@gKFQZNHq5ioBlC2xu_t_1+_I$`Enq&%%Iio*_tmn#S zp4)zTBGRT|e8cdin1ULrdyAH;1BTc z(tY78h^57*Xi*gDCV+KbvX;kP>wQG4mN=3Q13%j{w1khuip(7uy&AMdu4vWD5i6IU zvvR3=IK$N{`OW-pG5S5R}?%MY^eHxwO|TG_uoQ+fQ5+ zI&F#eU;SA#5UT>K2=4_T<-4c7!ij&zxPGr21sk5>;#vCm$uTj8(q+Ct2PuqjTr$7? z;~4gn^zom{uZAb&7oKP=L&tUgtE?R{_B4s5vqUY_%xrd+KTbla)KSZ_(`sEo!kLnT zCwIrx9yU#By(zicZ0-DIlUYNj+k~1qY$giMV?4D+E&L!gNu84DdDaoNE$e@kVigh- z&zJKmNy;qu@+9*fC2AI9RLp+Msyjltt}@yF!i&3X6^@MugZ0zhfrpK7y3X4zUhwwy zmb5aq5@I`hj!@f)DvXxZZ9D6>9BXw_sCEtIHpWzV&hlHRk0tox3{SDmu};b~DNY~x z#AwfKT|f*!%06Vcia=uQe-VFKTv@mx>g3QfrD9CZy}3j_mhG>TtAvM)nB$+>D}v82 zjC{)hh8l2(trz=@g<;Z%!lg7p$f_QRfnak}P8Bff5-CMUeEhRq!qe$$SmQ0i>zIbA z#}PP-oIV=Zwj;Ok%=r1O4R8Q07vE7dlC77b6G;SbsPDeQa={=%0ndNRIm-+SBn*wQ zK_9`RKCFd5bgc^ebD=&P;QzLJ*B>d5diKiCZjI~bsBmg-J74$T!{x+}e@6}vPPUym zeEj?~z~IcbVPj?62x3@;SH+I33gWx#AHF-V>3MKDW;Xm&G(w$f&WCIUuY3Z2ZWmTh zd=~FS)3|EF2wWEi6G4B|p4c^-DzuUfnsMdr*?zGwl-0~m9qO`OcYz-Jy+YGXU-?X{ z#PU$fYeLa7o7F#66Oe1z;N%>6{DzXT`5l?aODihX+-Nlf%dvWk<>^X;3kh&jwpB91^=J~8{o(Qh<76|{y?Am<~Yt;9=29crXLy3mZb1Hx7sl-#)&^bP}bvz$7 zlhj7Bu$J}+b&TstsjgPYH-m6XimWGjLZ}W1-8B1EmB_Zuv;o0vJzX}d z24YPJk|p>q06l-ti{;^aB97I)Mm;dXJ+56zP*^p^rf1gnpxLT~?L6-IBkFB}#$XuS zb~GMvEj4lw5ID43A%_6_tLY(lT#F!JB)lc=U{EnJZb#@wm%LAgxDiN6nQv)L9|nOY zA2uO>4Xj0^xE6ylQUWu`Fn{& zum~=f0}V_umfGc5gtqPd+p3mwX&ncB${OS|-~1$3Rw2?#J}BFZ`n}jsvd!5+GWh~Q zXU;c92pWIbEih#-u^{DBUx*@q3_$+U4lh==f34B}D$up#Ptg+g3P&loceSN_E6b5BKm5YU@n8+>%dRD5W4!+Oe{yPe*Ay7uN+B$V+wpMUO9xzcs%y@tj2Jy zEhty2?)4D=@ZjUayZ1jmIXH58(Yy8j;nAlb?|*VY1Gkt17u%DG%B;@rjUim?r#EZ# z(6Jmy-ho@sZNCIwJJRoP4RHDuaNnIZo|5Z)N!Ni`t_87l!HkFIc4+|?_a36~&YhY# zq{x44^-PrFF9FDO^pEd#t*Cx!onCv#hqRkIqJ_dR20U`>^SZXz(VViYbGC->He0Lu z1=hpOyY;*rLLu0+&jN^N+8Hl&_{LQW)jQCJlSvH1Ubfbf%RfV0>ta1$yWX${pa9a~ z(U=)|ux=`z2ls`w^EK>--Eu8<%O{GRgb{y(E@qU7W;)O2i%E(TNGZE=&^vik!srOy z235V{)LxY7Ol|Y5)3|-NbwxVw9RCwIf3KZvcK_}QcG(TAxPiC&`Ott?Nm0(FCX*E> z?PXbbUEj8zYGg+v*v&+zR9`38?2D2fLTs)5k&-!n9W5_XF;>9zZT%#{baW3u+XxR*C*&7f&e0zuvb1_8wok1I&vqxXydz+qU##-K^ltOwa z#8l3F58yE^ z{13dfgr^@rWDt}qOLpC(`TVlneer+AbTI|{v!T*5t|}?AA$rbvd7Qd%`YzC zSK*6G5A^XS^!wO-bDEd#8xVx^1XQG@`=-oh{`WV&=F->HFQ7dv!kW8R8r z@H~q|Xf+VwI2l9}S9|jQLP#WO4oIwQu2=|dU5G_zFwIzW9)u^|K1K_IEvA3hibYYU z3<*>elJE5oP zRjY`atXfDwvmK75xWGTUq4rc;UAMxu4EUyud;6?=UFKyf(8YHjs=`*0W-evO?e1RwL#U*980N;LDL1#BNtduM-YG`7*|3f|TX zo)Y(Y{J?%M>q7!GAl~Ar)9IPBx5w8V+O?8YF%`^$t#>DDSM#q_QPU^sG@Wx^j`4V` zmwT|~r6mXn;&4s zPX3$qZiW&U%M*nk(~_f8kEmESf)6xk z?Kw#NwBQi;Vxu3AqZAReqwu0lXXT>sp>mJXEn1GyKgSx+O5A|h+&@ib(1Z|`w8mBh z%wevnwpJrZO>16L@%)ABUG)&-JJM;jYx~Bf=m&U>)fj(r9FYQJ9P1VMhSag2`ZC;< zgD2ktw=s+KgG0lIR9(X6!0%uRf1~?}Ugx{k5Bw2akbLgCUjQCkMN6=+RnL z#elg|LB5VL=JPc%88>#_@AK|}oCM+xu9uls3 ze$(}pNYj6icQ-T{5&XINVTbAWDuU;m4@@_t^%d)u z2s+n?jPLx~oMP;X9v*VwezVvm1h*_(?)BZpoL8;{-6xC*j>-i|JtV?m<@IElrcSp7 zE%OWb=3*co^OF_`&iy+iLQFN;%({vOyTCi7x_f^z>pbpi*Zsu{-WvWmZ$`41=NQKi ze=gm3OMVU2k}KvAkN0uz z$?Si@Wh-&~cUM&aCR>|WN7!CN#KdJbgp6MjonlU@zh5hY+DnBJyd9XP;Rp7pG}2=i z&TaSUkFyC2w%VG43H&UD!DRC#S-y63xf{cxM-B{P=nr;5CVaa-zYPRN|F(OvIgTb! z)5#)I*Ffk6+vZTRr@dA0FhGCp%up%H06Tw89zt_+Wj%@d|H}}sNi(#p#`zi7bLPt6 zQVeE20qmGrs+x6+rc>Tuf&heuB;!Y39i+%@>%-=BJci*W_m+AteYk#!@1& z>x~h5x{;jdS*da~ciF{d0nj+GL|Tw5@$3|(Yn3CBbTYaGLT_WV>Si218Pp~aW95GZ zDKy?4{HGM&?M%gC_EUwpi=ll8L)h4lP7YM;LD4kFvEaC%2LZ*-5GjzMp14d4 z!EVHcy3Y^ceb8xL^K#Tl9hhVy-zDjSAMGT+?)TJjTc*s`vE<3GE5P@A`olup_SSCxM|fa=o# z9oNetm1~#G=6o8TrJ7DoZ?3*uMzmoKG{%kn2nmyW^2%J(UJ`JgCm{$|(%BYlXjf+x z{G3ZDGc*eDJVt)qI*m5d<;NYlimy^~jjq9~^0FZP71^GXwaUXw!!m&BB<@d75WSTa8If5*b(&X-kTd%zS9$fq9`DMB3 zFbN^$T~u8p#vtN{Q8*|1DwU)$pia4Y4`(1Svbp3v#4-XjjIW8?;i~5p?vuD)Vk8_L zTsDa-H{-|fQMJ9ORTRh6R*ms-SF!151j@MDJf@ZH0slMhD`6mOhY2nRFd zPXba7LKWGh$81mSNqHh^_)#Xr5?e+>R49P<)`o>_`;>L4fdgoMB=2A7vn#}vZ-a(Z zrc?y7#Au=P%wp%IZC=r)pT5ab2~sBt<(KUQQghENt+cBtYifVloboZk+qm<5zM7WM zM~##<%r55(dA|9b-UOFq*P>H1FNdGgLcMkrx#$UY38A>B6X5mJ9K+yzSJGwa7$pxv zie6@`BE(7oDUD$yr(^;sFH(r|W!JqX?&k5ZqgI|IcOO z24ui;-5WqB18?tK*1RHNWs0=2^27>^rfYu)eizD_&&lSP&Prf>jGdTZ-hqPj zG~h|n#g6yyxiXult4*0|7dr+4&jrZ>_N}58Mpo=3utpXaQN6)wK6LL-(RAUhM{aO0 zpJZp5zwJwBMTQ^==spqo-+)Di6aUksyhwYiZR_8DgQ4<^8nz!I* zaxJC6U75DPFg!ZjW_t~!*^*6wz?9#P9#(&3uXYnB?ZNRVN1ON|%d#xXvMj$D!1@?S zXkl%=Rf7fJx8AA2q88r@VD0{TR*Xi#Y%#1lUT>g8XoB@N!vav(L`S43aeHWrxpo^F zK9zHMepMW}Xxp=EIq~xplGOaIehxYQn-1yaaMFT!%fXiT^C9{ibU*$0wYPxg@aKPx ztU%ACW_w?Y)u-pQR_f`1>T)mEcU;(Dy#o_r0 zi3U6Cg9i^j=SjOmBU)6FL*EC?3x|I*=y*OxoWLeE1>Gj6HYvgxSI?)@{Om`j2&J4H zesKcw>qOwX`;@$}v>tu|;9h&%eL6dRIn%FF+^0RwuY(SNyZEDHwm6PGiteA*6 z(grNeZ)8Aifc8vaF}3;DY%02m78Si(lZ=%Vyw?UN#o--GR2n<0)kZz{&gd@M4B-vtF2v;wsYkiOd=`!gz7 zW3tAH4z2^0u7(vYEF;(=B5N@G`nz{kA*)!-Ym1(x?9qt(s2)2TnGKOC!)syV#wjZM zRgqr-N>b8)MaPl>d>@|kHspU7N@nrO#)1YQQInd4R%0G70mEl&kX}=?z?69m%Y3&M zhzVS-iwVZk8DMyXsSFqGLgSJ#F1;QuyFKX4pg5g9cEFr0zYwFN&}elRWcvu@MBpCL zdFWgDET4@@eYsB!*8AI|$!w?qg=rD$xN_2zDN9jX{`TI(*WPWd%?p3p(%jEGY{;WU zsQ{tJ_WE$K%&D^Oy-o_$6XIQi>uzORcZi6NQ{;3HCDIu!cSuF73IpM%NdR+78rZ|( zWsNh?VT`r2ZZBpxN^F9F2bppgLEOzWx7SpKRQI3`dmk_ceZ@eD*lP#F^sT3=<6Bcj z)QB6aEUpMn8Y)&^Uu}O3C&`k1k6!X`qP-K6sZOX*g$xwo!hF(n37}9j)_!>GL$wb51 z!^%&p45m_9R)xzsC-Q*A1U~!h_{|GC1L4*K|Khd*|1MPij=O*6>Mn5WHIhk-c%} zPWJN75YDh+0%d=9VH3^kEuC0<)*j6xtd3?^R}-LdG2kuA7VRXV4&Uyo7TLV-!i!KG zZp?$D6RQxS8bSp$e1=ePTixM6I`zzO&_A0_M)yETJ1>iGJ+ z>j?4yxAj{!JK&1BCI$kCAC$S&vUk7h>FL)>T4+q;bn+p6w5$#@9$I1#?TI#bK5MD> z2rI=&57<{?3j@SX%Sk~SR#9-`qR@ca+=T(9rR!(plg_Wca$Y=cnY(39BtlqkfZF89 zfa|hVBh`OzAaxI^8BZaD{fvLl>BxbNENp4{{e|752M348*TE^m z{o0Q_U}Z|Pzg>l}$Wl;aQqv_$jJ@brAjGNxh{W)lcSj%Molj+_l@00TX)#cS^8Il!glAM^T`}`=z!Be=zHcb zl*NBRLp7Kq3uk7QQ7zVk@r|P|2 zqF1~hhDr%^xV^J~;NS%Oiz<2%i#^^4_Zoj$$Fh>V#he3zK%B`OU;q<&T8e|E%YV*? zBeK;C4eu>5c?3sykJ$o9-L|$mvBsoRGH}I>MBbsG+0F^2f~@!ir7M@%c->rA}qS z8|pfa=Ngiq9#4Usk!NpZvX9Hrz+IKq(2VZw4Dj}J!C|m^Q)!|Eo>W)1$ML{jlwe7~ zqf8!G7-qS(BK=~b3I1HQ0?=3F>J)#YF&h3|Sol}5NjiuaXeV`Zc|MaP5w7U!gVkI( zAB$;{nPUk5*km~j&)DDn@e((xj|*_qff{_ByBKg)ku(0p3zBD*2;w*Uaym6G^2w<* zrk+B52dY@X5~kO$GXr-C1MDF6`7SwQ9*UwmK2(G3ar^efHIX_oqaQuCXK)t9dyzl^(6PST7chIs5p|nXw{+U<6jud@eBk-+kJrj`8FEPO{s@dd zetkBkzjV_SA4QpwQwfcPv_WT0j0f1P@r0Z3iKWL+vjS0sfni0S&!)AvOMY&r*A(Va zSVSSg82S-7=DM%E(r;>zRacsh(if^GdK2|0)`cVs>8t`mM0prXzIcD!rxGHEq_tdb z4r;SedsvBdK;I;k6SQ)sg-TFW*hqnt8blFvtUCtB$cy}!9~UkgH$;s|!OE&C=}?@s zN`#5lNI_sUnt|7CcvMVoDpVGo9!pvg)br&^`@j;PyUp4LXqW-(9qd{*b1cM)sW?!K z*s}wo7vzum_Cpsc_Ar0V${fDk>30Z5s*p|sx5SHP{f`%AC_^W`u|TF1+*NfaRLa&q zxGGlGEujq6#EGw}e4}LZ$J8H9ie(TBq8N>$uHQ-&^oy!mbu&!h^@im%)7sa7DSa^> zB4_E?oA%`bu)oVF8%8`g1v|?Ob&fR&)6_bWRtd*6A_0NY$)ClZe$?6dw9T0|GTiaMVPSOQXO34jd`x5RQ zX+ak!%GJtdsMvp3C=Ph&*tZN;FVP74P0I*Nv}VnV@L)KCP5fl{FZrC_AR*j!Uqdb~ z9K8#m15xuaXduvGScS;`fm-AONjI3o@zwB*qz&6;#Lcro{_qBovGz;Lr9t)zI2&ex zbX-Zx1{s83!Lcf{HQ%DB`YX2pO+d209PlIYMtGHHhG-;*y2$-1$}TqO810MHW^iS4b_? zrPRTF)BjZ9b7*5NH!Aou;ai3zWD65W^BpST*tbhlMH8pC3vbZ_IE*dD(Lw-T! z5{tp_yPk%$dzFQsVc2m~YR4J(dBNmB7|{@9VaGFnyvA68ZinttUlk*~kjZLup-R}- zX!f26`vuG1m^TuDV-uN0)L>f$N@;vF)RVp(nOyKraXbiaCXG*bF7vSQBDRv zFRp%CmKdPQMT;LqWFmLKtY+gRe&WSxaZUImf&)(3$1q^k3+g-ohiK$EfTjUX!cSij zgW;!PMdF#+HXIH?a3$c~?FYyE2aitR-|@$P@a!jb>S<2C%ktY!$9%+8U@VdO6Eb&b}`NpjXs7enw_@_ ztxen`C`KuE#$Zs|WCY8u3p7iOrmDBiqE7y=*Zr^8{S);%5e=#M>-3P%ABtg!qM)pK z`B0--|DM*WKE_2Zd@-{}AYi0paif(YP7J<5l~AT=g>X67FPa|{g3D+Ez{X6 zo(2mA?aPy*#VIo=hX+t>VkQ}h1A(h8icS10ONKXzi#6$0*M#u5W8Mfja9qf0+f^40 zRJ5<-&b!k_QDa-$zb6sw z?4y(IL50|#qo{zPhkhBqnoSo`Jm^$>d?s$6W=oPoLj$(@ihX+^dcXUb6@Oskvl+ce z%8ltBep&(}%;ArEE2xixIBNV>pfPb$+x%liK8o+BXuh%$uWe0qCypYu5q+k~sW)v8 z`gYMi2I@8Kc)In*bckDjHb|z1+#4j%75-RGcpoLBDi_){d@dft<`Bh}PjcF+V|8iU zw}%MA3n2}QDBr?^oG!-?+T=#3qG z-B~fgfU#=oihYcDreF}xl?A2wNMV-5o~Uznjoz=oa?%Z7nzc%wGKW^dBzMU=KPb0131nd^hvIr zz}fH_TPL9o=xyFnNptjV81WNLkqryS_Zx|aj~S%{ah1S-awHkNbH4YF6Vz31Skjb} z)1jQx8=rafyV123ETS_sil|e1zY$HkOLoLGX~PlGs8-^kC)DM{P`>ZFFk?0DF(l86 zX|Dz6g*R^oxaZ`RY@{d-7$brW;zJ4SaE48jQaF{%69ADNi5e|>IEnCD*hh5Zt9_U* zK6 z6%HaD&=Y2nMZ?z}o^uC*p8F^o85`+#7Ajqw#X2LcR^$jXXkK~bA!&G{Lk3QGMd{PW zU||@r;V~QGN{{^j-JN|{?2ZIaaOj2k`P7k$?5|cn~zo& zzjnz>W!oAgxW)^Q%}-qv7vg8#b&>lTp}|QM(yyhKP$sMWB+M=?6CMjjByvYsG5a;VE@wG?_!ezf)amSx6Yi zc;T@5$tOBTHHmXu`qI{&4Hc$0o(_#^`*t*>?f*5R7Dl#{&9HQ9$s{c(t`g}#Hv6xC z)qJq+2F(YPJw9tHK3H>S#*eho9NI`vSx;AytDZshELBT5xK)ZWVhl#KL@-1Vqms~$(B7md#%^7gg~MW0^T{Zdz>IC9;u`Jb%E|Ln|66lwWZHbsLPChVz#Wy zjEDC5I$_=2Xw5}8(%V~e;~(J77*04zmv(I6 z|D_!rJ~v$2*V`;Ug>Hd2*w2NPI2LQXQCg`Ir0hx%ZcHXyAXPE&SgxTLV1;(QpdF)I z(F`iawz+`>9Ge6v7EaO(aPlgD8YDhf^!XN4gGG;@RG*D%VEPPbXpdL-`8ITeCp^xC z;<9mOG}6cUfWlU8+UJsLOQ)YupBcrhz0ZmUb$Vr=KLoS!=Dd9hwWY^TjJFZRY#DDW z8am7(g>O+W(#XT=irgFs)tK-(@;=z;*E~dt0|r|?YIu%1e^iKp4J%xKbQFsWzDfyE zDHQk9x%N{7@JrMu_-Z0SVIvF(+llm(BsJ=0XDDeSkz*+1l!1s2Qn*wYop=p}E51u3 z{i@sVCHdN=SXL(BnAIRn{3p=u3*T= z=Q~+KQ!1pI@o3YO(mHZ~Fuq|w%JG`LI07kjcF|O%UHmqMX<4I>=jS)=U zqEk`hgSYc47uaa7anO%S212;cDbt~_aHpV;wtc$;e?X_$MnhBt$@Y9}ogg~SWQ zt&KyoVI#M(F8d`3_Wx!L;NZT^aSZcu7|GC~lM$8}Rb@S>VcJT6-577(F4q>x!x`ZvENYwmO!i$Hq_dGq{?b3&bAg;9p*c>Vo+Hj<$_?-zZb zw%)2IgN_NC9%v&`X%1(CZ_(SC$Q0QY1e5p6EnTzoaZL`j%vlu_uGL1i6t>zPjhZqo zlc^O6xb0wfrB6+N3LgNRW#%E1*RHQHFx3W#foza>&a)Mh2kv0EO+g{F+JjG^#}@{l z_`HNMhv#lWtCmGcE3CaA)M)fs15{nT@JstTCDPp8Pv}#(XLp2{hqH%YC$FCGMBAbS zf^ls8wMfQQHX$0<{ENt@Xj;MvDnL3i8?R3{h;p(X)u6(EMl^$Ze-*_9MN2P2gQ(U1 z$iegL6Oo@nfR_-`$+)PpHX-%hg};E53pA66smie{DJnCbTFjsCtY_m`bFGpH$ru(n z41|1>6$`^cq}4>^3ZTF$R>!CMs^k+PE91^{auc=+ON>)on3bo{6k z)EehdJA#XUifiv%?OPvNOB>;wI=cVHNeePR5rAv5 zg#4^O7XXN2Hd%v;8!XQppDAkPR+j2G?o*QIfvFa6DkaflOzYucSw=fc3um2mw}BQb zjpA)umy%E8IAe9ds0};Jdi=T?HNE&Y@i)%5{o+5Ef$#O~3HZ3_?_@3#D ziJ7enU<|z%Q4rx&QB*oqUwB20)CC3^Dh&zI_|wAwrv+d%1G*Ls1WN7bKB)?*go!K3 z?M}C}(0rQ)3BJxO9^t+CxG0%P3oiL)_;=v*zsGY{wDNqa$tGt7O#6P4gy_W zv9)Wf{XL$t-o+jhw*4qu?b4=Zi$%JbbV1?2&v``RRXg|Od`Gkm;*-EFU%NGbDK5*O zwNuM*L13%V9S=u-zkd_a2p4FdK91$G;pJZ2ewdr6+W^PLhb$i#qv07`fGMK0mWUCI zPNrY_pU^Q=jDVH&!}-y zJ{LZ|oftE_Br{K2CA&$>)sW!hiIK! zqU%Tr*DO9M+X_%hZx?=-r=&yq8$5T#zp-Di=HI=Z083fBOb#_G|u2mYj8$o1i)mghe4J@^may zoNpH^TPA7AlA^|~VAGX{0j?AqR7`SPfTW2KUv|?KiOZRd0&Wq1V3+;`L{21eEIkqk z+De2J8I(q@8xU(viM9FC^mlUFdP4kG`Dgd(VW9P>uqI>hQf3>riy5ylu$t+uqd`%D zX<*KeV2ktH?8z)}AYh-8b*)|&Fq0`{k&v8*N@*tuS5RlvbwZDB&$NnZK-PqFghkDi z1BFe7==iA}qT@|}hUoaFLv+0H5FJ0EAzC=OJ&jId@}jV9+vlw3b|sZ6YrIl#l3u75 zN{uY2%OJ@vD2e-z$K`|`)zyM-P_kT|=HMUePZbnm1q11NwX5#!OL4R%^8PTeH#PPw z>m3tf-niT`9_c1xZ9TEYEth!k53C4FN9?XD&Z=yK706_Nf9-cxPKLwc@v!o5XBG=s ziBHASz*$!ifk~aMyQQYi2jl3d6_JohY#K1CR;u5N)(j=gGEW=Z-}-~j-Po-qoP5@e zMezIGK4lI%3qSC0h|{Ov`V4>T)tk`}rW8LJY~V|N^ty-8n2YdM(pCjZ^CxZzi*ctT zKh3zdJ=SM`zSm0T1?~pIae4Z!q*G*-W`csI1wy=59jVsI6oT5x0t{+GCoZu^?Q(x?vvJWjV0w_N^yZcYiF)2$3n(ta$q?LIt7;ZgHe<}R4{bywSaXCdZ#qKaoCi!4Et7?l3ihU$R zKWOwLiDbH0lzYYLBzKqPpcvf)Q2WSTzjgs8sD*V#oprW%eHWqu=n zI7X=M%b+k{SQxJ`?X)?yi{SuLcjlUgBgxFu3QDk2P|F70Fu2?K5?Mg6R`EmtWwgLx zCDf;!70lBdzUMqFK25>J{E1LwO1y@UA~xkDVOJIM`-W`+6^K_=kUF7luKl!xgxf#`1zpiu}J%&mSIUKMUsoKx8e3Y~u6jOT2BF`zp* z*I%!(BMdBO%^R|Q5g|l{AhkFme)+D2{9%2osz5+`({Cd~D8t|a< z9vAy9C?-rOfa`Zg$)9ycIPXiw^u zss|GW*F5+mTB$9u&n5QTN&p^zPy*30i{ry0uVxcvJdx7!xT(aPzN(499Q;tfxRUV| zRf1UNHD0MyX&`Rl)OnQp8>iM)iFi&3iy&cTS{%`>rC(?!RKrVQpnR%a%o7o6R5gg zBmki3s}WG;OJC+a^Dd3ly%TX&%nN~@%jL!BAm8|pnbn9ZE5@jLEiLA*t#ZIOb3^Gk zEk(9bRC1PUEUz_L<)bRIjh33@5|v?MD32S^_l^GB4sTQ9^%zzSNZ_*2e|S~7?!zHo z5WXrVo;7UzY_>hnY;U-K>B@2QLPvEIYEzE-}TkkyahdP%BwU^IvPi# zBKtd8^c{KW3YOZcTkB{~%%-)L4o-i7uDbhC@qS6EwYeJA2*aI!L>V}cQNq1pwfpO^ z0!xp{>JJAe?mak9%PZWZr&stCR93ivw_XJ=HPb60T5v0Vt@2+MK*Qm5zO2suCMm%n zgxGe}6`TPbFE{^x58o{eAFrvaXQ~8Ez}3*qI%7I&gcifFys-jCtPL(jkkmxmrf7`{ z*{uRJZw5498_;i!fLJ#Tz=)daja4`)El&MDb=cE5l~XU2m0t+MwZKU zsixKQn+od*%{;~I7Koxni(+yGENbdEEG+6?5+EJ132@FaONm=MRn0EDy+q4}+s zfhg$$RgVXBkkgyF;Q)_^BQwJGi+z+b-hCYTfVQG29mC-y?=37U%=LQqTtQa1sbHo) z3NFvwsq2Y~p7(X0xKsTiP74;fVz35o8s?Rb#o5|4JLRVVWUI<7O=*(Epyc`8=vW#- zrbOGm$4wr8%}%j^D9ywYDdQcUvuN)-8VLcHTe z&%K3zs>qLG+`>Gpzf=BF|L%DwjIF~H63;s>=^o9Gm$yCX5>fc^a`jYPO}QHr3@`&& zvwXBRHi2&7UH8tG2c)r1-88uyhigQ_yTZs};?H1WDl>uF2hnoS~OLyGz zhK%P~FLoidG>k7!-a7vZ2U{LC^2H{!Ghz!WYwna|v%Z}!f1v71+O-YN(tHxl1(*9M z?=-#GHync@36=pzuP5GXo1fLa$FRli!X$pNlXW^h3>~7}A9*k<<<`RPkv!9BBuB4UL@zhQ}>-JY+@lN+Iu!jp0YiRvJrFo)4URTC9SZ&}v z5OZIFDapEG4(Um%C6)%oGFv*kvgT`lJWFDn>xG&SwKxuW(rLbPE$8{KEnYh-@$}t+ zg8)AL&c1LD_m7VDKifS%+}?k*dkBs)dF5XuqhI&$-^ai7d8_9>_?+Af0$Rr3m|Xij*+j#FXd!3aF-;1mFc0f zIZUrh|3X_nD#%1y;!6f|cgY>A_;q=DHI-jX$tBA>;lLxrZeGqN3%@kFQHyO73jBZ%zoncTl~3B$QC80RB6V7s>% zE^yH~o`5DnrQ_bYoVq}LF8?dprEdRc?_qH+dt}w*LEr=8~!-NE3}O48?pEjpdrn@KD(T1%a6wxc~4$J zLxO+e=wdOx8eT)D8V^B-!Hp??Y=gf11Pv-?rHi-I%>;s(|N8}UF`3czSllLg>1Sew z_K*h0APu#LvXl#^z`P@WTX56V8I_}fdm(xGt>lGM(v$AHn;ShY2rU8JNF^L5*(3*r zhAzYg%g%tP*uKyIi||%~_+l@I$k$ zcUTCnP9q1zQ^%C{`P9{Fpm|Z?>kYzO*$f8Qi4hi&#llW&45DIx%-Ojra8`yuRfnZ> zO8E`V3OT{4VvTOEd=6wBEv|PdX>oixPfo^{6MT>yk?^0{syCxbt^}B@EXW~usc=m+ zj&h}Ol&^&b5;#Ef(4@=wEmBvg?!6U+pjX$5?$24-TcR89qwTeNfm5PsoPi6KA{zE1 zo*)ceojh6r4dF(AV1_)R`KP`UrM{b_Dm2e%=21>dJ9Ad&pP|gj*u_rvbx6ZjtOM^m zJYV|k${e~T!~x3>#Epo>8L#h|sej}kMC?D!E3R4Y{JSx*#q@Y+q{(1Le9HLmllRPS z-S8G2r2G|V!w5|Q>93#Ejprg}060&R?`PBG#vM7C49g#X!G&QD4{!zt8>}+{)(BNM zs0FNF71d^`t1V{+0+)A&JY=TN;I`xn(d#CHvWHBkPa zt28KsS5w%3?NX}`EA1zax-K_BP7PJ}9l3HTy=jJHjYXRM0>>b3MUr+w1O@oa*l3nb z<3@U4*sKueL466%FtUJyjusdI2uryMtw6Msi!lo&OUfS+Y?S|$kK_;n2R1vOk_qY1 z@{y6>7J#srgsY|Url1{T5Mi13y)NG}T|NZxAuR2Ge$5`x=??!vz3iFM?{iuN4Te`& z`2<=tn$zLAK~k^`W;E>;SIrzTm3l=u0U+_gPscDbfLfemSoHfjNc$>-({3_)&iO!5p~j7$-HO6Le0`APXyWdZBA83^Hy;`uO-T){m2J(!VaRl0Ax0CX5R;!oKO zjO!$McZ4T--F^0Y6z!scIKxt!S@@YhTn+Ql0JZYD^WzJ*UyvNV!!x!6mQeK~Q2or) zAu3D=$H@925_B1Pov=zL#R_6-UGqwR$|Q#`PlDG^D*F5#XAvg;YhBf2Z|_Wo`4u46 zjW<_aHXOTQy%fCIH0e0`cJxlG0IQB7v-xW9ssgoMc zdIsa^(l@ykr^Y%Ft>s7_TM5g4qecaLPJs`WxPE_9!x?;Dk+rLMmT@g5qQBCKV9U`|_q8nWyYdgg9$I-r67P__-j>bsu-)= zen5N847LbRT=Xb5ZQy)O%qrr4H#b`0Q`s)%Uql@z+c&}%imh}$BG7lSqmFuJQ4pDbZ-b0dzw&5gA)xVaI>VWb2%*Du1&I2mq5 z%5ZD_GTbsU)Ku-^l~GfFFN3-IO>=rR=~AO7!96}Fc>n+goeWJq5yAYxO?=X~A$jOMO>_Cj#Qx3!s=)``)VT3-YGlaP0P@^m;>x6b(jz z-|S4dcxprTK&CgRV_^x#tGK%2JJmSzE!gkq10qQT(B#ZaZjFLp)5 zi)c#)2|`db$QKe`poC?LYR$We<;M0_Bgv$<^B>Ff3 z!5R6VK*6y<1J8lS88te9Bjp zx{$K>xi)lvXubx(`q4&qwmsA~7^0uTMYZ{C7mAki$|A*LXyVjI48q1~#bl#&Lqh&^VLmmhepu7ZEViQEZv&@)`TYFgJ)W%mJ(W*n+Y5E5ll1mU z*}LlDE`dg&F9RPBmMO!_e{I&xs(KMvm9^?cfVmqI^7X=eYPNY{P0DgH3t)Hue!l31M4b-QDq4}@t;?6gtD$3k$ZaB}l1A|pSyPX)kV2zKA4XZ} z^E0~}z#@1x1$XO5;~(iMwPc)MXOxIjOf)G6b7qlm?*?&dMV5!HKt62;^piD>ngzdI z+XORu?B`|vVbh0~EGmD9S%5dtaneE7ND!-k$p~16Fn+uSs)`GX28?`uSv3A3gY*0` zvMytFS&TKivNYw0YmmEz`buDh0*n^FC>^R;HcK6G+ktk538 zx3A#t8e(DJ+mFrbNUd$We61Ym=erIBfQM-SAb9M4=ZxgFc0I4YA7g1(gTHHt8Z~Ht zsL&EKFr`){7tV@yMpZRfxLexhT{?n%26@x-J_$G4(t;Vq5JkTNgja`5pcQW>_fQ2uP>eR z=4az`=USyN83D43XTAqf*Wc+nyULQTCKS9JOCSYHGmPjp(6nL3rC6eA5{D6gG^t)A z&DGkuSdK=})pdV6wl@0g-z<@`S^U*wh?DTbvv1WUv-D`f6sb?X1KF<0b)Ihw#uhG& ztJ26r=uowzi6o4ZQG|jAGj6>~D?cS0|-GEeF8 zK|FO|LLgB#ih~p4!Lj%BWp zoy1ofBgy8YtYHvRdQ%kpOC&1#C_6$iK}VSZQ}$Qq3XV= zqna0(Bg&82ERShfVY(R$;DTbhkC+=-w>noWQ5xVZSd)$c> z>T__CG(015f2Zuej@kX3v-(FU8ecCC!*-$I$+*2Q=`((LD0+9IOBZ-6ufUrVQ0gDE z>+r?*oh0b7RaWZl>vh;9hM!ExEZytGa9z82zu$5{fCwL}<_U&j%;R7#){31*lC6DlMahW3rfNy?VO!9tmgnkI;0P~Z}k2#pU7boalsn#(iqhs~a zQ~{7+mUvA6h;b48j2s{j9v(b6njN`_cgMqj{i)EcR(+0A_vV8HsN1KQTrenj&xfzG z=K5g*kDfl3Tpv3AtPhC8s^;*+lTY4L$6mg?>oVZshIG7P*d4GAPF7PU8L=$cLvqu8 zl1)5<$wh%+;R2y=DDmqyOs9MhA;uK0N0c5^%HTm7*!m*zrFeRLQj{=eaWyk6L9Sze zehMXrdLf$R4Y)S()S?$oed+g;K%jVOK?p z)!3d$9er#q5M*hE!eWu;ieTjTy+pIZdQNaHSzA5%Spv6zz{Ys^rVIHmtK-alV9JpDa17gaSU789(0TWARQLfWlKmjefitFE9p{VNBgoj!CDDa?#1eG>jT5h&jeRzYl@S9s2`^m z7fb8BB6Cob{k1zdHw^zDq;x8WFXcMuBf87 z@XhW6jEX{rU;g|w!#mlZQ8m=5QeV_5Chc#kPz7NOF?-C>Q#ajS^|2eR;4Zgv zyy$Z;#XvH@w5}dGUg@P55uQHpD0g^-Z!)5cZk4VQqtl+2XXZg4L~4}5dCqSMlOW&+ zp+7iDxOPI{`f+&9?_izjhefcjmUgw{;OyrPsw#PIB99l zQkzcl@&?#JP6Y)87*q~_wx)YAZIBu%xfhm-PwNLMV6)MA16ThuGeL+6{<&UF681CXU$0!!iH9porL*-dj`4>U9N@ z{PFgcn;4|oFCNl=?3ZYyHE*z}?$o}&qMvb{`9zelW$sPomAOng;V(&6`WCEDO&}c& zlqbU_c9_YoM52Oc<^i0)sQnLI8?&gx=A8%s4!gN44i!WpjS5gm``WZ(<^lQKIVr;HBhmn zmc2z1cRthPJNJ1}U9O#kVeuR5_!A0LY;JAvb&^Vd==?7Gc^t|EZk_$&6GFdS7L6y1 zlf+&((502@Fvpk5bvi(+X05o+GSO=FkDh@Vl$fY=BMhCUohHAvRF~bn^;?ljhx2+5 z%^mgeB^$AYlkw1Q{x|thtLlYN?yfLjR@Gz`P^U6~-2~@UiPWie=J3SyU1)vl?7v?` zNpvB9NXI{>sB^nD`*4SLg+Q8g6rjV86V|Tzk$`?MGlq^NaYbciBtGT@D<-qj-FqIy z7M^%vK^l1SHe8$Wz+gl)YWKzp1`-z+zSMvk}MVpVbZ!*;$T7g40j*H zP;JfAz#5c>yOq3YWaFplf`n^9y|HD%c^|2}*~33d&3Z(d4~(jRdIFDve13emO-_N& zCLEcml1_u~^Q0a>X#){S-ZV7#_3OcK(hcrAS7!QNtr2Ct_1`%-J5AfGQ{4;Dbr=|b zR1g7kKqFuY)J36+M^j?(nKx0jK%^o?{vi4KIq%0yoA73cm6|A&ORxo zCu3x`YnC-S_(YR&v6y6-d^LbI)YcKJZxXC<`$5uCAP=L_RElbNMi^P6O)`=}v8dwl zCd+k_Ihj1s#3c+#6*+#z4O2;&sd3qVJl1QbBhFHd3uRhs;Od)u`n`MSWcvs#KPkhL z#r3t?H7_MuyBL~Bxe-1N^;!|8w&vV&u3^3;^DQ9yffRLyOsge~`sO0|u*7DpWHDB^ z7x%FiOKpX3DdZ=6E$#N9URDgN8_$R}95gbdbv#cs#>wH-gA<(rWx_La=dU_{{_klv zq|Z6wVHJZR11JDy!Nr=0koaR5hmZm>(u`hLZ?$W$YP)}n22GU%Sqw_2J=DB}4P0Va zq>lIxM(k-=W3D`|Xh=eq0uv&It>$9|8w{7r+Jbb<_slacwhno} z&;4tinlG|BvAB2;CAU6NXax&;r)zlmW17IIcmk}+b2 zXjw7ICUc7GQwm2j^XIat3_jVFr93{=B7=7qZwL9E%IQkq)hv3w4n6&UB7xRj948m= zAM<9xvn|AqIkeG5>|0)3&<_OupAYe$&WDHy?#cTIj1%M77fv*v=8%&O8F1GeZ4-%6 zZiIg7%61uTmSOta&-DsN>0`q|KH;W=5PTKvH}a(M_)`!ro||WWvfE-tGmu>CZ*q!^ zn5cI|b6I9&7gcQc2@Yz1Hc5A>6w~JR*liL;T75`sX-B=el!Fk5WkliarzP>D`);Fn zk8v&COnKaGl%{PsJ9?}ZG_%d*D*@n6bA6f)8sv)uD<){?J79>sJsw3$tJjYZ&>InI zCKQ$4DSY=hwv@x_HQmy{t$fxOM$#Z^7*(c^?I7Hz z0_`rl_gg{aSF{msSxd{U%&m52|9o29b%X1?mL_%|oV;`J(ZMH&$7d0V-B39jp%*fF zPT|&{+$~;G3&rGrl9h-XGMJCE+u>zWg8XS-E3Tk%>`R^}gZvJ7qhj=u^_5a}$@Hn- z3`CWU=L*h9^8tRDQdMve8U7p{0!4=rf2m!~CD#UMF1bFQ7@zTr6?r`>PL^VpY z$-R8loUyC>x4cPbRPCa8A3SHr5HyiXWi0sKHGsQnfaQ#|x!;ESlRSgzVk+%z#6RYG zumBx`T8`!ov@~-(5N?Jk`yyL*!R5WNOAL#xC}<<}&&tN3hq>^&Fy#DUM|+-RL|oGp zkwZyQH2Ls<*2Em19Uq-soVyQd30{2hXg0mP`R<);0;8q-0XQ&a@5L8kNmC?qrynH< z^zufo7e3Ce!Ok7AMJVxz_w2TG>!4!do-Vx3aVYahA)KIBxEd;FBUqnET=H^~`|B`k zFPV2mP~K$d_InZ}kOgoeh!LY?h8N9$rsUozH<;dmud?B-z9nA%Tn?|t z?wNCG?5qS0f)L35%eS`6PXLIV5pCDp^ zZ_1^z#aTi-01SHlZV{S&@9^Z6!-G$g@^UhSQb0PwG(iy6&mhcvAVJxWPfyR?D((~1 z1D2S7f(>#M5J2YG1e6ivOZ?=zfN53j%xzJWxf8TaKUWQHPCplKR*{! zr*<8G%JFrrLv#Ie zmVAA>fLGd>cCAvYO}p05e7sjN^25bg2$Cm%7f4DpJG*7#f%wa8IHKu1b8q(3XhP*0 z72|6j;4}cT5jl@A&MpDtbpZw!|BQ=g{v)aY3{qzZ1{Ad)BzF_|!!OAgT2o155N7OM z@D zqSm^O*L*T5CYYyHgky(;pTn`nYXwi5iD^*Of0Pt+T!MWRX|$0(+{VU3nqq!6~UrE#rZ04;~10_YE*s?>f$ z^G1$O_GVM@zx{<#zuq!8tXjHt?M^LAy`?G|hHWiItYS+Q!jOB@a1fznw2=GnDOPQ7 z+x2g4PY3UWgZ#_gIq1<1bld&nN(Drk1D=d}BT=W80<3nYYd-5!rp1H=OF1J@|SOiTM&j_;fChk&yo^1nP#$LV! z9TJ3&-A{SOp}%-y2ITB#o`*;^z0>B5Hw!Y%6K5}+j=&~G zlL5~zFwqUJelZtnHOwmP*N{E121>u%8-PUk`$y)|T=D7S@^BV69uRPCou06>UU=cM<<`1yThpR z6$U1CyG>+I8yl=+SgG4Jj8Ir!U7wc{Ys$^;2DL)Fibmi$d~Qiz^ZM*fT>%QT$D9Bjh_Lm-FX68<98-wdt(;n^ zL8l)|1gP7C>zPC*)h|MLDQWUMnrJ7X==!YA+^*=$!|E^4N~>i?ee6X7G9pyW2B_|k zlgOu0-R`GfI{k$^-dtigf4XhITH)3idkbghh*o72b|um5u$WOK>A4F3efRs+GhG22c7^Z6`oijg4NHWeS zp|FFe?gd-SO@DHW+mG2C(=y4cMyw?$INv=(8~}mKA1g~7A}Vv{e`3_?B-(GHc5!-i zx}OY%mfNsEC{2XjN+@NtzpMjMf|4GtfHc`O%rB5*-1KFhSh0ofaZ&mnPyK3`u2Kk{ zqjw>As)UqjOD=SzLxO$&KiTw$XbW8^7^2pr>+q>luSIsIzj#MZ@d;V_Evs3FyV{H< zq;?E5ZXvV0!Do3%f7ulQ`D#Fj3M?|s%vXnjM5 z?Vr_Pe3oq`B%;ePRl30Hr{RFyPGg3->cX7+5#h$#C*wi>OZC*mW*Q>v zwJ!Bs^{;)b-)gFm(KPZnB$LJMf$2pl#>Q1GoH%N1+i;|Le?TpZPaSBry`mZT{^CeL zs=*SM5|Hwu>E|Kn%P0q+sk?WOl89*xhCBjV6A3Z%b+tzM^>ft{I8b0Ok_nJlG~OT6 zxT<~vT`Y`Cty>XFQto1_yE8b^wxUk(CMDN+P^g7A+|h)*w$`NDXy5 zLnK5%gd!P(Lv;80Vkbq;nb zeunQZdL@&r92bLZa+r@%we5#bv-0N0;-~V*f4Tp0ep~+N{RS$-a=7^YaW?<4xcd-> zNeK(hOv~|J^K3Mp=bsmYxfU0{4vHTaKRr?|Nw_0vTW0nnZ4Hy8B}CVsrKPcE{F9~* zrFG;vs@$H~MPEJDkv}3VfC)P9?Y}z$Bf(2U=ARLr&BidVLnDIU z+7hMfebyFL+vL7~9U}jBNfWsaMQ@g|6w^`&8fiOC@)Ii^{VP!xE)tcKQju-_es z`y0EA)~4OHP5OR_*X6;F@NLRBf1cw9n%)uw!lULchA!sHGwO3K%p~ED1laM)!a5e?gQNbLMlY znUXE+I`<$IhNBHxlQFByovs9Hh3(j^r$i64;!SL9#({ggQ7vu>-)C>Q_M$iaUYfeME_&1#VM5?4j{o~g_jC+ z4lWKmO<5t0(;W9o#8y_lj6cue{}60&_cdwOntbT?mIKP3O!j@*^^x^|=_M~Ue400Z z`n7=^jHK_2pPW7_qd{@E5%zTa9tY4A5chDqq}Nt+byGH^oBF7Lf0$LTus)3y1##L| zmsg?Ue5+nnLPfPL6ralL!$!ADSvPDbqUiJt0T3U}a$w!KmaTAuQ#rOgo67jA|8Br` z>-dJ#&2+M>bf{eDQR27HCg&I>7!*I_)jAY16d#5knjXkT=&%$w=h+01P8Jux{v`b? z2EjZQzSZBjB74wDe^nds)ov9WLE84xF8(XYt`TeNX0Yd2TeL4#^IT$5OOo(iy$)}c z6XVQ;dCQR4*8{1cKs6MTCIeK)BFVIuAiU3)Gr1gwO|+uo%y3W+WFpU#x5(x_*<|WT zYHBOU3M-pf4E{>TgSN(fwTz#KXgr);cF9I-)#-yN1TwMnf1XW9aaWO&%9(7`s^BVQ zR`F;Nvw-6X#py!?o1hEvDJ<>p@ZX=``|)~ze@;C%?CEHS4fK?5r@$S<>j@O=MQ0P9 zn)~RK{hSTG4ZBNBo5!<7@bO_z8454PD~o)DwHNzzsEs(-9l+JM8fuoFNT?ot#KwbE z?F1VQ0+>{Gf55anNx~?ueBr+!fcEBZUw7u6Z{OV7+1lFP>A$x7>gLYYYp}^QJ*93ZZ_qE+V7U74T5O~`I-hORkug|r%1$O)O zy)7tXlzXp*z&jrB?$(Z_yz|-;zIQ$7omXGm?hA(tf4=v&H&7Ieb326I3mLCz^~PRf zt6vQT4#uAU+EjsWH8flQ6a>gkkA?+x@Rca>Z{Zig8+-^HYw#5}=!+udoz{Ek-QMP_ zyL+!L#I@-C-QDfYZ7JSu(mT-3&DS=i|F#r*2Rp`aX>V@5)|WnL(mbHN zwY{N0e|xWQ?x-$Ug%hAxx9Ug&FMCGMR7Rl03x)J$w4r=HSXHpdm(9-3mWohmZoF|6-woimc8sVI z{`J?5I-0H`rO;;Y`S3dnJ0k|gS_OuO_8Y0~f4sieDD~Guova1lZRY-U4;;j_TO7-?>*NPovuM|rL9i9-tx*6P)2}v*U~@Y_uu+fT z&-RYJw|yG;H{T*+5^NAknpa!I5RdVgcnSsx@lt6sR?)Si>41Uw?%es}o}IHBw`&<7 ze*gi$#P>d*&*yWRZ{Z-fIS?_4W=?AA;O`I8s{Lh;AU({}WSEM{+|P%3UUUX&2n2>x zrUrDGjrg$)(hO|^4a!1HBpn7A2v*m`!SJYG4n6BaVL)f;fTM*8o%(2(ma+y;af?D^ z1D1w4Kv)`Pl7|iPK(n9ZPOFxzJ5AGVe^=0l%dSN!Lc9&e!N9a^k%-7{X=ubj$Wp66 zG!`vsTS98Erm!Zo+J`(8#%&BD1z2zzT#h~EbsX@CK zb#Hk9IxAhY%OdkZ7bbL>W*e(9e>7}^OnEFnK0edOrKXdb+`S~ww`3EACMtBZh*;CBjrlotY zdPN4QrDKB%8?RCK7|Uywz%A-elk>%xS$f~hUGrvD@}*1mGF$HdLbvK$K8 zAa|p>4n3ChmVt|00>l1Ce*g<(f-NE6;Yp%_lOYFZ@3hT;X}QVjCz-Lb_$DpP_@RsI ztmLRHa%B@ZPuOWR@TkvAl1P;;WplB^P_{w&uu~TJO_PG>rY1QUO8ZI+6S(2y8XO)7 zafOXZ;E@E!6?hXxGBI&&@S(#wi!IC-HuJos8?p~KPV%I)mhVIDe=~E3<)F|8E%O08 zev-)vt6@fc>3~ps=P8$$a>8oh;V=`xqh#o(oEyNf&i320eK1Ja^M@nvjD`7{fV?0$e)fmHrEahKUdu z{Am+R`hzXO2xzCnw)>Z$MGj>$7(GIEdk$~cYY8ZXWME%^kWTGDA}X_R;wl95sCAUE zUO1*0#r{FDO|3&HeKB=uzC%`!lAAGe|tkTw%;9Thng7R^u z9H=-+*b*kqp*VPQnh29MId_VF*ufXTils6YRFu=NAP3_e zA@dKdE`IujEp}>)tv%~Ws`TocMEh(7Ve8aS<+&JSqltHIObuw*N3b0k8nP>&yJseJ zKFB3B)JT%6b6 ze;D!j{`0n((?pbpkS6csGr6c+@O`-`4zhdNS| zC~_>$5Q(M?GQ!dX@76Y$LHLQ=)`^Ji%GQa{nA_SA(b%OJ-aIrBQ`VNhw8T!I^h}LE z?6+UhbpUl_SxSTIe8C}1X5kE-=h_+uFtie>28->%Jf4*cq z8;wc{Eh~VqU+1K1w4n_Tz0jqtG;ui&l~(d$_<`3-MKhDyg4_~{$K5R`2+#HCoZ$;2 zF_EVoroLghlkkwohjo4e{E%zp3=ZUz?p72fzNlC$@xc&Jd5gmMh~{2(+q}fCI$6K$ zL#J-%!ims1+n=GKF@yIUat3N>f7mj}OI+f9|f+BgZ}ZnD-u05AOcJ6>~@DHS`9{FBTQfBOsf`y443uvX@M znVa`Vkh^wX4FTwK6!gkNTCSZNJ_ABQy3` z*H6u~e~HD02>8hvABnid=z)HI#;t|sXJ3Mppno-He>WxYkJ1FGK@$;b*!Kr&kWuk( z?J)Fx#2?R9F(HmYBLf_wjWTW+d87kGZt;ZWrF0<{r;$OHZX?z59mlfjqi#ZU z^|ZsXYD|!2)yNRbwot|mBagJKTRLG_DO`|Y)yOczwvcM^j$&B;K3H3PezV=cJTAn@ zJUYP8e=gLq!PtQf&WIaTcM2R}cpe>OdnA$-HZ)cqb1r{GxXSX+9#(p zwG=aGscy!GE!F}t3woRdyY(p>p$+?Whw<&fe?dNAgM_$(k4W5R_Rx-DV{fbxril^Wmt4eR7xTyRDW(wSS3G_v-(s-c{L4Yk zt)IvES%6y7oz;>)LM`d;YDu@LCEZIc-swl5x)8ckPdg?VjtNS`)yR+(yp1v@Mh=~N ze-lzMM}%-eDYqIKmTtF@YVnSfX6xVLw`JFlJ4~wvh2>vrXi)mqMjAKF96b3Vtirxh z!m!j!4Gqk^+Gw?m$H}`|-wbFeqWyZi&F#TKTPzzSWUJ*R61SK=^wz6|y|G4^CIWoK z1_|4e`N#-e9A}GWUw#+*vfg%hjyX0cf6=laLUJr0iP&cJ(3zEuyfH(N5<+~&ga}Ke zJVe@RcvJ%Abr`w{EmWkQb~p%*3Ca}I$dF8-jWQ-i4xK3wQek)@Tu`Qn! z<75hSQC3(MA9vPcaZq3}7KesaVg=GzF?0ADEMXP)6%qzkUvX$?=~bX58IM(Te>JaI z3N7%v4r}wsu*9Fo2c`dR^s&Lq5>VKdwOQmoyEPG~Hd&G+5H~V3K;> zU0*Ab3Zds+u1=%E9G%7nxp^CHykY3zE>37W9GnJ)xi^gsbnZ4{7W6pgZrzV*sYAT) zFuy%IsDRRf38|p?$;54j4_!lPqi>87sE!bKv0=i>C|*KRA;&4C*jGQ=e@e68Zg(MT zY)}?uL4@Q{J`%Cb=%I5d8+l`fASDF2jRg^wQF(~8)o`4wN?kn=ogfz78ht684qb=-O)^8p}M`BkJlAF(i+fDw_90{l4fqJ zK#vTtvP2qh*g24$Z5bQIe|Ctd4H70|mzgD67II%hBU{vUuQ-E0LR&6$$muHwS2wd7 z+WDu@U!&XpYt^`a@%Gi*Z(Ut}{82QSk86|#0V4IU^Ye55L;oy#{f~=kU8$!1lMS5e zr2mtkO#YKdJEyQ z#{QA1LR3xleTSYQXAdN`(WA!d_3D1IUar)bm$v_<#=NCr=$c0xq{$XAb&+jdNt$wLiarCgfk0#?qG=>t=4P7N+ zloi?x=Q&}o@2bh{dNyJ7jUMVADdF;3;k&N^$D-1gQGTf4j*1=`Gk+}8ugld>M1o&3 zc1^cx^!*jF+&q3zzI1mte~4~DU$eWp#9%tq=XIs1(A60*f41$FtLkpKT3c$Ety$ab z9u4N`i&=d?p2yM0ck9^%|L4>3bPS5U{PeRc_`{c<#?i$Gmmj_V3bPPJFKn4Ty-RQ# zdP%s!-(HC>Y!2v6Z#Q&`MK?b6YG;H>R2Mq+Vn<}CFc&U-z9TBox(gFL-Vu?qoC}qD zVNL(+Ec*Bde+=Z>Z`f&mcxXk2z)&E=Z6Y|$!Z3HKsxp|{k&VPwK@Q84f-KXTrsp6s>abA!hCeP#_)3nY_{3aZ2Q)_ z)VJ1s{?X-?N)$d5E1nzR5DVZwtD<0(6hvlmkW$jE70IO zZ@d-#xLV%d#iWw)f^;8cN46K|`TTurAhf6ljwggK~t5v<$B9Ct& z;|Z+yR3?sDc}Aq0QDw8Yi7y} zME=cf5;f&-E5wdQe;v0hdJ>P}AJAwGGe>7vYC^!Q_D@lgLo>RWnR`joAV5=hn-8b+ z2}TAj6p|XPTW;yr(Fe^BK(q zf1GqfBC7%tb$hLasd0qU$8M@cv!~*;`vzn7_$PP++vrJUsi^R)==UAs@BvhWHr-D} z2pOUx6liA^S-H>aR3+f~OHar5>l+~XVKsq{Kk)chaDzLk?$*(BP`s$u5D?6Ppz+y{ zH)|NPUM=SlrnB|z#{~@jWVQSe7U)|Ae?Wh~Br;9P1_=9;%hWh7tgaR%TkbSgt9rvz@8NB?w-uY1F(LtMy{6f*_4tL0FpFrK8t%Myx78 zWG-7?{n?VY5DaT=@Zec{$g?pFuvDSHw!u$7CW-llHa|RB%;r3ntw%5Pr#Pf{Npp}$ z$_THT26#=?+yao`%(bxKgA=vJe-a)!1+!rs&h-dUK9NIO z1ra&Gs!Yh&b`3W!oCJ>%5#bLap_+{b(hm7(%(=ydlnx@mV}t|ngUE(~h*A0_<00of+$EO^ zO^=aGAvlO^6eUfxUGmYOe{&PWk`Z=-stCn(xIjrs5;GI%kOC;_1?|)kH3*-*2DUl1 zvPO}p?#6g9g-Shhx~Xk6VbRvlVIQmebH4R)bLjCb==xlgdE z&n7n&)*DbVxdT#Ue*-17UFf2kj~}jPx3o){;-8SOx&q8ob@2M@c&2RHoWOzy_gsiR zt?obxm-uaoU&eFV^QcGBOh041SV^^UBBdKREv^;~ST&tLJZ1x=6?V!Z#w{lOi;o6o z?VK|jF{*|2yhR4b%RP_=#=PsZx88gE;`0yQ{#0$L)DDYAe}6BB$I%}Vjd*tR^4aLm zxJyjA7tyW-``lYTtK_iNI*P(dF8s4vjUQmtKFgQSR1PUmqs{+f;ls8RXuy8^XKNGc zs(gr-pH=b=mm>HTg*baQc#B zG+j1iS#M-!P?rGcE$J0z!*6{?<4)*5CiAacrKgODIA`9`{QMRV0Qpa^%<8v)o7Iq1 z*w1^j>G#pA@O4}ItML-T=d?M2HBQ6mf7A{W0Q||af1cqa`l6a-Z6xaZ$lC3svs$3i z?FbxSx){-AF91A^PPg;b`z?A&Ql%GX-=)!uj6CYZ_29$xusg2b1up#pahaITqVFR3 ziNfgRs1KIa>R?xb@MHynSW;GxS#N*p)JuCCzk2oDSvq5PVj!$eJHy}CPWs>K$i;u{ z1g*j&e?wDJw->4&d%b+SFHVSpGsqU5LE#tmZg133>~-UX^7h_HwZ)x?r_D=7Ud?Nh z6a+Z*fFG)drEX6U4uczx`5gN4AiuOdXBS2v?KP0<3%3z};Q!_S!GCkOc2d>zNa?SrxigCvz+4@nVl?z;f4bQaHy!FE2uCj>Z3-UDv;Nu7nq0QU z7U6j1+1San&R(Kse^Ubzw|Mbp*K-<;;lL?6+jMgEIATOU@E<^Vh+MLXvgR?PXAkxmY=`wQ~W`!OoV)AZ0|B3_p?eNPSWY`oZS@bBh->Ce_VlsruC ze>~E{p|9Z!g*h0V|8UF3s1Q0)>66~A^a4+%ka*z9l(I9n6x=Nr)B*#U8MoawW9>uR zPQ`W~-8x(2u&<%>;8wTRj2+_cz$R@0%s<(TTK1EyQhxysrA_WNu(+7CS~S|{z_QOl zpW?e%?Km9ffpkPH_cnCA+u?P-6V~lLe;NPs1J_O}$C^MC&BK&yY^LRy?Z>~dl*E4| z%;pcA=jf0Cz= z&jVbJA}aa(N>uW#x80R|Rk!xEC+?!O2KD~YP`EEI~7? z(95%HXj_gF6P;ZQcw;)nrA@Jeu5$u~fWF%G^Juwd@SSZGPNjGq)`@*7o}|Rg6Cqrc znNG*>SKgQ^dNw~ygezxkU;u$y+mepDugAs+?RPA@S}kE%KX#=X+PzwOe|}aEGW854 zB#D_Bb^D+1I9?$77TnKn2VlHyjQV~&4++m6oP{NZ-Fx`S%7 zP_A~NHFSbGTkn?Fwt2J{;DyB>U0+gZ^9g~OSk(%b%LtB*mt{X9cBO7{Zt-u7DL#0Vv zshMRh2S{h7suQB1^2^aS2d~X_44j6NY@CoK?RH=xEKW3tTB*e+<^q3B;7-K zd99lFrZ3$re<#GNn%1l8=liM_m%xSEP6$0@K!DzMH2pm!wlaGiP{5G#5S58`zaGL! zkD$X6R&c-209(F2!aRNoKUe+f)#XR;%80DTJo*zOA~;L3?15tPbMvh53_WG$rb94* zb`Abglq%c!R*ClaHY`4O3$*apHlgiLZbcL8*V=8ee|GSVqAmBSfsFGeb&NNnufKl} zR4`e?AMKmd2ft@+NA?~cyyF{jxmqRE{0s8*JL&KcRi{^92r+a%sM8H|v4EH6>9qGO zm|rN=t(W}E^|WZ$)ztoUmdFnLSCN51|0QJoQk^ZcxULJu@-8s|`)}?NX4$arRk1N9 zKx<~ve^L{Z{mJ^d+H^9hnDHF;1}&m7r?S<|Y-pERkw>QHNvU-}DwgY0498qzbuG20 z5P-W5QUT5mRCdY{XjXj`X0xcATP831iwzA;weaJ-(n)M@NApV65FY_I1io(#Ja0j2 zRoTjt3!jx`?4>iqY@jw9;oqP-%WK4=P6e7{f6pbneMEa0C6bKC(xOzAE9I0&96Zyc zdZa4oZEeSN*ahDzZYVjhBj%r-da>fHdTBRmU757h6a68uA0GT4=Cr;fx2u=gTcT5o zAJ^UOEtjScDSJ+!GLCUeYPmY@EvZhWI&VhFxc7{6)^^^E(nCXo>jpI}fMIu{)IfO~ ze+nMsJt!Zau{o~-?ndz}<4GniMTxdUa~gp2d!~VJj@qq90j5M<9O%welUi`mRXtE; zSG(v+&rhs8j0SPRm7bahlk~`az$pvR;?gmql^2#ZxMe{RG>CF6f`_x_FFxMU>Ljo? zHtJdXq1ZCmum6kt1|xH|Wc6(xc*L{Ze}*a)xpkMo!~V9d0#lUpkzekyX#n`}?#htO z32iBCrafJgMGV^kUl=@Sx*-gyr3vCJsqT`S=%5Xi~%~(%*yR6f0C{zo})oMJcGCp2>e0|Md zG=m|(^k$3e zNJnjWJW?zI0NL~mlX^)t1tQBb0_K&G8>c4N-6`gZvvD0N*e}VasmJV02oRB-~a#s delta 656 zcmV;B0&o5K>Is{c0kBLM5AI{wNTs<4WAp(40Dc7klUo=Yf2CBxj@mE~J%hwQjC@%e z(Xgb|9wKp|KvzfwszMJ{ceOH!4UrOiWjno8{rB2V3T8K3fqIEDo;UN}j6K7|&nOpM zVz}w|`>Pf9+lT;b|1VAJvh)ZXr`zz>eCeF+AP7qlHL|Ds%R)-+>){q2^!@c_mVp z8k1fZ0O|zVDC^4DuG&X?X1tns0BD0qq-CX2=D~`YN(qNfN@~&rMmXvZ2_lKEc6c;+ z7n5Y~e$m4N8lWK}uDUE#@hLA@r~(>?KezBs&Ot~6e<5D~I72;xIWS?NopVrtd9)OP z>9D6RqsEgUh@ueYOaxrX61?l!IVJasmcD_+<*J*;EeX|{DTDnDM1`aow|Q_|WE)ph zR1^X6Np0aS;}}F<{4MamR4;R_ZHJGluaMn@UL?Csw-c_ERDjV`Rz>D-)X_8(!CfZw zkJNSTe}#58cTE=@2g@#MMyGkq9M`sgr#0zyov%4Bc{XR14Ws{_hU9hR*iK=p@@J!m zeme|NgF98#;KD(74B=)$t*PJCOJ2slrhBu$p80Gt{VIBSYV-Pf5cq(Plg&KYDw?vj zSaXiSsLC&dwv~EZrSsJ+SfqadP)h>@6aWAKx6nia`7RIcW7tTgxd&tP0RRAg1pt@W za{@I5Pe-+n1D6tX0zCq18kgim0w|YxbOI^^LmL2>rgQ=_1AQz2m)mp#G6UQ)0GAMT q0!1WLMF0SIVRB_?Z*_BJb5KhK1^@s601E&M00jd8002k;0001;P$Ito diff --git a/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz b/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz index 2e3e79def8327583b7e257d47126170b07d50c09..fa00cc35647a9fcae01686be5f96a54a741bf2e4 100644 GIT binary patch delta 143695 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 z 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

9_i6si^Lf`wm7^nZKd7<~Lb=QcTisZG)P_0&w7 zF$7c(xCFHV>X-|P_>dj}r}N2xe#A^qAPZS8l`;bXW<3KlT65`$fo7@tz@Hf?QCVK& zZB<_n=;bDuFYltj@QaR@u5cShBw2_ zNTB??EPp(zkrKii%ID`N(5+o`_33iEdM@w&88`UPEz#W&y4SbF@>fjMjiS@FwfVVO zPlJD{PT~T_Ne|IMqmUfZFfLkry z=znf4=W8#AH22d=2`$hZW*dsc_0avG_X}a3q1W3c1%bbIDz=jLOWn_~gYku(K8Z`EmW5EQEs{$rT z?M9^0JsY%eIwNQ;ADPW)U;!y)%U35bDStFu>RuY@^VFS@MoZyyYH@{FC3N#arim$I z)WbqrVAGjGh-2faN>qH_SPc0@T?b_@gS2IgBE3{gF4NlAq#0pf&QC7*p`Nl1-p{vj zT;TZd4!}ORjSwypf+AUsyi7#o;#rz*DPYog>GDZhut{+x(XJ&v4PigRhH8*p*?)>HsQ6`K#^&XUUn>fFY zr?aA-{<@m^QcU4!4*9gdb~7kuu=P+pkKY~vFwnN?&6@5g=^tDuiIq7eL7`pO_~wDUUoWttY)Q7ui}NXd_F+TbKNovvGJQnWPD%5sD&cAj-{4~;%6~o*=qJua zei((psmmo|NVa#duEE1%|Gb2r{1Etl&}NR_49yXp+!%YL`J0-g%%D_YjerYRWrb!qjy|P6vOYy3F=z@6N}7Nk*3}ZQlI#SpL}lRVo$G{-gV+l_(KsFe z(25Nw%kwZ-^$?E3Pe{B5#ed5kCsZiq)DVv7MR`IFKyxhIp$51}Rxu2eWB8^wFx;aH zg50kUr~_-+!y>nhQCs<_P>k|;BJaeov6vJqG`lI?7>ZA;yJbN}$N(|TFdhPM0GY8MyPP6w(+8|-ylkLqxuBV)R* z??BOpYb*2pd5g;Aw(qp;tPO2NW@W2IvNFVwRo9nfaI&hRcGaQT(&sEAyQS=u;CWZ1 z97c710#{BTzI2MUsDI+h2NE%kYvtlt0e9F8B_SgVO{2fuG)2Nkwd+)sdV4&v2u)ZG z!{Ouxx+cfmgP~9ueoca_OZeis;!U~Kplt^kZT)^R z&ljU3V+@F}+@0@Fzc_gkS&p{@%b`>6jxi=B?pnnxJskNO6MqOWHG$9=yj02SJU@Wm zX?Q-5_4$j>=SfrX8|mlA&!b~sR)AzkHbvQ8(FY5Bi*N~p+h~po1Qm}`lFB_wZ#YxOTsj%>8X*ldZxT}Q_+Ps0`q3@o0pzMz&yH`IEsE`Jb3#^NHcCS6)|RCRH4y>Tro zu_m4EK|8cfbFh3)Yk2LFThCKkxnR|O7A{f4dMsO7)&Hq4La{mj=Z+<^07~C zPiYBB)o-?lq@sP6ks00ODJ~_sT3t-`5l+{F@@-g9DuP>GQc?~1i%J6D{j!qKKBo&y zrhjd%4u=;7bC#E+2Y!Lst!8_p;(mmOITXV>MlSm~dJ&PQ>C;$9BdUmtHoRXP9 z^F6IIn(%dx)Mkzs;z~~PG&^IKr;v7;WMIr$ zRGIU>O{Wa5+KuK6u56Du9obP*TL_6=oP%_u~+!_jK*F^ zT!%97=<5v4`r(&hWaQ1zig@UK&s}iGhmf8Elv1S0g+r_EGYfC#xEw6uW*W4)5BU zFpMVOJvn}#KS{%7+Z0LwC1q7o*MD4S$OIoTK_hhv@o`jZ1T;~zeO>oGG4v$ZfxgiY zXGrkWFs$xq{u3A~@%u+meRT|(1IVeogOm5hw6ge}iJ`CJzOOBK{oyD2nC+dayoxcm2^d)Z+1aXg;c2eQj`LduE3>!&HYwes zNhI5Wkk2ws%Cor7KrzpFrhnSPHtwL7aXjsvK<9*MrrdEG#QJ}_6aBX>XM(L_ryDJi zU$w<%<3d|cOMih^rG{e>sxw?&Z`1l)9C%mPPNMB&4Xa65JoYvW}_LsM91v-sUkAQ zqk1&Inyn@!m)#c}diC0doziZ7xF?mSU;b~mYv~YD5BO>7(fOB07w|~w*`YkG&n=0b z+aFLG;j-oUp?E1~-hYnoDoikWrT=B`YI_^0f$(1m$Cnh+07c>hq7vnfHwli@T>+sJ zLZJyqL}*ab0tJ=dj%UWRkG8GHTm%-YX_KH()od_^3MH@ZG% zYulpC_s^q34HX5arP=RwTWO$%)oAj~HuXs#Wjmib;Vw{8-+#T=vxyrsZo;;r}iep|JY}A_4t}dOxLPdNfr?lU zj;r70$W;9zr&-!lslK0OIUNdhhtNFy+L}$r#4Zx%Uw^nFMHG56cN-6GVIXA5pZ>}< zjRfVWD)_!8Qp-rAAU{nN3r<-W#FyD<&AXCJ6^5`6 zjN)4D+={2Fu0Qi{(2L3`y@B#>-KxE*a#O!U2S^Z&&nNGzl%1qKzO(Z5bldxQPET9j zTX}lgQgZH|HQacBA8S`Dw z{iwODN*y4zubY7|#|2g@sLxxhsEn>Zzut7;v48H<<}c_-S<~?AV)g2l>b;I8WBYbR zmFs8rf+5h%{X(hg6*|x-`Q)l2h}z;VtY9^ah5l9&oxJ8(ZQ1SPB3C+M_v)hrEX+*Lb+@kAPl)GpBrKYzw?EpFF8%Nkt4m_<mz#~1m74xHFCZsbvUSu<$w4jq79r|Og2LpxFz)pyy=jSlN;!2eg0e?%W z^Z;I2Fr~qzN)>dez$cV*5FF~r0-Tu!i1I~pv63*U48fF;wuo{cl=$WBW|AruY1C{} z_h`?$M#}J`9&(xEtb*lwc6+m$EG*a4kH5Zre({B8yf^g>72$8-y9BP-SZ_%fJ2bJo z;_WF4!*}*A^JgD_@%iJgo?U+YynkSSwIZ;gWhL`GeZqn91uuP}-*UeA?DJ<};qaK- z)hxkx`TXn0mtQ~sII6Bfij$yXc#%aFN1s;R6|9(*v4ak1Ily9OY>6xmZZdsgfx;@> zAcbSf)&Succ#J(6|C5TZ!Nh|~2g~s&Me1ALG7ZfO% zY^~Dwj)$ev!q-Afx}Y*$>kY}xY(Bo5g5S}P27J>-%s`6&T}rwS(IZN7TTl@jUN|Xr z^wooNy_jtzEyRaWsS1l>!{vIljgw!lZe?gL{&k^=(EjWV`7pVrC9Mu>+VD2FwY}kC z^J{9_1C**xppVuMgi_-Q!hd9#$HlKq!@GZD{JvN(1}sYwNv$7X!AlZTKPSyhq^W?z{j$UayNAXQ@F%&W@%!s|(z;MsD$p8vSO6j>Pb{s)?c zjCiI&{-X1Vrmcqwj+q6hcKfyxIEw!6R25O*yGV`s)jPG=Hvm>s5ECQiNcH z*r6tm4@!l53>NGurWtV2C^tQBpNona{DU3`fw7SA5dzCdq$eXhBvDA(u__hDy@&2} z2^mqM=~wmsbjwee=A?ZJ4D3@fp&SMC#gU&3j(DQi*t=AEy?0T`>{lq8o}_g8Mdi15 zwnC91l&W?%uo!1E41bl*rYx1t77M|nbvB(ZldtJ-xEgXAS2OCq)a>MG`g@b3)ec)a zNtRi3wWkSP9nB#j*Y0MU>*XKUdJO3{SqFbCSBq(5FB8ddG8M14TnXR0qPW&RrNs`R zLA6II2kdX@oBc^Rs@*9Pp-vr5rz%>}mgEG=%R1y}o3 zxTRrz%kotFmoQYjS13RqtaAy0d`o`8wUEbnmeum5{2=F&Us=AD3ihctbz}1&ria@P zYu!@&n;4*?3V)^=Y0x9WcW;(*0qlTx@I6dv_#**KPk5u9*>%5QvX($b*Z7ebjgXhC zLn%0IE|bXF)#TQdvUazP(MhZnj%sl^zEFq0S?g{-#V@a@calm?4eYAwrZd99ueVck+Ipt=5yh^-{MgZSJNWo43o4>o)p? zZvD{R+kvDMRKE13_CS)kP=gll|KJ11)rXP5oJZibCdZI3X6!~yLI}69d*cuIw*R(r zy}uNnzJKFiG8&O(`O$yQ>1O6e;VIQ;{6BED^7opDLCcJKc0+&ibDFS^jMq>_IFq}; z@;hYHDo1q**}|a0Fx?$?SG0$XhA~J%1B^7#H5*mvAZele`-kb6yZZlt%;XwQ4a=D&y zLgROhLDxc7^g6KwK_(#8%Na<}m+o5DAEcM%6iiMMhUpCl-!Z@>D$pE++wW-IJ?Cc2K&u>YutExF$Y(abpk(6; zwt@Tc1TWk;LhU)V@dM_uZeUNAtrOUis(*ceIZ`gb1Zqi?W6Y|D|Ks`eC756sE3Mit z%+Z%wN@wR{ldLn|&@N!HW(kO&PezWq?nWl;LPeXX3nla$bU`Kfn2Uq_PHSDD2-Po$6QRdi?=T@EWH|&21Tv&#BgER! z3mK}kc(tafcyVdf5NcsqMv%1$R)611V`PL+;12wjZH1^AdA8vbO0l66CYKGHP&z^; zkb-atL`&MTPCS%NNi>@U7iP0X-uhq~Yf-N62h)Gg+L& z!yvzTWK4!PacM&?wAzP+3V&-`TH141Zne`CS?QN`6;5?-!hhi+!VK@Q+PtLyJEvgI zZXBY|cqy{R4#TA~oZ=WP)kUyWa#Tr&N-?RANGURE`#>quDkn}V!=)NTNnzJ9^eMx# z_c2nWWcv`QW?@o=1zH*B7$db!j1)CwhruT#E*X2GG;79w;-koa^MAvmzNqo%=`#L(>{&qtF0bq--TL8mHyQ zRuT6uLaV48^=&P;7IPMV4YcumK>%W8fPD+9BK?}9#VJ?gkSfZwHDsKG>^WlmVIAy1 zL#eO!;>2a);(wfcpixv^^h7uNId;JZ?}CRGuF*%|+sjA|GHG7d%bN4_@m+LM z<)PsBZF@;&KOv&&DF+>-(a2N!iqY76AIXZ)$n%mziO;BkH+)Gy8@^F&REB~0AWaXy zC1J}j3=;965g4SvAqHPqy-ROAVQCO@5m_^OB=sbrgBS}E^M7FB720Y~X6vir$@t3C z_CCC#LhqEt^CK&=44xHAfg?_1Y9fVZwuh6kd5zp^%MvxRs!AK4sAOXzP3Bg$`4SDv z)NUG+B(;u7Aps8&jzZ;j5{Y62r5Zas{v@ZpGXhS`ahYlJs!$Wq^oH&75tk{bb(~2V zH%re53GoRT0e>bna#9A#jVj5p$EGk6&0!-*KtS*a!bfBRXi`i_2}rd;CBl^sD^aop zmdFfy_n{?R>@m3Hu!Bp)kE+8+JXITgMD$Ixf%8zCt>hymQPQPVzR9WHfLnN^KA( z!2CN26p)hCMT@dq!k?NB)0yz6POzhchEQeJu?1L}^ED3~;B4FDmRZccBbWEb=?)6Q z9Di-M%2NiAS@Br8vcb)OjLJIork9!zg;2J5{$K$s7QXX44 zh{XqssFMAWic=&_Oyh)=iuR0i3GPOpitmc4kL5v)W0`5Vao2$3_zW$OIylE-BEs)} z;*N}k`*P;yDsI3n8WbmxHE3p2S~pPUzJI~YM(tAf8YE1I&W6rpeo8}eJAF*&Ev`|g zsOF=Qm5W+i$Bh%HnkGNzjn9emz|pafCIQmjLZr38xIF8hN@?q!Kwq1px%6|`i z>8YiSC~J;=%n6CHQ3@O0Av#iQ=F*sA~wu?H!ALxV$MQ~ypRS&%(wH7I*! zOT+9z7o7dYd_{Z6O@a0Y3x{{zXS!NaV`$YQQ2dkUUws*a;(wb=Ew6y$pItnOVD6Sr zknYXU>uSDg`1(W&*??b{kysnR?!apy<^a-CbD-(U4{SP)gI>()(dp7^s()vg^E{Mq zA?l#@iBb1OWP;Q^H*F?`3R|_7CHHzKmk74YZNK$i#?b3Jwl|oA! zCjypTUs%Qu&?7v{Fq9tIT?q!zjtoGwLz_HEyMNjBiD~zh-7Tm+EHvHtM_7BGuy*fP zyTi5DdRacOT_>^RVlqc9;OyJE+7Zy+9?+f-{%bP%PFbsW{9iUI?0=vUfW9?5got^G zNsJiCX`>!dfPJ6<_squohXnMRWkUfye+f~d$@vgKpJ5jmKrL#1U9NR42E_BBCN1Bt z0@m>J-hD#?dMzoYVBuPB>Rf34)16xOdgf+3>l+6pDlH=JWdL75pub%^ag=Avx$8~O zzWV&>Ms3M+DO+mPPL*ILsTdydOa^5@zI`^&=)Ufr`Q)?W-j=}v!g|`VK0B4|KM;hR&RUc zLUq-&4$&`O;_l!tzQ8>EOEVAk83PABBv&fof4`$7?!kTE8K+O+*$Kpnnl*z4&U0)48Sy0^` zyAHQnE@X-*7Jy9+E&-$%mQeIGNp?-Om<~dZd-3b?7x#i&xN`BciusepWaXLlXEpP4 zx1&4b+FdLJLS}zb>a)iAGBaJsWH(HZw>P+xs0@$=lz|2Tbm7z0Y$kJ*`Kwp%^}8;3 z#!MOs+w<8p&EyE4<=da%(w+015%`7eLn3(u{nnL_#evvfi$0KU^$ z1h6G>zp@>6oa}dEk|2Q^KX{ae4idysq7<<^6oKW_iV(d6Mbv&M7_B+*CS0dA*fc_j zvBlIC!m}io#Ks1V%~@5B_(W|W?=|zGKOExst#B?T^W7x~>uW z7YqF>SEyI_IlWZlou~3lsk~bPia?PZYVvO63U;&SEFcpAQP@%$>jn|Of?T7Yvsm|s zMW4I>?!)bua;B4v<5k{sov-BUNGozjZjF2w+5CSR*S}L^y<5mq^*0^4VWR%>I zZn*;da4dg}kO?QJ{pZDRGxz%9|I^}cO+RR!`pd6x{Tvtk<8rx}O|FIai{;fXj*(V= zgI`^$tbly(^CQ6!aKrCwtqd`gm^_0})dTWNpC zIdk;m*?nsTId?k^Ict`RZn@D~L6^6kdM+cB!!oDy!2xTdFfK#gr#cyE z5>J!lx6V^}u{)T~S2OAR#6!DiliS6O^3vqu?TR@AD>EEGr;(Os#v$TqHV(~SIrS-< z9gR{Y3YJ{!w;H^iutuxiwjZr5T|0l>yf#%WV;l#ay=b_cc9Ny^K{S-8+EGi1utrUl z^Xl7=mSRmiYABY~sGZuqf?1Ty+L78$l2tmn)qQ5Rx&iRNSZa$w|shhl5@g3e4gpu}JsD6Vw8 zpayAh&Lxf=kWv!pmHhJ2pR~qva@@~5{;7w+u6bg?IFyd0h7WH>Il?pGtW7Gr$rZ?> z7C$j_ibMmb{$`u&%xrTF?l*tq;vP>HSGNmAkxkXf1m%XH#d^Hkzw8}rbK^AdGtBTG zOc?GxQ92{IM?XFhZ z)k<2eq$T|>80j{!q)~5c6=bTQd&Ed_zF0*PXQ?(yGpKu(xC%H^?7M&Rss<44u$1Y5 zSO`I+3GSdhD_}|LMBhhmMZ2qT?=N4gDTe!PNBTvKV>fue!N_~VOG zm(@jVperuDhKj;EvP?aiXod&7LKS@A`;xuP7_RY9Ghg>jr#=!4rlO{Ne149Rkazha zxsDOVM7m(45X?|o=w*Mx_ysujsPb_CJe1BclcAhG2kxePen#iRfhLM2tI9X~{?n@b zA)Euiz=3%vlLF5}8IP0MZ7BUAIH+$z85p)6O2z-v5gf25YTM(=cgmP!$hRpE{ez>9)8R#MnHhzEh2##M=<-$|Apa^%U zfh#~ri1`Yj!FV#BuL81cvm4l`%s+facqd8cgaF@IoV|T9VHogAG<0)FS`H~KD zk-_1{B;4Q&UWtE(GC%1ZQF0N%1vBSlZfDbz1Qu5FF-JG2@aOsl>NuX^OnnZM>*H*; zgH!0+OIXn^Vry!T5sg=seDnv$uAA}V60rOu)O4!HuHJs&Gd}&{MQ?QU=wuKba=zIf z1;Ts^NEKr(`@|Rodmjfsy?~70VwrSS2G$(YyXeWCSbcvdMp4c-9Y*%2ly2?KYc|U= zVr+yNK5$H7%Fe;6oIy-5+@+m~um=)cK70+xPq4Vj>AVb{S-ped8!GlwVjrd$+gLdq z%z@+F>|+WCsY81LwZ^n@@odI;3Xz~d>Y9`lhPp(3cDon!qZ)U znPJPWb$5`dkgc(uH(#@{h#o?2^f{jGyYnoPyk5&?vHzgufaCBZOB4^x)*T@>yDrF$ zvXNKkr2sNh&MEUE5lI69)RZ#s^e=f&7NAc(yWqfZ{}uju#T zUa5PAa4c@#kX9n%AMoHp!Dr-YsxgroDvk9%jwB_xdAnqq(q=&>DI zcDhnhw~*o>!TBKJ0E(+k*j$?a4tRfK;qa0fDG3hs(1+9O+dN2uGk)Uo!u<{*&>m;!XJ4>hK9P(D!ERAF*#jPM- zMXuG)%IrdR;eut_8_4CL)hdP+X$_*tYX~XA9-&qjO_;49QY5dD6{LVjlPWMy7Elq4 z3rA@RhzV*yp%@T~@N?j0+0i-DqVjPh2T}Nu3?)7nLozJF3UKg(UABKa@ukg=a3!71 ze;PyO>;X?v35AY{szzE%^uq0%Qq8|BV++S>rS^?qCxvP_6}ByJa!%FPlx|tlT_w$K zSyY@LT-a~9Ih>51Sb3Kg{}y8_N1QoF4mMN25OAK_7jBqm*)6Q&XW1N`9(V8q*XTDl z7$5QE7IvO@rc-+G2HbyHc!$of)I=H%kf z{R7_68Qd->yv8Jfc>rf3Y#vJ|8R;~l~2DFeYrZO#@(IJrZ~jrwp^Wtbq{B^O5~{UF*y`s!uFHQ2{Hkqlg3|i5e|q}E#mQOk zbo3Q0A0NOGng?&a+YJp)b;chV!NM~ypNJ$1nezNjY9fA2B~EL%R1)gp+BSqJH0%Rg zDs_$CM|j)ndo!?;$@TN;c~lYA?U6Ch|YS#5?UREWZs){=KI^(OASCT9| zP%PeB_ZuM%lT`8u6_flvzBGbcjy#!%KW4-HGBJO5FpdppbaN|wP1C0d?cdwYJieS0 zut?Pqgcb;~bp0?hcE-E{2-ht20MR7XgETP<23S^WbuUXREjh`VAXJuC}ve}3kyIcU-G?tXWQ*@!Fz*Izju0aOjIBM=5c>GgfDZBD$6WTS>|&)dXo-8cZz~gBwwjNF!*Ct?6n1)E-F817Z>p1DniegdJn3Asm*d>42f}vll zs@zsV z(eMJxX*isxuw^ZwzJ|yOOTvFvq=w}PTZ_$h=L7rm%gjU*=QRDTQEGMSM&PEXb%rZf z$D8PMeZAJYy?P~qBO$CKnkcvqRjYiRh+>90B<=5sNQ2^5J~4n7OVW@vyFg#ECyCJ}tA!}J($!wA0rdJKP`sHcJ}0P4l> zAz*d%o&~8JyQkC{6PCp7Dg74sV9XvzV@q6}SuK8GMfO(*OT@|pNLjc_( zlK@(K8(4}F9|u~u?MJ6>vv$?-s#_~YxDUqDtuD(%*ws?}^*5i(%Z1jX{-_l0`p=AZ z#UPEE9myD}IzWG0?w++uu1^TK+ctAsvK&NfOLk*HwErnq!`3VmYrDD=*Dm4TY%bhT z-G8L1z*&p_!8SxM!w!RMlo`B4E(;X1G{Lh|dcRmZvHc4b+8vAZOPtQ0X1H#^ORv!* zFvVac%J-&NeDz$}dCE-td5|m15mpK=y|w8s&);$elNf*IB251hR@XR-x!h6V9){fT zFr!aOdi&-_K35$n6%0`cnU)7K-F1k?R$6xO?W`raN)yo{=0@WhK4ARAlAv5s1s}Up zaoAD?>dMlhdX=KHfJ!)5nyNZeBa1p?Ue24p3C7t|8?osKD7R1`I6t`D@1M)sz_zFS zW9x5c5lDYec3FK`X%PA8VAwPdN!rQ&a#2i@#;}d2K!v_hl1ZtIU?4+~(v_ANG*<^~o6RI?~1di8e&Kt!iGMRWpChix8EE2St$}$aqQl)pm@IQL!Pr zA2Zg%0@kqszMVrVTQGD;W_?R1*z1}qq_AyU#azj6g@cJ(GFM!d_oXqVJf(rlv`|?v zRP?RcFf74?3iSe&rpy@E?Vn-Es+fKrwhYT%*O(D5TQfzosW~gAut#+Af!i}p#KI}l zqE3H5U@i9jO4Kc)7Fa+y(H_XA4gZ<*8XXXm=CHerYm``REmLGx3%H^>>&jgCwv>zp z)GM@^QbwrM1C|I2WIUC@H< z5=x~ut_b3LKk}QtrX`f>IgEw%&BCs!UPyo1D3p}Nd4{lL3SW+At+GWr6>6t^5#G1% z^x_VDJ>N0@G&TbKfhIxvM(6ds)eSf;45;73z07VY&#Rb@cU0lcUNyRKyrXM5H&MMU z@tW2205SRtC(sKg&_CS?^uhyFYhCoh1GK@C>OMU{-_8*FbyU;WCoBdSVBUwJr9*#@ zGqhiWuh;N%)dEXSfXFvDL)Wdz>UG!)U(&s-zt;98eLGw2O^WJHv|l)r>Kn}$&ZNKD znRM^Q5X|Xs*(S5n2c${qG|9H6bT~dGG_W74MrIxv+h6$WFpX8(L2s+tM?c98K#Jx1* zB($S8*PLFF9I?zi9`eH$7)A9yCz*uS{{8{|X;Hciqq9fZ?L1eLme%Y0Z^cick>TT6 z{B)XS^R_MZ&9~p%-|uux0kg;HtRen;`yit>m;A~evJn0^+$WJKi+$N2n|7i@n!ytxb&D75W#mvyZn{Rk%u&k zGiaqY@dWng*Il5X4hadeS7Ui-?F9cmz-P7)0V#?`q%-E)udWx@8D@XwqeClfuv~X6>mLePcl1Sv^70*<2)c@7oX+s4*H87Ecri#`#nn0o<4%Aq zK64m)fs|;{4H~lyDJFk2JKLt$7x57%lz-RhQv4if4*392Pr$~pWq}yb4~gl^S;VB` z6w=1?HZ!84KnG^43L3e$DEc&rc94+naZJa2G$-RVdR=tsgh78nFDSbXdPQrjK`7K3 z&B>HnL!&o;zOZ}=jp%yUQQ@wuk=>HI$+s8ouXVwu-P5^&y*(O3q8wka&*2e!7>#Hq z$R`*xvRg7swzac|eaaJSIyf@N$Mg`$4q}0O+1wj?TK0w>dtkiOR%8$*$sVxY*-@8y z3y|4sK~6p<_fmhmM8TF;Dlc>*SqsI3!ba2}z(9E0R9|cGUD{ZL z;4xL<)aD)i&k64fr}cX1U0~y#f*9)S*mpe<4rPbSacyd}x*SfFDOr7-fKoQWG0M@T9AvO5Z_o}k zaad`Z)rWDK)rWDK)rWEF)~BR9c^%y`I5IDx92pA(eS#t|qfU*}e=r5eX>QbM+WRgM z6VbF^=%{};cz7NiO~-kj%mF>hzRqSzVHb=drRP+PRDbELofzDIzK%hAnZ$o`fzY^a^@E?=s$dTGO%zkqrbX>StXTtlufgF z{BVB`D`;B=J!6jv1vl{Cv%^arg7B8KOKzS_3SwWt*Z`UFB#WUzSF2P?hp&)ra z=$$=uXuea2=J_1`1rAYIQ(=;j#h0pu=(}}@;yc(bpHHT@Lhq}S)6?@WgyMUZ6iLWT z@v8)#87|E`N--(`|HJ?OP><4+xApgIX5W8#xkPoP_sgH)GIBZv?`AT=ZZ}D8rrBLG zDY_k_S$l+59j`S5YHBs@4>AlV1J=HbUrMV>jj^F6P-U z=>%;87sV^%F&dOhthl|y)?UJG-Fl0RQoZhILD8QZ;pIu0sRxSlhWU?hEemI`B0lKpJCpZO`9-6e&tiFAw7W4<|T*J%V*elvk<4!j$Sdg?A9|#Xz|L~iUnKY zfY9iFZ`eoVsimc%@EYKBQM}1BHr5d-L$K^T8(-2pv=%%z#Euj2k4`WLFs0B1Eq_x} z(ikd`FKm4#2|l?#zw_CAau-eJ=`Vj&28}`X!gOn=xkS%_Ahxv1AtnOVt`e?^RSuC! zso4`6ZsH(uk%1=8;%1Qma7&twAUXH(XTwo+c0R(6Gv<~3WfyBt?o3W?U1v`~^euLQ zM9yd~^`|Wdzp~vDdmUbQQ%gZ-|F}0iIq1)z|E3ELtL{b>lp^vCyd>A#R+fJwk4Z6j zTpr%MZwoX`ub?MAO5g#71r7p`zPIP2JN66Ya*4hIOje8nDixkS6|S76$VyXX1S6zmX4jv|)jrZa8XOrZ&c86$K z;Rpdzct7c&pZCyAv^!4WcGV8!U8ul8!p#iNftZraYTrRD;ubN4J%#b-_aySj*a>u~ z2#SQb=zVd9og^&6gVXdHJJf@&<)S99?%sL>#ezn*^F*aytWYA;V26Le|8Pi)Fb8)% zXvc%q26oq|Ya%e}8Z1FJ*8oLTiW&v}1vK2M8!F*pgtSShY zs{)FKyh136%C+aBVo87gISt9{=fpjvKOLL)$JrbuVhA$lN^BG_s7yT6OQIREG{WH_ zMes;UQ5yjVWkIRl=4aW=(HQ*4=hl45X|+At<#h|iD(gHcp7YvH))zFMQTk6;ot7Ms zBnG5O7V}%yNLCp6+tD!NUNcBiky4|dWu_^6zl_r<9zTj(mJ)x7gO%yPptRkJci}ew zu2ul9*nv5#RZMzX_yj6xqH;7Sy=I#2rD{7(CZZjV&Ei~FzVK&-MMIE=HjPl~_9F|f zI+K(x$a1f{VZj&p_QL1M<=bt8SH_5G`$8w~;yj8` zbYsT2Mm%(c6tjO{Ax4KnOpXKu;W`>;TuTdhWXiv+1l zM}Bfa4Q+=KvFo9}Y!sIZut1Rd1u>|yF*?r>#m*Ci58Jc>#XR%?0jB8$7Q9-|zv}3X zvx_fXb4;&M_2!dz@MJ#ss)PUaIn=Jfsi({<+uv`Sg3z`{!QwzeDdswdeho=U#o@E4t_USGucc(bm{!C4R_g zV<*&u&L-|AF1nG^$&@7swkSynl@xX?g=d}h-ApV3ab>H8xh15%-UVGESK8Yq4+Lej zXrp@68+|sko6~2!7rx)ckJIzs@d@o8)8}VrMZ$kuMLq;6;07-4K-vv)c8S?X;AC5} zH!*FA8%NI0O>A8;rR~O9l1yx<_MEozFQq1C5R!ju1Jd@-CXrHCROP`Ud2r^>Cc)llT7Y|m(ONMTcp6@ zQr3!*Bf&AhehH~w8N4|234LJ zw~vv#+;dqg*iULzpy0$}xmAz?ZEj_uu6U}%Avz+UwS@xO$dwo*Ki{TvlBbj+G?4dd z8bfrPA`4+`cEwbxVc81l8I~GXybMOSGpU$|v>3;-`XUsd(BDyWYs$8$e0H(~pfxAn z?k-rJ$(}7Yp!L=L)Kl~I3o)u(r<`Q6SuxmzRi#+zZCVZqOG=W^(1(Nb&n|-VXUT5S z6xZiZa%)a1%?By*D7l7{WeW?ygG+z((#lC^!%1wziRmg1bvTiV#P|Y&wqWrz&fC?r zWZF@RE0Ut97~XpRMxg9lewb2w7RoZx^I2&an`o=YQXquV#<0xWg8SM2V%RQ(>F-b& zgS3RKN@evcp9g7vg133O>rvrOHbIt3`J(spT@+a{p#@T~fipT{FB{Reh$mQ}4v@;M@I&<2P{1AAU;mP>& zCqCXlbg{9KHZ`j*aCL8#Ax*Tas%q|{59kPxc;O6rF{c6lo-`q!btgI!C@oRG1s(wl zUH75v(jdSFws>!MH8b7ly?wl#hJy1jUm}@ALP0iD`5@vHDGY(>HVA(+jzuUsWHjnD ztyF)8cx5_W8Wa@wR_t0OJSob9)S3|>8Xo$}{QgmU3CM%s1`Zh=4kWxtOlQ*->DHT8bR9EvVL~uCJO=`(-rbKJefQl;;;e1tW8y|! z>f-3y)&4M@H1l_?;nRNrPNlWyX)@=aB?jggK@Md>Xbt)}`z2`rZYmbUu`91 zfq-FA;>LF%snUX^Sd!xUvtBy)U{g#HKrt5%f(-??@!r>&Ip%hSY*|0|CASj?ealIT zltyQ3vBp5nkZLDav42)4!yxi3ox%YKAa(gu7fS-Q5^DBXhXa4aXF4YH>_&s-$+#2C zfnZfH>ah_iA3~WnrMAn92eT>N4f*2AM)NB$zxlN~&FD}{zXI)t1L7%1gNhap=X@~-`g2f`q za(8FBlbkzYjDmmo#Ud1sM@ksIWKv%|?Vp^D;`6hQ&wGR8VgLAq*7_2ZUPU&DdV2E7 zNQx@O+>apYBQJuS4Y32D`UHQV-XVGsfUg?=P|ITvtZo_F5GDkbN;r(tSb|Q`z8p6q zXBhJ+iZty!u14EKfnmb5JC{&4pj&9#eD{5EHyOBD=FE zAFKCO4S?F!#Z+}?QK$gUSy4cwwvBZdmw>Dg_IjKAILTE(COFSkE^5$#!0K+b7bv)d z_5DArAQk=?Ne~~4=3cO*3SnL3#g3~Lcyf)p?I?dEFOM9&R&7WgA8yOWVG?$?=>jGe za8Yx`ev<%%cbp`@<{pswpvJEi)%3S)Fv)&P)ds8|@Up>PP*wXa+Yho$;d8mSM~-(d zWDN$JONdy5j0}|N>e=*8`iWZy-CIHqbTN|()jF~`U(un;6hNv$^?B*Ko9x~ZYVmHW zBJ_VrYU}RYbVqIFURE|=8c0=gN!H)Du^UZlzeJ@r+ylcl*}|p(QlMYb&T4OfDCm(+ zi=SlMD1_MbqwTwtWs7k|ck$~t(v^zoFF7YJ!-gq?c9!y(&Vg$0GY(UB_OY_V6mHpN zbCU=6;gmLlc;S|=i-867;AP3$o^05&s&9Y6eLPaWm1tPFo!cl9#9pq#+7X9x+7Tb>$I{AOu%^L|EJ>F~gazbt( z^4-QF-)%1P|6ea}C~_SBUr794E^&$JDx~M_TLdl@Y`$Aj5UICMQGb^rNI1d`iuLv# z%u;l_I}e+B2ez}Q7sw^cdvA4LgqVNQEwWC8rJ^Nge=u}0IvE4Fga*;I+8IV3WwYY` z)o7T}O|Dn=0Vcc#m^10oXFmifnW1x1f+DLA0}0zbj4LA7K}L25Ad#q??zM$7HWL>S zmfaf7_ce?%{S7-CP+f&2{X!7k96`4D-ZlvCfEer14hBn?>(LF;ud~fSC~AM7VR#B> zckskZ~}5iSCzp%q9Y)9t?|$QP1tfoAqq9BLI$Hab>tF00YjYbl@H5QtAB2I44bG7S3QQqD zXwniWDJ0=FyvDIF^uY0Dd^RCK`0eaNx|MEq_BnALK+Dkj^jNK=-PLNf($d<}44}L6 z+UUY;J*34Co0v6bzP22aiK_Q`UYhmnCu(k#m7L;2j~W|CD;>kIoUzSBiyQw zXr%ZeJZYC4UclWonx=om_S2t>U?{N>Et9G#ubFiycwJ)3H-Nj_hIZwHKi{=nl&=d#CA7BLL6Yy`$BQ^^KqUVJUn@->beZIlp7F&}W%WtqF;i=_jxhW0rcr zqbyP45~YN$^lC&|SQKTEBp9ZqT|A`KFIM zAuoW*ddGbDr+t5T`z2fGf=hKx`uhYR7f|A(UXi|po0JQxwYlgYs%4uo2j|5kJ;Bv< zkQEqW*5wpp3xL+kP-_@p2Y2L&4~2te6;JcCk-PHapq=(c>5xMgkNj}J9Cef~7t`K^ z2n=gMSQ!uoA$YPr@DKtJ2_@^I=(wmrY=O|RW=|N7Kh%H8dPnBLd&kR0^eL#+>byUC z5c(7ii9^Qd*-T&ud6AgCe3DY6GP$JXaLI|$p-&D{7x>n70Fw(;&d+I&gEW?7!oU@P z0X@&Br4BVMQUZP`kDV34AZ&EZfnS}_cDO*b#YSVsuoP@ux(_*=Ys{;Ty6VQtUHQLA zq=t}TeI)YhcNaoFxCWrvy5=rNlaAoW3Y^0E2hFGudtd)?9^;Cb_GFY?g?&j1W4XP%(~1&)hk;wfH)HUYh^8g$eagNfEn%OtzzQFft3Nl~)&%xMZ- zHaUlJ>GwdG;i|d<85mBKq+bdRV&d2!?@ZCNt<`00KIf{0h8lE*$^#G2H75I{BRWNp|604bUz3%3st z?#F+PdetabWwOG>dpS$-P-$gC;?Lkf7dRBzWSAyN!d`HyI&gqW`y1mLRpa8SRa#X` z5|W{Eg{QVI!uK!aNFf;wC{#%a3)+8>|J8%qvXBfkLXs~iP$_c&geF_pAdB`)HF@P? zFZoe>4XZ2%q#gAf<@sXCP%9O^g%iC4fq3ZN9r_9)1J{NFmc`g2p%e?Q_!2u*$SX>M zk6V5@tMO`you_&mqL<6Ig7F7+3AYkfKeww^I6@X&I8bhG5w%cuAm%xkTQPrTG;0#| zh1VH4f7D*VYkB!rUM*W9y2U4yjQ1r@nuo%*NX$zhkdN`7MVehgr<*sn)IMJKOyAgy zM!K^AmDLs1Ypj&iM|9z9yR~oNc`fX2M=l=)`DU}ern=A)S;DHT$Nis+=}{XZ+P&QB zwpyLaCp)sgE*GiQG6s#RKuv#OvP94i^D%oYggxjk3Ab(>Avrl)Y`H@5i9w8v9C6ex zDrTXTq32eGhKmBJ&Vq$co|vVTW2v@W?YPv8wIsojYWt$&ZsK&8My-mGV623SWJRs$ zVu)#bbW&u4G@bbo)l7~P!#tKcKp zDvIYEvpB^A*h>(6Zvj%L3@MMNmBGg4*pAI~0+u!yU)jpgAqC*%V#z}SEd9MP#$GSnk2laZcT5ZVn^!8?J%Ee=Tq0YOi(Fy&lA z)g+P7q#&U`>vt{`665@oTZT4H~*TF2q-?htJA@ua&D z1Qljn7NQzI*(&Z_&pkhe_juO2@m?EK(^%~4P;E1{4RDuyLcwn$70xOhb;{|Y7wy?9 zG@axpAV2Z*oRqODMY(|(C-pO4MYkCft}<*PYCqU=o=BWhK*df%NZ=`7K+9lL2@|$^lOBRQ?E$iOt}E2v zF@v0-5jgHD0pgz(5E^{KUWREnI!lFffUB6|6DfG7Qg+_px&&v=K{o!;#mswI~0-4|t zpd64Cz$aLl9W`>F!4ikuM^-16S^|w6C)`vPMdF`t)2x{I!w>Zpo#geG9O|3ALBmK1zZpqelN~s-T@`E6={v(`Xh`I zQhIp0nJ{@TdpT)H&r^NxXmRU+s%(t*QCRw(-R@ou=A%Sh*MT z7RaiCSdarBCJZx#wi(&DtR?q&&aA;;QaTNzwuwHRTL+(B_z9ow9vtjG*}F*42iJ*= zgF^rt#$P6^^AYaw#(;Q+I{b+A?%v=e8)XH2+gA@qxpP^Y7S7G5xcHM_2@0;xJ>6-)cDA{R}Fi zBjE)Vdbp3nyZ7K*Dq6^tzI)vY=>$VR5kL@v7ngec;e%k2GD=U=r zbuS~*MOfV67_OwIqyD)|afDpn;Pn%|-Qs`xJwM}sd`5XQ9Hu(|9zXpd4AE1Up{{t- zC^Law!CkBqvj^x_c79L$(@ENP^wRaNoD{zz!01h(24QTBhDxz8;!M7BCIkbC>R%H{Ca{$X@o zqMX>e1Z|HeA)mYTMY3gep>JXHAbBp66B4(=yi|s5FOf1PCyR=tGp1Bs=R^~=~AP>*`pgPq|zrV3Rv)dR3g)QC7z|BZq9#u58GE@ z-}yZ2`XdZ0$%}C-RauNxCDG?x>fKL#9abL6QQR9AYH9Wg3)}%F^RQ{c8OvrhfPLOoZdJ$VUp$WnUH@n;Z!B$-M!tzxrB^`G$Drt?!syz*xbsRVF`H`yf3^P z`9RLqq$*K+Sw--{#4Vl?3J{5~N}_!@NLC5&R5#=ztmwGNL*8+re1tZF7mW$piLI-Fz& zWR@*gf9y_0aSyufoVgAjCCI|0uCIQc4RgAziRwF*mYu-mK++CCLF5~U*p0iO<{-l~ z5~NFz#r%+F^oT4g+_m^2QxFkU$uiC89g6c}Hyw`wXqA>XtFM2=;_FBR%RLr5=ZV+` zNOZyXYt4%uVP+vDH;Ce;0OdI<$9FTp{~%8XR-2%Vt2a=F)QQ2Cc=7I$BrbLUrwHr@ z}6P3>k;3ehadW>o10kGJ-=;T5GC?LZ2|^aDFk zk#h-xASJl6^jv>T`HE9rd)KZN%rWK$Oxn-$G5qN1dssfoH?IcRh8wKg-l!0H%wJlR zNvQR8%1=1sYrwzZVcJAVvZPhN=GaA{ew}H7d-)|>D2-5Z&)qP)xyV6v+=fz+%Sg;8 z*(-z~F2qa}W=I&Duu*1%pfJC;4eCPnd%L45Aeq)xa(RDTO)g|&8BY;wIiT`@Sz*(q z&Tc`DgQ5o`Jkrd{eOA@d!SCEUZA+rcaWl+c7Hdfn(JvKZ&)bTS^r8n4?IKQntVW8P zYLeXP#|)=%gp#yqh@8Y#?Mb&;zVZ)+rF%2?%J}hPI|vQW%N2I69fg;SoSQHo51S;y zlv4G~S5tokO_#`Mwp9=KEl=)4r)AMvw5is+rgg<8d4~Ak@*i1~BQq@HRN)RRM>6GU zI?Vd{DV$HEGeAoW-8u@JQliRb2*+Gt7&?!&jRspE_> zV5;e|`f!Yo;*W`b%?Q*rDS$OEi=Lm!9@uC4{?+w;Ct+sHp)^-lfPKdpbH^;v&lR>%B^-fp@BYyoPFeKq(ePVC3LMs5;wCQyhIKwri1kE$Jb$J?C8(*GdK z6OMC$AVX6XsMD(+0@OE|#y@M8;_kd&W*C1zzuiG(5MIriF3x*R;UPJz4KpRU26nOJ zVOmU-Vu*$O^H!lp>2782yW#kCy^-q18O|~fm$3&CGkafclAK19wRJ`A}X6k>>Eld4-?i#hfxG`bH852lK%0q6-o?x7|J{E1g{cwG)gUb4fQoPAhPvs>~ zwtLPu25{1U>Xc9{9K^#H!j&~y8Y&m!2J5UV1Hg2FuHDn)P2Dw#i61J&HDtP|vjBW> z50|6*#x*yq^ZLYFZq`My1tiep`y_uKrx9a30D&Ps>h*uc`7e-{`2d99FCF7x^VW=M zrAT0-x>R*&BUFbreA&7@Rmhl|*M-+_)kyx1<)BIk8RTZQA#+%AZ$IjYBkJGvPrSrY2n9kdtl;*+a1|Z0x<%Jv=56m z#eqaTNEjw_)e%3Kh%9O4GFR0e#f?(M2?=#p?f$}w=9hc5UXhX?RW!dGfw8t$)szBC zr)03V=0-_R_Pg_{)KIJuoCbYt#Yo;$S-7sHrGG@w|?2(h0*1VUEbZAWw{ImE_G>VKMxv;itCVnpg%V} zl3<5*EMua~!4`ii{c-$^mkv}bz48 zImKw=zAr~X&!Up)@n@)Q`V2oE*zLWe_hcq%#<#k&H@bD(+{d#wxsPkNxVN^!4biyt zRuY#W<$z@w^Z(#91EX;Fx6AytPYvhqe6#c5%R}(bk)ss$Vqt^5@Ll=#6#A8>V=NRp zNvgoWaSNVJ4&nqaxN9nZakhKBt5hEi=JQ13&9aT3Zf`3%Gv7Gv4bJ(s9Q)Q!m;N;w zJ`fp%4N4G3J=4r(nPo5xj_4w5uVxj;A7ZhXFD}F>DrPb0c+QHN;?j9EXZ#2(I7QU3 zOi~`sf}9n`uN_-AS1*FEt$vFArw7}ZXHetfWt-*aOoE?va z{j}vQM_IX|ez_exbWMDrRnYPJfa9(mDJ!jUOOg}ywk~DTF&=n0eF^r9rpQh(I#WIt z&uWF(=XqhDg7Z^<`Am^>+MVPy-ey_%cNsGUIQgCCn$8xvP_)#!E%nFDQh%7*j=1AU zF%ZE9T27zZep!N|hu57`nR_zO(UAs%I?BgLs2x{`@@yD$31ZH9!X|E%Ij2U?cpzd% zZ5W>d|D}T%kGUwKqx_7O5q7M1Qp(^xR2Uh22rjydV3hcOPs|^~j@jjf4*WTSW%F11 zaDql0=k-YA(lV2%9ZK2{UOXjhG=WPPD*1!)t2H8u_?T6s^WRhn;Ky8z;KrR@8hDv3 zM$^u8rY?H0|BLoB70^fJl_NH0#m?|zmJFMS-`rdS^wA7=_#=;#_AuY4nksN z>5Q{6@9VXHmvQK3EN98fb*;G_=NdK+EX%>>dR=U;;AF$yT)v~tRh&dF?`qS~Ky_)W zH&xW!>oS+c!29WHfp1!2&+63R({YX~d}6jSa5CR{((LZ3#*MruHJiIM;dCd$g?z5x zc>NT)7kM> zeq2W)b7^FGL=qNLgyysn3| zwsxC;ox}hN3qDCz52)EYJ3b_qk2pZAzSdqn+S=dW{VF~+k{_L%EqaxretNioo*)5x zT~lNa%o@FCMo9LC%AJZayoI;SsNDrAr{NnWk+bT^BPJ`e?HDW$uk^CXl3T5~RT?9# z6dT(`nTaG_9csV|`u;jEP)+R_;frw2*P=atqeblnBzjh}!|_M(0NCdT+wh?9{*!NO zZyxG`EC;qhKOg7k)SH9s4=4@oF7g&)C`f#8GsFqy7q)P!kKr}G*LIC@Yq#Frd8P~QjbDjN=oTl6&WLCmqImH0&{Bn6j=7Z6>CPdEo|s9)4<=kQNT-h7>Z zLuYUoY=D*d^Rpl;^5LUWh;|E9clI&JnJ4f9HHJAQxIjS&Ho|iLtO=6py`++79}7QJW~&%zs;Do6YW;?>xbs-~@-&z^im@o#>B z*D)%&B-pUt$4?%Uc*B2LZW8)l`~WIOh+`uCu!-^vT`PESjxU?KWG9cg8@4=ue@Kld zTU1^gp2|BwE&sL;_7>CNUx&mVY-unF|8>$fdN8Z{yuKFn_pPIZ_PWCQo*<1MjI(?S%Ii%q-XczMIQy}Tc%fua z+yxi%2p~xSCQ>>{9;JnigKtiMdcWjj)EHJLIm&F}$KSF^=7*xP+HO*TVltK@pY<@H z6sIB6=VK7W1&9xJJ1SBSD4a?19XY7m#|m9QVRVjyq7TB^g6}huZaKif_ALip^A8qxAmiM;I7*rk5gb2!`{hggX zfwM6a&Z99{D||>lV*L3(p0q_3Z5lK|8i zCJ0tf_P6#PdC>07g!Tk~_~U0E99Ud12>}v3M)C05&j}>8aPZlaPj|e@klF}Xy7ln! z*1lJ6L&_Zwdt)qz#qckx5a`ZGO)X4ig~7)5LMPZKXCqj~-GXZELPSFn5Nc(m4Ea=W zP50@(*yKi;!E^0WoMSCWnnTmyZMf>{O$WnBPi;K8>f;zB88v zVQ7$CShe5FS(dbaq+B#4ipy?z5P{1ApX%xjOLc4xQeJ7=HV~0j*mhAgpIF1X#7VC! zbfE*kx#=ebzOLTi67zK{!*6qNH{10(BCIZK}n{PVN^QLWkyESrN|DV70zRSM|G91tDoSj9AkQ85$`@y zWaW|HJv7bq&J$Ie{akdqdM}0h*(lmk4K1QjYsa?Y71?8xrO)eS$*M?l=~^sRtb<^& z!ILsrF$>xf^$4Xia%&ZTfPs0RTQFW%HrgJ42mt#mE%`Hw`QH7C#rYLM zYW*91ke0N67?1F@z`-;f<`k|#oWZ~TMpV3~{T#rRHtt5b5c#FUHBBMSpdjpJRSGb5z$jv z_m$4OrV^IGpTctBs(o(Jh_rO@6sa9t`9%-iI1P$_CD|FFOEm+Uq&Uj7txD{G0l5e|^s*I*X1L@!1mq1DUrN)u*r4G1^1 zR$JalT0Jii5=w9=(K>Pnz!tj$cy zHQBr`+P)v0T^Z|HLyHR+9@z=P8T>he0|9;&o$~D_lPXbRG(!!CZab_OWnT%Bo_6a9 zNfi;Ax++=4sKMD3W>QPhs1(oOrgUIlg)&6@jF+Pxc@#!77AG=s0^^Cv!^yn6}+MG&(g6| zFq>`g0}m)ZBGQ&NDI`XQsJ*S2Z)lUPqG`FxEhUTR&xwcHVZNQ4%{fE9I(y0xq~O*P zuzYagzDskSq`W7`Ps)lXgC>W6E^@J%r&#LP9BsCf;~@`dw>rWXz9mKqhExQX0MH1D z|I#gaJA?-2QmAOgHuW;nB3hrZ=BREHv}207*oV>xDNiBtb)lZiI67zVGy!bEoVYMe zTnpM(dmVjiLTJA1MmKCbR6XXGr*Sw2 z8t@wY&odkxM&19pm>#t;`{h;_km+xj*lMZr4n)1T@&f1N|T+|Ceqv@$#Y z{_MC3Ff^PCD1}-*toLQri{qeMuO_V4J;}$w07@VB}mP?Yu7jC9*LM6|b+9MkH&O?!B4y5FitIRQ7V?V=oQ}k6ssQNCb zQWmw3j4+T}+xX;vo;0LWa1{VuCe1!g|?D!a>b##t8WPZx4c9oQZRhkIszD^n#d@1$TjavQwh3?KO>T>6A8M}-y)6RG%j0!p!5GT+E@Z@ z;KhjBBo3U&WmCt<&~=Vy^sxl`psOyoNgyEosp zQ=F>B6;nDYH;vK51|witxGkK%m=Xrny`UrKZdbs7aapLPsd=B>KUrEFBBt*eE&LZwApQJxx5|T zLJnZL=VtY3jy;-kY4T>5dx8k-hls(^r~ldNa%FBo!lKFXkat|>uJXeJ{4``Ml2>#6 z8%sKWB0SHhW1&KL5FEez`6`7aVKD&m?YC@@Vo`BA9RRP|=XBb5JjZfkNE`uNI;7*{ zL5eRy;1rGqwiaHy@292>xxb!t6b5uYAqQVFD0Qb^)XkvSW>8C9rD8?ZoZ3?n89{j) zfe%7I+TY!I$i&g*6nerXNTF9;Y>Iw_uv>k9IFedr?BrHFe!90a^?4^{2XesI}j^8+=i9u0V@GDC!eh`RzF(rq(WABj^1jJA29fyyr1Olmw z4(AnVnZfT~MYF!#+dV`v9MAn}e`|Yd|KKOi4BujrMx#PcBP9v-lCV-Hc$Y36xL0t0 z#L+^YnG1@FJ0d;)vsNort5}BDz{1S>8)53TwZn+N)X$h(eS$49#|g-R)_!l$8}mCE z!(op&9X&J-o@S@?AoZYVB{NV$YOBR)3Yq-oO&wYXTdQwjllySL z6aqO-sQts<=vV#$2vnONg3Ni(BJqBIFfgBwK`{RAuSG5;P^J_v@Nt}@Rz==ub-qR~ zSuIEtz`%R)=ap4RVx@>Ke5uCpn_bUbkis%#OJdTWNuSF`f$B#No#Pb9j0Uu@K1w}$ zFogQ~_C0e(T9*~w<{c`j8)qgL*m>DmO8xLpq{53}SypT&YqR9Y0*bN)7v5X7~>#z%+rdyvH@rp$w%h5RR5<`nVZp z+id$5(rhQ20EOv)M~AhtSG&o7rhVLSytnZo%d#xXvMig(n(eD*`=YtRmGDClRa55Q z@%M+H!#?i&gTuW8@(AK7@RL{6nifu;C+u&?B0!c|pwni;nnEx>OBfvNo$m2(jfQ}& zeR_O6K1^0jA*yqb!TVrbJ=Rz`Ep!g#lw>r^eRSB^FEC^;w`&SFmc!|PV#;!|DNn3Y zD@GFQeOD~-s9~|$v5y?*+KA3EdgdlYH6<+1a+B>g4DloqGl*87N_8qL; z1~b-ya7?FOdggwksxjIycoZ@M@7%Z@D9bO*k`wBjy{VrOL`Uu_y{XV#Kt};Z0wL9Y z;#&ymg25S34$79GE8|Xo5M=+62ZcX>#OE270C55RI?EUQ+HH~~N?OwNA}J=$pH^I< zE2vG4okE+XpM3()mQts9UYHY*GLya;`z91%f)8n*r9Q3NR3!1?qym!%5*SsVy)%TM z>J+*niii14ynVoFx- z8HagUsc3G6{azoaCDbG{)G~Clt^k#EJOJ(BFxNn97lL;fI9>Hkyn3XZ-KLn`jpo{& zh%I0ZFs4Z3?!%Powe2>%uG(9>u~1lMwbJa(HWyoC%ILPg=(0CZfM$D8hu2lvXG`f; zrRsATiW;2eGx#)r7XdE+SN=OI|1YWXZ>EM$+c59W8vq!{duabpVhhrafiXUtEk!h0 ztDS|J&utnuR6ww-wjPYepY5IQe|UHTuNt!sNYE;s&<&XsgO)n`bBN*8QfZA6%_5gC z%ZSk3RGx@7_bmMxtBChraJ&}!EdCLR|2r)`y1kXD&2pZ9;qr|p&`zdc6BS756{hNz zLFW}4^0gmH+Z?&y;^uy9FE@0}`$F9+@JzA~FhoiCbRj192Y5BZ$q8BNbVKEebGUBI zV#slEjtoi93xL%%3=D~dlu$&tq!E`9uIV}mR0-PXtiUx~PF-L9uRv$ow}wFt#O*9yXM#?PS_O#5(L0iU(!&<4e5>X3E?D+u<(O%`Z2CP(% zY+k*2<-)>u+AIIRf-@~Fa;hv$hSFcFmuyQif#)#mZ!&oiOU6ouz42< zjjDlN`Jbtg^DFl1&v(f&?k3MVkBb0Z!QJ(JaoqTZY(na7jXxuVYXHcLObKwqu zz3w-t#jLWRd5tQ9X47s-9vza8JaVyzGJ;_XO!e>Stsi~6nf~A$yfCfj zAyV`S7kjR0T$R{D;zB4wf*X`{i>6HircQ@ zS>@_ntaXAr7L}rJsi<+$$L{WDV&kZ-maF8qP^P)Le;it(-+Wc3Xo=ajYm~&&0FQg%mtF@i8cM98g_f>7zr8T4f=_*#`lvy zZ9g@`_LK6u_A`1mPJh^b+R}`~J^Hyf;o2B1ta?3r=osSARRO@jc#toDOLMBnIx80+ z9r${xt@3YCPb04n&QgaIUzdAn5s_q2T_jbC6RjSC#0k_rX$DOj7Kx6BAzGs zKMKk~gQ4drX7bX=(50xhup1Q+&R<+gSOafF6NPiX1tngznDoFaQcChq3(kUaYQYPl zcv76VNf;+H!r~}P=Q^-|NPl_ZT%B4)s{alKwd0u91Qyf0Z>atS-HxN&A1~dYH{66~n28N4 z4{2CO0rZ=TLN9tJJ}>7ug}-TqP>!+;r4-w?tiv7Lq3+$W>u%6y1z5RAon%+VPnlh( zjJ`#S5f*{9i2ja$-!F^UT#Y7J3A@ep=+jn}q#9$Xi)Wp)=7jWUkzG}sGNY{{zzAs1MJnfM~FAojyvH0T&rZ@c4JH<@lR1P@{4=x z0@WaLkr3fJ0d;n@&9Dzsd994vW=pW0UaWASNU18gUGs2%nP{JJL63u8)BEg`Y>8HiN-DYI^{jaqenV$Y@?M52$B{mhy z@-}q27hb6AiIiDDv5X`PA1XCDQJhj4VX`QC3nU_cC_ahO702H_Kt#M=8x?@NSc7drw2W22mhyz=2Sc~SU7Bw_?YmghGA}}OQYZgcMH~v)% zZL}?LyX_l>*h@C9Ht3?~KY3$fv`tm>U$cImOQmsIfX3^_X(M{Qlsn?)a(K}{@y%^)Mj5aZz26fW1^^NfSx z>O!uP9e=UV<{(a6><%miFEIG-&+tB7ycoRu8%GwtEr&k70)J7TZcCRf&RIHt?P<{{ zbi_Qn1cu1w(UJjWJ^r`w6Qsc2UK6M zB%M=0gl99r>Akefo<&j0$uQ%zGJdqbe>fh)?}zyF z{k_pAhq$A91%L57l<@0S>OOW=JFjX*Jnl&}h8W<*z0FC_@&p*a6K(^4rP|J?*&;;^ zw9B~~rnSZdY!eC`FjeJ2#lVvcSlEjI4AoUk5_brf-Gt>xk;#9|d`+BGAO%{b$XT}d zIm4G`xz}C~fWJtXu}rY~kN_igwa?sEIx=;Ga-!F2anjGlG(Z*D2@tDi&=;yt*xj&$ z`82)B=4B%y!k>8oB){Q*?Gfk65u#{gy=z~n=h2kPa&Z!XT%~h5avo>r#cYBu75VK=>y%u7)%Lj*Lec@01?etw zBQ!4+xold@E^!HHqvv^wrI2uCHly6>jWESkjlzk8{hW_?q;!<`l)3*fco)mkFETN* zn0KCCFDl+ROkm%aVo0JgUWWIziUgPM9qpYS(;eUa{m<}k5NY$}B%AxdvGX}FUWw6T zlSu!Mm!D+`Q_j(UH~e=%6Fq~5FS4Jdw|)+=%n^ik1$1vW+kRQM}M(E!W|MMSls1LF!EYX0x z9fT3i9$+BPxH)kDaypd}@H9tKFR2pvuw?XUG^ z=fH@FJr4|jZ8Vm%Nw&z&few+@g)HvL#%>tW2Iev(fsQgx)8O|k++SnUKc_d>MGncY z-JhB#u<2fA?t=`3fahT3JOI(i6ptz3<#`6E11b)UeG7S-g5@9c*GHj2bk5GiS^n=U30T!&wOxaQJXByup$@ z%FLtF%s=|^W0qaJ5^^5{f)y2I5tfm}s<1PxBY1yeBNrG+vQmh=%2$wCi01QZ=4G?X z95{B)@`bQHgA0VfKqWj8QA{U2qEYWO2U7Qdr&%?)=1J@)?v0U2Ds~WL*kTF2=MLOW z>WF}U+f?jey{mhe-PhitaUeuQ0N7})PA`E7)8E+ zS4+7QIPH3`mU1U>72yb8oTLCfPglI%f{TG z^wQ;_g8w+Rkykx{v!a+b%#2aFFXj8;9zSk5i3~bq5#8J0KmPQyPex;qY`q9GuqOs6 zEs78$i$H7h4ei=yxdLa4JABz6tfv%z$QIba6;*Kh#X2$_bLq{9bbR!|F_^tp(?=1p z?fO=`(MDT?8;kcK%r%thPMFW2^u~lid*FJ)C?cj^Y_&6Cd~5gN7o1rabakO4S^N!( zf!l;EXct^NodgZrDz@2mB4JaVr_dO_Yu2uXnx;v01*OE-ZNkigR}@(;GnUqW@G6oT zl?ASiUJU$IkAx$ZW%cRc1X!iZl1@091#ptMZP!zmG4a6J?)lr4mV}i3jO%N@St|&t z*m?#IRFsDgbdhr2X=A4vS_a&!dGy#PI#4|qRh^zY*dxzZiHx_%(X#0c(|9{s2EkWx zpMoKJ?*n~w5lw5vSbOmMGcj0y+A)l*?6naL$Ix2VS$ok%x4D>JS@yGpYUxqh3NA5C zKv^QhJi#bOIYl^nXV+Gj?gS2X?PYci$QM0Cdm_NF;(l!To@kEtn8#X6LGKqM9-5-Pl*z9iR z16XU(E@gvARqwb58mNjZ*SdxM3JYx2do7cMg+qs?xjYBjVxT(C7Jm4Xg~-eIX$W~m zKkR+m=q6w3T^+Fz`b}^&A73Y$_j_v8RVarD4iW187g~6 zY6`;lqSq##J8>|CZ&I~c)iGK@eb}q~1SszlL>kWIo z!Mc@$XKv38c4YR(w>2<4L&}flRI`3j=*j>FzA%riJ22#+O!y-gIr`R{m-=E5+7Gf> z^NSDKUUY!VHb2eu?p$pLB!H}h>(j_bsjPU^F~vik1mgQ3iaE4@ke6_N*nCV6V-lgr zvB}bNI#_u{Uj;5Js(V={moO#3C->}}gK7wY+24dthN5gfw~}1o+iUhpncgJ9!3urK z82}xQldXr`Log5hm3xoIXh)G!?rWe;-W&S$<966y?h+jjI+gw4r??=Mqd)0OM$`L^ z`dVyfMbh@`lyd`rsmm>*=iKA${72Bdqq{}4e#uo@v>KVvs9fLP7l}oZw4Zz*Tpq!y zyb6#w#l`)-8qps6IEXSs~=CG(=Sp01T40Y&={kvH zZ+KPdmLvh31*?WhN}QjR886CvqvKiM@Iq(A@wSQ^1kH4WAov-N;fop44}{7axWv8p z$)m%UeM1La8kV)D-kfBUhR#q^WlBdHcs6!Zf-k&0(7W)@kidnMoX-a6XfQ$z*5D>G z>;NzPNb@gy=9y;%+mpkCmB=Ja_5m9XiI!d4D{ zxh9)V>=PH4*G*!`7A)S>MRHLPPvqzMHFi`rBVmz9m*ZNpc(b5aU|x&i104P)C5qmZ zB-M<6Bbo9Gk?hD))kdYf_FgV$L~4+zvJwThkbR$TuT&qV0Q+!wxOm_BR^NwXFA>h$ zpzS>R@TG?zzVPAk=}SCv;&1Zs@5_oHQ7Xjxe%08x$0vKAepc)9tN-#Y+d+QiU*6+} zL4NI@)MYC%wd3%&dF59UZ(VyNn6^VfHCcUs!+$6ImxRCIU-p=e(<9-FgW*ymC!4pS zxC6##Ahfk639PxHHzN{HADHl+=S@XgHs6@)B5~orF%730`an-BPyqKlG%ItN)?A9~ z=qV?%rwp7zY8c?Cp!T^o%4W1=m~h~AWLk^)!7^*5S`KPEfaZ}?Cr%jqJ2 zhnfPe46h8tpv55?%SmKY zyz62v7q*~2yLJ>8#LgPbT!_#R)Sd7+;?F#eW~B>0B_oJx6qFY1v@K;PMOG5JLS*m= zoE6jJ5?yN|#wU1|?fHtFcVnf^Ej@65ZkTI@PIn3(~eFjO%D97Cf zaK_}%hdXftZNDhyp!u^t&yVrMP#a4)HPN5~1&CiV*|EvfX>Uqycy>*&8+%d1ZZ(SHmLib}c$Y zHsKI!r+Xo_Y>w8$N{y&6dy56= zA#8rXO2M~u4ys6T)qh3QBnD@HIc_~|}>W^lFu#*POp1+23$GF)R$?0{ZZ!g%{sC+)%<>cI7WU191p@b-_S!~)h^4&ilFOrI}#tj zU#7mGD{l)|VkYemt7<;v+RONd%Ls;!9^IRUp<{;>w77zFhTn3TPWFV<%umQ-aAF#R zC*a%$`d_d=7~e~NsRjGw@XN#fN2lQOwX&4Il)17DyGdaYB-wX=z}n3PX(7g9M{vX1 zUk7!r!hHMRaC}#PUK~x3=@Jy^ zT)5zTy3}W*KqlFLPMVv`VP+x;0v>p}UdG4okP>o-SW~J;)+jOb+G)@69!d{i*DStK zSz_vIuRYLoU-WfzbGNlK;T>M-@;icU>%Cgj@39PIB{co*#6NBnr6Jq53K0+8*N(f9)BmsYb0o{o1kPg{Oz>~~-N2TZ%lF(Zt0!QD3=W|T9E}&lJ6&RxE zFeIgS1XKUMj4qLSk6G9E9r6*o0j;V-gG65v5l=C4RS8rA>T9z*X3J^2^~!Y4{}r}W zS=D4HqTB3$RH5$eHDc`I2#Y)pNLylWSU|G0T+n?_uEsW+T*#dyZmg#UNjz<8;#tdHjU=`=kQ3L*(mWi~g_%_rU1c*l=6|fMaNLQ!YMm|}OSrS6r zU4cx02T;sI7K$y?0a)abVnH^S6u`1giH_^_(uK}wD#%}#IP9R=?l?!1cT@s<#N; zht#3ew|C>|q#bFRpFzI_r`B$@%!r8Cc2+`e#~HKTG+hW{;~XHYSFrd5a7b!mkc;zi zY2u@`^ue@J_J&bOKF&t9gQMt>^z21{B-o0|>szhtFD<^1B&u$*g&xff)pr_?`06Kj z3ZK99s(^CO8En#E9hgmT#C6d$hn*j~vS1D7Vu?mDDunwDDWx{)MBz8A8&9@h>)4>z z$Ok=tJ)nUTdY%<}t-R1nX!%OyPv%b%UdNB6iw!Q(>)bzx7kULLEt<*Jg1y z9jSTyV6_j$_O9xOidC#}f{LY5p;<_nj`2J;MAC{Y>$&Oy)Op5}pIk>HtAo77F~cUi{B54^n|E;s6HjyIK>P}PiS`E#Q5P7nuL9N;MY`-ni~UgRqK3dx zULF_I%y}}DawwK0LDQYu;SyW-kmW21kUE!4&-;$^(s-E~Eur|6V66^I6 zT@BAsNUOQi7fgK96m4FAH7AAlb6~J?BUE9^EGnQIZ8n;+`E=NX)Kz*@d1O6?5XC44 zM}&Tv5#SQ5t%Fz^`-XXk5LrFru50GxV6_D!inPT&^;h;5N>EqGgUfy-yo91P2eNpV(JywcOhPJ z?Sne3##csJh{LZ}C}~zzCMH-3oyLfH1x~P!1LyP>(=a1+4G+%h~I(859s}rpo zcz0kniH+Zhqt-o2fJ4J=1@XAXhm%Gy1}+XT?dwL9m|v)W(F^R#F@_pujCoPWopkvE#1uw{>}aFy2=d8nZ{oFv6>6attcupl%bI z<})uw_nymeFl=v@=p5ip#$PoH;>G9xnenI2j0@xhJ1_VLvB|E54C!4%ZLgjq0?5t~ zmEzqdO2FQKZX}LMRm00t{e_KEjt?KM)Ju5}A>j9#JM%)+*9Jgg_F91)LnGuvSKk;^ z&*^z^V{>c+6QWn@+n>!7ALbLh95KK8b7lvQd&lX2(XgB2s|qEqf`>Y3o0ae>20AN4fE1r^^BuGw z4?wrClTj0KqyOkV?5|%c*~GH#nhJX=L(tSu;l=x)5@m3?%2RfG7}OlP4k8rH2aV10 zxY>4pw<+U(?GgwuxxdofH1cm_k1^wZEh7Z#am0f}Ne;<~1_c;$;TsY|tA=_<{Dt+J zO_Mva$q0o*e$kfyPEgZ}M#hy5FP?Ik`)LUQi{q2fe((7Q4=@Z#Ux28`^ULlHAOh&4 zeIsZ&Yal_-W=m9$rrCwKZU|-O89MYQ7(g(83d|B-9zL4%_;cB*LGGnYlyZRLT{?gQ`IyZ!O|j>rEEwW{4zL$FXe!%@W&2oIMJVU z^_~CVJ~|!-N!yj&nn^8#z5L=zIshnPU)Ykn|p4-Hw+i|duaAwN4KH_N$ zDFXU@C$$+N6SooN#9}@?%KH9)@N+PV9*oAH?VW;fJ^^p!_wxDTu|(26o{{C1(s+^N z9!t#k#E+a_23mRi#6Y!<9t~j*@|4|5J*Z}Zcs({0Uo*( zHz0vHe2toL%KQqRo>>$C`E0ph=j_s-u;&<=LT}e(zvLxq>(6wOe-f~N_*weX(VxdG zh&5n_KbD>_dU4(kGkF8O^IzBj-m+b@tSzHp$^>O zRLBh4P7Vt>h_fvZZm@br5_%t%U9&-o2=0942(V`q1{}?iYF;>hF4=3F!jTtO&|W9l zRIt~=7=gbosRye(tcL1@oI(YH5>(>y&7tl+2l33sS%)_j%4fgG((7Vo z(DP-C5UvSb z+o?z=={x#nr9k_C!il$>jQ<<CM?D8eN+T0$COh^|I?U}Av6zHwDPSG9pg&_~yQ zOcNjGi$4bNXZaK(`lgfa;7QuA0edHit3gtsCkzuTOB>LC6-#Ts5u{%Vf#6i2j{zm7 zlO!WZV{Y(!4*T@|_`^r12ghF=wGWjWYz*^s@8tB+XRAQ+X1oK)4@ak~;NapG_>MIlzIST%bRCNl$?O)b9Cmg69SDc?O z<&|{8Et_zE+-jQkOY9AjPP-Ybs&$%hqgI=iXQfWKj%}G`Oj#YZk{v!7 zDi_O(3x79Cf~dI3k^`$F2B`QZ;DJ0RU5NXqSEY1=zz$n}UG90eby2TrIj$mXet$W) z3OJ7)UED{VXMjhB6G+N0_=J#m$$T>`$4CTmgXBwpZra0^RB>pkp}W1PVhx)RM)wu( ze?8!*`{)7Awa!E0L$t~ki$HY-9@H2XJUzv1tZp!DjV%N3{GUk+=HuwAWf}AJA23r< z40V{ObX5e<@J|2INp$+>8DP664XM>HQNM_$S1S0_r!lMj`3*B%Lsv63dPi#4Z*EmJ zeCXnT@sH`vaAgOZdp49YqHHeDBbhMd@5caTK$^d>fOwcXe>tz+wpcY(+w_QWap-%` zTc>7I@#=cuX zn$o53IuD|wv+;5ccg85D6u!LlbwtA%<6wnm$c}+CbwV!wr?C%fuPWR9m3B%j4zcnuywsRa={UjS-r$5hniiz#k z=h^wI@hVSmIAf$nJy!M|F!cuQKwlw^e}(gFIms`OR|A#&(p>bWq3Exx(RxMEY8C_l zata0v~(~HbK#^#s-Ch1j*p*KkM#?8jAGplw9gS8=( zo?JK3D}FiqIlXB@|9;rpct844xujyP(mN8Tb2J|23v$|^CQJm^t?5bQgZr(b#>{fe-*dOPrsyRWxt_J@(XN)SC_b1TjJM&5epWNx81{< z6flbxZ&tKWb15I-@!^{f+}mbvbjOLrM^SV-1t(|Zc|W_kD&|=uZ$9~1(-;*?I=*%{ zsHF`t^;TdbgV+3_aH~dCpqmIB;bt>;rlVpZq?367YVyhHq3XxlptTOMe59s~Z-#RAYCOf7oS=3{W9_dP~0enQm;C*tnbAfQu!+en5fO z_ytVx6H80F(}#CaUh=yOe+`Dtx8cidffBMDV!z>ZRjyr}We^cOFP3w@Yrr5;rgEEn z6sFOmxd8i#N{L~^W4tb#KbeJUU0>Qj-WgV$j|TsBhr&F=O|McQd~O@%{2$6f1UVuC6GHP2pQ7O zzz53T_`uhgZ^9E0zU{>ET&-qNV8=(feTQ6J9=0vd$pVFwmsfFFJ4=gWm%SGSsIk7 zS9!oLmCYrH7-!FsrSR~M%oeBQOo~a383+X-f0!)V#62V~{1mt|d;G8h zo>1DqRD;v#00i-|lPm9KzJU4SX!#P^-!L~I!Mx3v-JCuu?wu-)@H>60W&k5Lh5X4Q z{V@L-pA?N~iI@h+un_1iDWjIiRsdhZ&`|~Il?TpJs|7LYRcs<0;3r4XNY(j|Kyj=J z|I?s>jGoXvf1!|dTew^A>U=qvJ$Ecqqdh1!0cs7WXU@;hNB*@K{E_q8p5nG68R6)~ z_M30MIre?LBz>@}P`56&77OWRv1sok=94n$hF0F}Twhl500VA4&M#6l%Vr#a1Q%3V zlJp>v$XtW_c#2Qf(n& zW#gGBf8DX&lVTAuC_y~uh2kr^5oMqS|FGF6dx?oYCfKod1lPRWOxL>xrYkx2%j&i*X|TxPL`3* zM;*sZtwUyTtV*&<756Fe+$9z}m7?NMs@4eBbb!xK_&J=Q;DL%Pn72g?ut}PF1pD|z_ z;^DLIAEZnKOynp*4bN9b@9_KWK$Y9kp01oqXuAz7eJMTJT#l>2B9^YNVi`U$r4)LOMa-D z{FIg1cT>syg~%-9?OsD4(}d*($hT;(=1`;w@YWm}aL^kHxPZMiU~vfC2Ej}~f5;)d z(=8&Lz!H^nNrq?PnMa_=5buJb1w1!R3Kdm|Z4>bOGw+{xg?KmDh+m&vg*Jil%d$3Q zX?IYf0kqSWxhcApgPnHnV;;0(`PH>m*mJ(Voj=8N~B;x z0rrjZGNm9&(`DOO-iP&wHYyoPxVS@A;W95XQU4Nv@!*rgldCqMd^_FF8OGZr%&YCYEV zxTo*YJstRpO+Ji)W|*Qef2e+?PV9UFy2#79>>_*}GG~pRV?81?D55~{OfEkD<;sjK zLG!{0E0FBC!PEEH5OY$+#UbqnsHV*6?X*|TS_K*kp_6nb8(pBimf4iG6vO6x(~b@+9C0VNUw9YX-c)*_$o<|P&W-FHzTFdVVu15k^Nivf6T8KP4o$roCB_p z*pA|Mw}zBwK$uKX^$VDf;>irT5@m3BxI4|0DTy458d>I}yvP7?1G7AAVC3Y80TW_D zHR)6dFI0i?!?ZRv*(l&+oTHceP;+}a#YoMBCJqieK26KB1=I`&$}335I)W1TN&=j} zV6Z&UC4wc!^GyB`e^|xx8qTK3B06&fGBpgy#FDrn9MfG^o8$t4*C<6#(%4H}+8TLD zQ$<%%mx4kGufQ0H!pY{K)@pRrl{(bBcrHbOo#+esB{f0k8yEemK=l*3Fs+H}r1unw zqpcuVJRo!f0~`>WP{2!__bzi``|V|B}InM zBK6qiAH%Uqf64L9h%ibo2KvloGTG3p06o=6pNX*u@@$2E)QV~o-EojN2*cC_Q6BjV zT=^_6$@G8qAZte}JB!=K@syfZT|;Ty;t;iK+@hjl%?W=e{);57URsE?SXPOiz~#V# z#VCm3-^3mjM@_C-jUB}TlXgp_^!l!0GukuhL-Nhx=l7uFBii$ zq%w@qILCsA7)UNs8Y`=jLMORkfnL@o`CjsvxS9BxSlX_ni{vo`W4Y*JyMk{GEMZJq z774ZkFap;_L2O|$aJ5vm(Ed2}wmCU|>+QQ-e_F=3R`Z+z)jIl&EJUr{ybtggUC9xR ztCyx#U7bZp5kM*mZlJ^l#meb%HQE>r21Nd(hLmL3l0&XYJ~$|y78%{Y==p)5aJSl% zM%PP=A}?Sgt#+ziRqJOtPma$*z&vWNy;}7Od@P2ZHcj8Kcmuvx&q7%-M zBWU8VQNR&TN~H|@_(v$2@o`U!{#QuoMi5eN;-iQLAkE@mi3apAniuZWz;;zTTM3x3SiwlN4G=F!=D@dzxsV-z{ zL6h21NSV{3u+;4w8HE(uiig9ud?oXJKI63yk~?Srv+%luQIes(BHNT|h~+mUi9F7WUP!dMkO&I$m6GBSp_g1yIe00?qA=Ttm+k1VCQu9f})3 zs%^_b1Zb_q!W{t$VO!?`{3Z<90*)fgd*Dpd`B}2G#*_o5!M(9z7B~GxU zS_!iRws~oLd)xEHjc@LEV~1tl%tq9O-O)_tn%Ee{YjhNFcF#SoBTT#5#Td$q=k^+* zl&W{Vq8X#3jo|mXCLZOzZ~%ZjZ(P0htlBI{Rpa{8R)( zG0)xMCNgHRBpLV^rYxH^W&8Xt1vsh5QL<6c^CGcdg#OgT+6mP6b z-+aFYw);3en{SS6`90b%Ox69M@6}au97wLqb~+VfcJ56~-3beCH+iKy4`g1eeMQ4#7~GJQiR~+qI{&a6fx+ z{7{GnR!mFDohI79)KvI#Q{gL3g|DtkLT{_T)&%4ArouOx3g2uh+}ZAj!%h<&U~(Eu zU*2?Ae~l!5h|C-@=dHENv!*|w|nQ{x%{7@e)T)?O=ssA(N@)%dP$5ojYu4=qb{ zEs9(sw{-wEvOLnp89!A!&*?20RfR?qJ$qoWfB2*`sI#O1TPABgGrSv^qS=fL<#Q0w z;!bjz@MU6oN!e%ME!oy2|5?DM^unyvM;$;id=$Wj?a&FP^p6YVExXu~0mM&PkNN!?*LdiK+gz4YCn#2`c7u7O3+hP1_WA}_v&s-_X87>9h4(E%jr)$k|mh_qh_sgVX0f(go>H(Schgl5G~)02VEV zNjVdnBw88DMZwk--S0_#2`ypL??~>tCFW4x*x|@AJ1&9$=*-+-J9V6Smm)BV*wBQ~+ zczFB(x{XEc$@@Es(MQGdqWs|NIfk{&c=k+*d8Bw_4O7~d+j;!!<$qA9CcnlVY&5>0~fnMc-1 zk#e$0K4S1~nLG{CTVQDzSJy+nw@FkjCBPp&c%y36bb%WNeW0bDL1*}JN%8N(i|P27 zEBj(HH}CaI&8FVX8Xq3%Jyn{sf3(kY&do_1f{ZJ)s%Xbut^~aXsm`3czIW6--OxFm zrO40BT04EdcW5U4>wMPd!8%b&uZ13#)9)Z;S@e>MIKTietm zUVr4Sz$FL{WvbOGY|-La51kfZcq6kvI|pRtFT^Lo5(GL)&xm)l^3I*k0KY_lokWx9e~s^vY^@@9C^c$VAbi7NFG0B6-rDbaf4zZwa~os8WyxMeRCKtLvz$l|&?nWVu4e{vLdD}|9JZG9-e z4m?%ltCe9*~OK}6wbPwpfPTN%f9j-xo~$r?8M zdgvy5R0QgDHgB|;&0=CQM0~?XRl*6cwnH}*k}J83K5@!!li1c~z=$HrxlcWUnA`2~ zpFUy!P1GR3f3%-A9L(GuevdfI=iw(&bhHT7L|HpDV9i4A!^>XaAr*a$In6o;q;eB_ z2KK`&{~4?oa7D39=fiQVp^BU!^gr-v@i0&ub!2?45A5wv_5kT4Ta zT3?~Lu%%Bz!L67EBna0sevCS_XcsTyAV8tZ&N2z?f9LpcNK9tA{d}6k;}-uaq9@b; zi3}T)<%WFQcvy*;nc(5$N^WHPtoWM`2X;fM39L#Z)Dyt^Cd@isg9UR_Q-+QXJ)7Oo zx$7&VHRyfx(d%lYUAt5bu}jD6)zTaFOFg&irZ>}0yJFU$px!`5?b@r+QdLjwsj1#r zSM7>&e++X4^78*1tiC>rzmx8}zDvm`4tGe&pVYO@rgH$fv~6T1)U=<7xOvaU%QQ? z4c8h4|L53=fZv>#W8Xp38s;x|g4wC1Sd5Jbf1FiA6D$rr06&WANYsTh=+99GDc*>? z(pldOOR~a))jQ|LC;q9Rx(`yl-HoohYOLvCD8W#dVIXA`XLOEEk(iq(_MhI2_B1Uh==)&*aL65N>Yubs0oZ^pFNaMKx?LiMhIz^o ze|BP?@rur+w}fh|H$KTqqVdXpJ`;~p>QMbld3XuDsmx5ApBS$eB&gdMD2o!0fwbCY zpHs~J<%uairq6B7Ihgz!v|@DnTu=0S`y#E(%y1ZX;wb8lh@fC=)AX8p_lhepfs3Dq zy}JFJ=`f@u-)dt7R(0-{ZeDq{>Vb&+f4cr2yXZ+ML71K{U=eeuSN6a!cdKgj*T?zK z>`lDu9O3`G1MeBP1viSXx)&YXD!M)FHE#7GxJXK~pw$auE5uD2y-VnecisHwoS*5I z8vb4{)nq)zu^kQxYajRA!UG(2J%WLaXhin9DGq5q&_y?DSby>HWKG?xDj~Ukf0b<5 zIODd7d{wPUg>cs^=lV5shXJ*`z_i8~iPfuK3Z--x7-5W`BEJbM;GJSt$b}cOG|*f3 zYJtS3%y|xP)+hGlXv4(wA$^l4BLd2pEL}9EuQ&hKQx_dMU-L1Za({x zP|&|@OWa+cZlnpC$0R(AY6sQ?e|b7{vTSv#+LK>EJg4bmLQ;8NvUN^he@ZWMFREXn z=ezGK%Sh;XHAY<3Y!Dq|Jm|a_U6;_2&z30@ODBQaqRj4F37GhgCJQ0?k!t_C4&qMj zHfdNbLS|scIYReS7qVYmCt4PkN_!S!SliM;Ja?SSX#6V8RyV@B-j3!Rf1_jtQoBiB zqe&&e@FglJ2_EQB}~%CiXtp^u?0` z#29NTX8^ER!XE&rzA6%TK1yC3zx3t}l3%c9`p#Jr2?`4-W|7NuI+xGU!(>tVY@P?E zb>z$~W;{k#F<^3eEu`Brf5g{J&tT3B_aV?8f3f=wz5SISB1ljrS&kH*=JZNU7e=F= zd>@c1_}M3c&GEN+=&kSA+h5c*ftUiIOyQ+iLP`EXtpLnHV-zR1XJV4je}*o6pm;`OQ{ONb{M7*G zYwpO*NB4#+_)3LMyddvp#pyKtG%rK~}{xuQj{EfSyix|*wmra)LR~v}KAr;2itOPsm zDp`$DR2W|KCeX+6#9j)8m-!6UTDk4%;{(kIug)ou<_(DO4CQ*$j8!%&Qye6Mv^ah1 z=ndbg%lVxXQzAZ2Yp9z+d*G)bpA5)A!2MOdK_@vTe>Vq8cd~<5!=gXA69LoE`8;2v z`Vt6@ARB1E$8?6FTantSEDqS9iG7#`0U7_!x;7p7XPp&p&M7z`a*bl5T}!`S2S?3N zKzynf?0bJ7Rrm=g!E4pv2ANI-Vwu#U?Zj-p$G3e(l~6Ey^k>wjxmBo63z65gw0gME zx~o?Bf7nC2hBB$mmVcJAR+|cFy`GNi)tV3<(4cG6rD?kSH)u0|>OR|S>kCsKqqGNU z8AoRyk4?w|+=MuRu-L`IRve1FOxe9a14ed!CL9Kc@8~(J9%@=c!Bh?b*MFq5!lSyO zpI&~@T%i_6ow5?985DBl@tOnUDTj)bo8_D&QD5@&dlD(d!rDP+H6I-sb{&g*DN%$ z(_h<9TogKOiS}RpSu+r;0;>q`1t8_Sf2X~|iN?5ouNws$p5fwI`uNE)F^1A*zCZ^l zjBs2szy0GF_LKDSpUSU>C*&8NXe>j=b^fcY9WnMaiKVkdE!50xc9uU*LaEeI%d*pI zT|vT`l7lCA$J8D+O=-O;x!P>){AH6_L#Nw>nmKGH3eICZwMH%cAT>#ylIVHXe-X7U z>y=^^5);pt^D0ToEcfyx^ByH?7GqS*e#@#mLb$V(gbyBEy4dph*RCvzvTd0pE_~HytvCXkg z$}}lXANj;+&um>l3_r>~WVnhze`4%^5m{VWxFYK0&@-iCOwPTzL_U`7uam2Uhm4rx zpV=#d&o7L8%K?TOaEGlI`;3KQ(ucyOG(pI!9*Kcqb5l+gFzOO1MM!-7vs}W{>1tTx zEyC-VhN;I9IE$P<8rZfYxADyQ`K=9b04*2aQ8bdRm!cC%1aGMCzQS_Be;`5u&&oN= z3=1R-jj=%=!J|H`g+Fwy3j1@RJ{#cwwtLqfDUW*g%Fk|%>*uI&YHmAU_us?i#E*YR z4i8SYoj82_{4>Dd%(h`;W!ng1ScO-`j;speyXzmmJFw|_a5-i+{8KbSoodd9YzD7< z0)B26R!@8u??ltMYQhLye-{Q5LDQbtHJU24k`0=1Oq)7uR>(Jla7&7;CwW4s4hY>e`&E_5!(?5haV=%*+WP)A zWas*NlhLD*zQ*yPx;nP-H1A@m?*Xoozt9+zqjcc9x3%*e1yNrUcU>FU>^G(oN8+>r z!E8NUHme3=O$d@DfA}r{J&E)xAbNFv2~qT}e<_HN~c9*7l&;s)X%4?)W3> zZGy&N7~FO=9&jx+au5(Wv|AyE0Q;-yA$VMiAYdfCCGKEQF)?mO=th^kPlmV=NJ*J* zX-yvnfhHd|A%6|5MWnbEgECSAGsrN15N0soS0ps&qKj$Le<$3}u}u`qhJ)D1bDC30 zb-(}d$BqCc^omlSkOBy9(lOr6+FVc30rMSg-pEfa`8{rtqgvvMH+nwdoYB`>xjLM} z|EA@5lBTc-E|&uhOfi<)xk+l%_W*iW*} z*+DY-0zqfae>X-58rUr`WiPQHULMcjtkwy3X%5foJdStI))xjcs-K_wkjm5>c7r) zspovK75DCg58glg!pZSq4eQIUC1qp0{`llQS?TK9f41>{{I;(gNq}Ptd@No$gv)q5 z_V%pCaIGyUSE}yy5dZMtwHPqfmp5uv2?+Vhvs%^0T%Zj zqVUe0f0{U?$ZYjYl;SS|$aM6N?{%%HercUvd&h^gn>wO}!Y~Fra_jTDw%5^|va55p zhVM38tNI1j!_B+(yc|Ly*tE|Ah-cavFLe0ERSVTS(1w#q48mTv){@IVLtN`(Jzu-t zum+$2(%{jU8F{d7DxL@Tg|+iF?1tTPEq2Q%e~O)i5rZyfl!#_J&*qCsiW5jFyK>Mw zc~ipZ2;Bx%z2ekfl<7=u^Q_ajeYbT*I`16+6F7gboosgh?h1C<4Xn6P}UwP55-NSGS2NBN|p2w6C4tqOUNyMmPFIkM=tm1pH*puT)XfC+Reu zb6$?|c&wLuu;ryC6+6tpG9KGiDA^tcm~M79SFfQcTk7^;=-$$z{qIUB4TGyqfRn2H zhRK9)05skShDn)g^bRj)et$Gc72Av z6@LEf*g4>4q~tZ2d20*62pxQCrgY+?f8hTD2b%~zZJV9N4RIt|A}~JA&Y*AH!gt0T z2JRMD5+%vH#g(*mf4!AN1hK2hhQ6AlbM&==TTljxX{0%C`57)ENrcN2g&)(Bqf?Kl zST=$WG-&NPNc^h3j4Q5aT=2X|-$n#-->7e|U}67;+qu0%IKO75IkK zv7h=f+?0bS-vYNWi}d9*AK3oMavGB825e^RDsHbnkAd%mh(7(bo0SKTfl`AZmER`^ zyK(5zT2;k>xl%#Cjxpx*H95Be+?8jUn>@=B$LcUFuNpp-NH{SI+wU8y0frypzi}ok zEDs(Mu6cgbfAy6}(~x&JG#L^6x%pv->Gvvv=bH~qHK=sG{h)m0(=|y`*Q*N2Sn{Mwvi?1~;9a^QZm*d+wFEL-mN-Nl?&t_0mDj0uj)1xY<5!eQn0 zWSOQ;w*@Wp3;5<@ARhCR76{J$J0wC(HQCI%iUzyDe>#}9ul-FHiV4b_q><`9qfaqi@w^WulJkQFZ*t-7X`D|1{mnG}zu&)R#i4gIn) z>gy}&i?3^JR991=!e?Mrnm~sxlT?05fkqLKT4Hsbrf2gY*VXAGkP$K%p2O(X4Q*1b zcb#lUf19Ss?7?L#ar}2zRRAVin^;HKUPHvhWj2J2UlN^SPN~0ND}vffg%Z3Sn5N+e z_NX+{V;9bC_vw$b2@AH`nt}=ZEQP^j^Celnc67NL!=gtH3}WaHc0ne5yFR}S1V;b1 zd$Bo=CQ#GKB2w2t=mp#6P_n1JRqrrBf9=dre<{iUJ53%!b8=-piTeM`5U)uyw5-PY z8P{{>%HUEAW<3Gym|3ctb&IA`-e2T(EKA&vvkQKL&KYUu$t=wmn91g+lwQ~5XCfgb z2sOr1BC+d@5qi3joakApax{0@#bp7|IIu)okSp=*6s2pGBaw76x&%URW3=jK96lM; ze6yEJj#bNeSg}95MeF#I?*pE&QRO~^~G{>>vxS$6C#m?izaNH0n zkfENqObfwo#D==h58-{#X_2Bx#h{)UX=AKNCfN-8bm`;tbTMZGO@Ur$oC@;prw<(M zYq)vAcQp4;KvT#)=+kLZ`f#FCnGQ|$e^i?oI{?BXp9#%%+j4_bPJ;p6;uYBvhBO0* zmZ8@<{dC>C|JlJkNS`a4F!nBGj2l-6r$bmF@&%vi0xR9c?>?O4hJ4!?J^j>`fV)dH zE0t3Gn2MiYAzdE9YT+?0>aGob22v^eC z7Hnu&XB7OLODHom3h+Eee%(5aHq+(D9l46HQgV&1!K?DJApI5Dp1Zu~r{&>;@u2@K-h@z&kV3WY@53tjb*O;@XnrK`U+A+d z#FcM@hE%3h1hT|vq4dmR=cR34(Wali$x;bYCko}4?F3SD&n&I9f2%2LYT2CfF~Zxp z^L)OVme5Cylr_vQ=L>nh`JLVbmt@zXQ!_7zpVLCUb`-hj33dsgxTh1~_0t@~;Cxro zW$73t4?>DwW~(B^N&zX2VI-$y0y|#@+kJvRn+B;Xg%~)N+`jDUZ|r+O7>>a$q#hkg zEypxI(W2PuWSUh`f3Xcv4gG0K)dHuz(tARcV3_?(e+4Pf?9Rkbj^q|p9uj774sOIY zgo`VNPc4c`x64UbwNg12-CsBL2}d_e1^hrTl;(||0eXhyKUnKllNhJ#d|0Chr-cyQ zTXg@=W#R^8z;fLiKxKs6g#a|79SWPp!hq<(cg#?Mlaul}fBWww5_HgA1w-39)Mbb; zJFmi?_k6n0?(o@=XMRKT6JJR#Bx0z7u7dn5EUS zYv*R<>bkD=_T&ONFYysG3<7AV^|srtU1D&T`FF{8U^tkgi}1j7?4Ad&aCF~%u?{d~ z*-dQW6qdZze=}XslnL7k^2%hFt~_|~2wqGF+d8Fxv&Cg*PL#15VTz`{R2PYa(0kHa_I z^-%b@5tELwRKu-Bf)vf0A%FvK?_AcrB4K5Uw6gNVe+rDIYY2W9%9+o}=9tb(V0?_7 zm|)(4g7h@tNz%oR_wTtfo2RQynQ9k11_93n$pZGRq83J0>?E*878g;y!D&8p?@!Tm z;jKq*a4(-^XPLk4OJ_xfAPA94Y$eDxLzRhu!NLA}H47XU@=q`z0~Jd5Zc?Vt;CA`+ zQ~0sTe=>*VU@nH@lca$4cKieGs9f>RKDy7Jr_MnEZiS$mQexB*?E7E}g^OqUumc4z zz3Q%{cvh9ZyzQ>w?-2s~AkQZNsRr!jI#z>vTa zuE%q3IEHd9rNCX8w!knvI@@M@4W!wUO@P3Zf8UNCR%EYs6DRG#@hC@|_#w-(EX%Si zzZt;#7)WSgZM{{41>d*csllQa-wI&u{(4r7M!;+_tU6wAphReb^)|x-P}f99q$qKF zXo|UZ8yP;8b9sJM9JpxPvuio=^AwWQ{H=ZtIsTgt>E&?Jf_TfpmiY4_`W$pW{rI)F ze}Lxj=Z&q;{oif+d-tt}pML@GVs9TllzLTzJL`i74?gEfyF(*dRFXsAe+SG9hcoDSK1Q6tCN%}!CZ{$j!Wmc3r_=oG zN2Um+oE&~}0`lub;JW*iys)$$egWWKd)s|FJAFCRuTtEnJ=}lo?%QlYm85NI$?cVs z;mfR;h&a*)EX{9ZKy85bOkgp!`POVIx``GQy;_rua@_=XQ0keV$^WL7g3D7ae@T}p zS>zOyETRTZQ6VIg$m?9Q_3!AS^knUmB97mK?OU56jyP{B#>spvGKJp-1sJpfwF{8G z+aLQgDp+H(#)%HD1C_3Z6)h|y*diipF#P(vcU2*)Sj=mSo~7*3i2JA>I~$n|ktxG# zVdKUrD*IKDUja%|(tkzAk^y`lf1dL;Zw-$&AT&{}=#?l#Jc!a487wtmhk})p59xl5*=**xvojrEIoGiZ(qodGhbr)p& z2;@ZI9?^N|Tlp-XjY)mEPYu@l+oQ>Br~rj&5$d>d(v&GnQCt4@-ow}4e{HSJ3)<4$ z&pT|$qeZCzp~v?6aIws(vhKZ33e*$gU4!dxWm|WMh>la_bPpxc87+56MXU+~;ipLe zb4nW6!{KF(Gtgm-wX<$7W;aS~f`A8^au-3|%`~^yRE1RcpbmQf&yQ$^H>8>=j?2u>O*e^y>!Z44*Ln~9hz8c4EFb;Esdv$T(1@@VX-qNT$7BRnJ( zNAr!Ar5KylhMxw^4ESc_k3m|zlFjCj3cM`)xKmJMf2?iF#MjACf}w_9Owkz9bmaIN zIvvSG!`Z{iPpS;2Qdw4o%Q+|VfW!no`|SA53pxYg)&u|IwgLYxe^maCyXNXKCLT^4 z&}J)p69d+0ZSEY}ZSi_gB>F(*~x&SIVpu zSde1nb9Ikk!%7jt@AaHnB&eB2A+}6-P_2yw*E6>!yPmm$6oQ|{c_I~J-rWI9(-9E7 zTLY23apz9<^3D*>f3RT!Wp`l{&Fd|lSbNqU%_FRiW>;4epm8zaEy@<{B%u!9?y45q zyzjz`P#kW|gQF9x5TY7F1vGqyP;gt_;Xpd|%y7^@n@&deKuP1r>bu+feg4#Ef5ko& z+5QZ+g(pYH+sC_^$p;^!umHsC+}(Y&Xux#qo8f>-XiUd`f2L^%h6AL5Pg=6nWWEUY z#OLbx`n>B1@&LE>TQxi2in%5R0*D`!xzw_Ezw7Dg*GgJwOyhL&A$_#04l^EFVh`Qf3j60)o&nm52@pU;}9Cc)X9;q<{#382X<5Qk33*yO0&ORg|Nxf2uC~0-f4aQ$b5Wp>3P-{aUw7TNcF479i31$GK#~19XRbHO*O?j{E233Rx|Ag+{pu0iWa0oKslOqwX z=<0*jTsR+#X_A>^2>;k*ISkL(-~I6tH>!^daMOVre4V=(a8;2r{=^HCXO#%zH~Vrr zH7@eWsWhgZLVX9SSiuse*RL}JcL@XRAock!Ib$A*qB=fRG?F#4lw$^!LY*31e?2WF zkwP^)jos_ee3hrh+i^KRS7dPfeTzW7s4Kki0F@J%fiHK^vI?QJNmN{wSFd5ej9e@y z3yTr}M=uH(u5;ko#rMqAlD95lZQunn@{cVidTlJPel!Cbb^>QeRe;t$V7X0snx^RK zfLa)DTNs*VVGtZ1vIJT}T5vH=e`rb+ps_{m$}ow}nyt5V+Uyip1&4g#`R?nUPZojfAv8XHAR;*sSq{oA8OH$4|2YQG|hEMV`;5wYN)t zZl~82=22KgA;B2>5jf_$ue{Q4YLHb|nvT*JswR39^(WSaBn#=R0zyQ2e;7-?c-*HF zB8Q~4Ty73(vr&6kiF82UB$N}ha;Ak!P*vDSfs`6V5p=9O2FJ*Y{FfgWE*m#QjY+}E zsw(MFoU}@WiPlI#U^JS6*KK%IOl~Sv7M&hTS`pOqk5K1ELq?kNNgPe-|qDFwM#wzTN3}2u7-qP6D^Yi)Q_g7iB0zC%v&irW4#% zbthEH);_o@R@N<{4AsPmuc~~bWb?<=A5Ds75DTIhjiRpKN)+^qs#DZh0!RX#flO zR-@DxRl(YHg=b9p`8f&8AM#7EIaEvF&!FBFibQCJJ+=zgRy?#23@XhFM+wlo%VPF3 z6`2(NmT*mHWQVk3TwKoGdB_!$hC!^Am524uhe*^2>|V+05g#28hFn|QSUOJ91yD-K z4O{yX?j31C7bnWqf68X4*jFeHc<9)-3|24E2>MOS2urkP&5Q70ID$?5WcM%moZcWI z+;v|=E-oCs3!np0^D$^3&|z4G$o_#^F0vU^@q*ysZZzVN|;Hct~h40+?Rq&#$yh%kC zRwY+RE!3si(y%=Z$$!Q?JuS^Hf{~*X);s!*Fmch^p7K2U-0uXN;M2+#!l!LoCA!UG z7rCsJ&kB$ilXYA1Jy_icYTa;i$*Xe)yyy}No;Ms-xCmOPWNvB1bug?zxXBXGQXP#b z?bUOr&gPQl+PqU+r$@YJG<~vQb-34pYsXw9F=ow?iQ(hMiJT$|x!*mJ`w7U?Gu;lfgZY7>$(EFupWb2c(elq<5} zU}x7Cd4C90Bo>1n7d3%09QT9T8UpHtMGOLeps~mSNYODY0o2k&p9rQrfyZ!m#O`yf zmJm@+20kyYep;3opvpyyA4Fs#cfhP><0O9K#c6R(_#=V?PT9vWVATuiJOGDiu@h$W}Yr<{m4 zuqQ(GBR#37S37jq8q9S5-(I6GMfDdlpB!9Yf;VUP+cO1h&@%kDC%;ievLCU3b99lKK;T8ad&rJZtgJ{O} z7C`fG*BRhOfLUF#gTe4r>4XBRjq;qdO=fk}%)}53zRKsM>gc0p-L1B=qP`t}=}#8A zy`|-L@w^O=%eo$7SZMJ|4rAPP5r17Yf;`iQpT&8Zt}be?DD`F6#bjH5G{VC-U$=)_ z7hdb1cUYbV3kB`VlcL2bGbo1#P;6o*8Hoddt1XI6{3}a_H;Ici=~dT+@V8^$2sm(D z$ZFeF7Y$Ujuj9}McNUosj?wpDzwgz)8~uD)@H;MSL*Vt_g8%PqIUVS5r+*RZynRt) zTiU-T5$x=vlkGu;*q@`QfT4$e8NZrM7g0RuRD66UZl7jLl0!oSw)%>Fdmwth``%YBDE2H zrpc){Z4df((LM(1HSKu1^?$~6h+8&DriR=bB+nK8SWb8!C8H`A+BJMG9>eAk#g!h@VH#|&!8ySpUsjU{<+a-Qazvk`0;1Cf|=jmJUITD>uQ zo}Y^? z1heRk9emwcF~NYbYU+x8jCiJC5Zrvi;u+4`)o=NgSCVF`Sfq4k9a`O_ZPc>a8Pqsd zP>>Q5AokcWo#~YYrTIuJ+MHKnsi>vMNfPZOY@N6$CDwnphy3RK*EYE*+>$|x3Cl3xDKHPq^(@KSAPj^-z zWIVG~6whQuKB?gY3%Z(!yylv5imDgVPOy<$wdjjgOG#&@_kguARWy@EKbtp$_P6-cd<&^lcdN6HSo~3&-~xiHDCFrGEo)mB4Z&8N748_m30Q zRc=_)l#|n;oYNbhdGx!{wG}L)Gc<~*Q+mGiV1?Pn~Zw9#Mj|X>2?+>U7W=_Bdu2C2s3D2dE_B!c%wrG zPIyJ>)5l<87_i|n8{tZi{Q%vaeOT;{1W)9%Z?F|l*?%(!+?+cLb>Hf)?Rt_BMexb$ z0~wo-Ru;c@$xCJ18YH;J3y;lDT@)AMXWey?`x>FaNfgqrrIt`8tR`tt&sJkwo{$mG zxH=KMn84-%d4UX|qdXUajBjIllH^mIJj8oI748`mL!MaQ2o}yM_#&c5Kr7F*yyt$? zPQ`TEynjP6oFweWgVo$DGtO{zOSvRnDy$GFQZ}aYBfXJ;xbKT@Js=nkp7dFxR#H-mCD$L>KN`){w`hY7WQfXD`NjE zVl_pq9HYVNe|>BNeT)rK|LbG_X?^Ul_(6eHaP25CB3$JPauciI3rTtg6G@~?`L&3jO zU20iK7{_?wu=&X+I!85$b6fh-)}0L%rZ=7rjcNOKG^FkSHKG3=^q`>)k}ueNKaW$SCOlpLG&zDOE|byiZWshMzlmQ zL=oit$_fYhkoAMTnTKQbAWl+bZgG8l@{19Biqvs6UNjqc1XO>OKY%b?vk+e`!ovzg z4yvUxOY>_mR=CM7$g6ENW+zfY+Fs+_pMStNo%W-W(2mgFq$tL2U6+N!VpQZ6Ocbhp zPK3;w8%V$~BnB=I@p!)D-106TLKU}hmqB!B zho4lJ0Y!q|-etr?JG`pPa20M^Y~1Bvu=bN4WkPZ3C^H_Zqx^M&?k}5mc}}&Z&wo#- z%Zy^Stjmmt_W3$t-Q8%-MK{vhTXW+el+kKe5eSM%8LeadAcMqQl>mykDpPzOZ>Jbe zI7ydwY~cT;9UVS5T-w*$EIx&9fj8LCg_SrKYrIifsS>2@N)T>LCR-p?G4NQfp%-9< zcD2~jB&_tUxdQv>iz)F=3AB0*sz3<%qa^phkt>SkvsX(N$iDC3lYhz?S?R2ZFj z4TUSdOC$ZN+wUd$+ND@lDC&v_xze~27EV4)dZ@QR9QR^C}nEXs&V9<#SCCp{xks@b<1eX=k6<@ppKeYa(fwd$Wc&gSKiX zEf$5u3&gFBL$hHcx3Mn!B?)?GCqZeV!eb|ir^uP)%L+etW>TR;Z)?ak_ zYv{Z{*OHh}l4ryeug%CQVcSxv$rXK%rSiHYZF|k;FMp)3pq@-#-jdt*b1WODFUd&@ zGCvW3YqEs=tUnh3h+;NbgNhq0&m5mAYUNgz>NxIGlIMY`7H=vg(PK>O;bB=uJ4*{^ zoprZ?7AuY7ZCaO-Pvbaab>h2-WcFTCS4(1R^^mEW+h5EEEwei2Wm5=XOOLQ!z4>HY zmpmI8HGi&7v4igmC=Sj@i4bQJYvRWj@C2|{j~&5nyPRGtEapX1S~AcgXRg!$l%!~d z+z^Gy{0Ml1{lq1myAGKeWY+W(KT-*ZrS}F+3JXnB`oBV&Lhb(==g#BY-{Rcr3QUX` z)cvhHaR!DE=g8?8-n{>nmnV2A*FXN^@X`LGy?>L>5B47&$JO%DG;VKh@=t1@w@1_A zbT%jm^oQGr2Zp6QwUj|Z0^RNQYD7OSg-G(9NW`FoM4C5`^X5UGArB{SKpdzIh>5GY(tqWiby%$js;Z#vnI#geHMUB)21{o?13DNk|!vCiQU^D}|77YYS?dU$K z3aEsME6MFnx3tiFn+6O9#Pi8CDRi^HvVV^=RQUwHnE-|q{}@l`-!L=x2J@DDsh^_R z%4Nxy$u>;MTFTSXmh%||u}!Vuj&n;1a?~e)+`LWdqvO_plKR;3Tc-Xd^lx%tdFmFg zdo2zEU0t!YYpeY|p0eJ>9uv0xC|m8)re=#px|wuA;lIy$MB-ID_vCy>v<>2uz<(`Y zyEQ2;%b&GV%Wy$ptI-_~M}EJ56VV74XrDfg<+9=BUfX_{o2c6W$Hs>&9~YzH8C-xV zqO+EW5sXfzU;3ZVstepNEbb-$ZnhHs9l=pC2rf~(Wt%99^`5~m*UO?R7V>~?GWE!T zgcQ%HaZ)}PKE9n8GrJ@+Pg^CsNz2wjTc%2DmsF-CY>^gX<%A8D5hnGw5YLGhre~|pgSQIfRg&ONl2ewBn#G|92ZU6wM9}*5`T3ID}=t0 zHGo~^SbRTW>Aj8wmy(Pg>Y}!NOpR=-i6Wddwd1bB4kyC$6ZDnu|2UVtx2+dFTF$4e zM)-$lom-;oND0?0J}KJ@P)ctXewU}E0&Wq%O3;|N3c3ZnYBXE0YC)g<^oCCV-g)`u z&b4;i%hB+w=CvqrccegX<$sFf#q;_L57TEu>TF6I2gH%HI;BnHx`R}RSLdggk#II` zll50=W$ov0#SUi9G259zc{!5meb(fo^6EK{6s7b{yPX~~kJ#;st}m4^YY6dP1ba$A6;i4b3Q(-n!!nSYG}ZV_OY{scr$ zBylV~5(wH#gcKQ+My?wWYfXu@`O@@va@u-A{8ssA_vvAv^{B8WWAIXD8@7uXuQ0Hh z>8+zdQGsb-&W~V=^V{snEN~!TpOSU0UKTKuDP)n5oQ6tiCkR(iXVi5_@+a2yzvknKcOL7IJrHIPGj<-ux;Dttmk$ml`3nz zQg4!8s1{0%EU3#M$u1~~`;W)vgdWw^f^JZ3X%R?(Iu)v?cQX zFt9f@_AKii6Jp-D+%X>MCSq+pvBfQyc<>Lb2unxot}4!|Y=46l$Yg)*cUDe@!{YI< z@^5Dr3s{Ly#nQl8R}g_oovpj2rp^cB=%^KukV$MBFsfFn-;34^CCoBU8{6OdgU;R9 zttFg%){RB*``tce4mt}z@NbCIr{DSvf9uto(GaE-KN)P`OMdjahtQad@K(}R1xoWL zZV8KVrz1bjxPP`i)@Q!gO6CRb2EuW9`mLl>WR+%uf~EyTCwi%$4mjp0iS{JLT!?${ zCFBH@Y49|S&~hEA*2xrt+Q|Y8YC+}tP4ebPL0zd@4Fg<1HzrTM*&0YmtuTg@uJTs+;8S5!U1 zgi0$af`V=OdP$EV8rrCEuBY#pxt>m*t=s-2+hj$X&m70Vb%0bx>zz)urC`fRJ4P+EAt% zj(-emo~ zN-$d@WQLWr4jBMsFg)YSYNU@F+6FJ%kLLI%KZ8uVTsNFnj91WV^j^M<)u2G*6nkrM zEBqJ?#q`Z5t{9iI#}{tQVSz64pZ%1F={14qZw{bQ2pP<+ei>dBZd9C8*$E1ret+ML z=WH>cJ2=;0udyQxEN9IdvVP;N-%OUfZWbA1cV>mNc3Ovf55U$Wqp}`i4XC~XOE>&_ z*S#9>pzO{6JT|)>VmkP6&%2VP#qz(XFLlXeLy{OJSgVs$ArA zr}>YCMlz(?2o{V9JnmFzGgNEB5s?6{^r}~5IaJ>0&7DSC5Kc%4L!8$jjemKr|EBA~ zf3Fj$x?Uszpy;a+P~}Ts<~{Q+jnuspaaGIY;@h$}0`sCq3e=B}-B zz&CS4={PM#woz1amTN4pHCg4ODzlB2n&T3cVPYtc8_@TS{@V_3Q{wd)Rt-qtve18c zRk`lNAzl!^Dkh#aZ2WAtJ%7+_Z@B5oaq~h)bra;#EvyaZ9&x*&!aDz2dqvZBop#S% zx;=JVwgzQQE~W;J`%5q|^`tK?wRU{eGhYe;SR;o4WDGGU0odxB8p7Z8)z`cQJ#WgZ zG)_7iN24P9J6ZG{dFcw4+NxXYXiv#zb#kICu}2Pf`5I8WoB$ez?l60t0yBf`CphU0-jYDHaU6_XsYio|+c2n^Q_ za=#K*$!rzAYH~$acEes#8sjFwI1Wmxz(9AkxI%k zMBAoljSAVV0yJ+1G+!IgZ;gOhHx0mun(B>JI4+j&+gHbIi8$07v~elbs$>yRQojfK z=vzjX%XO)y)$^MsG5wtf5%A+0b@iRVK>6GNP(O5zGlbd<k=c2Xv6ro4MftkB1{O!uE@Olrr9Z9QlB@q9`51;Uw=ZEGo?PdiGpF zR=25OralTT&)li&iHe^0b)L9W{US~a7P(@u25uVWm5#;P+B7@mrvYTE$}CN3lEk3o z`Q7MP8bPK++kd{tO&-lov4AMe#1bnb1S=z~j3#WGk-^p8V>d8&e>^CDW$%F(8ap7g z8ia^0he6qericifbOD=#dfcK{zU{v>ew=R0&4Siz~HVs z3oT&w7t(}jME58xS&v(Z5>f3I*)Np=U1Nuv z0oqG<-13Hu=UFdyA+Py>qTC;OFe~NO!tRkg z(|@Or89m=w-Hb6jAXQVN>bj)`8#mi(#%*s%UC6a5HT@=Roa&C96mDcgpPCo1QS7Gr^_b;%A3leK+{XwO9qC#F* z#y41P;5`s?Ux6vfx?&FLNvb852E{U4I)A&e=4(7lVw~%Rnh>=(4tdgPzH=?-`L8Wr zJ1g<@-GPGuKK;(Va1Zy7j`ly>JwDvtf3$lDjxu@WUnHYn_wV1wzw~*l=RWwIIy5Sd zCjg# zBRF8Yw-_#P(K()gCPAg+-npE*K!1JY=il(HS9;pvYEu3@9MCJgpx8^yPeK&r4bKks zT~fHy@=x}Tbhnur_!}hNVF^Mcu!P<~1&GoXC|6NiKwLsgvuy)uw#p_zKp+2jZ|3l1 z?48}L)21K}&M#ii;qiDp9*^yxv&o>8ggwf`E&IaAr-aqXoTAAhlTilT-+$y~3fM14 zGo*|&Wd`2{H3aGCYU!Y$u7G(Ar;gh{>WSBODkmHMIK(TojO-h+_!6KY&AmRmoNCLD z#~67}UO_{Gf8yw3F}@mJL#7%JL5IPODSm8&zWf9YDrTjNx6{o8f|>vO1#&T&(e+r| zCVA;+VutpR2FD-`wTH5l3xB4-ydzt1)6^N2qk(%NdHJp6g;Ua#?z@{CJuV0>0o+I> z946T$2Ze?%#0JaGfT-BM&;N_?R)P3pFTS`>91O(z9xdFUTrzC_+PR9s(epCD$ zRr~4+s!MlR2(C^e2gFmyl=k`5)oP%5QQ+$h!d%%52H1%a7LmomPJe3*qGHV1xhim0 zhCo$^rE^O84b2KU!Kq@6Zm)a}WE?H7cPVLcd^t}}#+MU(kQ|ZlpV_K6qe`v>n5-jrE!$6g$5EhK=aU~%lIu)SE%m26@;Ky*NX1XS=n2n8}Fm-wR(Y5qG_Cg z3zZ@o_9LDk3|*Z(T7Llz;YMJFJfiuhz7wUso1`i<&uHdRPD?v;R_C9g%*oirPWE+3 z!&a;V?>jtS`s~Uax+cT{%MZkjh{YMN@0qE8J1F|ft-cxa@_U`Bk( z`0tbV%x>NA79FJg6==f*1_v9g zGXd5JRX3;wtX~z?W};WmN$-Px5_H1u2A>C^9^e*-=1qtyvS|?zMCAOq6U^XX`LYq# z5WHcRZ*DviIYw;hJy!EJ>)W^WSnb=YwojK^{mq_Po)u$q(n!Cp0#k>3`8u$Y9arShhr9b*t-nfJXe-!ff31b^@$EbV^H9?d4i`(seepk9cptWs>t)=+40fI#W{b_kRvz% z=hNAbS<*eq#^ZVK#TOy+LJCI5K1*oV<&D_M;|x!zAI-5AqczQ}Rsm3|@>(5qwJL2pjoH`BY^A>$e#Q;f~_@FppfpJp4VFk!Mx9Z@U0= z7&+ok*$j;9Bzbp)Cwbj{_IecUqJcQWQkq%#nLk_&^U(mc^11Wl3%6g89KFLcwgZ+> z^&(LH%+nz%ObExw`XLf@8F`(sN+-n%Vt;B~^GeDjhc8cp*H0??{2gZzCjM(()njk( zOosUtAl8jHS6wz7yJ5W)yx279IQe$;POAW`jv}-9YVhNO#q>EoE|^GQ(2rj7IK2Ve zQy=;)^C_lOmr1uW4fpz;npXL|_CJPlWXtA1sB}9Of*to{0eDi>q~|=y3VQr34u8y2 z5>ly?8qRtKN=AIE_(F=a?NLw^*VZT_I~b#PY|{zE~Ey_L{k*u4!g7QmwsM^P2c; zRcopktJ{7+d(8~C2vA(~C^l{2e1A>MD&jYjmp7ZaJ<9LJ?NR<{+-^3Q4f4j9+i$88 zXT7=V!wd%Dh_{hkz13K7wRM<^2l3ae<+$jIv=VODVGV2nruK;sE5#ZJ+1OY!Z_Q$J z>&RHqx$0{YA7hK~9bCm|F}nKe5+$RH^CNh#XSqe-I&mh!)s>x!$bOQ2qkm3namBaZ z)hA@FeN5qV*QLi#9~c)YV>>R1sZ_gArDb6|1YhHo-c4Q6r!^Z(R9< zHFOY;r~IC{0pXx_H=+a~+b@XQB8eA+HVQDhs~DdwVQ+IIj=#-~wKKT65yxSq1UJ_& z!p%4tZbiy)YyC3ZGBVUu?SJ8wQByC2x%y3WdNt`%qbI>VJ|}qV=;D52_!-<(u9cuP zeDbv#Df(KfdI#HEYtlUh!dh$fKL2UKa6C(WSA-`5;@JzJm{t4Us_YB$rr&Vv_M`NA zLx>a&Mu6Y!Ot^SzL-s(XH>YD^3C63qy5c+4IP)#o@8|;}Nd(a3%zsR7jgzzh4}x~g z%nqYoiWLU=NLIo3@$B~de4+{*+?FUeIZCP`H##50Br{x&iZb`J8A84|$vIgB6ubP~ zQ8wx&UqFj!O9cr+P&CLF5? zTx`ZMUt3O=V#9-QcI`yA%fNzFzsc=C_Qquok7okqkHN{+?~XqQJA8C<{^`NR;rk%a z(=jCaI03;K`JX_+u|NaQidy32fLp`oEKayVYXqFThfgI=&woc1!~}?K*JBD5ynVC{ zxW!Co76^f!0Xc@4Gi;q4!Fk>`5yV$I#m~3^u{`#pTYlZ;D5uHCftVdMxieQ9}ku(!^?kd*37DU5m=SA>P3LL8xr#M!hCABd0|b_3sbRO zFDlXxlV9$uE=!R0MUn)Rb&m&2=}V|~bNBBhc>@e^57kFtqp}s=_$2joL^^@h*L~7DF<_Ak#Fw?acV`Dhpj+9Z3py| zHI14Dzg^n|GkWajW&UB)hnFlWe~4LtH_&m?L4Vdr5Ua@uScWiuyauX@3yTJfe12Ip z{vm_&{4ugFV|7`KHM`{NpU*wKT_IxT^6*2`5<_e0EUuN}=5VgNmYJJT{k8M8X23pl za$c;^9>KS-;O-h?Vc*-2&Fe_5ZM=M~9O>t~4g`RQX#gO2?0)Brr{@d%TLqU{O^)74>leV|u=L}%TH9e`E& zGL7R;4&M3b_$cY3lP$Y~?C*iRe<+6I5(>&uG40)>qm>Tq6A_{N_A^Nyff5mLx#a9a zxWlh6o%7~r<8$X)r7sx)vWsWF2T|AG={md0lCCBcyc|m)1xquG=rz!^VaBCcqJL=; zhY>WXUL(!b+PPScM$pxDe>=7|`t08f(J8p460W0vZ-!qhTHEAfVBn}I-hQXB%`Q#A7xHq zZ;ALQb`JC~;&#*Q&AEIxW{K^B`G4~KASs71-rG454bzedtQ8tQ$6XL*6_6SJVt38~p}|iw)oxd3FcPOKtZPgMZ@#_&vPh z+v0wvV$Ni0KoJntqNe~APs@UY-*M5TGz~Y(!f*h1P~$9tT4C`C0TosNwGW@TLbn$- ziwc(@Q$gY%``7Mv^m?kj21Mtmet;tR4s`}|fBF~s?cE4d%qS_N{JM$ow~Ly6QsO{n zbwE}?l3!;sONQftq?IhgH-J z^#XO@K1!X$UdbsJ|51wH^I!|LZW7ACzFFbdwaTs^dt!d~zdINVXr|KC)c~$i)y*r7 zmD2?6HcN-2Mje%KZ7eyw3|Yh_CO^EB*j5syi@97lBCEANuT_ET@_#)OzqDVc!=}uF zRgGux+g7hr^q?$)ifD~BaK1*hAW;KLBfx+C3D#@S$=y|QXj7k%z7oWJ(twGpY0_=u z1RA00zNw>{7nmc;kJ&7bX<1_?cm6s)t(4tG#3*75#l0vxY9B*k80A!MEUr+ci;F{? z)k}*l%-q7v+hBgRFn@B-ar1*CzKo3>O!4ZV=XcFhWwL?@|efc`GNK*MWW~0qtu69bB|M+C$-$2q2oR-0SRcwO&`p| z7@AvQzW-}#ihfZuVv$+=FVWlA&^;yjXON_Gb68AVrEaxbdVk_M7)0j5?>ORH$&1{; zyP-~Bb@DjMuP1q4hXpWfz6R$+6b~Z^b=i)#=LgAvk#h0@w*d&IZOvo(V>%?$fyLi9fazB6wAFJjGhGER(U@q2* zoko(ak$+HZ5}5pDmhtUxgtaf}bzyI~Qxj*NbJF$bgpRy6O*g5TTI#f@9<~?tdXzR= zAN%gEU>DiO-Fv(&&&~HVh>o!cMd=MeV6s|{<9#qQUK^oZlBJrhodVErpFlKQz zGk+{Wu48@*C5L(;n&b_*Hu2P=7fyZY_me=NcxgchLHDt`SFu>wjG53P?U zd_0e%O3l^So=6>iY%LIEX@$aKk>-kE%29u_5Ky>J-;!{bBENnev0NGRln<(ntym%0=K}%c=)CZ`7f*E%za?Wko#~9+jdwu zYhuuT)Ii4ACZ|s{6Mk9D_P-fBYh_%ImGCb4*zfy-x4V=+>^(Lt+u%CV!WOqI{%~tl zS0QNFPjNj(aA7wU{?s5H7S&}-NHl%<+q*02QesE@vNyq62~_UI>Tv4=!_ChGSAS<~ zij$}xrxq7W>%1a!P?Y_(J2*EC{~x4uKn;O!!8?mF0{kp-F=_0`-#zV%S;;LQ!%bu$ z))20!qPOtP?gNgqsK-CyQkb*TkG?wntLh z@>_Jkc{Kq`Z%sI++vx~0$pFb$;D2{N;dbe(I*L+X)F~$IZ>mrQVGJ>Q%+XUf-Cp&v z8?E3jw{pDbb1%g}GQYI09ywm=r56#NKJO@Zc!X~}pX8VfOP^Yr45wIxJ9(Ho z$hV!b5{6KGix-$m|3$H4H1Mm@yB1wO4mRy6QJa(4{OiNL$ zDLkT$eO64qA5K%egl?4A3NXCFBQhe!S~XQhb8hS!nQny(pEvs%L_b`8`YV0 z@LiA#XftBD$y_i3uS>YhOIn7GvdcWQ^7eTS#UJxDhq7RvU*vG>$|GuDz*qGj1 zQ_Jdg1(N*n_LZ9$q<`5j9@6ZWXrwi7u&D0TzQ3ZMah>@@l(A**P34ujOgZ5%Nmlw6 ztWQlK9SxKx!zFf@$*x4IS?rIXt%Ub4(pIAN*J&$}Ter3n(sgSq8|sFhr&sdmk97V5 z?0#;w@svG5cFdWZ1JGQW2h@4JM&fdaLX`*9V)}Cq^Vc@)Mt{>(yN7>ZLCa)JPlwM@ z)wx9iv*$owhyQDnJmhaC$RV#|UeNLv_{PA%V86)&gfhtAnRCK^$M^I)0;DZ`Q^X)d ze2l5bNJ`C1kzxLCN<8;8iOOP9;JN{k)@yEB(Xq6u9=%1rlDl2B0Ny57%^ zXc)ZpY9-5=Kud!YzrlF$Yt_||GbT7x!rHn?B5HWED`SGJo9!=TwQ*sdeV?#PnTg zee3MMUw=eNbRkH`Kc=X2yEXf8hjxWPnsgMP!;cfzuKAIGelRnJjwEqKWo0Bj<^(Gy zv(nvr9>f-&cws>rc=9%5#1LCa4=vj!{axhf)mxk~<5|(nFSYrvawd9m3$j2c8&dNR zEvqp4nsRYMGjN*R;&Etj*|Yf_X1pq#3vOl8`hQT=)o7l;x6s@R1fr5G771a}x>n*~ zLHZ1LAHz^>&C|ddl!m*NylG_Pr|E)(YeBuSWx;tLsk_<3KT6GdM4Atbs(*R{kAi%D ze7H?cfzKu!nW>UagYWaC9zSUV5lP-OH23xE!En+I?mJgz`d+OOWxe&^IXF8_+pAOE z3xCjc7#LI#0dqhjUNb3CwndJ_Mu)@467T@h&3EEGNg4pPc_EL;naf@odIRSGk=D}N~b;4 zyo3#0Vpyb(_zyfJg#U+LY4v(B89EyV+G@}s_9tWa0H#F#cD9BqO#3Azb$^u z&mgQ2ZCI+(t9HgGkhk-5{=y_ru73;n4#A*E$^th&;WuBto{iFKCFmOrm&@9Mbj

F&1vZxF`*_EX{KGY(EcNcF5`JKw?O5fEidVjqRJ^dnq z)?FMY7w;eQX2G*9#Ev<%(M9ZAUR=-*1pc27@t@9zhzRb<`v{B^lMNYg z*BosViBWEZe(K708Euwf`rFU-3PMM|sJ zj}Xus5o#tBmEI|Q_c*qc!|FBN(!i~J)<{K&i4_#h@0%4S_OX;cAAb%fm!rJ9j)g^9 z=k}Xm1dNwK3u7)h3{^$jkT%pD@a+P)@96)#bSz_yq^GP^FrVi{v0Gsl#@R;FAZi#@ zrjP9)+@}KVF1z%5jGb|0L)bMVo@Cx^#p5sBSU zIUAuDGI>tn)}P!hUVl;x#pIHeh#NAPkF(q1Wm1CtXtNXXSNoQ2;qIe%XXU7mUkxOMP_}(>uyJ~>tjI_DmhWnE|gXv-_ z?QO(A=6bLI9fDep<_)wob371khAI0ZTXw)YVBlOS8#-WF~@VYSM{9#9X zo@7K^(-e_INqDy}bGEoooW5rTYOmFlFz>7hy?L zBy*=9B?$ELMy?k=&aT1E9kE3y@rd{Awsh;DV&a}Iyv}hb^GG3_pjWsWDrX~DpGaKt za+3S&Fl#TFcSTU%Wa#6gy#;q43IO(d5+slXa3Y8iqkm+E7tN;R-Y7Si-hr>O;jO+U zUjAGTugC70b7}0X1Py`^$o|W`rQ@V@{>j0+pS}1Z{dzy6btKF$qnxg~!sF^{6|QG< z>Xe@#Vu5eUrLx6YLOTEqdi`z@ntku^IzT5Y^8h%zPk0*^f_8 z&)q8S6MxhLmY9MKaug6i=GX+35#&q!nJqCcm09e>L4b*)2l{d44W^Pdk+ywCdnMAb0V(Q)J684OnuKGr5v%f&&iw)m)Y zT(Fh{HhY$QeY${G+L(5&Qmak7*3W#rS26O##eY}`k|!5PN;EsWW#WPO%WOEJ={$39 z_S0xW^YaZY<0J0G|k1)|NxlBguj95-`scRnnMB<`h1tBe~qS?91f?H!SCTC~L%zH1ef4_?8D>@FEX< z^nZLtMIV6`(oe$$dnsb3QF`fg|SD>meqcEQwj6x zlDfOAJkWt*y1PZsZDKvC(O0DgJ8eq|o&@Z}3m;q?wOb(NW={3xrJ+=T)4lZ;M7=aZ zKhuNx`cq%c*JkM*5z-p1Zd)W@+FRv4Xn$W1C~GHeq6O^m;cC{$jt`OeNcGOjCFg@} z^Xzp6bseJCx{lX;GASmQr&WYwhl8KPvBql!PnzUIY!x34!7Qm!E>MLlB`pI>C1d^B zPQ)=?V!Jwhn5Xf17ElYXH5AFgiCZB`&}DfvO2N+8E5rn+H`mRY0_wz8#htzG~vhoJ)K z51^{lenRs`j!*VxQ}Mt3g;BrWGB>PRx^?YNEla(nDjJ4uEk>+jOBKS9d(&_bp=7j> z`|l}MZExH4Z*5Np{mRuJ-l<+keSf5fy{o71Wj~BX!NEnnd`rTRTom1fZ60oNQO#$K zSiy=5RFAyb848xqT?Hqpw;%U0;rU1(Y?(R7V4-!L_F>U{3>$;|%iTHX(G7Il{o+bO z-@lB)-VAndLd?+ib8ssxmB?K50$1ZhWtDsKESjFV#-lE`S87-UO&8AyvVZd??oys@ z17F5oz6Bi;gpS=$dB&l?cwz?R>}Q^bNHx9F=8QKBGRzZaEGi2{!EFz}C*Ehi_>jLF z`5cbGCPkACu6{8WY60jj7tuA$D(u&gJ+KB!zuOytMELth=F(j8|LhH($rLT@(6jDi zxf{qSzS{IAlPGZz4(QNAOJhlVaE_Ohoe%#CM%tb81<2idc#d>aD;$ z5v3}`dEI`y$ev0invDqaOU^#9H=D|B?I&X*LJOqN!FyTwt;rJwr~@Z3?-c5HX9q_o zpPjqIsPYvCCUv__WKSC#tYcWI+ck_(SYBP9mlA8r&F%)ZLc5Aa;5mG5NnU^CD9uH9 zfsqZXrOMf&>1ilz<=8gsx3Fp&AXfwBQR(A`h$(3beWk!AMMFKJ+ zRLlmb?vRtnr%~PRr(Zh#g*$)VTw*u6ZNFOK)){*XXXl7kWfOKK(d@98Q6%ZP3jclh z0sp1U!Eza*bFj0QH;V4|7Hzh+-j#&aFt06S0oL11swbGvb3xy&r`m>Kam^T}YbKpD zKS@Y3&M2XWamhyY%Z8Ma9IHE{yMe z)=Fr7Lx%02)nI&>@=gWs1+l}dhXW*{%Q02D!0M;rfZR@FhPmp(ocj^s#@Z+2LH%CI4}JcZcSZcZt# znAl`h-T788brFB{wxSCij&`K1kXo=DUxO_Tk7nqPB<>BB%3f2i{yJFxdwK342b@1W z{pjS--RYONBoOlK{An>7UgppF@O1Op<6IQmkX;zhj?605YD}e(C zrwxnQB*8-@L_mZh8H42wrqJMg3$;0$D<4$z*IrDHit&F75Gse`|1i~-uqS|<_v2*8 z-N$9>{g}U8TwNu_m|);gQ>k?hekz6o^5Tb6HpZAV01D|+ri4?4IQ>4K(`-8)NTMaU z0)u?w_wZI*ryd@Bc6f09*?F~NV}!q^{%%tRytr81v%Bo`;dGw;n*UU&7QT~BXSYM|cV2?x={^XaSnG7&QZ4uVyg4t@66Q(41SAoi86WSIbHZ2D0(2y)< zdD3iU-8Qq;{>pSN9+Ctxfeyvnw5=6pHdG=9nnL2r5|T-{BWYV^_9JZ#lcXg?*Po@O zv1a^}rVgcbVO;x}(dy0!V$o&q^gxO>+I}RYd zFW)=;#1mgfs&vu?Bt>D$1#FKGLsJCYJBv+)hsCIv^uK@!I`8ejI|3uYOGDgtzYu5TmDbhD+2PV$>^O_aXh{I3AIzr;|}P;89Pr2E}29G4@Uf)|8Gc zniKdz0i-4sFN63kr1r#GUD2MHZe1poisp8E515DnP~+3KS;fQ_e!U>_Z6JR}_kZz0 zloxa6bE%nhtIM6P1Z#!u*sP~S53}M;Y;4AXd%ICBZU=tU8D4*B zp9NB|4u}3_NlJUdo8c6Xml;4W+!++bL=&MafiDx)3}KhPW`_}%H(BQI)mnLxyX_$S ztY4KpeQ4XUW@*T_S{LS@d~|`lx`IRj;r< zjTHrP+E$lWq2he2UR6RxwJj8%%Im{Mw@XPc#9E655fn^+9~O2>n?#(lMnpND8XoLqLvMr+mSgDHOmGO_cXO-ON9k&?=p zY}BgYDr8piXc4o3;|ay-Lj;?k3-Ku|?eFm4pWplOdVhaTJvQv=Xon5-ly0ZM9mDGh z6zfH26P}v;=#>4O4ZRJ!OH7-`vqkXnVNMweFUBj2e1x?Z`*f&{IM^M))wddImYztc z9(}~dgH-JV8x4N~m{fMav^+_|D6V|rzaW72=5Jqj=ACcf+}hdN+TQ8Ew)^Vl&em(M zreAk{fzp@v_BQwWR0dzR_R=S*2fgJ%Z*J^uNX6F#dUyA=-98rKhn*03+XLQyZDX&` zwYCLz`}MsoC}Wg+uZ6%n9`Nqgj-|Zw+7iBZJ?NcRU)z7~3x^B7_qI1s6pV8_gx(7o zuW9whUSq3Y4FwLyp8wiZfp0Z5TmKXU$W4!i1$FS1DDiLM7r`5R2pnth6*uUMBITXd zd+6QX=BvAVuP(&3=>6T@?agf|-fhx5(9X@*Hl_cz6nY0c#+ANq6i=ZyHfm{aZoSr* zK4{WBpuB&zy`eyRuW#^kuZ6d_GuJu*jFq&d!#K zP-$+wZX{dVGq3IJZY+kN*U;Uqtt!}d00v#+pf-K5*LF-(Ydd9oZ?pfp`^$&lZHC_s z;J0>+s1g44*Nr-wt|Fz-X7Bm%I}1A_2E|$hhKGOl8>#KQzSk)A*Fv4F1>bGv{&f!= z#I#!@{oSoyqiCu$8-domhKzDmAHi#CC=G&8?KbP=2U@de*Oo!B73!@~02q22bXX${Wg$bSdXqT3< z22OE{LSzG$hB-i38fKD*4e>y;pX5%fmaKm}P19{x(1**eMJYnO4aUL1v}}=x$Zlz9 z#6ieXt3NarEooaqYOtr6jof^;$Baxz0|<{Ido23>LWdsV;Hd#UO7dJL&7%PrCecXc zjMUJ>A*`|5?hIWFz0kP{-4}L5XfTj|D)J{&?vasyaLTLd;rQeqLfM`5FF6rZ4r0?lE^E6G>U89CuCkl5>}#%RxR8=>^QGWYE3kDf-2r z;N7V~yBKwEc>p>qU9`(0^FbFTbeVr<8>=xiY<_&ur3pQ9Y7G)IpWFjm=Ylrr{8(Ek zpqY%^c24qu^%W!@4!I6tO1xzYmRaz9E+&}zPKN<|DdazM^PlXO~dF2auz6KueVwwSRN+gV?bMYbWj`&R41gtvmJEw-lrBs12&aZLiqJfhk2WRiJ&46jS$?7MWv9kCk zEzJ0#i|ef9s4Q}26F5)UX*BSt&r6a>l`Um+vBOZdLHV##7Whq*g6F0tIT%X&N(&RX z;o}+{9td%TjY;5<1jiM46GbvHac%IS!#RsB%ojHEyrdhl4>wNoq_cmP??de~bBE=i z&;~8@0Xu$@$qB1rMt$jkPjqVc_k6i&9#*oa;#mN2Yop``s|v z7ZQrHG67|hA}o=9ihY0EfAZ3p9omr$UpR2;4=Mr&w46Ydp!!0;A{c3KdH4ccI^~uA z3xtM=5E%Sv6HNMpEx`zAr^B}Um!L%sWil8&LUwx&Z`W%HD1>BSUw@EJ?LZoiIk2@RR34>~iUVG3|+ z$+V%|++B$n!dmZwE{mk-u0(*`ZrVl4v=2LdfM%HunN*P`X-E$Q)N{pw0kN8hvWHvE zMwz}e;RhiFJY>5NMppcndBBkwiOmCT`8EBgm^Sve683*7!si8)o=Pd(pcKc;(y*xi zBrzt<$a{2^89*c0%uC0G)Rv#hZ3RQ;q7DGiMH+H!mP1Nb_N6DlISwCuwN|Xs)|KE~ z=?a4Kai$!oI7!$NCe5KZcygKulQlVaihkI^7r={_2hw-H^uy;C|7F5#1AtJpG!%)Q zJ5@b;+Vg)d>oX+#Y~vw41?I)kQ<0=8ui~Nt$I!5&m90sT1NOPXA{Q)%#&l0YW45TR zIg)cvLqn3DFc3@!A5dYD%v0fjkcariEe&W`hk42|^cLC!0~#cA(C&jA8!sIC_V;+| zBc{7*YxS#oWSLnkI@-*d^8?rZfF?9FFe%9PL_~je`V=PJ@<3lF7!qE3m80t!Lxfb6 z)2|>0;~gRM53MeK`h_iaYKyHs>q)Bg>YGISYz1NK)KBHP7-XY~cWq1!XxK-v9T^(3 zE1$b(CUic?B{bAXlJ0dGIEM%%InQ%HbYVh6+mrABY-!?X!a;WT_7e&R*^uWPL&K!w6hX{b zhKAxT6JhAgNRh>iWoT@~mCz7(hn;6?gED`CYJ_Zh#D&>MyEK)R=PtRyFZ0eO7Nu$@ zZRm$OQj;ihEY1*#rVKK|(gg3;Hkd*9iQCqRi0#VOiO`ta+7Qv$r5N5kG!awQmcO*b zPM`EljX&(SU(s~{b!1segX(<2AxviB44voN8U`@59f;ito05S?d>G4}pGki>4CsFw zh0~tCWIP*SS#_t5KnoF!uW{hUUl2N z#I8D7zwAS&Zs)>@&^gHsFL)&Oi-~MMp;|6uJq0oDXcByEumq3FiE;^A~9v(ZQsdS>}}nE}ZUB zX2QTu6XV?%)+fUcbD?HoWP;C}@X$~Za)A!TcA6RLH&0qK*5A3^t9uNka;Se*U3U{^ zk;O=;<)qRVz@$(S?mTVDp&L+id=oUAR2Huo+UTIq85$Z*lFqA8z#tV&}WVy7o zHZYV0#p*%l#uR~^Bw?p~;5H2)H5C1lic#pF5OdT7ll5?tuMoQzk3q#8Q3f6GT?u&{ zYQei2yRpSr=$DNeBDS&n+OvN}iUMq?%0u;(8);9M(9x{8#9>U1Y62v-!!P2DWqHkM*0#?8Kwtl-CVQT2_DjlgtwP3-|jR zDHpI-=6#u)_eYSsc3uqu=yK$Qh7Qfnl2}nf)+Tx!5xU@{TkNeF8i+d%J5%UD?rt*& z=)^dkG@#)^X!pG?%rGov4K@rP_%bD`cxaG+?Fva4}BB9FQ=HL7SVR9)RJ)v zvn)1S@M1+$@G$j4u3vvCX{Awd$Mm!%EbB)j_Sr)ZM|hvlu{Pw;kfSNNpSn7Xtu%ZmvLzDcX&adQu zlC87)IhVa=Dx6REQ$qqQWAwaLW(E=s2nrgC@nT*w5a?VaQV5hM-5(4A=)CVF3BBx{ zwXIPC{@{v7&>Zgj+(>CcL#GG>jez6Mc?m#?0hA{Gm3nAf!+AdtT>D73pn+zZIWx^Z zr}wfTW(jKaPBDKxT!Qf5Le4CB7OpVi<+p2uXAu7eA(Q`H&S48I=cFM-?7w9)jB5S9(BpqqDBvfI+P@{hG$ZwI`*V-_m8NaK z-Tosp_E^_X&9r}s#fAv@$r&GsxW(v!etyQSh302pf|P%te>G+|CGd~Z1gSw25o*}? z2WpT}@o()g^nJ#*is>9HNafZWwu_14M4|gyp4lAr_~RL6&YK)$$$3 zvg)I5LUi@C!?J2jkY&}#5X-hu#tkEnw5(e?VOS|#kYUxxFvGTxYVnR@SpGg(TYP@A z-M~C9#K?a68_)Um5lWLo0)2=9cJdl0HH$>F#Ptx2YxFOD*2%N1wV7x>HX(CK-+iO2gI2kQBU) zGA4gU4xM@vQZYw_a6u`z8X1;uw~%V_j+18V-{QAr*N;0)s|JPTUutMj`qf4nH_RM7 z`68^szEZ-l)JqKw%)HuYwT#EfyIS82Xepxodb`c-!9iOr8zf|_ zMwli7e8dI`+miXn2wfa!i)LSb7y7c^c6fh|IW{QKvLHfoEFX#3X7tdRm5sbHLy!_e ze8z+bOQk$S+G==I0_AlWx(O{*q@H#-2#yKL6x7I&Orec3CPogODG*X&cp+R+rl3ZK zWeP2%TD;?A3UpCcSQa05)?;x{U@;blhE-w((pWKb_!=x>74{Vp23B8jXlUtGpe279 zk5zOvuUHB#@VgFc^T@EopT`HK|8DfL!QjES0tRZW_yEyEd|@*_aC6`!Udk zucaRA-FDY7Mh5L0jPW6x2RHiIWbn}22orUq_yExZT*DY2wySUwu!TR){(|q93FYWF z9o1YtF07ENM+en#U8v&?V+XI?GU9(m)tv%|xI!~JuvF_p<gqK(t-)8p!mteZH5nBLusRLj1s7h5O=X*!pbOKLQ)~eDWrecS3lZH zv)^uaA!}?<7G*(%9l1h|a_5tdPTh_uykoUBS+JrJHkkGot% z4GQxOH8jX61k#w8Ik+1rtkV8c!Z5?Dp@9|`Xd4+1X=B~dOkttAy_=8M6+O}#&`-Bp zS&x!tZmU3#46w398gJM+kez>R85_lRh^P$`CSsSFC0Z78Uqd5X)OD{ogFixBE_BH0 zD+gCMvl`m@r_f)c+x~0SxPS5X)!T1fU4HygG?|ZUlm!7I^{?~ubN)mBEPDNqi)vk| zru~x*oa&_ilc3|M`fUwVYZ&?_DCR`HBV2p`1>nek)lEK{R@YEtCc%Fu%T*QWI|k}P z!+3fN;j+g5k*PvdP4#_;o*`!sB(>3_#_ILzezIP!)R>pH|E0#frD5orM;qk~-i{ZO zD!Q*{iyx!4Pre@b%%7)c(QUQ9SxzlJ(=&;5ww{gWv){*vB!pGX?VAs%yz%{f9Y<5m z1>F)Mw-PFYm+PBo3K-ZK@>=1$uK~xR(w9+wsNjx@9vL%#EYq*c z)lWo%Uov)0w`%nL6|vkreo(%2cQ=2CZb4tOySc<*I@ITNrKo?<)fq6h?Uk$QZn;`p zYM8BA+w2|<=ID!AeLtSZ(Z_e|*#!UR)A4i+ioN{wvn%++m!HPb#Rr!kz5fcc5JfL+ znLWKra2t9_xWV6Ei7spo=uK}obc#hcKJ{v6gi2HwI`v{lWT-F~E_}WtD$u$M6FlA# zk+Pf%m3m=K|LlJ(`uGP7zTdlP^0BsHWAx&H{v>B?#(Hz2jbh^gya|Ud- z+0ktK*1FWU)_wlb<&{blJ`*dR8{iNN;6AIOV3ZU@W{Q9A7qcdS&lVIh$LlqOvEP>q zj8iMn;5%=;75%tc-rvQflJSCcOg^wp#ftWywN5j5b^9Esp3qD77cED_<*X*E3PcaG z_*G28sM#+ST3Y*sO1#F4AFD{+frO_`ICukAq_u+8;hGT>u0}3kLEXy);V^^1rD(jW zh#lqY#07tI&hCOK!>5gBBPdT^lo=VQQGxszxvlq@l=kerGAJP-oEv(XP`uA>LE77D zfh1>(maDvF`KaQLSZ9SYwpram*6nw!AgLSXxUuX0fdCAwoKRa)2LXpmHqN#LOHQj* zz1AX+Zz1Ja1B9}ac7qtxioN)H3()~@c9Qbz7-)aMg1@AoJ?88NsH(fHikKv*jz)hSw=8-RkKrHCXbm$*XIE-Mz^wL9QIbP5x|x}KNz))e zQ+JyWr}N|N*O1%Qf=F1J5Ham%!-kDcE5b(w&Z2kbIM*R+tKFe(lF%T-nJQ; z%z>cs*^f7C7_(k2=Mko}_3Xz54E|)b{1JZ^=vxIqf4?L$P09uc;rijOYQ3fxut9@N zeumV8bQS-YM8=vJNQr4GqGK~_1P8Bt4}Uwv_EG( zs2HX&uhjpo)kgAWHn{<{u6|T&Jmw4&)Jio~pHN`SSXA2c-i-N?^@lf9o+VRQkzarD z=5Y~KW8kT-^rs%GmBEG*0E<>;TDVxQDX+7gsm3J;UaV=-`uP39=7Pd@^tnKZ znnx&IBWbCXN~l`4xW&=qKN7N`aTc9X5w$7xvTtpuZ{7(fvmcmvUTN1_PNVDbyhhIT z2vI(fLs|t9Il!t+$k%oaM80p;Bdh_U(ri?j38twP?c}*9KPilyfjlzsTi<`u+a8cA+%k30C}nW(LN~KRsO~O z?GKQRsR~4>jB2n)PW>8WJqZ<70SJM|C?v=#By4K=x<~;MKuR^CVnu(T^z>c}e~FNm zT1=M;)ygU1iM)Dong44A^DP3*u8q-T@C811stjMCzU&NXG1H5xR^*3c*s_mXh}AJE zozZL2Hs#DEoSLp?)2XWdw02!}UG3^#J4HD9P@y#qTrooZ@ongAczd;4u43TRxt;Iz zda8lKa;(oLHx$A7sd;8+^58nP%ZK;3M4vR*AFNep`9}$gs zcJuPt=+C%IOt}})t_AztTRyAgu+=(>!b&duvs#TGVAMX#m(NrVDNm!#|6<|8wiIZ< ze*0%@6Y8pbh?k#L@(q_F_!WgXdu4y+vVLO@!R7Rfqg@j?^$@Dp*kBlV;W>a2L<>&S zzoOEB3%WJrlrVodc4#rZk=q&ZigSMXg0f}toRUrbSmbN;+>{aLyOi+qB9;%)&+f*v zRekDG$yqdAHe^|EWM)v80O&306=uV4eMaL>=sza&uUw_4jEFdA-qHO077qaVPp{1C zw||?}kW|>ud$Z~H(W~%vTl%Z<62j-SIe|4!!{~q14ikR>{K>MO;UxN^nq+Mx>ifvr z?WD6>pwjIK9ACN^(Pb|HJdIAb^VRz;dP!2H7iZt4(Tj{c>csWn!}YK`uHOYN{Q_~B zn9ic_BKV2I=;f#nmeuNDSAy_l1%X&nR*zY4f9ljrdmF!c_1sxHV|QX8tWG<_-`7t1 z-|EQ4f9-z+t->QiQ&P7Vsvdj2e7i4Bh=Mc77M(%i7xiv$)KKhoT{V+o(zh+$Iv3MV_!4IIhnW*oUQix$9K9ie|>H1ub>*$_7!>Ldt9FCuLU9?Y}; z+0U9>w#63Vc;(sH$+XU1qGo?n0}{7*@n+X^8jaz=DLUJ9a`iZ3L_hE!KzWEI#KD9-mUZkPo@R1DP4O z-8N(GL)%Wpb|2k3TjQ{=q4VHYx7Lgu;_kpEZ2`i2)P z@^{pdr;yJBT#h0t`TR;$@~yYsm3&pV_OvJNqO=C}{?Sl&QJ#8Bzu(Kjpf*?oD^o7j zDf#b`3pwtV>oa$+n_;v4gI20)>FS+V%5jxn}U4Z4^$WcpcV>eJP%# z#LN>RT$Pzl$M9F)m@0ZUKTL!xXKY{qfm+*=j=HbM#t7|qEW27QVOT$Qr5k_Ry;^#H zRu3}u3?(FqnHhEapYJ$cAo>>E&u#}`ylss7emoBe&mNqFMIK|88`~a#seIworo|IL zYE%2{dby)Ih2TDCv4PkUg-wnBw3@Q-$|%8k>@Jwqc!^o~vU<&QWL|00G2ed>_Y|GCd_e}w zE-^U#`lh!6H(%bKMoBzMn$nKuMF<uvKRgbWTr8?p9jllHGX^wv zf9JW&geKK|!Vpw#HMf6TyMP2l$l3CK)&6{p1~kjeuXJ8B5E4YkK2Om(X=Aim_#=AR6sT^~fD4V)gW@0A0lyXE}h zcDcHPYO_$TcA+(Nf;n67me;mN8qc*gVZ}{Skw29eKam`81=Ow8B65EEL@>xS$l>Dw6F@Pf*dTOn} z1e!yoNnEL!Wi1Ctale`wGMX31+xi9f!(&%9sp|Fe?k-5z2(&>3j3T%g1lX)GkYwC} z1fV3{LwR|vn)iREFWoFB#H*UttLo?bsuq{Ph1yOCJ!C+D-gY$oJtVd=dmT`~kn#|f ziFUsp!bp#x!xC0-zt8|%zCFS`ehNQV{pr=^NAJprtj9e16C)xxOS0^NV)AqItndsy zW#*?N4q+6YGE1+HJCS@QtD^_o;!5^CoqS zH=?hCDi;2^7K3D@DNp}S6>J*bUvul4Rf)8 zm*(lT_bixSDAcW&{LA&UXxG)${&bee4*XY6O;YP`nlS4GO3vH9QFn+qA{nk)y!;YmsycVrshehbwDbX>r)KJ zTw--CwWkn(yADzT&JI*|$`NQ*eH3Q1sGM6SFZzoO4NbN1jK|WVRFx~` zlt&yq)1-Q&D(G!($8^{Q-zsh>Ij|$s(wA2&*A+R4F{2%7Dz9hG+ zm)TpQQ;Q$h-R&)xrVuH6PM|W5aZ75sI_@p0PNh0;M#;GMjC0m@-i*>iLxbxEH7tN( zccOpPKzSPq9^*YIAD^)~uLABy@hsy>CN4#ZwnK9ofb)B%fp3o5tw#Z-L|q){&Qz0H zaM4vgP-R!U=t|E|tUQbcalw_Ing^5g$bG;m3((@yF`|_hmNmF#K@l{Fax8*}v*s^8 z-qGqLus1g9S^J^bGT5*Gi~9y6bG2mkZ61Gk#IxLnDipbOm%zjRwygqFl=G2a?y+eA z`0(z^kj)8gDQu=aU6Vx&+W}t~JZQQh47N3-G*t)sgAq6}1EWqJk%axY>^)T`qraH( zDF=;c#$Q7et2nwg{O^4QhkE34U1rsPBJv ziJqI!)Sb=tBks9r(QKVp@;PN20cg_f{5OF>ed&9Tj++thy z3Tf7Gg~1OZoH6g7CLn=KH2X;YY$znA9`l7@zQ@Nheck+@xOwFmfd|K;&BZ_1^_2Px z=uy4;gGZp=kOsoI& zipIEX(yQoME(fJCj^6(0BEqN7M`xg)zW`86 z0|b)_V;Zvp8m34OaYorlM{RgKQY-=h+4KyPw_-H~BFi!Yu9NX%Jp)2S0+TUgO9SIX z0+WAZG6Ml{0+Y03G6Ph00+Z=uLIcEi0+TLeMI;M}0swbma%E_5b#rBNP)h{{00000 R3;+xOL<0Z-n~MSf005LA2U7q5 delta 683 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 PjnAEOb0d1?Gapc2 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%0A@!=4`d1$(PKr!2U`7|B3gVB9#S`+B*HacdvZ{ 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 Q01E&H0{{SNZ2|xQ0G2}q=>Px# delta 666 zcmV;L0%iS$;R&aV0kG2-f9_-0NTs<4WAp(40Dc7k02TlM0BkWZZZAYdMnP3fR4+|$ zZ*yfXY;|F!RKbqgFc3Y1#6OIDSsT%?q}3iGaiBm~NCm1w4^?-yGKme55_@Gky;S}8 z+D-~)H(P;vi87uy^WKa-!^F=h7hGbv>G%7vT(38Cn0;SOmWwGYe^%4a-)3{zY$sp0 z;QTj0pw|t8mQrd4_e?NFO)dp&^O9*p%jX2*+tJjM|) zikV6YhfYdr(gQ{~f9ekjB8jeccr)1IZ_llOjfyCvi zo5n2()tV`T{S8Egq#3t)a9d;>S5#CK0r5#~;V$DCL|*(YfAGIlFLSMJhmWeSklln{ zB)d(w6Rwn0fYDS|MdokR(KHjmT_*I8)OGEJb~krT7aRx6E^0=ndCVNwwtuHJ>2;m2 zIWKuOXOs=2|DJ~Ab>!GiVXE?HqlbPw3{itSRn_3aL3a${WWoU18b7gZ-O9ci10000B01E&H0{{RELjV8(0N5fX A6aWAK diff --git a/Moose Test Missions/Moose_Test_SET_CLIENT/Moose_Test_SET_CLIENT.miz b/Moose Test Missions/Moose_Test_SET_CLIENT/Moose_Test_SET_CLIENT.miz index fa18fdce1f96bb64e15df80effc5490d715b3efe..2d750e3f7c726f65155090d74d626c3ec4220646 100644 GIT binary patch delta 143697 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 T000aC3;;?4005G60ssI2{W%Bb delta 653 zcmV;80&@NG?Fp2b0kB>e5AI{wNTs<4WAp(40Dc7klWiCqf2CBxj@mE~J%hwQjC@%e z(Xgb|9wKp|KvzfwszMJ{ceOH!4UrOiWjno8{rB2V3T8K3fqIEDo;UN}j6K7|&nOpM zVz}w|`>Pf9+lT;b|1VAJvh)ZXr`zz>eCeF+AP7qlHL|Ds%R)-+>){q2^!@c_mVp z8k1fZ0O|zVDC^4DuG&X?X1tns0BD0qq-CX2=D~`YN(qNfN@~&rMmXvZ2_lKEc6c;+ z7n5Y~e$m4N8lWK}uDUE#@hLA@r~(>?KezBs&Ot~6e<5D~I72;xIWS?NopVrtd9)OP z>9D6RqsEgUh@ueYOaxrX61?l!IVJasmcD_+<*J*;EeX|{DTDnDM1`aow|Q_|WE)ph zR1^X6Np0aS;}}F<{4MamR4;R_ZHJGluaMn@UL?Csw-c_ERDjV`Rz>D-)X_8(!CfZw zkJNSTe}#58cTE=@2g@#MMyGkq9M`sgr#0zyov%4Bc{XR14Ws{_hU9hR*iK=p@@J!m zeme|NgF98#;KD(74B=)$t*PJCOJ2slrhBu$p80Gt{VIBSYV-Pf5cq(Plg&KYDw?vj zSaXiSsLC&dwv~EZrSsJ+SfqadP)h>@6aWAKmt%DT7Pt6B0tGM+?qk?UrMU-V^Z@_> zegy!R40QrE1y4t{j{}!RbpkyCd>WH*7!;QZMFJF;t#tw_10Ndzm)dm#G6Ov<0GAJT n0x|=dG60uEb^<~J3N!$hiFN`-1A;~Xm(g|t8wNB<00000ua+U( diff --git a/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz b/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz index 1eaedbe6bc767e46fa38a131cb934baa708b5008..9791487ad07149341cd3c7dd4579764232451575 100644 GIT binary patch delta 143662 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 diff --git a/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz b/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz index 5ac1595de3ff2f2e5595fad26ce457eca72335aa..0bc0014173b833ff49f77a770fb585f11b188fef 100644 GIT binary patch delta 143707 zcmV(#K;*xep#%2y3$W%N5^+Y^NJnjWJW?zI0NL~m02Tm~zRnnb>>X)S8_V%Cse1om zf-5D-Ue>aRUs6s;f(?GA!r=gZu7o($qFuqpl2+MW0g{XS_Vh959y$PHl9=ZQyFESK zJv}`=Gd;&f!%IIN_L8P(Jbn69>>V5&ZHuGh&EuUnVrT!&?uRXUJv7C!!N8n zdr6W-;-_dBr9mElCqr=@527p&2BTM^(|++|`^V19)Any)zTlkwq#N|bSpa!9#OY5z z{NjgS> zM`5!U^s}g?*ll0uY0%9@(i3|-N5@*k%y)SFl%jGl6N{ir$aF-Q3>&%VUIfGQNaPn$ z78y)`5d1Sqe~!`&=t8!2J1HL4C7q4qeh9Emhj={n&(~*4iu;hq{cKG@?On1KJh3|t z#2CSzi1My~Z>a>KO7WPxmnH*ok>{gV&!6|l!P+iq0ZVyFkOrxDxk7J{d&{B>uf2R*AqW z8pRM%R?;XRr$fOg2#LTRA*0Rjgi}8ib5$Z?IyInw6)E2^x^l%{sieJO5D}*bW*!g2 z=-LyPL4O>rQn(5Mn35lX}opAXnQw!A-tYz&H`vV+w9iMUGA z&zV4*Agt_{NP()qXsSR?+v$8mNPWK_aoUPm~iL`Weet`5h8vnbW=8-E~;<>Ch; z*GXdzMxJo36Zv`6K5Y;=b|6ri!8pssSp+7>M1HudG==s6eSh55rnRJqTSy{>Jks*zIH|8iiT4W3<<;|j|x>Ouv^*z((&*!{>}vaBjtHwNBk3g zL=c8i2p$jUsRB^roT=K=f=!jt?=Hz=>Q_~^R3@v=q(7Qbd#Wo`6*#Ygbl15meBX8A zb2HyYQCwp{6o2%Tt}&(=4)8bq8V}{Dc%lKq&G8mm4K2Wh3_;FALU=3|tW_3&K!nlR z_}s?{Rdg0~KQ~)A^f2mH{r~LF`=((Hc-=~rs4X>Wwh*;&h-3zz@^|exQWqVw%^pc& zc`JsIt69*CnDwe4b!zRG=N*(@IiSptIT&Jw1_)kETAnW6>fhl%@Bq5prn}7QI?K%M zD$6O7dsPzYy#kI?tPsZPkfeHl-f|sKY23Dz)%0sPonxR6gS7!va^qM3YIuSun5lzP zp}Im!`puKA=sb-a%?3F9wyKuipT78Q`#EsC@JF#CS0;8CgmEyOPfQYe4n*sS!3+oH zrpL+to=uLS7Ci<4p_iR`l-@>Bz6hxu$l3bvaRPPZxjL692R-%bfIjS!9Km zg7BZfm!aTgv51vQnN@;jKNyBSgbdzAI9ec1E%6L#x0cmLk(P^pU{qw$H^72Y3c8p= zB;`0kZP*O}p`Z>Evr=C&OmQT;Hr;?X!K zcnmUAR6glpz68)lvC@*%A0if22Cxjo?m}otb)^to$*-b+2*x>A36&PGnjJudcpiqX zVca}ZQ=P3XpvmQVA@$Y4f-yvF)HxBEMWc4+p>|BqVh};`fOgI;n<;`BuJNO8=51)$ zCVi^Xsp;QVN9&90Xx-J(T}vYqCMIFBNcm(L-_BlNIEn|Oesq|OArqoQGPJ~V2nAn) zM#2$=Pg6{P#yLZPZ4j+6jJojv8VCh_v4~lWISSZ4(58!8@~ebwyHuD0c*qzEA_TX> z!MKm3#24*8 ziu8JtV_HGzXcj;($aS$Tnm!a^Xn4=?fz3_le~-+dg1vwJ6jL;3eDMGPg zq)zyMeWKo{{64LgtvjE~7eQJuw55g(?TJ*30mnGb$H@dGmdRw&bki+TV`0Dc()iq! zdEG??-R>Hy10Ti^c$;7k69wH1_?4lrem=zE6g>C>`*tv7&>u`_e(hmr@X}shSK*tz zpAL^~o#VTQ4A?#66OM-4MK6tb{)gi|9R70rumOJbN2mz$3zOqRax20m5*eSkT!*YQwv|BV-7xZ&aoM20K{1V=TxkeK0-16hVfRpN^-V*0O;Sc-mGf{VkY$sF z#58^?>BE%(0P`fkEK*%%2|#PQ6dU44V>c_hY;AsZRfG!^0M}+CO|OCuLk%6PphY^m zSXfJM(?Ncer&yESG=k2LnksvL9`sn!7a;^wRK=>5+tlJ1jo zusio1ciL-c&6w_?;DT9LPqirHs;lv2?J?fpD>03Tp0o_cUPWBxx0sKA5Dn8y%;1>} z7n3a+E+bnqbY(NHRJu9G3#e+>eTQk}b*+a}xv|IwIRl$h%S{V_#U{Z}-6XX8nik}Jn5G4czD?6IjEl{yuEpG?u^4W}22*GQ~>7LJ;IFs*CxHOs9) ziiWjvP$Eg`R*OvPC}P_47wtCm&>a=sQF#`W!Yr*4wH8xSrY@UX)jD%~9nCM8O49>4 zn;%k5}FP(SO~%b!(UrU{^L_V(sXR zFuqH!uxk*9Q3Tt6P*729y)?Bnt5$MhLha(hsr&Eb&TecJw33E`D!dJuV`6|5fiCR* zRnrPc>cWUH^mh;PWOujet~anSr!@63n7e>^fZZB)4MfF64eYfEE3=6SV|d0+xYh~R zEho&#T}A*67aC;n!!Kx~G=PuaZHv9loqh54!~UD&or8UUbn-%McDryY0Tc;#FLFFs z@Ep2%Z0pvMf!L`Rs$fJ-Avkss;bDlkD$U8{K`_%3go#ys3=ho~E{;&8rjg1mdaxCi zd`&k%U)G~-_q05Otkxdvhq?nkLzw@}7yOnb*k z&Yp=Dlpzjb|CjDHeyPVXl9t&stC-VYHTIE6K2VVvbaSe&M$tX;5O^fVeImr-5m3=GGiISyZd3re4$bV_Df4hBY5d}UU_fQ67!xFi@aXKCJBP#(EKY({R`5U0 zj)Uwoa%KO6^NzhZ!@+68BmD(wFvt`FHT+1uN$p~4&2g+IvGWM|2L8z3)}|1at9mmA zB?0lD@Gmx~*OUEVpt2MO6$E^Pg9?6p1^93H2qAa_*%maG=Ai(uU<8kKI_>e`taUTYW$sq2U6Np@(KK$jzg7)I; zDEtVDD<)h-{g`28B77L}@V^loLkP=Iv+%9?%Y$UX4_@bv5!Wla;O2 zX{i7~EX$Uq>6a2Fg<9>A5E(Le2_uMqdIfX~u9Ox_iMC;9D(nSvvN{`YtLPYPL#cpL zw^y*)X|v51N`ggH1#y(G`4h&5g)SMJG$&u#Ya)_enm|nx8ep?gqd?9~toq3nG#!Mg zeNUVY8DXE>X$lMd4d?_Ns354~R$zAk>4%uE=1mUCVHL&UY=Xmjde94gc8TGCk-gL4 z4CmP81W}hD;ne~h0+UMaUC^wNx~%oeOc2Z%B*WU$ZgFyD*2}1t-Oo`qx2Ov)0<_+b zdQ|LEil|NL*YVos^xc^Z@hC(M$NHpn4$DK$vPR)Jo1g|kOL*8n!o&ob6 zg9Arg8pQ#99w579z1h;oysn!oGG{U^YOjpV$#Z9+^|`+$9dUqx2ijTDf(Mx!E#h~ z6{W^t=whyN{5Xcows zS*mn=1|o8ts8G}y3xy?L0nv@JJ=KxAVoqL6(_*+#h0HBO;m`}Pm@|zuUK>{?aSD{_ zHpPTs%?l3MaFVtmg$vv$s9{=^NpVA=t+WDvf_0{{;JQ_gKUgu( zdU9gTV3mY4VYIshVih@gn2Sqo%rra7gETL&*o^{Uk?GhJ;B#*Ox^C4|2MA5cno3C> zII#T`dO7h-mkFbR>n%gKc1>5sCpFz?v*}JGU991gC-_?(-L455HI)uLJ3a#>RE-*A zVmqS_ze!5xMK?)*0A5H#nT?lb?m&vGpb~$R*s_49|QUxX4xRtD$+*00^%LcbnjCmIV-MSa6>B6`J!y`&ZuqfsP%tu?Wl*~JSDimMYqKp8>DOCFdNyT9H z;8+*#idIfVz5A+TBYwp`W*xUv;HHX}orM~WSux0Hy}-jKb0{j~b%W}D8>#4WDzepO zT|kvK)hb0!>xrB70Eu0_Ai!y*6#WS@Z*6CI1Zl|XD7AAgT*Dm;>Cq(^| zTY|#)d+y+Wn-EGnWoS5{%*_nJ0K!_6P;G#Ac~qJlEa4voDh+WYK&HFnehJhTTYH{Z zX&y4n7;4h^a<)anG7Ri}fGq$&!_6Gd$*(RulAM!q=9b|iy<9V-T8;4NoVqEE?tp_0 z9wT~F`N$^Zn2RV{^J03(8L&!m7d0sB8{S0|@p6uTW3sknWz*#-CSGr*?*)SwSTv6^ zzG?=7n%&Q8*}V(PO8HLc@dH-3UVP{C;YZ`N2OAxcnYHrn&Z{I5l*LIXNDAznRLyc; zMzf4hDu&^D2C8Y=YJw6dDGF=%vX#~=k7!otj^OpGBXXcQ`s*mp;USfF2W>B*ZYjxf zs-|LpXeBSDWz=s;-Ta%%dx>pphpw39XQ#+6X)Z67R$WYBX@goN7rCgY6HU2vd#0Mi z7{Ln5uC+ZCxsj?)3O!U!ckk(Ot=(TyhUy-MlB#;bp)9@j<6?^l+2Lv>oGe#gDZjfT!lNX=# zlwBs7jp#@34nFK|;hy00Bmv7i8|UD;Fg*pI1?~$V=brRhNf<$aK`+tTC{2=H240Ow zSto?h89>7x>ODgj<8%9#SdWA@kDWHnzFqZdHvBT3R*O%ZEL=UiyIlSUsT)u5+5`}mPg&Jn4l*mA z-or75yx;(Y9*wb8l~3~NQ+z@kV6(o8vzZxaE0D1Uql{_i%QbV1_sG$$h5Si1wM#xzA&` z2GF;wOB@0)`2cP z&5GRBQ${G)@mXI^*m*JrFBlP~a>xmo!H2{T@W+~u@?LKhaT-Anuhe|X3IG|l zCr`|?T7p4HY2s9#x7j)WU>~8zu4Is;@)sAPM~gXpFpSTsdGLpSCXtLX+mx+?-@!E- z!kRUQEhfWE6eUr}YkV?%oWdVsVhDrPffx|fIGZT0zq5#JAZ1e}cA2?e6kopCD3n(l z)m(bith@KsP{mr*QKy!gc{jnqvs4shRpt7<&DOuRCge&>E`psVC+nqoIad)(r|Bau z_{kGpMbMqnnjH0i=LF#?x6^k>6D%x-nA$V$r+y@b`p%Pd#uFxjdTZ zsegb!r-D$N`Yyppe9D;SJsU84kzcM#`D z#78{U-msS1Ak;j;OAP4Hje-xd^S23IBG63&{L_Gc4YQ3KT+1B~L7XTf;D^t+XdN|R zC)rOCTzMP^fJ5yLR#_#^=Gu$)o5sxzN1A7eo>50Lzct@3FtqsUh}Ih5!yi3~VBG>j zQFVZa*B`*eO8|k{calO?TYAKF_!yyFcqtb6R&!9-XKS#mYh41J;8t|802)o#yCuDQ zK~BwoqShBBEB*CYKKy-S-`;=BBAML@IAd#~pkP72`c>92i*xjGKr)bD(G)=DF5b{1 zGiMyp;{69m!w!W|fXl5xa}gRoc=G#6qY>T=B5~o-cNrrqx_Qc)byqb!I>;_-Lgw}m zZ282FzL_6}@ zuQbAUb?pZLN&9jgK8F!Rf0Q9o7@WnhB0ceEHTLq*>|6PO-Q77Jz+*x2_jhM-7iS>d z!S@9eGg>Y?0!Wzc2o`MhuMfXnZXVc=kj!O& zKO)sY>sI>srl%$6hwr0|`*SQ`?+2;l*AKagNOi!cEY@h>Gd5he0s5!~SiiziPyaJb zF6lld#5|AaN>+p!FXcakV`ResrnrR;zMJ_!=lI5bFxE-c{*ThOVxkjah4WKm4u*MFwdWLpc8nc2?|S zH>-`TxEyIJyIjS!xD^YI&S6$3NTVSe_WtjM>|*UJ{>+*CnWcg|#X#>r_9>d`X3Ex# z)sK5NuCi*D4zGNTVchL@3*6$&_u~i&NzKRY?9M-uE()$tI%?R((t-rSruf`6oL%N;oG^ z@b@#^PYejeT+@$x%u)Lbifo|6g&VJNBW{epfn=7+n4xt0&_Gy#033p+=_P6rl9Z2B z3bJdCGJ+uF51)cZ{3hah)^~KgvzEN+pL2qmh-(YW!m6SQuO-GfZpkHoMG`KC;Vmv} zYM!>1W8C9P0F}jjHAHhHteAF%8c>h5AAc$o)sRvMFibv?kDnM%%c~#CMx(8CCwmV! z1ReC~Z1m3XZwUaK;!TjACj|1uZa|;CrWDb_-aJq7gIYc3MD&|+3LO=lM%&p^-)i8N zZHT!Wl{n#p^g{;A9JyA1-<&X*J6oQ4F$QasvX43&R49abLk_!f55FMt2iR`xx2>(g zg@V|c!mO@}5K`2T-mL6UvNs=}LC5!b-n9%y(P>kxu6p$UmjclnVXmillT4+TtG!&9 zV>o`D;YIZbomJ%|NHvvJ#I&s65XI!fD1%QX=#O|*U_jJxR#O93RuvO!1vVPA1N#+Yu(~xA>FEvhMxQf|l9tFCgLd-U23=8) zU-am~N%YlN;<}W7Vm_2nokY6}%Sq;o8d6HQo~~ff>Ihp=Onqlv3428G*ih4}dR9#6gN^Y5?u0S@Vl$(s3#z&&R zbTYkKg%M*V9sLQqC5VAb1ow3wcftFX_qmq2m@Al<;cyXuq#-gelmTij$IR+u_Tfv2 zWP)@l=j^`56ZnS^Z_)3}?R6wd$tXab}YB7XKL_|t_B}N?bUQp zMfID98U2)h%Cwm8ukWf%g)c|Z?ym|`&+4-jtK}HUZi}NYkV|y^vG(crY~76_EeD>BT)0*HxQkF7l@+1&kd^`s>LtmLI6}THE>4% z@{V9yaYOhwagkPZlMIg^tA^qR+Y}b?OC?84#Ff@W^ppu1WMw=ied?sU#&T%chSS5c z63yo$bo5(QG9ys6E)-OD>Xu;lRk;#kI1>Ptc!-P3an-!6dNOD0Ti6J4Ts#0Sgc|@4 z7Yu-Z3sK@S*BC($@MGOKHoHb&Ii&IP81$+90u&()7dEZLoU$ufyhSW6uBJk8TjoNN z5xkUOq_0X+7Nwi2DdLRws&STWv!>NnwA;coj+*iO)@<5yxmEGfaT9WI%kb0_jhj@X zDmP%#295hnUODFDwObQwKva!G7)~65?zzK%PN_yVeGwi`T^#A)9e@K|Sv-rdx#Jo= z5cws~5XuU4bw+@D5J27XrWUOg_cHGpJuxF=-@AlUR&wssu985Wz!+`<00!4pM%ePg{(KqT1^<_%|6MpFPe6~T(e0V#N2PY{&K--Dn z3mLG7h~^ovT-Lq7eN!w55d;cw{?3N*^S%@+9*)M=EhXoOv>{AMERUyv?w2lq^e2!& z1nz2WMBR!d;nS_nKKcA??wW*u{ArcobcoG_o4^Z2t18LkDm&~DbkfCQJIr}vwzYTVp$#fwLruW*4asFH#>D*`0?N_>?y{vSdl)D zwlCsQO%mSE5!Iw!Mi+5cb&4x=HE5rdltujYBnY)%%00>%%O~aJT5D2GD7uB}P_^YG zv+)pIW-h0eNi?5Spy8#aExCoS7@c^S0s}%7a#o@?X4^UeXbZvds36AuYR=| z*xz&2pQ158{9-i6h@?4wG)k-CDlNLik#MjND=}54NtpqYF>;$9O~L;BbsbLO8`tKC zhCQ{pD2L8TztO_typaKa47?ckmjQ2M-P;yjI)prc>paw+VnqTkcEw^*ui-l!*?U$? zfE|qzKz=H?4z>Jg=~}8mUzZA>XP}+hpPtr$+6-|TrVwA-F>)ACT_*HtqaZYS6r?_j zBh(Cmq{e0{Fz(SPV77@NhN40*b1IOH|3o(z++D4y0cw3#`$Y|ZU74CnDd*B(TC&s8 zP-l86bpAz{?qmrDZ}f>}LlkJ?LMID;YTCk={gMka-=B6grf2rD99AXM zEnvF7cl^4n; z&4CB9x_0%@^)~e)|2OsXL|6I3p9Qx{?zviS6}~%QgmynWfMBT@jd2pInlB&{j7mo>Rk(gQ39JMv+d_{iC`OIvE_g>ep>d*4BfkjgFs;y&6tb z0BrfxQUfJZX!T+&!G>wSTHgF$aN=g}P!>of@~2CGKGUa(Gn()5CsV}7_W-9e=>+Tt z1S@yT-D8+btjlqMIW+s8h8zm40kU5-5;=)_P{0qk_)lX3EGzRldBT5{J{vQJI?YCP zwsJi~{C*c+kD@e&;nXy0YLRAeZW;3M%11Ks(@Ai=m!U0ZP=z2=2U%>01U{yCb~oIl zdVq_6vM~ieGCJVTYf$}iC8>NW=TSF}M|s0zn8`!$_(kx+0NcWbtQ;b3W@a~#PyUg= zp^BvWR2Yh!IqE_mB4CXLVp#|>F%g>bzeJwhJQ0GyYz+P87l`r@jjh*QG9-p!&VRc z=r{tLMIU>cGA3wcBc}X%waE&)VqmjnBkGMh>gzBJ)Y}ssz*HD_VdQgACPofgX;Ucb zi{7eC4sR*_+M3>S1FJr;cLgq{PZ|G}ON`cY41_n-m<$G~0Bk8nWfkH|52;w?r}ZU& zyO?V>N2jsWVd-rE{NK@d{nxnba?HLW(~mc(*Ruq6mG5Qehf!!H0{}%?wJ|pPeZt7$ zK);=SGzzYUM|_he(`BA}(Qpi&@uC1ily+ff4yJA9IrO-oxc<*@%Kt|7ZFyh5nH^md1J3c4*n{n#Lp?`R=U4+8gBZB>d_uKoYZ+8y2#a(%9Z@xL+ zIoLmif5-3O?YN3%8Oz`Pd2?&qh!FQmO8U36qFxkoG|n!t2Wb{W{KCB&*F0%|8G1vj zC)A4(MSkdrcD9-=5ASY|u*buKAPfIv6pWJLHi7-k-Cej+fynbG_Ea!a5e4fBYa`bw5Z~LS;SQr@td}zBZw-Z5HD()5vB`7;6_xFyR%5{&i`W* z)cSpx7O2_XZv!lrrt`3+>D+H==D3s29os%kzCV%rmG6{fG&#o z-O)$QFVOk}7ij&S3pB^;u74G;JH(RQ+U*{sXK_B?;Ud~s8pXYGUF}`HN4w0#R{(ONGdf?cD=$QV5^D%FsK0gpMXwGS<$CZzWa_76ATY@Z&( z?>`HexO-rX$p{#RCX5n)j?+NC{Mc>-7XH_oZ|J|im7(vzi7=FpH*{VFG0y+>d9rv2 zG{$7O*{!Yp7=q0Qz21C#mx$jj{>~Qv`mgUdkB&|^_qR^BkKSy)-(JLketRne!b)3% zTD!G*yi5AweA_^*?}qVh4CCdk34?tRfU7#dC-l`;r@?yVG;)EtxK~N0moz#EnxB*b&-<&=2j)sET}x|OO}Tk-ey0(EVQ|DaSUd$4IhI9 zbK9_+Wg8FLWNIiVPfi(XdK~K@oAg(4MnJRf1AnWIZP?tLV>xz0buI5?Td=94Sv+M^ zGa7_d^~*TAVzoDatMpe!v-CKSQGDa;_{vSaTF}-hW!0Iz<#b5M&1-g_6|GP1kw!I} zWtRrIRwbuk{8!>9MIHDSjf&Q^(J&yf-k#)|KP9Q^MM$xv5VAGNE36mz4Ll32VHI1$ zs?{1Qa;(k?( zP}tI?3FpG>xQW^tQoGnrp)mdLyhEpD#ZHrQ41`&lNbl0q)6>&^FA^;o9<>Sd#s&pi zC5&Az)teiX%IyL>uzqWUtQ-2QHui6CkiF?x+L*qxL8dko-DQ zBH*u&=OzR{1i-IKSscuh^WM8}4gjTr=u_N&K7#MpP&BKw1FDh%^6}Z&Fv00@YG@5r z`|!orc4k|H`UzqyATsK6kl>dhUsQN&z7=io`fFi-Vd>AcIkR66b*wQos6a2bM;85> zwmujXzptfuuMd@Xmq8SVSj$3C?tJMam=LXy+nphIIzztE8S+hcm$tjd!GrTAMG2IS zLul9l;6W{0s2%&eyf>@FCl|(xQv?80+|}FodwL6(P8gQyOv2c0Z=iCv#$P>xI!dxC zeT2P#EEqoS4=J}a0EofgJa_USQnFPgiwd@NKyrvJ&&~!7%77#ij{Y_*)6ep%!l1Q~__#CL+ZoKP(~qIoG45XEc_|OGvxLrQ^~6NZNr6ubd6xc0 zZ|x3D;!*Nj?dERU?zYtrdQYD&Oqu9ye+~3^@qifa3UA13!~nW8`5QW5(9^I0E$5ei zJv@OCB@Vn>MU3*{;dV5iB7!(;#*XJRy4A4e=PTWry)hXFfNxGw1-Vc1{E9bM*gRF9 zXi+qv4?q&VL<0PJk-UPJVI3zF>&NSkFIfb^O!}-^LoYufOvG%~Z zT%-EelccP^Np9$%mQLHx&SCQS5+>C5(y~gjsXR&y!XzocOz<#V+18vG!EI2jFzYob zpO{x(O^nkT8kA1Pf-6EtJh-NIP^aYO#Sz)5tKU4AT$3_RI7E#IZf1L3_V%0) zSer-OKLNxOBEHo*zjQx;?onnn*7`BT@_XHfoFd@y-GNsF{ea>yW0C=z5K`|^r6Ppc z^Q6-25Aah*837!fmmN!d)>h8E#dWVH^_A)medGlu>l+ysbR&a{pd;%Bq-TpChuNy? z6ED8DJ@a)q0Ji-lOz4ZNCFNcMMR>QUJ$v08B-So*3+9$ibM%sbIKL%U{AfqII_4j% zqu>XnzZ1VTc;W{%cUP`!a^}lcF(TJPfIHNa`$-m6u3E&pq}YPk-tJ;P?uW0rz_zv~ zp}X7U25SsIbL^h4DjJSp7_obiWan~rlw=Eh^L|5hfFJ8K{T_rj^>2WITNL&=8zzeS zaTM~P_K|K>!xNi-OXHo8Lgj=$kHc_i1I4+@*EYHh86JMnytZH4K(X-i+a`(q4#YM= z>z3Z&$6Ni*#Ir5X{??D{5%md@8(E8{NALAJ67q$@?(a@AZK79fK z4|N89%!ffu>^;~qB$&-F%8}KELHd^hYkoYyL#dynG7KnxcR6{r{Z=Kux^zIJ3l$ct z&Jp(SFgN^$dsX;LdMW7(5)8{_uUOIO;f;Q^nKki}&lv`2c?K(!m7EzF1mlY>ESpKC z@N`Q+#F&dja1yW6E($q(i33vu9Bx#xg#3AKP7f=ELvqZenMX5isuPA4XbDo4zPzki zT3*eQ8&n^EL*O?L0(NJ?Vkr{kSC;S_0@hzpf+p%z=&kTY;GkYt5Ubi;?{dkC#%1Q7 zEk?gS)frTXHsexew8Vxur;NiT-<&+%DsPi*Oyk1>)l;U+p*T{d4yaZdmq7 zE`X>oGIc7%5(z(^FXZM$M5=4c2u;qrZpiN~?$G(54<|bX%304q`i;HsZ<_a~j}XR& z`3-);Md6LLG(Bi>g1e&vjPMF6PWNt+^3#47w+?s%*b zr3}Ecw^MuI$_k9fZ_0G9%PglCa<-UDo!4Xg8LQ+1&&k~m=r*|m+Z{6R^--~}4dCCB zp$aq3pF&9H+9CbsX=zM@VFU;QCf>U5-JusXNPi)RLDjT8pDuHfkO|Gn+qA>kZ(2Zq z|DjWpW*!d-SnxWBNnn?03rpOVm&m83OXjCi3AyvPw6Tx(!EA?5>D;#m(orf4W(iWF z!S5t8q4@HKYjjLa;Zt_qCMeN23U9+ZKN9C{#Ar7YS~3OpaSQc@A^wzdH}fRa7VAvU zFeMh$x%~w6Bu#$JyL;RvXV1R+8>@(a#BP$&)!{vcw!vQS^?u!0UHqj5J^ox^8yeGv zrb^THNgWgn8kOCJ#KN*}Ksjcvp_Pw9N=hLwud17&ppFrz80do%b;x_7& zu>Ac;*;=*#h>HEn-#S!<5tfaPe}YCjpc-X=QZnJk zOGCdnP(mFM2}VJl-fDs69-gcslY!wlH@^UN&?W#=4kzJk`+W&58cNlrJn9r2!8{`P z4y^=bsGB>flIpt)1=}iupzoPOtbSaHJ}np=%vk&BfHPFj7u37^ZpgM=E0w*4Dp7F= zcEdW{0~Ft+x-#UtW83J4p*snGM$^B#;i^leNzR7tjr1orspNZgR&A#vgdXC1FZodu zWgagoZ=-{6pwC{S0=)F2>b{otQ`%;i${<+!Fz_*(3H^wxzMs~WT^sRhwRE&)PBzY+ zih)s|`C((eutmCW>l%b%Qyk{UU=KJk+$ijdYY9>U1GsXB{>xyHB_UXU{4rfGX!Q2? zwp5IjQB{na((iX9;Ed;NLMQZ^D^f)2$wW$3jVs_Q4z~{izvfhtv3jnb@Z3WP6GWoS zn_;?HJ(A((M_gLr(cBqs}f>hwVNZEZ2+SjW}3*{M1IuFTFHq@-743KHgv6OL$XG zu0{`W&?oqviBdet6MWm~`t{-KT!(yWZ-Q@uUgjt*?JG{wj2{cZcX!2fo|NSfAqD;K z^}hJ%kB69b%XyUgxc-4uq%3`4^X6!|xRQlR!n#c6b4=$HS&Er|JcF5v8NFnjf;Ar> zkM|uR4l8j11_u7{J)0=R%fxY-+cTkLhG}*oiLQ;FSLljvC_?4@Kt0F%yptf|0lLnK@&meg!3nZir zaHtK#KJQvep9j{xwsASb_q=5?z2N%StuCuD7fplI#5Gt#Gn`%w7@XOOX(5wJRi>_4 zCc;Tv;w0mL+Oag9^Af15^`6YW)L*a`h zChJPIuchL)HV6vw3x~EwCsL z(eH(X(BP#E0D*+*yQ&-vFi)XHF6KYG_6a#C^|{Psk*Fp+&#ThucDO8FGbNoIkOfY( zh4W*7=*euBx+>2q+Xz`Qu}ye80zA+a&`%-lh8jZH4z|~72&5~k7G^#Sx$JD5%T7ak z+TL`7>R7zV&R@ZJ$Fuky)uSESXh&ZyR}0ai!5T&+^ZZxOg%;9rqgAd+xKxT-4dHBh5#yAMp}ZETi7-|5(epoUDC;xPxn%Fp&FaX@KE0w>fA zmi|I8!>?7RBpzEf1Y+S>PAehKN3fCSv)p*o6!s67ReBE1M5J7D{W>d}WFax6Culhv z4u@hd&t9qon%~c&%!hV@%SsJ@GJA!LKmW@4eN^i%4RgrN|4PZmsO*%utP*cOYALHr zNUJbS>COQ06b`SX+yxey4XIzCi?gVy{vH9( z_?iTNKuOm47=)(>Nlean`!zp>7k7s=&(1l%HNH0igHxK*zMX(s2!~Ez7<*$%-3<<~ ziWGtxuK3l=jZ&jV#{$D0H`5D;e|Xq=84+d;<`gj`Idd(dR(wVKWRomDcB9s=)JVQXehe$=jznRWJQ5| z^+S<-7s-8r;?dwjmn$UT+C4nc#py&YUWg^~H;LY=uGIx!S@%(;*R(yBf0gQO=V@8t z%m>X3RZ`wE$L}x4?QoJqb|6b{|Y@DUHHMTe4(QHN-Jw_b(_@+;P??3@yib@+& zLiy~W^W&A*c?ZT4kRSOkfYIM}NN4}1_q!c)pU-^Tp{_tX6oBZ@nCVezd*#&Ak)IUTx&WtGniSYrFrHkQ#nUD_jMDKtBonK%$IQ zrR#7uTCc3ey|lb%Ju-(-k?a`YCyUQFk2aNHZT&)^WYU^#pYf?Pfz^R(@*vf zzS@6s_{AsnjJ^F)K>6w6ljG(bthDFwOwi=3ll>s`=x{s+*3ZY2(a9v1xgQo}a(w*x z^WEbwCMU;FqH+V(f8(ctIEN>bPXn!fbu@xUFh_?^K*&HpUwm@-#XgJp)zet+r(aF> zj=%XL(94t2cl#&L;Vb)G~?kNgs?n8HZf8Z~D>xYC{IOW;MFAY>?mGZ54 z@JA<^vOqe@f1=a*N`_h@6|0t})#S7NIEA@kO4o3|(wiOt^$mTYRG!9Da|U*qmXNt* z9R?>Rg27@j7JlPR2l%C|U`-n+TR%Ol;UCk=&_n(s4z)^52U)DXC}6JFs#OTnPqDe|=zRdZE`JcOh`=zA@!m;DZNf zey-&Wy|y(#5H>=~ml7Q_v|><>tIWr)T$HOV6900Fk@B$-7?Z)&Om}ITKmDhD-l@Vn)|8kW?;Yc{3AkUSlJ$X%y%Iq*f9y2=B{)`A zA@6*0e>YAHhiX#asCJrMA=whA^BJqO%grlAIz`N;$u%R zuYsVSSRVBiS=gnLU~PfXn PjnAEOb0d1?Gapc2>n(&>3dIv7f)|LEf<7}vKrH%! ze;Djmwy`FBgs{w96++m#hmQP|mW2rBy`p;FfP%Xzm+5o)9(OK}5O>m?)*Gj)dh=C^ z!|#Yy?#^XW+=ISW&{jA7@FapMp6$SS6Hh6rP$~`f?}|iiuj=L5{6>_p*EFMTBq}*A zMV|GY5a0;6k#L?-(V_&`Z8rS4JLKG1e^W*Ra9XWC^Y?@LJTZR&%~Z_f>Ec|JSiDQM zly)TxoUoTOT;RrCp2%FM;uP--MEM(}ca-NP(VNqbaU#UKEeE2PV9_M)%IgpGjwA#w ze@$_|aE4OgmbRHZOBQn#JdSe>%A12vr30UdOMRtbn&Ecl!fcLB&&>8_Ru{`=ejp9&Fj{#gsIN>p8m_A{@eHGa4V~ z;5ODlmmI&c_it1Z<@6Z9ngFLOkN%^XMHk_QHVg8{ZIh+2q+}_YNlVdie+O-PmQIy& zaD02m;)WS4b6gReuhcP6;G%B>w5S4%wRF%?9AwD9{2;Cs{2BkT^%PcvQYO~}gX6a? z&~94|5pQ=(Ejs+#h?si7f*$PbFyI{(=Zi}kQI5pJiaKW+;@k+@ofov`=LbEDGZ1^& z`yRp&PTy06M4jY=BEO_Ge_=zvp4;pnEB}sMd!D`fi^4wwK&blwNRNY@@G+24JZ=^n zM^}-Yyx=$kk5=-4b$cMTvN`$)%gHY`v$4Mo4?j7^Ug)o%ETFZ;IYfLvAEtGA%w!lx)Oxn784Krhff1UE*Ibe8%gimBC zBH^$GLOHO?VnR?}$hFBBTKJiXk@`Nktry>#_26Is)fZnc-+OWUwerQ+-kc3zEPF4O z{Vg$Yi#agd!ITcRmhYS!7_%7E_jN%CjD*IrNRxT`yL23Y=;MEm!O)*BF6&4|#z_^N ziogT|&W8!^!I8Osf6O{3H~gcjT<%Ej;pP_h9US!)WzLe{5M4HffE*)`-0xw1!^f zaa0%aI^Ou2Q4f*bz|?A?5BL2wy~E_+)HyVTUz2q^hxP!>t*-6Axw`)K!PlDg)xBZu z{LMA>uMfL6SyQlng$;tF#RP8WH6l=Nm7#N#e`LuyOSMJo%{XK4BQdbOXo?H# zo_2n({mLcApVaCQkCR`gGdkC8Z?Et#BeIM{qL9t8CRc6s+Mv6ndj0p*S>X`bE!MU! zmR>RAB6TQEc;&{F9qyu3N2X_B>FL>xfMl=I-D@|RS6>dev%(THySkU2}Ej#69VUZ2S@gvq z+p}^iot<|mp&MQKvH-KCD4@j7-BY{$f%(xBe@n(%Q@5(gDbCYtfBDWc_~5vbS*fR4 z0H7Dp@}cp(^~85~Df>Z*`w3~Duuzyngc?08N0`_172_+y-}PjxR_)}%?M^0*32~@u zA%j4blNEFE*g)Eikls!%A6}2V{4HI)N5s@iP&Z)@#ODQsacf#P)e*3tZ? z?q`~@;Qbm!-6WXCOC_zvl<9dU9$`8bf1Bd@nHpr=)joDLSvHS*GY#Z320rbkaUX`E zxz`Otm)>{sH6&H@e}_YG6poj1o#(|3H|C^%%WoZgPnL9XabDcjG8|&Nnm3jwQoRhp zt?YiP&~gA`&)wh83~elSuRk=(`q8V`kkVgPw@%HP=MQzGyMv1dZS86*3ezYZpFUdx@|_Y-?#a`QNLguQ_(@65V&$Hh~W2YFXCEs$sRK4V3* z@y5$TWP{cah;R>9gS`G8lR?fke|w=c-&jB%3+`Krlkt~zD*C@p)3=9vaA^1N;BfTu zlgPsahsqz|Y|KL!ykSDuv!b;pb=`^G4uW)>RdW3ySTVr7GGTWjsdtU(XxdYmvmz=?gDfP$zAv$Fn2S(1sXRavP|QG ztiM>}QoFY$n^kNizI@}7xlb$M0OucOCES#orHGox-4}gaDyt6MIxYP;4DRkvw5_bb zH zmt?r~@Yh((CKe-HdTTF9+}%PP+vqYBTfLI+XQ^TX?#M{h)gS#uwxz`i-OGdy=B~E5;?m61zBpcw}iNW}h3~d*3L~%1bnwO6MgSjj())#(=di(P+p!EYTR$aEV4MWUVC{ zO=OKF8bcz!e?$|n$#99r7wcTOr7^!g7$ONqjA*J59l!&W{Fr8lY>ir{NoeJvY#>i<0U!Sk z$G8EBe{hJ~2-1G_?h=y(XJ4@zOe_AbOGFEeIo626Q-o2i5=XOtaGE&@q zGx_J(17!E`p=Ym|wO9J^W_h)X=Is-8jgrLlFzRW3je&Qu$bL<3?rH$_{S*N^pUpki zJnTb2Rwu;g?{g8JS=gS9srkLR3p!pDXUUXSF#&iEVK?6X;iUE)Y96LnZt>Wsq)0hw zf5VfnzW8SJUD)yYgnT#T35Dde(?+OstuQDiW}`Osb1v0`7RbIier_HvD}M%lVCKp59HZH#q>Q>nBP|OqJwj~mLPUo-Eh2n=PIuU(gET7t9PiWubJ21 z*cUd{zLqK;A!&%ZDMZOcEy99zi<({yUtYSLk%8TNousDO|K+1e+snn zN|L71c_m3BEMG}7VC^eO8nSUEi63odYx5w@4_S0vb~4!EvXj-GzwFe$>ZI$#kXU2U z$&!dKI+==YUT8A8@r5QIrb^16^_o$8X_?AcUdtkxdz1ejA$m9|xlU5b;wPgnr zRjP7Oj0BI%IHlbSTuMzqH{nEGf6_o|Vi(CZ%D8&XAGJA9_X$oDvMgHsItNdhAw!u$ z61di7t!DUiQC>`d>MeNTI^bAVoW%kn&7{N&5R5F46gUz#OhhD=*k-_QVLICf^RobX z0Dj8B84wbj+878vTOs%-&Es>5(&Tp<1@m-@MbZ;dvP8mKe|fgdRyb2c zbST%*J(F_z-Or zo213^EtDafvq6lXWwrY`}TTQIS>Y>!@pDsVAMylL zBDuT-Y4x*JQ2S|lA!jXID5x=t=bvDBf$mqZm{0Th%oQ1be>W+Ez3OFt4gA_E>WEy+ z%4Dx7)wW)BFRe*8FLa~@I8am%r>s(*Cs6U)aO^3{zQA-+Rpt5$&|x7i_-JK?wt_Ex zwlf%2-{+Zi#+XzWlj|KQAmqdEkH6S|elprS{A%3dI**IfwAxLJspIS^Z9S!tG&;JW zi=R`T-0v*Se~6|`eVJ-hjZ9H)=-{vxY^L>jG>~y~@LOAxIFV-yId`3}NwIN2CX+&f zav(haSr$X_Mee-Ax|}`*5TPSF(E;;OT9$ccLQ)=fKsv|51!5cLetN^6zYEJrj@k|x zAE}VbADmrMhm&i*>}a}j*|~o%*aku_lv%e_kHhbPf47_gSHvX$I4L!UrGzu`kx9v9 zy(oCQuLH*BAlS>rG1D)Lbk%tBCX}kjPu`}0UdpV@i?ZJqceaF%N=^#Iz8UR~Z43qt zxk%0`z6CzPQE-VWAt;JO&WcpR48RTfky7*skO$Tz&Lua}Gy~vE6{(y8Gb$1gEc=~X zmm}qVe|8QN35{_sWr2R`QIHJ(`l#1FW>LXj4a|arQy6Nz4;3MPT9iNz zTXGr4ktB4C9cuPhiCQiN_swP)z|gB`X2KYuQmox+Cqw51I@12;WcBD=<8#oqc7!&U zl^>s7(BsXCF4@xPETO~=X&OUN*7in2(B=Yme~mvkQ?x(XJJ#klYT#edq#tnMYSN~> z2WCQ(LWV~mG4un&bS|;d9N4~acTO9a{CD=D=Sj-lIZhv7V8~fotyZhmYFE-q6Porq zw1Ao%BU&IjqCL&I1IMXpjfpivs6GAli&I%OdEvv+suhnpWE14i%E~Ih6M3Fr7Uhyp zf2Q9!BRr!O*y-*m+n;u-_A&&50&eu%$cvuO^Df^JfKEymBPIBlAi1h?Tw$X0x(g#1 zrENM-b)tTep8CYzXg~MZ+H5#g)i|vP_UaX>bF1mME~W z_M3Vv#r(i%)0QArY^0xSw`tr~Z)tePUmDgT*mHF_;3q6Jo%$Hwf8VbBo-5-)I}8f6 z=J)n7KWO!_Y!pd)8McE>3VN?RrcMJ^?UjPRb$#Qm!u&@0v;0cC(m%-xO$~Gle<%z3 z{fg{PAEn~y;}%a3Np||NG{#Xb?=bWfwp@79w<<|leO_5y;GL=UO5S1&M$%(kc0F3o zB$nry2cJ9XU@}v5bh!VF)~TLWQeO9fKD>|%T#UHx1|@;+3%q}sPbI@zMUS(bJf(GC zp0pMMKt)M~%&K=PhW*A5_f1DFP@oMrQj;Jzy8cUoRT8KF0l?esmkro8hsg=y9 zJ)1uHu{@GF%@N&{OnySucPaPenOxL8NS_et{RCn1tE`#=HVu6_0PWuRVlcTYF>rX% zzju6|4Cq$o%`j0gJaUVq!>O!7=^svI>J7uGY-SivmDoS`!l`gi*W06We}A+xO%#yV zn`WOs4AIhMgAlF6`k!t}GDu4U*dQ&x3WnkwJ=;9h8^v^d9URp3-6`FXKb033pg7E8_(U7sfwmaZmo9z%M-kBS zgvmfEg2VE6-Ep!~h@zq;9JtRf$_q=PH<~*7fOw7vHjw9tLhq0Mf3=iL`NkLz1W|jC zSNM^EE-#u%0VC#Z>IH^}=01bMZJ+e`r`=~i))_gZw4%i8sW~76I9fr5kr#{prL?-3 zFK0Pj7IG{bj&s6+g5{R5!<)Zc$f;M-9+UzA`RamKrYl)5XH7k3TGet5uR_0sTEL*6 zF1h*sfvQ?I?m7T(f4j2BZdI#OyQ#pF%XUYK`}V1C-KUoKjKDk~sfp9`_sBs#)~GY_ zkCU94imo#OYYG7PLQ*B8`{Dy%is+x?C*SVx{qp_(5lwY2rc`CNf&iVI)lwnu`r>x;69 zj(3{~Z<0HsVu&gLB5th-`so3#DXj)p7|k@ES6n0R>xm$7_lQDdgjbaPG<3(Sr?dQp zlV`#)Oy;loY#A$UiB8qaM*(~Q6QBg{U87w!%4aTV4&TH7rPPYIrahwOWrp6&r#!QC zW`>~5tG=y^e{PR3RAR?Xd0|M_0o_5yxZyE@f1>%C5`fX4DL6|p1KZ!x5~mJv<~s^W zZDv6HOu~5_`LfmFP{Mi}{{)4RgLdcy+3u`(>+O)<<4KF9{^6AlTF_2l=;2bXnq=qD z0COO}X~`rFM|zhg7Zt!eqEb)5PY7n8d7b^G^}HV~hJ%WCa~ zFn?0&+`+>(x;s7cYRnw`iGkb+-x}S~THC5uf9EpylKPh%dJV<3ed*Jq0bi7pvJGfS z?HIgKlKs&ehlvRXP5XR?b_J=>ZV4I+bQEgkUe^dl7FVK&eSmbA8nB=@bw;`)FWEx3 zRrTx=4es|wknMS#VzPVu-LZIjc!aTU9(Rt7SK1ws)T_hN3r37N*kAM#_@Hf0ka9YX ze~o`WCqUPEjCchjpWPQ<7tNejzs^+X51*g}g;~~;52W!q-eoPv;^54lgj3Pv`s5{_ zV4H);VX~MN^P<6c0)-aJ=Px{d*r@j113F_gW(xOV$p-YQ`@A9+c4)h@#DhZNbb5M`WA)oouMZVKBnj=+X-C&h)^haU{Pf0wrY}5s-6s=4h6QM(aipKPuee!zyBPF81^Vl)gaKkUSM&Ay=}l?JbowXSh6TN~T5!3>vz| z-eCMtCliI#H6$-wt~O|GO=EG0XVR8cEmb#FlI0Wa0_TKwSX4}xl4+DxMW+bUl&}=* zQ-6#j5Z&-5E`1MHglU>CfTWmxe+FEU9lAKml$Rh1dWK1WFoRss=Q*4JQCdlj{-luD zhM&&h|Fxx4cjz?T7^cRDvQ%lQPcofHr`LORe&#eaHf39_@ja>rUv)@vhRaz~PYYs0 ziUp)xRFZ1r;#SFUBUE8xXT@T(u+W&Cvo-<^XY>*08?{6Wty|%gv_)!Tf6GR`Zn4W7 z)QtX8v}(=Zc#SG>RaN7KvFe(V297>BLU1;gcYKqV8n$pG!nDkpRWonO%4{!YR_|nH zFlFst?sXC(yIUHJwFZm~Ya(lnbB)0k0=<_pNMO8ClJJJg0pRfMrGq_NT&R()?lR*k z)y?MV7_ubfiI^4PKwD{xf8nyqaNjHdsNooef^0RZcvUFICUE#bkgHX!m+f^)48^tj zy7t`TfPVBj*&DW*jvpKrAf=$4SBu(+O9ZpYvxrSnCtfu~o#h%7l@7sbNmX2=!or`^ zMe?Kjh$9p&JAg3Xm#sjYTC!xv5auRiDd2Vp>jLTAP@vk}4Imv5f1MYKlt1i!2P#Xg zNW~YS{2jV@IMo0z2*K~+Gp@qUBx0gW^Nm}xaceei&Bm=+#jV*G*XuB@TfB5>Wa3;@i9y^6U(HnC_}zxw02V*#Ob9br31T z@yy8>^EI=>?=Bn%f9#}@u-_{f>HZuY;q@?=;m)WCoCdDTH~ZPBv$@7gNVy3#X^}C9 z;ErF=$1&*P87Sx;p21B%l&BY!D(4m(_%rIvph4Ekp`PGe>sMhjbZ#&8^+oavnDW- zRoAj66F4A|NUI@96pM%}OOv!6$J!FuScvPg5I0s$Xw@j2(0M#yxGk}|1+(5tmBE6u ztZEj`rkG+)6_xW|#_4uewV;%!&Lj|Vn4Gpxpj3bJgmHz|iA9w*PB6Qd*yJU zwmJ-dLX*Sce~axof=e42P;rNik+3kJVA85|M-n-52Xdbekj(W({D z+X%|+whX`hjrYA+yVA0jPf1am(^^f*%Oq2Me;(~bHZP@I_>W8b2$UbbD9IOpLHE~G zym|O&dwW}`s~p9ls%@&4Uibm~b6H_6r#bu*>gGGK59+_H=(^R#dyT$Y#iLoh%6^&y zV7*zBdz;tfHk;L(&FalkYKRF_AVV(#Awuvx(%L;2SB$yF#GI>gLfpt8|Pb zuVLw3Th8w?jCf+>V^Kvl1(}rx)Blx)D+4q3KM2l}96c4M|g$zHngCJ9=;NU_?4cL~UlfUK~MQImbTg9UPoS5ggs1 zL>>zsn3aCDS%^q!(q|~%Ei_UXLi*c^>99|=4cSL04VE$`X#?Mh)$eqr9c=x+C1|0k z-h(tqeM2AXn@fI~`~(2J?3%Dqe^Rkny07&ErlKPJvZ@tD2k|;YfwL7#bH}Pc$(#Ly zPp7AEq+yN*H`1JjH_~v++O`7GWtHR8~+}vJ=x^WO<`%;4zXpG1Ynt_e}emv>`V6r z=Jh(FT*)XRFq!T5ENp9Eg*OO5aNitZ9Q~i5{CcL&7eYCf~S8 z02#N@dVBCsXnKcDX7n~>KZLM4KULa~;1{B&rO%uk5Vy|-QgQp1owko5J;l*@W1OG77pYcB}?&U1&9M`rB$X*!)ob z+&}^g*4X9)KpvI0Y-5bPUSlNQd!h6qc-V`sNUzVjQ7-}WRjJ0{;Y9Ggi%Ko({JQ_- z5wAS)jw$YgE*CVpe_CaK+fXL_^23?Vn1GHe4v+F_v8<_NMV~yc^U4v2Twlz}D@tOF zYu>R#KJC)NiFcrh3G1!-f`VR9l2b?ICO0Ry;|jM_xRPd_)hEH7WdpVe+Vlj(B+u^n zv@j#GKKJeS3G8FR=0odh0Wf0h&dWf2AT@KA3#-?&!y{Pz-36tjbQ4}EcKo5sGpnim=gcQ+AD@mx)PZULA(^eYc)I(9UxKQp zvLY}_YDx|59x@oog`8i-gylY;Bw13QI*!(#U|sUjpNm<3C94PaT_ZH#&~tjSd;CBj z9xzs)I#-dOe>M~-s_9}mJV>5W2%4$A4SVE;+q|CD!`OY+%qbVF<8avPJ`pBvJQB7i zk(s<;t-r(bJDkjvCa!+n%bR>wEW9%;yV#amHAPGn1V2u;n7WcyEb!iVuEUpj}Ihp1`|Fb45A$PQ3f1K)wUW^0AHRVcXf9%MK&7GQt z*udgY0Br#yE7nn1U4LWS-}I%NJ_GzV2QAh;y`HIG?Em-x=7`CDY^q7lEce+s2U|c5 zQ8X-B@vN}=722)lBV70h4+ZAxEs2?YK?>34swJXauUA+!&I|y&E-N{`<#Gj8*l#_; zSN%U#e+9rdSEvpFkeb4G-_S8njs_zb?`}Rm#tQ%CLLnN>WL>LgBp%R3;<7R&@6&AH z-T;{MTadh{$7H?)5USen=7L}BkW-3JT&GsuU(mA@Sd{%d=4w3>(WQ#a@Tsr%>_Fq{ zNsj>WWm`LX*&Rv|&kn^AtyhV`Bn<;yS74EkePH>@z~bQ#tn$?EbNOx)QF|I#Lzb;22X zh%q?Kzh2?JsCQE9ZDPqbv1FTAvP~@6pjfialUJK3uioWb`R~Hi?_R&v_QCKNzq@z? z>kg>#E_4jJA|jip5vcbz?_u5Xdsq=ae=7TbJ(k5{_vY5+*YY&LJM~yr)X!btp_)5< zNDI?8{@%vl+xUAMfA4?l?`^z}b$A_{dsv2fRP86hZsoIdKg%`9mwFBKM7*igGhv*& zc_u9JOjz9Ix!ogT%<|16VkYr**!iBN?@nWA65}QjPEpTxpB$5BKC22SIlH2Mf2hR> z0fD;mvS5#LPG>&7Gl2OCs33hLw7&m_?xt}xA+=`IPdB-Hy;Lr;yG!ZoKB-Jd@9e1Z z%^j|85sGy9oA0~{k+wqbaluIUamKp)kFnla2a0{qH>R%Qv)$ZLo&{eAfdk)IP%+wn z_MpnAd3C=%?DwA?{bvR}v}FaMe}PgFiGkF0iwmH9t+JxyzRAE&3yxS%gu+ZVUVH*O zNPWW-x(_UDf)+Z17XDicYp;1VZ4-AfK-1zG{o8Hd-Dx0(uCixHM%WS&nGr1HyBd=L znQ5@!&UUx?3r_P^%^5z|*>AEvm(L@_#6m=mm$1g$-#Y7gOD&SI^2L}`I8D+%HUW2(dR@^(z$;uvcT;St zp&+$#p!%gWS; zH6$A3{y5m9h0x?hw>Gb+IU2&hW;PChm0z!8%J)`axHUWqCsn?v@gX<5AB*?XbLtV^ zHRQ5t9G7-{dc)Ta(QvDYU!lyas<@O>nuCjlMZ;RD-=fTVhH~{y(XhW%qioX>k&ieV$Kg0Qa6zC z<<{?z@-Wj$HE>2!+O|o{7cYXe%UELFNLf+ZqfAX8 z0mCPyWjFsGe>>Bao9xV3PI8i=7Q(XgDU77UOId|LAvbMC$V;337IBgYuzj3q5(7nL z^rKDo)oJ)v^Xkg$|Dd&YUZ>XDc`aJ&@0LcIHGPyDfIZja@$22A!>x_(Tet4}+fC+f z36)~l5gU#9rZlF~np#bU%SNHuy^6c@O&OZmM57{ce^pJ#?L_pUsg21AW7|~~jz)tV z_4u(WP@DzOHpa;BD&h<-U60|}Y-m#uFRYiebsTlO59W>ZH@ z2DtAwZCuL+DH%DXGmk`5$TYLYJI9wZ`BZhxNQC$@pgDmN$Zm=`fW81w_!!-XN&BI$ z=lIFDfBSpCe7}G6`H%9YM^&O0msUWn5cx81qrXi0qL_6q1R(drp<#^&d$Uit?h4*% zK8sidr}=`yP3Y~P;%~hqyUP}U&Svz*Li{=Z@LWT1qS+YtU9|Yb@A6SuDyMN~)>wRhx#|wK{;Mn)_Hpe;&-&_y#gu6ZgaJ5~x{WTH!uuIaagzy9N|hbj zN{_b1hj5ku$9f`6m?Aoz_)mEZPCT_jX|=Q<$gW4X_}Q(XMEdb9N0qqd5yOXUWh03* ze=Re+jULl9D~7gdp+#iDY@?E}+#jYfwlWs|prXL4O4bo}s$a<W_iTg_w9+{j0*{3|BmfAP*k zK=bIcPj=wn7RW0CdGOKW?T^QgKHc7V{CNA*ozGf8i+rxSW3M=EzLQta;fV;`_j>-( zPP>C>6fikEpN>B@{}4{Uh3rx?FmJv3Ah?gwrMFN)~YcgbS& z;8LbrwC#P(IM(!<%f9*#*d1D144F2#I6rN3nOVTkVh*@dfS+$wRY)@*<-}QE0f~b> z*Nz#5NQ`ssubgeK*IHsMM>i}c__h;+b{kIuG}Ro~WMXpmN^yKz6&H;-f90J1297c@ z00m?4?GGHej4@?-sBB$)WDo_en$9q*e7pj)#i?8A zhNl+PAnalyjl{Q#g=1a_X7ZE#w0!hWZ(+-qH63&zp9PPolhdNfx)!IiydHF#Lpd{F z%NNDMx+u(GI=911Tim0-1Uf~`H}s7O9tiLY6}8w-Jd!vKYKS2Rf1VI(EMRaF3^cA$ zDGx;BLO=mO|2(gmwC#?SIP;a8mo+tw8Irdko9d?1YtImYyAGbe=Vl2I17v0rIHYHko0-IJb`^vFliqN^WuB5v`>kdjs3GdLBTe+ zjOP2Y$IwrYdSgSY1h?e{-R8qR<|GSFA#=vA0@(uCw=OvS_JQe>&T&tu*AMmpfU$mn ze7qM|N)HItw4~x(Uli~+jrDhj4zl(*`yT)O;NkB#?DBM?e^xf$jVqOwD{4Fhxk6>2 zGrhfSax7cpwEvFAa+n6}19?9m^T-})-0zDA51kR2#)>9(m^KhA6K+54hqXi*w?9^7 zRh899Y-z?5+s^QGEs2Wf;(ac*z*G^D*|Kv_$e++CMCG)xu|!E5fz-HOQZtb;wR)ua z$|6GuWogj`e?De&D8IPC03;Jrv?zlDpoMu2G4t{9^t0r^QOe3M^MZ)eRk=Zv{X%t7 z-Nb`DsoH}pI{Ov%8qw%C2Q)x*g2A#%9fAVJ({;iT1v@B?Lh+!?^- z_71o6y9FQ7Di5%PRrYsXjjH#}aQt=uE0N{sl|gDGEQcJGFg?4Z9l?{+$#8!)MYcyn zkA5RYfBSbETBH6!f3%7cnX@5;KM9-p*@g_lt)c>EWD$X1h|2tGLju57QDEydH0U>C zvwydtLx2t?^IsLe!+Rd~E}NXsm~7-(l~uxC=;|hNgc#L2ynb{Ehlyc<3>tPjLObJA zc(|=mW^7m})*@X35=@|tD!`YPC&{(`{Utp2f5C^<&F|{;qSNLyE9{?oHIWm9rVTB< z#1mN%E;5pgbON#}@T`I2Xt4%}-FzJonbSH%->yYNhF8J3TVS44cWV|9PiSz}>xcU> z=UPtoah1(!o{;3#>G=+-z9% ze-p4?h^Dvs8SPromfCqr zt+d}|7t*4uAp^fx$dbF+!HX{Vk3DG7OJ+Ujc~mQfgY;P3`*zSjJvlx*I{E5ASUXvm zs42f1Q+N)?!9j$Uh+Q%_q_epbkeOLQ{ zuJky`&B;Q(h%N!upj@6qXaO=W0*f73VE#0CvakZQpCqUN-RBWfto7+^fj2MUePF57j$9 zIa8&Np&aJ>Im106Zvf5{O)`yL0o zv;OhH*umJjb#bntjCp9dfmL{>Aw51a6g!DOl_7cHoM8l*b-T~3#! z1l4A|^PLb#EVcKHr}8)5e_hkd{!I~fkIPeJcixe zRD6U${w`J@jtabEAD*!jn72#yGAZyaA`u%SRXsz+nLFks+rf-Af9d;2b|VV`|H-kA zSl{q|G8H++PY>);hvrmvDg+cZ9D@~MGSu^=Non&CQ!tj5+oR`VM zvK!aKfRw3<&}>|6{4`0$r2KU$(z|ZsqF>%i8n7NOx=kM3Apf@16v&tkv6$ce{Bn6Mp`-2fupU*z z1?z4RA8k~}eND-ayZVoOpkl|l4$IAYTv;3@@GXdqO6;iMf9vx{qx!C2{IPh;#OG#) zY61{IZl@DsFXA%=Y@Oh*)41&T+yGPr2ZsnvcSptkZSf!wr5PNQE^J%|18p}5)tw8!%*6z2jI6i$$9*- zl=<>bHfCyIw|m?R<4S0cC*g{(;lpTIe{=%ayvP7+LfKDQyOsO_V@aiPH=Hp$Y%%H( zlm;+g94 zM|-Zb+0tA_Pkw2x6(Y8vkMreUV|* z_;s0-z)@V>R*&E9X?o(daF=>;{o&o70BtW9BIanLplG1u*prxNs8no|GZV6$j=f`b zjAWDpl5AnHaSzx3<#)9@xrX>~%t4eY2Fsb@e~_;f1<9+kXf5P0MkFAK&Pcw|r61f` z1=?HF95{m3_`g6qj%AhM>*ibH*9l}xY1GkUQtBLM6V+Zft^fmTd!SH}Dh81xudZLp5t-o;ThHUdz?CATC4 z08Bu$zk(nKW~I>Q@Ho?7fB}u! zdWWZTcfo9e{Bg|bgSH9aO63;J2G=_a5tL}S<1BNFahXhpV+X$lRC)?9D^B5S4dg<` zim_n|Isvn*F_@@g^X!(%{#;8WQUNYPwB5@X4r6pSi*j7MP2qw8&Sm+V1ln&=f8VAY z)_*=J9_~?tPO?Q?l{EF&gmNd{^8hpDh1Fx^ZVGfW3Ms{;1BShV(cCSg%Y&H}?aYHCO8P zR$sA&_0zzx1k^owD&-FgroN^c2Kp%6Sbxp8TeN>mr{K&@NFN?A0g#VE4HX}2+j?AB z22iJNSAApyS~y&_p!xvRy?5K5RS;BX%>x@I1uLAO(IT1HAbv0_jwc2U-%J@->Gv-X zZP=2`696o;s?ua5T#mIcpzjo>`^?ke%~hrMPw;X|W0cmasQUr@OgQ!7yzExH0(8x)MPivQfc+Md7G3N| zag1YJyora#4|_T(cuOT4v;N0?*&* zLWEI&{HyYP5`eJ}HvltIT*dQPAiQ2FHt-_nhac5Puh;#CE*r|kl|S>Cr+?~%ADm59 zvxF@u=WZiYDg+FS%_IA3tB}7b;3BZd!gX&|2B(C zgKq}M6L&o`hJbznA1xBlOMh(%6PHh>vMAI9k{`b3=8|12DGPdMzKHZ0erMT>)Ze`1 z4bDZ+U>6h|KOK0L&xYeMZl0puGfkBPzax{AlP}MzFEWjM1J;vMkDcLY za^y+%>t}s9fYTp-1x$MKIsSZjJYW{TK5eQ!`g(G3^6jxFm#_NY4@Lkrf&YGeJe)KD zd^PBQGgtutoqhIn4T^WO;Cm`Q!51z?hq7z1Y!^jk1{s8|A<*|P3lEGi`n2#+<)Wdu-ePiD zdOTC<20R0F8=fn$FbB-DTinDmpS|--!f>W9o`n<*CSt;4;C~~5QIVOna2r~wdf392 z{=xLkwB@%fpU-;nY-X1;wuT)nK6})30%LrKyU&BB;aArKJu9I9SONcpkcN~2uYIvJ zTk{H021JeDCCrMgGj}GUp@%)c#qRI25U82zLExftuA-sJoqgMi^@Ial8@WUl4qHKZ zuWL{=Rs&Aw&3^}Tqs>Bto7^~9t+(iaT-RXw(a^QAu7|CWU>U7#R#Wvp9uAb41)Zb^ zGM?EfkjzQZvA9GZZlPxW%EE$F7l?*GA$gyV)@7Su73z3!+KPw=f)QoO)oWf(_yEm z7K1dpfcYU3Jero|MZGyn5d1@Jsi>3Y@MIw(dd${*`&^7z^UuB~}DBDjy?+r#!} zNnTz(Xxye8eHWi*J!J-{;JF(9cFcW^ZL_HEGk++z9)l6&VWU4KaE4Vh6Q=&KF_l&u zSY8otAyWriv_iyrmj7c1)D0BeX{ko~p$aw_L#;_n&k^sI_0&og4Wkz6BEgs4w1nMR z8|$YE7_;8LNWJ$Mn_3J>#u6Sh20p+x?3liv$Hj}7-pVFWRR5Bg&aARot=*-tHd5dc z`hO;o;<43zZ?8tNJW0?-35Fe0JhCqSi*t=uYQ9HMecIryZKQ4Je();V|0Z&yr0x?> zTLo?*wi>#T*R4fv{5ZKmuy|~3-#c)lP@W=gqx=~ALzjm()WrWWY@?Fz5lve}?MI8* z>+PeRb>LQl7dFzuMoyD?R{jeO#ZvI|9Dm{eBj3r^Sp~fE{dnX1R!4W_bc<_ku;J-N z#Asz3o4WB+1`E*Yi!kvBrZ9A~1woJZ=7A;L=Q&)b%~2^`cJSOR`fPZ2aknpU@-qRV;Em$J1tT!Zp#r^o-J zY z8=OHvV=AW1Hx<93QBk-pRRxJJahJCWV7 z9UAPRFwE(lWxQ>f>$yi#H*02{Ok>jatv5|lW!a@!>C@8Y`A|_QQGa;CXzZ@vp>{3? z|8w64NT>0lSk7bhI1zMO(D8inOr}dw+!m$0M#GGucO^o=eIH+QAEbN14YjatWnf76 z#%3;Tymc8XgSXaT1zi|h(Z}Lceh@vZo{%wWwfO6`pV+Y#rypSmW*ne)ofd%u!ujiTm@W27XizS>|bA8wPyo=#Nxtp#tY&){VdZ&Fs>akyGa@_RC za96C=xpv^S3oy(r945@SLR7njw^^V(>y9-3ADw5=T!D6fs@sM!09LxsFR60{PJSWo z%^mok#>Fx=EU7;@^7KYKzPoe?K?%O(P~WNv`+rJfio#^fElHK>w;N|Sr`$Luhu8wz z4lf&P*=cQ5=7t>TQ$4B_M($qKj}B7Bqn6)GP2WdGq_66l_vN|HA@I9IawF%r{B!U<7W9rQFZ&WNEE^uM;_3@TgvYE35e!qY-?aS)%c6x0u+Wp- zzke(`CKnA+k6JZ`DR)e<`mhyjG~7FV++L*fG%2`fy+<=o{;kdpiRoFjG~g$wK1`cL zRl$Z6Rv)f8an0jd0uvXO`JZB58cqgjEzO1!A!gS1PnH-B3Qx!;1)+C2Pz^Zsq5;s5ru`d>9dY>-(! zG=JW}tpBT-wh--d?ds2)(|-86su1nca@CWKR$#HgMhmd;&-$So3mDc<#8=1T_SxXS z#-U%Ne2!7S9v3XR|`-O_B_r&?V^m3V*|{ z#?>p5nIwjFCG}nd{4-WA-Ch~bc55lga67YV2~&us^ht=uOOC4E|!Kv4W3W49_QnYF?N$`AUmrx)uYiS=7>9>;%NHav{s*>nRqXgxJ;! zl=7ioyO?q>_xv}mMm;~dw2((|Wq)ezkh;>qA3Th1IFL3jpSWNxS5Opqi$xR#y3KWz z-7xCsGWKpT=B^!V|G{f6t3|At3q!R|2sWE3txg^O&FRBGDHmur=x?C8P11wv&+DV- zmge5b)~1tcAvT>=qk=cdG1?>;abvtRfo!vwxfRcEJ*Gb4&>0vw-%vY~s(%fxFzGJi zq@}tPqh1&+KG(LUle%r^BMB zKn5vbn@Zku#P!8OP7`=klYand^(LXA%0+>@i!~O05RF4=1)_u|a}D(@PUB1Fd#5Pl zQtm*u=wj|^_FsE#`0Vs#H0i^)M{#mI5O5;;>#q*PG3?kMiE;n9KNPb6Zdsg$jnb<}yfF0=(Lo=d%(jd4-m z&OZGU-&DlG>#l0qGrRN>+FB{o+qwn>K%9NyCf{$i(M%pf`Cac zxhAx6?_w^q2W9!RB%hVSrr0h2(jR`O!V3UOvr>6rU%-c<_XzGRGkE##(Z21W7;JIM>>=& z6LPTF9S(b^%i?MRcp$pvx@s&-E@NJ>IapJ2nQF37WPc2p)rBpn+j^MOGpK2GbP*Ug zts+PzEZ~Ts`@>O0)sRo|Px1mTsl+sZVZiGJCuv@h4{rC=ey<&LRVhAdqhL)Nf&%5B8E`EgB2R2?sH> zu$e5uZ{(~t*d-SfI7{tnZigeoM~E0jQ9dBA2~=ba%rr(;R1arHhUoMN4lzu`biBX9 z4GB$b3+=Vnl-Tx6V<(!RsrJhf_NtS;-|dMGSbthqaG8j8#?;*KS-jwLxwXc6StQm& zK<9j!%x6#$nWthSA$w(S+FeNl4%XGt6K*VTX!u!neGZg#s{@JI5ycNaAF6VdMV8>+ znN%B9I$Mo$v`l}CZ<`S-Tsgrt;2K)T50jHe6YW$SG2=wXt}et(IIaRi9PEU0e=`|nhiwM-XIPx*em=WHfII~yKCaoJk`#cit0DXxh|v%Q2#fA| zhp^a#OGjbR%gx}Z3`C(50zGh=nK&nlmaw%>^{q^A8ZC3$1sU=OxD@d7vH%3=U_}5} z5=TDf80Pj8g;oe2$#lNTV1KPTI$==1tHxrqo8yPebx6M*ZID~4hMcP0KRubt(oIgT zvaFCIR-Fi^CNcebs2DNFVo^RY#|n31ZG!bc_9rxCtZ~O`UIr%cfoKqnX z6p+$cCC`Q%?QEq^%-1r+)oBt_?}BeV2OxrmB*)h+Foem{3B)LJq8A4+7Y(b#J*U|Zu1 zEFig-1+8!W7N;doJ%1LrBKF!63o1f$UpOQu*h;1Qt0wQy7*TUlq)3tAiJmD_y>r(8 z-mTXElqt1Y0))Se%wQE_>Nb7tHM7chRSmo z-72t?g-mh2d$$6HY;Y~q;3l3)1~S1F#}YZEg2C!Vlvvu8@9A_gL^T@FR>J-DxjXaPSkSoho zkc!KdK;Ou`#IJX*A|ZH|t{x}b)1%eV7Q%Kr+(tdz@s_&O0?@E_oOoZw37n&GzvK1+ z!;Kshm67peMx&E6C29U#r$?OmZG<^biMuCrO8)uVu76(gxZ?owbs^nPWKG=KE2fJk zEe(r(O@EjoCOxtjqRf|4Bo~+@abi|m4#}m@V~E5lcB>hE0R!@b@E>PoBk~lA9kiQL zQre_>I4hG7#_6pBRUfTo4wgHkA>3J}qEGUectpHY!TIpE$mX}#S-yaeK0K{sN(Ff( zU{mRmbAM->^`3CN1YEf|oF|u8WtEEATSrMq-cC^}bvK4KZg63+i$u<6>a>FSE>1L3 z_(Og1kSGNAl2Xl1eZX zkfu7as_;maHtl{o!!uR1MbhZW0JFASrI?L8#BXpn3gT{~ihyf+cHSq1n_OqD4bTMd|~*L74a)bfYZj^*>_HsY!!7@rc6>$&FeifLrF zDA$-WyOEpE0+`Mx^({O}VNWu?1u7;O^L`!xDDjKu8#wok_;?1(*xt-T<7UK*KEEXe zq#5zNkgdeKd!A);88eDz4t+@vi#}F#+<&0x%QB<`hIe(>D$}pYD-y;&8dw(^v zGggpfJ6-G0Q^g$TA#^kEejXQB9f5+&(ZweTjxQGK+I7-~z)bboE$0o(ZA_$ca(gS% zgQK0kk{!dI!8|+&#k~r4n`&#}kD5bwU{}Rqr&P7RSDLy_WNvQ(qg3&J!dGMQzKsex zcBDUrN4P2uOM7XRP^2?5tw@Zol7Gc2rGV_W87fyR#wJP!NtL_&=vq||mNrk}b>+cN znBc3P?LtaIamo`I;*(aZ)$VHbT50R@x9Y!1J~pQwT6%pJJvoZToE>OtOzd;<+GdyAf@fNB z(INh4ZrZU@)yF7~&)p$OkbePM5DDASf zFViUmBDEsGQ?FFpLi%r{PmtlM)CxTcwJ0n*Y_8&6T|!W?%RudLz(0}r8&%KHQ|2FnGELfxE5DHUrC<;jFJWGKL)09|^Qb-e29 z_R;qn5aVbyetLC(dVhV1+Dcj_d&mHPjeu?CTFy47Ronugr7qbWg|Frkr5#Yq)w1m- z9e&~IRN-$OtIKC94#=QNLoo;;;o!|r5Ov(8p#s6y45fT^i~hWH_v>I55Z#Z_1AiGA z(aYz1FUU40Rfnl(wLw*pfA<~Cw^G89 zq;+Y68^pNfpH#&18x4U>QV?=x4NpV6D@VO$blQq0sw$@dy5TLM=eyWqTW|ZC&O#{N z3Cf2Gq%%8MW5<1r-gc6I7vAG=U2V-iYsIn_el0J=QRd%ma_6Lzye#eQ@)F9lyrg_6 zuOP4g77EXN>wjxl1G-E16Etd83|m;7PuCD3K%+vHx2S>#b*1>hHD5=ZsWhbS+44E5KYQ&WA%M2t71)&cQbj>&_o2GZ>}`(ow8Ul65L21>p2xHwH!D0x)IT)%s|8Tpxvth>X+bWS9TqGi&5DDc&VMTSx)0K+E|T;~IdD12Q>f>qSjM6);}_IO z=?;xb-t-v|_Kc7C??KDt+3CQ5TTCAx@=FJ8~+0+J#eGEsy=nFGtc7&wm4R z%8yhumSWx>y52a4O%huQ`sRHCPM$V07B=G-%n*3FN+F<<=9+deFt;2458%TMZ1)gf zR`2;(5*#?-w6_$8c3VhtClVN?h1xsehJoL6O0)PTp};ZRxy87~gV}tBxnJUOPjHF%5h@> z{!GeboMqt9eYF^@Vum0TW|-k}W>9U{W5 zzvR7ZOXCR1<8^AZLC0Xx=6@w$=`8{*IW9;?h)HGm)0Kh{XyrtWV$Ed1jIg02p?OqS zt&UR!y6KrsLy;eF5Z`u~%_q=FGEl4&jtIf#I)0^}y={_9yooA9u??cUo$TD&Hulbm zl#>xN`fS3za{gps?vBiDa(m!oSPdW6=1socx;1zRpwW1-|M!=5(|<@0b&D;V;M!v& z=Q7K^WWy=6@{;jM3ZQU&aQY5`WxaMvVx#cTjP)ht)vdSzxs9m8je;oPR~GBnjn&a( z&b~!|*`Kr3-mOGUQnG}I>V{PcS6HD{uHg(++*j|^JPOunaoTB?qtonilKbSq;@&a0 z?@E_y$4WCHoz@d85r3}Nn!!qwafkgOD~ee$FxyTQr?YxRL8`)g0rw1sDdvxEZhBMv6Yd=^RhEq!mUkxezjoy6qAf_|y6R$Q7XK^BY9$dA4~S>C z9(;6o@aVMuqQcBf3AA^X{$6@#$+fgO4eTG36nBl|F-hH~@-vM{ zYI}oEK(A<|SSkocYU0sI8L~YXDP=E>MM@A$Ly;0h|9?oN5?!FC-310EarKG|s=|U2 z_U=(ZvBH01P*7~;Ix#`*tE)lRfM>W{!-DSYvO34ic21Qie;({V!n+Xfrkov~rf+DgoEU58>tatVXWC2%*$-d<5`*i z=G>$#VavTVFQ`j*VWllf(|=1~;%&rNUd$@$Y@{&IEzhd@_6qQ1f!Rgn zRxHhsA0OH1vNk;8h zP@hfaBJGKYxjAKf$t;sv~yBtHYcPR7dOxQn=-m!a+XVBw|a)Bq3VZ zlJFe7aTJZ&t(&q49*dNMsA%5U@>-{Clv4E)i-bU~6^cX#t^I$=rpZ{_@9_-k-V=)|p(jdTrrw)2%stTol2=-DKgA&6mg{A%9dn9tP$#rRUM4 zqlAR}1W`U#o>HX^UR*~}srB&Hn|Hj;(QM|%*@INY+ZBJLv`MPI@6vb&t?mXYyay)g z=pLA=JuWz7<=v&W_#SRmX&)>L?gfY}I^0_PL}6-uRhnSiAC)$y$x1s@4m?~nw=|2} zPi0yd+kADw*6el2+8FC0%WuGY{}+SW#7qn;28?r|`=Zt_TuN92Ph?QrShvG&5Y8FqTw(I1qr zCg~z8Xivfh#g(o&D-cVgcUrIs`-1N$hkZ5SG1rMr*r@CoFMptY#$8kD_2sYWK|}#C z-Qn@wGecC{+fheG0qXsD>zsPFeE{3P-z6K9E|-gxNDC)96tp*;qlaBx>=5skEl5^R zGJa{_xU?98`Z`~g!JY$ z(YHffXQ+jorhjaZ1zuByNM1-z&J3Y_ODrgN&%27lyLgBE=I@&uAqf4m6^r%B@WTCx zgd9aii>Py`H1jCS#^m8M9vk3)791FI=whU@NXIF4ZQh&YE1GuwkX2{Vuya?iu*jd% zu%Y+#_x)^|a#2`U3rML?GT80QAm_zfFW$xxktFJnlz;Y|oOYVjDY@+Tc^I%&z{mWo zzCVB*vULvdj><4RJ{0@Lm4P&WoYQ)aJ3n%RblZIwnXT5j7)XoK^NQ^u5@e`JrlY!h z^Pwh7Z$R50lWF^dTP@1ICA!WPs;ezQo$h9fx~Z~dZ=U$LIENYHrF(Oyj<&0w z*ru14Ab)9OQ&$reoJ8(lUd}cuBSiRY4HDKEjuJwH<)j1b&u8n~SI&xZEf$|}*^P3! z#`$a+T~`|L+9oP?JMb9Vb#rmfvj_d=C<#=Nq-!yds;Vw9}Ga!a|&+ zc7Hz4CT2j}!FQ57*iY{!cZO;Ol~=V;r_iP2bv#?W!5RY{p%kSe4A{jMM^{J}Svr9WjOJmM z^2`#FQk!hvyuYrPKJn4B7Hn1^ALZxIV1EO}6A0B92!v9UKp3#UK$v4L*bj5=8mzAo z-LMGmJbM}3(L%VRrNHT{#o#~re!l#*_h6(_uQYc!)7kJN%{3)mA7-wP1y(=G%;F2* zWM`)yAv$6g*{D*U(TfE32X^#{V047ns7dyzS-&!xJ^5|sXLB!5q! zrl(9hy|uj&u>x)VMSHWtZ540rxHtuurx||k>^Ms&(vJHH?LG{GUD$G~=iben{h!mk za`706jL5~25HI^5VF61WP}p*oUw$p;Tx}m@8(SJ!;mr}}ZsJ%#~5}T)$&@LwyJ!E^43htjMn_^h@VStZZLUW+Q6duZ>cPrD#MM zIwl6E$HJFLK&5z$oPn-N;ta$qGk7_qPeGxEXXWj&a-xxPSj$$t)qjACV?Kq?%8|+0 z)w=zj37@jN?duGRO{*NQ%Hz2apblLVE>e3VCp|lxLH%hJTv;|d-pv$V(KS|BRNOp4 z2e`Dzvodi7AM+J94=B4xf68a`0xzIma$ zTL_Zflcg@sau<_glz)!c`+_d`RCpWtCrF;n=_cf58RvqI8s;!33Ksn^G@Ka#evq8! zc4MDPD2ECOEjy#NJk04Lw|jj_q2(?~(lNH-Fb0V&fN5k;kC*tV@AP zBvIsW`g-`uiA66deg*7s88*+|cEgt1O_z8b9&*My^3Vz&*uTY9>C{J_Mm7iI91K&u zA!xm&CjM@1M9Psx(%|70s&RQ!zI}Z3(HHL>J#rOEQlu{N^_iVF760dS!LMw#w{t`t zl21;rW|PHtvwvwr8>umJADxcK3G{MSTtOdq7EkEPrxD#^tkPb|OJq}Ux4tZR&z}g0 z9z?8TvI^y193?TP6`y@{$A7^`w@E+a^A5hM40&rl+k=HR)CYA7c89S}soNkR>o>$} z&n7#)Zq#1TsMgj<^?loe;5T7fbW>g#DqC{{?NN=}w0||z4SRJMGjBJmc~t#hZa;wz zeF+#_+3gar+Ywb(A-oYRIpKX@_EMw@>0A~6r{*AXiI|KRBXRibl~{LQ0}{4fF5mh6 zt%b_u9aI^h;N-`7T4b7B4I_=cqJ=c?z?|Sph}SM|LpD&hc%dpQpp+ zC>B17#eZ5Tp6&t)4*8?=z>j1By z6ed}?+6=yRO89zQTXhA8{-#`r#-=AO@xIH)y!H#Mw|mYORP-@YDP2=BEoIWFuhY`=??RsejM5}Zhx|c9Aex(*hBDZ@Wve>y9CV}Nf$-6 z$I=8CZB23)#&$Lw-M`VTOjs>6kVY0=4?BKkMtd0yM;N`XOed zjB<`V8Hp4GANV^b+~7Oh%sb|{pdC<*=bg2!HYFMB{&e4Jv-{>$qi=0OShU%UyLCJG zFMnEV{@x857HpH2u?-A*PKTd1THQX*k`n{Iih-YuA>I~(2d!y8v}k68)W>JmqxGiN zI4}p;)DRXkhvNI-aI3+keH_#t3+rgN8)8}2XA3KkO36y^590eO=VYD z!Zi7e^G>S(z;!~y1bX+>;_ z89J%ctY3po77pGQ43G)`HK!EUH4Sa@e|&WK==9r94<794w{_w+LkAGDL3swVEB2cn zQYrCi=H-fW?#YX@$(r(w8mEyZpw&p}5JD6|NYX?S+Aqe1HRW2YtV-;1_9xV__kY?Q zzn1;!cazM0lHk(`u4QcW(5rlB7xQhrKq^4P0-)mmnU^hoj)oH=16VGz<70oB32{+h zlBd3MN$i-jSvjzXhJeDhx^`e1`Y09wiiJf{=F=`HtcLAUZ?aU49PVM;89Awae17e} zB6LIDLBB}F-GQBEZm2snOy&MB`F|y>#*O_eC~Xp>=HF~SnZ7mq7q*o97d1NUUn5(o za>*1}f%$C%z0R2b``r!pJ9dhRNv}f(4E$81LwJ{d$C&lxplwzV*IU>6=v~9ua{k__ zcwur$wRZCI8ZjQK>$G?Sv!Uy9>%?)(*4mM4&56tgxam}=%N(+!5~)dP7k{QSZO_&+ zc5F3U?TTW<)f7&$x08HIWT+LX%IA(DU#|mvZe>Zu_T+hZW0t&aYx=1GQfvPF( zCYFw)v58An#TYCx7t8Gp1t@!$|S+Ie%n+X^ertDUFaywK7PaRfG-f%^vsf zg*UuA%M`7>KkG{yi*=GXkU8-1kjFn4mXzA(-xr{QT7b9#4E|@>`CrXv)T?*MC;w97 zjqERXkn%IzVP;zXIeW~O=XR6XDf2pfZyTaI;BK8OQpv_hA0O!T>VIXcvstVmQ(j>N z(N$sIF3XWO0Ce@DfzeRG5RvLIh;Q`@q8~mt=W!-i&2%U=yfm|MFNM&W0?FP?oNw>X zs~NPXjumuP*$P8oZ4uPZ}7_gGkoatXWrbEgXi{*-RO?4?gt&tOvBfV z7@1~b(B_PpsJ8~fu746aO$`PJ|EXs{eTL&Xn-4vQV1Gu+AUhrg0mfu{W|08og~c!+ zP_oVV{5#Li{C7I(ZQmnii$~ua{FzK%kb*XE#NV}|bv-Yx(O}w=eXPxUyO1^uLjSzO z6(q{=M;C=BG;yuxJg54`DAlLu(Ck~+R3ZpV)ON{9Lo5mz*^Q6YBiDyDLikMfeJwxlA77H?OQx}4$ql}7BIf^qhb z8MkjY`H2YC;AoQ=XaZm6&4A#yo`0@`P4#iEu&roL*Ap6WyWJg;*>5UOB4@K=niVBY z+c;#Io3jBkE9O#k-Zq`myiIjt*U;;EmJ#%F1*1mo6Mu{Ld-5u@?YfqxjaL8-%j^@= z$INR~%7(`)X`bHXct8^F)^SsLO(e%D1bKI4Zu!Xg6eTS9RsJ=Vjppz=NH9=R9CD!{ z7oE;7-kr?L3o9|-O9_Yj)KnDEFQ3{VlHC>Y8d4{k)D=AUd4TeAjAvGe_#Q|TY^H^c zZN_iN=YPnje`D?i*I?l~?n|QO^80)5_eu60T{1z{w!MHA9e;ceKW_Q#wh(-^EjMpA z@?C$B5j!85??+ADZX|sFwH?aCx6mJElPdijh-g6Lj-2jTs^k}ul8Z>mh15(v-ExJF zPK8C|nZbyI7~~SK0&*91H_2cz?Gm$1^K}O}Lg|TNzrYTZ6lcj*uP8 zikF3)VFVMjShp^Q=?jIa^P zp?__IZq@_03)OzUCUOWJXVA^6;9*a+9!Kmj2-koj!YA;()9IzFK^)m!d@(TCu&VE>6FNT(lrDbe`xjEiU)*RDu zA;lOs(5CSWXS#rg;}{p!f-E^O=^U>6=6@ODfCW#INS{N}D6*36dtsJ*y>n6<<~Dz7 z|KJayhe03pE2?XNUPyCeDoHe_TL5r72)EC9g#7HS(~mTntAS7ESF zlYMf@Y&v}oPquVbqOFv4U9b4Q)7W*q)Ax{ywv6;Of@aGM7B=gpo7b{WBf zDOkiPShOHmAc6%`0L@_pKtWFgH3d$q)y)WG8xzR9!xU!Ved3~3aG3-BwU;RMMox4? zNwOmwODp!2>g}XH8$Vt4e5&xssDHtf4##hQ%_a~?GiYkN5xeGokk=+ELEl6+rAae8 z9ahG8QC_51*^*W6vIVZ%u6Gm$_LGvV&#VBU**#6mAC6~pe447y!P&B%DXDGc`2c~A zdhARreI@6?M~4TG>a((>@gl;53C=`rF^Im>EqnKC-R7n;Tt#VkaGjMHo_`$CmODEg zGy`AZp{G+Qv-}~Sz-*kaeUhOKoR@4$+46sUcye;+9z380!3p*_Xf zr=WibLIr2$2U`7cx3;a|s<0i@itV}?+p*r7C?41bpm2oTSXt0lp0N;@>t~s>Z0uqk zQV-e{kwF(or;hzrzdd`&Zw+yNf{Fq$|L@uO&W&QRpxMkM8#`Oc zP}d=$m^V}t$T?u&;m41Uj!*X=o!&F(5OwnY(I+20G>;BGJvcTe`;Ycd55GJ>)TQI{ z(K{a;JUBJS2Y>G#93MP-aB%X18C<46WS)RkCm|IWCi+DbHZsfKM7bT2vRfnAj~|{KK0K&XwjM#VX?q<%K00_8LGRMX@!@;#CzGy};jJmO$@Re?k z?4_SLBfue$Z+3rhK_15KDuA1U(yONiClB5~c=*Xj2gk|&cwFZW%!|i!_>~&bhSOp; zyDFhe-hS=Hk$Le52I7>jDdMNVRRrhcXrmfizp85HMe!nR@V}2unO8I$a)HI`xyZ~` zlVB}O)Qg7SxUp@y2ZX;jOD6;KFuR(}7AO0!F|nA)unK>kSu8HCp?;oAsW~`P0ccJ=wuDN)RVQu8c`yW4UVBgyuc1`;3=8#87e??=L6)xioL$vxn z4qUGe^-NVOxMb&z*8q3htjh6T0wq$7@+{pMOGvyZ|2bqN)?@23hOk1W8TSwMp) z_3ZHk%*fe=J4BtdGOu#8mQ?GEDD9Fk2bWj4T@Qtntt9%}i0cjA>zK;na!)z2#5|7i#)ym~ zeAs_3V2S)JO$iGm7-Wm@+6UIyD5Mq7;S7AreJ6XpXk!g%-)r~!A6{NAgW17MrXoC) zhTEK}9cb5>Ft|!N?l8|p|n$WmISf5q-4A(&O;7FqcieWU`sJwE-SD>?4B@ z%xv4w?T)XkSlv*yk&f7Drs274Hwj>%XM1z&ZMHuX zZ$GXP^5)%UyjU7iUCbMCG@I+d4SbmHECzKz#Iu$mx zIj!}|qK6&tF|saw1)73$?d`7(q}qRvk<0z${o8lnhfK=l56OId`_;Se*i8N~?(So^ z5Tr~XQbojz(;H`y9-!z4Lr8RR%mKn5Z{b%V-mj%z{c-~Jimp#6uqN>1{`G-#eUO>` zlug;216?*yH=Gb>d~09|v&H#rUgGt+yzJJkL=gb#I}k(PDQD7ca>R^x#chA-5k@uf z%@MP-F@C#B?<)ii$j2_Y3BbafZiyL>w^~yko6Qc4`-yUG*wZj`qy}?6-)|q^M=?IE z3a)FcTI!mdBc`v41QwZ(Fp?+*Qrh#Y-o|VwO;UP-V3wKN4qsHTcKI-$Ug1|%qRyEm zm@&i`Pr6S*i2a$hb!7JL!@xx|IYBOER!!J+@XK}8+AwXCLp1K ze+xelQEV}f$ICJBg}`wMDZ3qJG{B-5kyeY5jndDVX#C@HO6%wt_+)91>x_$F zeYOy$2F27~D41rFao`WKAeuuSe}5Ezl;r!uULy5k#%@1N(~OfGE$Y07S2K5I1Gp}c zntYH-|1JfS|b zylhDI$6-`dv8SbID;qwhTxE7jn46F!+poQ~5~cT$xh9hR6`+}eqOzR|MEZjkNEArF zUXcB6E+;m?(xp4$zFNf`>t$f;bh|YyKd?)ELFuM4f?9w6NDOxN2n1Z>ODS%yke9Ze zJxyne-Q3J*#>i6kFvE`Z&=!?Ui#Djhbl#{>c$qE&{Wy_@Z1b5mE`EW6;>qOc@#!J2 z5%oG7n~>3Qd@G3?0hO}7aZ=6OJus+~v&pD!>g8^9gYd`GPli>UPVnlWpgV!fviem* z3PvcDO}2lq?l>t+^g4#JXA|DIji`2xs9D>DCw5}2__p8)7H@l=m9~|D75Q75T#35Z zbuj}0iMr^*WN1gQ5q)OnhEXAo12tWm2ve#!#Y`;YF%v<|Ni8NODSAO)Dc0hYArjGK zHomRWaO7^7>N6)Im_I;ICTClH_rd`AQiFYkPCboSBd6ZT$@_O`WYd>$bK_!!CL z%MEhn#G;$>0qI;ln*hRX`rrBdqAd99~Vyt3tV+EU}6!8()3Klckvx9bBd9fkxEe6|>a&-!RiTn@YU3tFAlJRI`x zA^l&c0oaiaX(|%tV=Cu=Lysnl|AInrI>G!f-)qdbih@m(5`qo)1cvN@S@7~^FDe+H z%Lp)>uD>(DMf_`DPG<|Ch>?94}WjObmbDdR+rY=`5nyhnpm$VpTl`9?foo#m?_j z+C!YyLwR3|W#xqnA2Yq(f-9kK7S(K0;Bkl35yVupGsNQ2BY)Ax_Lw2NOt?mYc)zTE zy`blSP-El+ZVek33!nGqkJ>h;>c2uikxGk61)D9EEW)H-yElirjvc6$Nadbv>0W>8 z&-R!G-{=$&eu7nf{F7k{;(#93-Fp&;g-k$vR?i-I(r2}so8Tx?{CLG)XM$$pztJ3l zS(&I?g_J?tu$qC8OJPen8LlBwg7!-tSMtrHm>0%AwPU)Rl?Urc9-(_3m~lZjm2V{( zNL&6<(sdxA(br}T8T(PhgTa&&z^s3)YuV`76ET6Vf?Ky$qg8}l`9${Flbld`?ZfWJ zped?Bldpp&X9h}N94TuHoIa3N=y8C(TDm72Dz&<16%ZO*QySegPrmr-0W%?VF1jlq z;CdIAr5m&^_jDd(c<{mL=bs;aah$|doX+nKYzqcyyCYsx10Ls}tR>^oqfUQ1lnj90 zhz>r=VM25S5$RZ`Gk?;dA~JpRJ}og-LMFf16GC+0B221l{}2vc#W$&`FFov!VTHQ% zPJ+@Yc?Zl;eog?|CubHy7dR-^aEZ$-EL}+I)f7UYEYiMY+MZF3mIWV+*MnW44G=U^ z5JR-Nx>F)Q`WlqQRMy|2I} z<=S=IGYJ+l{r-W1wZDMC0Bhesh+jX@#{jr}yLk+N$)M}l!dph)e&_!g-tlMBp5YyT z$F5#i`kCnNEB%pX4I6)rzFK#wUrX=kT0bMpyV%do+xf+QZuQPC_A{037yCKC<$!OiU;fh->XL4r0>zUk%q~2ghffJ$&X^elrc{_?z(-+V)f(RoQ{eR7Fp+ukZdgndm9_2HyIl<4<8D}}mN;g_C|YkQSt4*T z<5w_RH6$@YsGonFV*j*9DNxWHq-bdqnN70-o^m-gxj7TfqtThfn$Y)#WS-cVc*3d- zU0UwAGEaT#2?T%X6weXSYjWorU}krA;-K6O(xjR&k6&pL@1HkrzC3v@DP z8_GW9`sQr4qRE%cvB3UG{r`#gog$S5liE7{yLYdB0*D34{2|z;lfa18RWqsA+|V_u zdvX|yc4*kLc6zAgcQikA*zzWbj>4VK5FOr~O%VlO>l}a40hrgHTzcR6VMC;eigbkE zVRc)~N2TU96H*V>y? zKvxI8jPXL{!1P}(%g?U+VV?iuRK;l?RgWeekdWgfyCE$NPseqry&nmJQ0Sj8s!}_p zA6~{2usxlF9s$4>oETyfZZRoA;EQV{Y*75V2LFGsFv}s~MBaMnHDh_g<&aO$UJoIB zIsg{rXxJ;+W5lfRnw>~W@`q6B`0Vua6L)(K@+V*#O2m>b@bSrKqc4x(D25AsT+XJ~ z<4HUG`NyL#37Fx}f0|wk@RRUK<$~wt?&XspYN5QW43E1Ax7d8C0>+Cj0cu-yaiMg? z&arP7*(T6co0LYt8Fk zT}M8gdS^>aPfD6r1lE<)->BmKf;-V=FqSd?kZL&FUfcyb%~WX`Ownl_R=EeNiz3Z^ zPfHZ|B+cKnbO^K|$WCEI8s=$ebZkRiQHY1XDH?l|nrtU)pea+-E0`DDY%6Go=8k{+ zJDg5XU>>{r9o>#(sg`FdSE9g5mD85#n%ODOqA5~4T#=Oy7TLl?U1g5xrS4*h z>-G6-^61-y?t5YKqMt@MgKnlU0cp3P2q@-fs0BP?n<}kvIlWV|CV-pH1DQR zJgadOquae;`2PR16bw@k&!*IW-^hPQONfX%-@FhJ$sNhNHU9Z+6}nvZlT%^|J396f z7#;6gN+02!)n_TAV`Dvq9wVG%l}pAD7mRBl7J7MP`gmTvCQ%1@ccEaD)lW#Fo%=u# zv#q;LJBL-BPai+inT#XB2u;{vL>Cov0$gMIVkuI063_8#dIRa$|E8yoAn$*gHYgTz zg7yB}{Un;`c34rk98oH6Wj2G=Jww4_^+u>llL}P9bA;LGkSH=UHP~$S>HA{=sc& zjVFw8>EJXJMp;>CscunZ3Ipx=ElNbkk2Lpb_i?=l5aRa55H2snw99`s=@dW4^0DZ0 zWz_0;BRi$yMDy!-PFDrv*JBos#DsfC<05d;u|7J-uH+rUpZ3yuAM+t^bFUmM=Y7>C zCC*yQswTg=RbATlxkL9y^lW}~oKEi#oXZDAf0Qr2C8e35K5#&--(P-q^xetX`6m!2 z{^Yok7#wS#Vkq@%3NnAn_wvyBj}HvTlV7KEe>_!Oud3@sUDg9>0MM^MWyON?m)c#> z%9GEb&Wn@t9v*$}02J!tbICXyCwtgnZ~;Bp2R*P%)my0d?meC@9*$@C?m0CHp48FG zSOO>u%??R@gbtB^EUI6^^K){%$8&6wE-c?wkZD%~M#v}Mth;}_0aKOWY*CeyrW3m_ zKLr+#fk$h7o+$4-rpA>hqb{S*xQ>4xPiJ`8>M;jrWz;oo4$I?@@$8qF-*veh_~$p( zU7+M+@PLU3sjqWl(wMj>8-`l7x~3Q+(2wD2RaJC5Tic=4C}m-1VxJK&c<=~20U}Xf zpB(ZcJD|)r0?L0-giauXLY3F4YKH4-ppMW{1@-JL>fr0wYb#+dw`&62wxUlK*pJs% z_cMWPT_0T)>JkuH!fiwpym*{`agdUX`09m!kWONoPNugWfFK~ z(_|Kk!pVdxNcm#?JI4s7B=MrBNs(IW;4BTw2s7ZF1!US;scs){QVKp&$w?_>I@Jwv z?E$Oj91_Jm~Ih$TBuE7KvXm(5a;PlIjlQR$hd->D!YL-HcZ2jW+ z0dn6%*WiDcVnEq_MPbN~It6uc_SFX$U!9$3<3sP2+PSYZ20$Dzr!(>v8`Eg8c;pU) z9)fq${ILXi&@|quKS)C_UF~5 zgvsC+#R}(w#o8ClUG{)LpKzfT(CJ00}bo@e#y#s@H@d-GKw#%*5n$( zQ@DRVE8#Ao!DVtoTz;?TfjD4!E!sb@nQXI<_Wsym0n1E^1u4Hqj_d5fk*ALjB%FSX&CM)V-2b9is_a{41Y$POC{-MKNM?HLuAZG|>m4W=KL7%D~hP9`v7@h19bInT9N=6fUD+HmsmXPRR*;Z7Kn$7wrK z6-Gw%>h-QvgdI0kyHvnfW7b05xA)N$B9v~c+!(e?atyV(>rmsCK8D+Ns}MCQWZAxoaJE*ShDblDm{p%d@;~ zTb*@dR)lFSrp zm7DH)HJwDaeRU(3VpP zBu<(r+u3I8iBD_!E@b)VHQj&2KKb_OgNx6;((KxoYDY7KPG$FF6h-8y6Xy-*<^gvA`MUvRIAL>@FZ$RBMPGlpW^U97MDO@w z8-2``rO-H?)9*z!u5Lhji;CWLo3CcG>7yGKTUBCunL;c-_#N}+tY%Pfdc)diq9h05gxKx} z6Oo|?RBw-GsdvLD)Di9K5aJhcPl_sc_8}yB3N0!BHDv=_9bnR>8Bq;=e15h z0TVKLx)hgSesO<>4+G)#5S-@xO7{=A=`qi!G{UCRhg_A0OI-tG>F&|?FnpQG?uALd z8i@KKago-VI3&FnE?kC?o&&Z!F*-WO?u`sty)B+-#M6&{IHIxHfAz+qgLN=Yiw0@` zy}YBpUuEYCLbulemQPBs1=596<9zO}`jCU2)jN^xuy%ikF{g4A(@yIaxo0q*dcYn5 z`dxzu5b=Wd4FsS&bSB8q*b9$*#d!MR z=(N)PFf~o}<}|gN>Rz~7tYSYLX{*>9ORH6+F+9@3`j@GD=W5@kQ&=S4N!~-(rxpm_ z|Jl%OZii``A!(Drrr6Tb*aBZeE;+P~js=t2pwT4BulRM8UgovafCT3a zx>u-3^+nk9vdS~>Lzs9{+k8d#T*EGrEO+_K$Z0(lq7k=3gu~rQ0}B3@NKl>9b)lRZ z=82~BnV|NA%Es$7`I6YSPKPR}GH*$YE|RfRUVML1vvU#Lf03(xY}AjQ+o<+Mv0Yeu zv_2bzsb@==7pb0MvxC($xUgL3MOs4NC2IgPyAt4j`zc3zynXVw%ZvN`Khgr2y_bI*@pj_ z)~PL!uefdNT1L=&o{aX6XVy*)wtD7u4xYtlaN& z%-`^u-@?p=p%6B(c46_SWc0X7z@Q(!%pMo%wtEc6wn4x9SUy)`FQ7DS`__0ycNzu; zPFV&;)i4eHOhSL9baV7>trWn7UP@M*N=iN|Wp-KCM=ktCxms4^S$6p^PQJQ0JNkcY z=PKNc3xVqL*4kNE-{j^2NKy)EGO)8e$=pxX_nV12ZGTrB2SsI4={!Er@zt}UwthVUK^eLu+&QbWKj zB&_`rOu@KYTrI<`3_h9Pmj@V#1_Z`_4q;_rW->XrErB+O-9V@fiQ08|40?a~QFAfg zcOl+bJ}dh4I(h@y`RkP`yDRjwY!hCt3-*T6A#$Fvbn+z=Iko0Vf*elu6_YR_eiTQa z5*g3+`48cr3_Bcvj^7^P=R@RuAfEbmze57G*m!r@KB7X8Z_|g85I%)W%QX!T1&t~v zKH`4Guj9@ek8{kUCtHR+S7U$fO^ba)*8uMs(4(Z9GOiwjzgXE&HcW25EvSL|7Z~z= zI`?|R`Qj7ty3V3l4(J%fzjXG5RYp6E>hmhFIvqC+5tsqk(ChKlFOJ@zh)~0SF>p08 zQTGEm{S^pk{W_kPNmy%zDR30wb`EdQCwbq+oj*`0Qg5@K_cN>kBYcltZMx`W6 z^r>i793q7Z{U+g}|M7oUpPig>bQ5|?!2=BN`H|xF;p?xzp?`{l?oHke%_W(^d-ur9 z+~Zfp8b*`SoMzb%O39HI#xApFgc2vU;lpmD*Y_XxXQ7+?g7v(1}ix`fY#Of}_tyU!Q>7dD77o zJg3qlI?t2%nXI0YkK429e2S;Iw<>ry@xJYGfO!GTT~KsCeyJ@y88Ab`d`j;$DI=d7 zo%jPUnQf*PI~pg#7xA8kcDQHHI^WjWMnm| z1Ine1ox8!JKp*KL2RwwH2d=&zsMkL&#n0ctK=gaz7<_;HKIb+$f2mE;`t{UInlS`a z54Z%i0_vCxiujNo0jKlHfPTbGPaq3fE|oF^0cJe|Gg@=$h=FFQ`oNzVC{bBn<84)6 z59sA4m@n_5-0orxf@vs0TF#dh2?HTGI67ch&dTE9bV;#MsgBpmKk=bP?1neP%}Aj9 zyDU7akrIEx8_MVBC(x~3boJ?SyLv9~{uwv;&n?m25W3g5#PU~6)QzIkwYB-VSx14paOrMEyn+_9hjOi=u91RHM4UU!%z$A_z#BPSX8dK}?UwDt}(p%L0GGT0^rykE>FUC?_dk{sY8C1P$~v z=BQR=dC3IDh>)7_g;cQr7Jwf)O=s~ltm!;{NwpDp9g=s!f)q4Mg_pq)uswdx^|sztAoLNFR@< z^VjGuG+UkD!DLRjHEFuq-vmg*o6DSocEE-U#bsoZB5Qu|;~F&fm1DsKkE;SEN$p0Y z(LEcqa5^JsEgzZ9XkY;;WXo44Fex-!>Rx{u>GRZ`kw#15b82ygSS57xL8gf*W7NY! zT42+eLWpDIsY+CQ-dGIzL|q4EE`zjXj3T{MOD@ye*Q6O?U(Qc1_@SP%4&KkVaa`c| z@D9K}xQ!4l5`rRGjl4`m}&lf<+FXc^BKgLy4sfJMd6YP`C^fMyo32jhy5?Dw;8S;RN z8u;dcyk9S{qHIaF%Zu|Ve)eHQ-ai+6XEJ?6)=o+Dsw&}X4By~mB+5P#=qG>9MSd8C z!Kuq7Vo0`ku&%+wV*k8^p8OE_e$Zx)-VDtVo!l6Er1_hgq|BgFX+ltkc+;sa`IZ2U z{f&SNS7n7}IF3H0KC(VVA~9$R4N97T9@f7DC@j)T|>J<&KG0MLpJ zC(H9NSM?B%!%s-O2F1%ACscnZ<S<)-582btGi`EM#um$%`se6*7))tMZeO} z?{z8RnedGoM5?PM71IwXP?~XAhCGJ|qEIl0g8WRXGHGzN77`#-;>pVYz-f4I~ zkM;SB&*w=~@f+#q$Iqi%e2Z`igWG713Ir98Qj*F&N^dw=p*^W7 zBGi?ys0j4+NiPp9HNkiu?rYCz=9geLZoP>>=|MmN-YuPzWp#^Qe>uO?kubX0Y5bG>mbE3qb> z?Lj-VO>?k(PHTAWl3UMHTDf4=eHJcJ!+I=RTGjulFG8?VU4!I`qiY577Oz0KaP9(R zll2GU&t85Y@Xl8si1hhfd?01*+L|34T<>G+!Xr^r#*FoUvhMgVPt1$R_Gr)by0@+6 zY12VqS*L#{k`D4&DiD{Ygw0yoRj|KM5O;5#!$KQMrnOO^aJy~|Nbz=>VNaLd4i|pp z_WgV;{fLxjwD=1oXK%i$Dc5%RtReEd<}T3qb<*OF=Ea z*^E8)-6r*}*&E6w*D}eOq(Lev?QgCOwNByC?trJbHGs!JLwrK=VDV zGn(*qkJM(47vf4z@-#bRmZy+*nrADDjPN^lp68(1MKCO%GbOR@7JNOYdeSC+moS>_ zSwN=V!EQR;bI4NjJ;}?Q@CjK#N1_>@W;K6Dj6C-4bk64}*<#Y?Fl5a79Ase3SyY+x zzD=hLuG)>}46baCNrSY>GTLgx+mSZpj=CETysnn)k=McReCQRt>9JS%_l(9~M_h+8 z@aXFd&HCY&VPxdZ(298Iea~HS08_``;}x{0Dn6V|AO8f~Z7`o-%=A`-48J@catVK2 zU-%48k};buIdHN7;N>~IeenSzaF+`ABy(>7Sx5_Av4f8%Qn4Lzg5hSsqcX~6Ou|g> z?~JwA*Ms89FXsllaG{^PX9MPz80qz#R~c-V<5wd*DfUtFm?x_mq7=J+Cl2r0nlOwe z-#s~gpFc^%W!n@=03~HrQrBE)$OL~MF+n4B3h{ANYXme=vwdCnJu&no*nz&$5NAm6 z)G(~>X#NuzD)IYAPUo!^ph92dH{Ljb&UZC zPV$<=S1Z;(PxT>no$)-nm*bQx3b8I}sJNYa;Bt6r>V%60BQ5du6&K;NkgI?BWSC<9 z10;1nKo*BF<@67+xP)th-gK$pKPnqSVBv;F&*jkv3U@Y>v6(DOJ75KTs8lZm?|HnS z6nTQ?Ev*bJSQGHa{K-&SCxZ~Oy5#WcM4#zvh8;|pK}!Z>mCve(I?t7M9P zTDRRkv$UdJw4^!)$lWs~7;nb$buFfrAGEY>iAiI0b>l)?PfLMUr<#8^r}krB58~z= zv=0q&xwcUv{9OCC8S7hmiq5M7UDN3O%1*V)=FNj(sSrjnv1X$gy+p_C_^Bc?#-n;P zznZNkC70b79D4QIhMm%GeYhu;reFSVw`=JTQV;lP>e2a^M;Gu&>Di$?t=}Fg^32-Lfnh6WjP%Rb%)SA{MwpL$HXoY=3jrfB1IH>GItvfZebu~$)EnpHH`%2 z(Lq0Vt;0gONEUw@4hBXi$W{)c7%KR_CQ{2tqaZ&`6$?&T7{r&^XwAElOcjQ(4~*hk z?c9o|s;)otZ_ta%DZPR6Zr!TAsd7`lLkCC@jn60VtCXFjJ-)N@^mN<%cur4S-dlNk z+T`ZS)6<4`SDv0Wy1kOw?NyZ0fZWb6aS@7^(C$9Us@s1sQBg>()S>!T&GOgpi$^@* zCw|cXqt_lKIBMG)hjNzAd6#ie#;jY0-fevA4ZB8aW_Dgo+&;h7d1F{2{5CzYYdyKF znJUs8EBg{7bHzuecNukO&#vz>s`WtBoeq>fT~=VT`XCvcsHq_|6}^Q*vx-&48Y*-+8TMBUO+Jo2BAo zaLWENeQVeES+5NDM{V2f^-VoHFDtcQ&YSBP8yxpBwX0is?t}Nbg;F~Qbs6(r&;6*m ztV$gqwXd6jFvkT}DyYv}tf-8xKfm5|-?8q~<}ZKfNLkbH>tgllmg>EZCS&_{MV0Gk z_JSeM%>6>C>J>WBC;8;6BZ%7KF05cRjD`MI5}mx}S8dttep(87h(s?jP5#1inRcdcr>dHyNIVWUP zdr4=WB1cx{jvY>IbjQx2`3U3HyYZ6RyLP(r62HKx8$^JYxS|jHQo~WR@n?Ny;TFv7 zGbiY@bk!^kXWUgggYiTfiPSF93qQtjEpC6;Kg$|i!I(u+458x|5^o@A1KVIo{yv@k zc>Bu9ovhvN{z>i1L=-5nEf)j%0W2#c1$7j~hm~yuu*$=zx(P(rQxZo=$w&Fe{n6qe zmJ>a>Ccq;-xfS!HVkV?BJ6>cnpR}Np9v%8)t_K5!)WA-Nr03@_!Qx7l5&=u8^Z}HZG6=~FLQ}<}k zx<<D#T;JXB_*jR5#7&|nvyW;IB z3d48yE%Rp|fARU_uby3g{Jda)wIYA8p=BlWJbl7}@dYn^q2F@8`0Vp%VBzqX+tn<= zclrG5$CqC}|2V3yLW+~1VtA276-S>|-4(2um9c{kXgR=QW^9Qp4sJ4iVS&Ob+#rQx z%GLnk7lUF!|W&1^otn}Xlbj|P0xM$ABp|6NMD578q^a$8Ul8(ugmb@bJP zbG?{tBrU{;QK<@xVZ-HmwT+Wsu5M*$F8+0)iO~M+4f!y+rX{ToYTEENx3#_DVe@Nh z+5?oTPN0w04}?WBk5YF9s}25=pHeVB@}Cs1sTn&8=Ty`KNLz!X^+^!^8$g^YNn zLH?riiKeZG367g$TuTh(O%y^!IK0{V{lOzw9!)u^MEdIsd^E0j>s5bus8WPrgxH}b zj}J6`sYII7(#5}{AlnS{c=q(9+Gl43o{>iLp?u^&mMS~q{nbtGwgS#zm3T`U&W zH!R=)Tr=smqwbYWOGn*JJxuoucq$=L zearGx`$sZt3xR` zZ7!3@+12FMm9loXjnPT06pm_fIlfSbzFF&TKE*GusCew#m-%0-ZT=dVl-b0+^xL+& zYs>ONPTlCf1ksu@hRo)Jbc_C{StF1T76WjFJoa- zZ0fOh;tlMo>ZUWo!LPgW(R}X|PB&KlK6mndpRLxDz4cPJDsAqj9h-;v3tR->iAJ2Oa`*`~3|NKJtW z#3||zyp2-`)1C2&J7%Q#XF3i!F zSxRT;Vw0>h-q0>!v1SQ~pHD~OqcM#wu-ZJrK-Q5nk1>7OdKfjXezzzpbToKp5U0eJ zYa=dcI`H&jIT0Ni4q@Fk?+F$#mKyCS=-qQB$U+G_SDGs0$_Z8+1V>_?U}>{7!3Kpa|73h!dg5TJJC+B4jxP3j{KxWFy4d&g8s!>s^M#=_N^KiSqo(Ik1ID*;G->-&(XTT__7jGw9W0g!8=XJStQ)Al~R zqC)SK#q%R8vJ9RTN`WIzV`?IWX10fuv3ZT$YReKevZ_iOo~UGFB2DI2wfPba%G7Qe zlO(l{Ng)9b5spITb`ptV1f?1~JN_i6y)yz%%yF4%^Qur2(Da7w@)4IQsCAr488=JM z2nq2C8386Wa#DW=$&D(>vB#z`63t;FNI*dF2*O8X0%%f9NC`-_K_$YK4l7Zz1eVAQ zd-tIwTl+~{JBR_?vQg7Mkb$$up$wWvGBbwYcrbuEk!53tK~RIFkFC+w z?{&iqawC5uOS%nj;A9ivz^R!b4*X*4HOPT$x#KX0s7%}D$54k}Lmk+sb{OoyHhtJ| zhg^p{hCFl~@}SNJc(Nq*8TP<7-AUj>re7U{A97uz$M6TX$SwmQGM(cX1kpthMCCY> z4ulY5FQE`@+%1A3ShK8fh)f4-5E2pZmcc13)Bb;lMX;JX3yjFv6RI`TF+5_M@Ca_o zE>Y+rFpWb8)ta+im_(=e@eErZT#UgU*|$}!L8k@|AW%>&9|Q%soMbd`C`xS*CcykV z2^5f$)J2Q3Tf(234%3z9X0S$LS6V!W?b4 z%2R&^kXiUFlvxM>Gw&Ocxz9f7=IO`IxObiL&_W9O?T>pHT;Lih*T>_w`BENRIEcju zi>Q+Qk&06!O-$p2m5TO^a|!N7pNj8_sgLDBjboWN$m zk(G;DTgQzPsG24}=Z(*a^T5%uk0t@q-9n_bz_>i?pGs-#oW z=Ge+Dy$pDzrnGfRpFPJX^_V8@jt0cNHH8XFE zjVNo5eas1ou~7;e-XS_%3k%D#qlFNXgGDe_XhT(k&da5Ys&M5=D0(dzo!Y+|sBWrg zeFzL&c6kv2PvV639bR$={seEzI}m|O1so}lVmjdO(X;g{TPU0>9|T{T1ENsi;G?9n zKQtC+Eg!OMV|bAOyUTM+vrFdC>iT~t0@$kn3$X_&eM5soVN?H3Bw3I>Xf-H%WlO{C zK^L6;#e7A3$W4Lv2MdRH-DkR5Qe$Ye1=aYN}_L^E`i)Zz1ZS z^@&mUMP!21JvVJ8g$i1vGH9Dn>b`9RmHV)8oq9v#H6PI>~Iy6!9su7YaK?|66|CDyETg4=Z|6Rnn+S}hV9aL0hK~a8z%ym zU0+zn56~k#%P^E4*ME#U0ix!MuX-X74N5B_U1`A%7@cl=*AD(s*UfWChE#dKeEj(AKHuKutdj7}?CNZPaFLSix5c<@GWd#zsF~jY_7M@wbz0+b?V@N?-s&#> zRN6?_HBPmn7DH4hG_Xy_YATlI*Hd9RGVoRx1LK!ul^0vtRw_5ump-9YZ!nk_l@>Kn zoQ&4d)HLj+AY0r^xOzP=9`Vthme3b3XQ$W~UuG`&#j~SDvtciu|KMayY2<@9zj(_-n#@3!1fsYLA`b5JGk3k6}43Icux_ zC-^|_1)sx7)6AWK35R7&u6bt6$BPn$`aTLCyy5B)s6TcmUiZV3_XE9IO=dnzH13&c zT-zqC+Bm1R&unX-Rkk*Z_<1&e^)qb`FIR5KLKDT|{3o98&!#7Tx{TnA3+Ly`{-$$! ztY&y4LrLr3W>@o{=Cf&F&9lgwXAfr0v%;Eamq5)AeaGTPm6XY?i(Ow0K3P!R9=i^= zS}tUYC>DTC4K4ws7?x1a)gw`7$$I$YeK6kheFulc)@k1(bmX0d(Qh)odnnl=-Vy?)AGac*aZ` z3ET78G|l7)p5@!0=Qp!76O%mKSF6eOs|r4*DdR_r+X^X6d@FrZRHP|#lh_S`g z6~eP5m&C>fjm=qAj`&1vNy65=tifZvvc}|40Y*vjJ}A&{#l(9(Ae&7DwmvW|)jN?__bDgi`>qskdM{bRL7uoz8*S}{Nr-Dm`$#Q_lxD#FOHE`euH0K zs;q!~?)6~7HT#dlz_X@b37% z6vq!@QmppoHq;cxjf7!YkfWy&LWQQD8oOJW>_WcI8zvmhA)go_J^ znUahykk~!Ce(%OTwb^UeEpcU7LhUUC@Ml50ZqUy z0KH_c7PUa$>y3qR=3!V7JZOzgb775;qo12Pw$;vMZKa#bm!lcaV%zG*nOkYcIdk-X z$e)bov=o$-nJjDEL}U@yf#&TEn^%9oxNzdoOY6>^g%R~sM=9WiLgdZmGkP` zkCtLhJ8CGF)u^4?y@FYk%i59JPLfqRxz&AUwz@$Ic2;0eH&6xWm3TK?M|JF#Ls)W0 z7-YY*=XA7tG2lw>#ejTBdogC)q+0S9?iKLaj2J2K3Oy<89eQFj|EWMB`fm__&GeA8 z>HtX9{Bsm(KOTIyyyYVqIR&~KxS!6_tBK}g`Ep?7eurXf_kzw$H=x8|8z`=Hyr2eY zaLy%;9gtEI=#~8P(Vw)&b8_6zJN~JMz^-{>!8nwTq=pY~MmfSW;H*t5yU7*EqZU6g zbBaU*sQzY~>&$F(4emGN;vP?b7FV|mMUhR_$pqzwpv8K;+rR7`Yjfi?@H5QtA50jg z2~ACp*M~x3LR;=K^x94m-ml3uzMdhCOPm5_27WvHki3#tPV6M*cpMyDEbXpV+SN*0 zt)wOWE*R-Hu%uCMYZYXwpnJqfalTkZ5@)G4N;9Z?mbeNyQ|!C)ss<2$?XZ;TfLI7Y zqzUezJu6^I>O|j1Z$-PSaPKtk9pb))|J#q>RY$rFV}87XOC9BFe`~K6a{2`nJ zz`%idD3b!uLm7{g*=;EOAvmaSLKzsg9!kec+=6UR(~6?uyvriJ4CR=>qfnL&r4JHJ zg5{uMh3lSW6@)G`JX;W~4uo=N;fBod41Tzx6&dIv4K{xE2##NWROP}`xS$AksDUd$ zNQn6gpuu=Dp05J3kGNLCU8I*k-QHAFxtV5nRk>%GNdUp$KxqlwE2<_a*@H| z#w6U}3towaGC%2m9Z_--!38ttWNv5ElLQu4^D##^r|{?c2I@GT;Y@uFlk4Mbwu4jX z+e=u{E@EqHj}eVmm3;IE$F7_4;u5g@Bh+-N$FAOf;4?n`;YDwB^yp*|9df?e9tFaD z3P=@WE&Ie61bZI`KfQpA-(s0`RtDA_)4S-&omhP*Mp4dxHXTOxr<88(&1*KxGGc6m z89s1KVam?Is+>VgFx;h`iLeI}Tt0ja$WO4i$?3cdo>{$v;TtOUQ(_;c7~5Dm9L#~^ z-0Wit2dP7Q0=34paq(=%cnXoAKQpa_4O@Sqr2FRma~nqG+s_71r}Ui<8yRA=$}1w9S9dj zC_VHPPq|ldUy-xN%$t$ovoRcM`Z2@SC!j02Dj*PleP>DxdKpY!t6StynD#z?TfPvn zh%4gB*$)QK37rQ78>jTm1KN)q;7NFs@)o6_$DES_v?SKqB^7?OmZ)9u<6Z(7e6f~5 zAIbAy0$=fNEg^iKKp&q9b^UlPferDzwZH^lu4O>`!mU(aU;blt!x$P;=*e|DOLJh{ zQ(QQI1eSscoS?-)&Cmzzm{R3Y^M@dR)B*Q!qo@)Y7fw!d>XXtT5emB`@xs$xf0<#+ zu61{isgSL)oi|^zv4|c*ZuB{x?Yr|VlDuBaWwHOD<$&YxBTEzy%+?(tHoGp!jk1wf z=cNELQ_d;#BIB@t!Cbk|IGNA0IgY+02bREp^=%FhU7BZxP$%ZemDLDk%39t%B=*1Z z5O{DtJBIm&*<|^FrtX|{K0lg|^JiVIb*BQEVAjTdL=7mol)^Y763Q{7E;S!d(k!|L>^M52ux~n!n&-vXJ0OU?52H^W?62te;a;hG zhHxxxgP+(apMCuJ1Qq?rYwUhNiS(dT5a>^KZ1CCK{h z`*>bBAjS$cZTknzTNPlf&?B`ttl^YE(&gYC&Rro7BfvnahTOov=?^{7Ca0}`um9_G zJzSh2)I`Rc0Xxwj!WPci`V;>f8I%;KB&?MU{?QlJOuF)cB;){Gx$<)GO%AA4w{MB8 zoWH{2ktHk{|E?<3D^srb05>?7g^oAGZwr-9)%BHfv%Yd_&Bt)xLv(!7JC3kj2EE}U zR?8eYbqAif*0iJIvIVWadN2upT#=w|NU-u9f$Jo(3Oh@u*es1?C&jHGUPZ3e z&&upVcHx3$+8fB_pw%jd6=@Bk$ZH5G!XBYk7fqP0AW|f+krkwXNRuisP8LuRj0;C; z3Wy16K%p2AituybW!cd=(xUQlBnMIWkqjk17eg{E!U}Nkf?c*d@ukgwk8mZO&3_t0 z+O87XKDwD@U9;M-DbqzYuVq+81t^XW1>R<7e3%ogR1a1J~#`Hy9uB z7q=C%ncsRl$pt6g;LXcxiQoAXyqqRLDn?9EDRuaXo&%QxsMzFX4;osx#DHgLb{< z>S`7_Nj?<|oFXT$OOpKp{W_pZ?6*S)*+=qnPT6?K&b(4gbojY{tqe=6KvKEq)&Mcz z#hpUL1aUsj&6PW2VBN0a(K|YGzN~ZYNdhTJv4%}1AALj>mC9i6ae4U^dV=EDw1E7x z5`(6C{`vW4Wqu=e#g<>YbO)C?Sra#=l?%?sHzI&gn-IB3W^iEQZVM!Y6HhX(Y|4h` zPz~1A!VpeFiM!E%Tkmeje{{GO))q=exb;d$IN;!ccj3gzaM*izV*F@KG}>vwD$^M+ z@vF6ChNfr?&axDw1>+sT=_v!jM{Uj)MmV`c$&LDORb`kU-6a=CCjB7VL;CBGRBW~4 zDB_Mc$`<44L76b;?FCe<>k&dH(ZMJKpGLbQ8LrC+{Hkq#Z-UbLw10Z~!^O#2?{xGP zEFT}h5t;{Yz1s~9PIbl~8NtFcFQ14c3Yqf!PHG~4OeIchw^S19;o3HYC^YN?TPk&p z-bZ-b>U%S=lgah->3LKU)$b_vAZpy{2=AZQ<#4umLLClNpX@b1udM_tw?D;a^ll8f2|P(XLNHbd`;7*3GLt8%{;!G6R=3t z5QG*8v2^_~Gj_(j0tnYE^#IW%)q^xK3kFzLYjrP6D=j(6nIKe_R^=NZ&-Jf^hc#P* zh?ZbwouO=#T(6BDv6ZU{U94YLLK<`41h!E5CP-h5`6diTkp+k>468}lekRM1m8B{} zpXQ1CX=!%qHA8f`8e}(mcfUTxf|DAg1(xPU>&%Qe(r6-EN4%F$z}k6K zuTj4==t z=e^VZsDFOutT|}W@$PR1(^xZ&l(t&mZT1@Ol{oH8kp=c_NEmzrWA!4`4DE*`(&Q#Shq_Xl%`PX@iwpnudqrn}5J)@~e`?qEVRochLfK5*cH-4w*wybBaBE<11oQLQ`_ z)`1Bs$GSJx5~Bzh>MFW`@4PIPaGEcF6|!rf#rGg0l7{n_Z1SQQJIr%l7TftZwJI`v zGfft}e6y2Q3~H}h#u*p{A#&|Vq9VGM0$WMSFYUgsfR;6eUZM$Va4&ZCoXZsVjTBqB za50N5qjf}vl3tE${q zYh#+iu_n#B^0P5StY8G~GxC~c3pCqAQbN)h*M13dEPgU7o|E}!c=q+yzVvA1b@^Ot z)Ej>KL%HaKtNiu}M9f7H!M5`QMA?xGilf*{eMe>+VM}4jGB!u<+}Jm*AmD$Ig3<5- z%V{{Ar?6!$p}vO53QNLPq=w~x2wRKIcIN~8^UKUc6X!Jjtx;-q>PFzEsC9-bSI3*^ zbbYTTBbq3<4ppmsorq$FIVA1xiAaOunna>m=dXlaNxBL(ldMpHnq*WU zNwZr_FJDKAg<~^xo(?_>$7X1N6@>k;vnCOItHbmdZ^H<_|9T9csHcK|D*)=n?;&7y z^qvK&8@s2}855So?J4~h_+ZQ)M`KG|omn$r#5UYtdS$^%9Ycufus#i171Ag0C@p~v z$M0Zh*I+2rQhjM8>rMaCwdR^73t+v{b*5M|S zbYh4fnHm(a#1ufhEW~tmfGImrldVc)!mMu=7$huWm>heH6}B9j1G zdmC7a5g!Lyx9vx#ZnJjP@v2)ZMz{~g)2%McMA+3*{Pj1V%gcqRgT6l=S>6W1=`-)t`2P~Cr| zslZu_{=qgxFT)OlYm^zhL@o;yvoyi8Q+mHxJF)!>71|w(^h=!1o@Tgiz)P>uBQV8a zCCc}vSbX(d*?G!L`+1Nn%Mn%zF1@wsF3;a`29p@(B252(5?0qZi@DrU;U0$E@GzrK zN_zX|M?O~_DHRM+37M7$GTn8E#a3E&@a?Q6xk?k!BIZWp8a`nB!;+v}Q3W5nQ*qc* z1?tMuqI#90vw%uCSDLCiQzMHyV_wdizX`_KQya1A2q?EuAUHp`-0z>u+Q7D_{A25H zXAwwGc3FLYSZNUX>0sD24@ug|{&G=FlE$!&r$B|iZ@;UQk*V;_TJcjfKnrO6*Yktd zCoq(XCc2y6dj+eVfanx?4@h?eofOCAG>3xUP323ryftw7z@xOZ`K8Z+SyNe)-|7bR zbKK_SQ6Kh@_w~sb?K;xM{)sk3x~*znpH(x>ix8E6hX+NGAjo)0`PFuej#058yB{;w z!UEQ@0lu9>DqApgNM?OYC)n$nDx|P&Tg6<-Z-s-2TQXN%miMJGr97p9%d}8gFjVxd z*)S}@g9`Nmm8Q%X*X^HS$*P!s9<~h2UDucqE?YB2v#B{Nrm#nJ@`2kkO~k?})1pp4 zU@i84{Yum=q83;{IME)+rVam@^BNrxljg9yjBAuwZ7ow|RtvbII_t_@__mac2GlFG znNmnZ9P5BUsVG>TD?zqm?%fzd`%!K54S;X!%SHRKcrMY{%@TZvIr*(IIbG0#?Gj3* zHm(Tbdq47N$*s_07Vrsa{ChD3p|c#d(IXWC~x7XRWeDIu&ZCd=cKa?)2gg zd_CVW{xmiM{DCGx`bOvVywwdjEexpN!@bOIDbK5zj(1ey&0aOSaJ-{yIX6+gE%BPw z^Z+sX3n$PEC(u9L3G~7PRBK)I!UMFylIlJ^K;O;~`gK&(*C#9n7+~Iqp`}BQGqhiS zgRj@{bJYS%PJqZaH$&I0$?A333t!T`tiRUwC4Dv<@+c3UxOVv@c=k1n4p%(<3x}$3A!V7QI|H~Wo z?d)FtQPF+5qj;Qb8v6Cd;1`xHkbUydqB$4LWpLxfRLesOyL)?Lsb2L7GSVA zZXLAZ7@_QMDl~NH`W$>`@-&fsiZ5Ewi(uI5oYV06G4qHJkZbgG7&61xRxaVheaXyw zKrA{<7MSC{cP4b6BvwnmcFab$vboa{W0)==_H*)HWU;8I!_k~e6~Ai&A$2OG`q^b{SL1{Q}lRv z#=o*Wp1{-+XP#f}y?%`b?e#}{uRq> zdV!Q^(hVB33@IivJKLsz*B9{-CzOBJ=~Db0Xb$-RPfx(cv1Nf6&<}~}%UQ&v;uO-x z^ENZ0qCn~uMW?r}`Vd^9KHHF{li>4ZT+FDScz4thmvtU)N$8qLX+ zT0^5Zf4;DM361D_*HPiFtC8K3y2-Z}?yq&hrrp!IfxSH%L!umCu+QNUdl-#qCdelk zGqPJUOSZMMhkeQuYdSbG$H(*#$PQwGd)eF@dRq2|9(!QC)K+8=CCMJJ-q}%?c?*!) zYe7yvCihaiM8TGSRw^%aB3TQ?gThACAizL)+f-j`@Lkz=Qg8pY;=+UP)U+W~mEbW| z;h^qza^UiZn&qPk28&i(#(|3(qy#mei>EJ9!=5F*q_Wp&S_t1AT%bFr!Y5(|<4p$Z2lWY1;cP5fjn0 zU+Abecz7Ov9Zko1p5#1L$$UoIIM)i|`Zo31#bJJ(;A7 zj4z*|o0usx$5(LjWKkf(@~y?xTM1%lhfY7 zfqP5fo=(SeghMa}J~}@=A0X^Yg!*uBa&qPuG3Y;hcrvhXFr&Y^f>|Y%c$7`EdHiq= zD`;DP20des2?aOs-m}9?9fI(dv`cQDObTLOz}a7?YH!ye_r){lIxfLqF`*!NKIol2 zbZEX)hvxYl{RIwDSW{t=kj0m(h3LC=h~higE}u`Pw?gl$lhf1lFNETIl@v+HO!2D( zof$68J4!Js0RO}P{!ow7lehKvY-ZnixkPn;rT5F9;4*SL1@C4u!EQH6Zl>8?GAX(p zqgi`|RvoW3N0-Ud+bJ$$sKSVv&L$~Nl4sA};3HFX;qr z0vE+A<1rePORTuP!`5EHZQXi{j8eVsXhG4R8{y?inW+bg^M?74a4idY$=p7GWBV?D zFZocLE}voEm`$57LVo2_tRX#s&*mkE)XQhsc(V|v(vDs+w(Qn3NNDlO*@^{Q;egQS ze{a}FhJ zkS}a~CJ8>dKELzXd~z2}=IJj~28}^~_QG^)r@2JWfgrZD${{8K)vgk*iB%4fNvYWr z8gAksagl*0&f;c~0B}p1jvzVr@n^$Pbap<%jx*+!{bd(xPwq@kZCz(iK=dtkfke(| zF7>A^2fwo25_=t9cvDM3XaBf2JUQskp#P=|4y*1)6_g_K4ZI}R+g6q%k4Z6qcw8Rd zyl)FMOs}9PJxbsKg#``*kiNI)qdWEsSJx%MAMMo*i)VN<{&m)NTTwG2PL)umjcGrhK@5A2b0GXxA*aH1T{%l}(I)Q{j~V66=u7wpU$-kPaRuoQ?P4^=Fghw|0kUSm6i( zQg}br;da#y<6Wr0LBh=p&w-ed%xd33EaDb1ggu4v=l3M?$k+*Vs0fOL zxafUxhMgoV!h_TF8avd3uH~X8ukPM@1I2+ z)dqIgsB0oH>KZITHrD_}fp1z}Q!PLhJVL;UkAX~3>pZ}+NfUxtL$bZRGb^shs(wnU zWt)#>r7FY_@JC_~mWq;(!w?m8($b*UHY+4!WZ4-kVrBtzd$JWZwZVK}H>@fMn5zPc zhP*;3iORL-qGCz@ISt8w>*vHhq(2>-_Q%;AC1MCN=Spl8FQ`mB)Jvinu{6TrAw}>= zN>LjD2W3I2-sWf7%+VP9$LH33$!WDc+U0c%#VYGODW3D%PSzJRo>BTwSDls|kR%4A zNfz^4)<{+u`Pgd%uj+DIPzHTb2@ugO%xjz@W6h>cGt~!&H zF5}FOsUNl+!tGF_l?wYjfknbJxyW*_yJ5i>`1Zo*$>rN^gIC6gY5PJa?&3U(QFLR* zxJEp5gcP%1Ax4LPLQIYX1mQXvjkWWyF$tI#rfpSn*DZ=ynch0IW2lMPZ4bZ}eu>y8FwI|sYl?Ih&b7iy_m#h8xbgH0r;vqIMa3LRM|xJ=!Kohr1(s{Ols1L2 z@)^OReM5GCMeHG|D_gBbe2WCBOGkck zK@Dw(60z%{zHAhi3$Q?t`UNqlvN1Z(5XH_Dgb&-a0mVG@00E}y1Qxtn&%f&EjkAj{ zU2{yYQT67NckpCB_o{>c^*Pj>9Hh@*?&REk9+D@g_;as5x%2P2_Dd`tTIB83AIE`) z^+${MJfshQ{r>)5(-22(~Cm36&IfEQM#C_1#P?0&!)lg}Ei9z1{^~B3IhmCJzKN8n^zvNthp zi5o}G&P{AxF{SOsS&~d_sP>$;@-bW>dV&`x_GBJcnfpFDIft zkw6O9W7t6(yMYf-Xt~*)9TkoWwGJiwlRZUsHfS)7$dz_vYEU=ZG6u`_qzST@$s!eU zZY+p@&_xLOl3f$W@m71Q#O#vTr>B-Dx3>oCJVYVc!*OJ~2jMbPqp z7DRaqV~XrhpoP`pGHg(_dA3l0>)X?y`>XrOal@)p5YXRIb8E`BsC;&^1fVr1-tI0~ zoyndpH=y;^{nS(Q^$RhoT&J95vRN_MgjJ1|pL2}??n(9nm2^Up4V^JmF!(G=I` zPjYKcD$NHe@hG{5lVuAFz=KQl(#lDHXTwQs!-?rC4s|$@ip2N=g0^7sG|t=Av}D>* ziYt<$s2JXQ{zjneTYi{Qdlt$v((_qq7@KIT$5J4K(#EjN+k*Sq{$kiJgz4{47=yHg ztV(6|E1w5xeuB4ox$9BkPBuZDZED)RSvlVohOOme1U;9wJn|>;C&t;nlv{&;KmL22 zW_pR*sd+;MIMK^?X|V8|ysE(%K$=ZW`Z=KIEc?~mYWlQzy!1#yI?>k}7_KL^_3?(zf4#?&54YV^5RXTIpko*vMnBmFz@+Ust zKyH}|DH42DW%_cQrHJ=)HZsoQ8t)Fkd2>L_$F}Q~4m`6e$dW={5*6jzuVcI%G8JG_6#B zhInNOR&*URbYVg;I6MaesNUU=9DVoQO5&_-zMpd|+87(otYL1+#7IQu1O0B$N4#IWpaB77g)G=YF& zQR2pTAgR)Vq*#*T`ma&5&v*SFwLqC&M7}ES+_^J$0zv4X`S$#QpR zxs#kbVT^+K#Ud1ck4H)vy<}2fJnf&HjpFmOkI#F9<6-~!gx2~JlwL(PhLV|LoDH!9p!x)Vpxz;R5rD56|4_?g53Ft(+7KoLl}b2_(pZ8{(Y_ovB4-%$ zD2g=gJg!FDL*&{cr}3M&J`!lw{JU#3|L%XZ`9JO*eY#11>mz-R@jUB}_-6?s045GAuiK#W$DI4r%(xT6{@@7-}C38?DzRiVSI3l~VCm*Z# zRSkgJ)x}hGXHlpC&RJ1Fq_&N97?*&o5cYbT{5Z)~K_)oQRW54KfWYc*wHGM3g!TPD ztRNNs7)cNxi{@UiqzYkOU9v^PY#$gh6x9I{V7I0B> z#eS0jgm;`Izvdp0`Jl$H71i{&Y%s}wOVtLfAMmolUQkv0E!z*WP2qF7w?~e5FJuh{ zn@fmTgNzK6>FU|^PWp*k2i;pj4sdYQIFKHrxZlHrc|a08*e|(#~pcfGFsZPK%#p z+bD$C^rP*&lx2%?MR)P*H`0}g=`T4aF2jZ?gLankn9hM}?=uclcJ{Hd!xV1WWpk4U z_u-T_f_UMUu8V;M^x$R5+MaCKv#M{weLPZszLjWLxSiW562xAv!rBpsa@rOCaKR?G zq*Ra!(cWIF_7*(7_u}UT)*7!vwU3u-z8(KAGPKOMTidf+boj?OOyc6>Pp+Q4p!OPf>rDB1kyG4T|;l9n4a6 zyE_k?dIz?%s29j3%X@EiUxb*_EwWC3gr%Y-XMZqsF*+FoxP%7Lwb~g*9%ZxQ{?%xh z(M_&b_5mim2ADJH(PuvdDVd>jQi39@4+9C?J&Y?N*Fi>h2OyECobI)SGBy(z5tiK= z&G$8oGW`uZ8&F+^B>h4V-5f!-_}(@M?tmEU(GCVnm+R3D(yz14KqzXTVR#CEXLs<# zOXW_3fK=@@2t>^d0XZvT)5W;3zT@5b_!>7>?H_X5r4F}d51`hKwWJT6NYQyJB%cNu zFM?Ta5Q~?eijjauVGxhq}|nOwbIhs(hQ)x^4jRa zY(1pK51W`ZX1=x@l8LJKd0v|J>?dk&l$D&~LXR37M=Kq}u;nLh&KuKz(r8{c8}Op| z>UvkDc07pZA;do}4^dwmeGFZp!DIs*)e`GtH%vS)$@RPM9MxupT#un35!uMBC-;&K zBvg-68a+76@|d*|zph*Ey)^Ly;B}Ai`QZon=MwF53D>%A9|qe0mg_RjFeBWmk7%U$ zB0OoA9A3cPHJYZx_S2t#i(n|R5iOIdDX*DzD0p3B$~Sos0>3Ebf);RT|RPV~*f=O>M@JX<3BJ#U`TNzdR*6`};V&{dW zFkH%sp?5getjXPx*UZ)0=45Y98oyetgoxBdiP5S!;AQw>Lqh67|gqxHLs<=-EtQ2YHd0y?l~Vq%ygr<#5S~(V&~~^$wZ%qb#;_D@T)GcAoNLUhj=Ji`%3b-tNTi04 zVSOc6M(P27!Mf10Gb%!%vPuxA&KBjg-V|Nz%)=q7Ne_S~$NA8`Id@oPZmxp*noH*t z$IOnEA(`^y?wB^K)kR5Uk@13du5~4OciSd_Y={Tw3JFbUk=BZ$N{Bprqnt?2F?BkK za(QCD&8HNh$Pu1U9SnFmoghKzQznX2cm~XbN!p=*BhrW~a#lTqjv!9(31^Ho^ z>S8`QNQW@?E-=;vf3u8m*-21!G(9;=$1ZPs%F+HfZkNr=MoyR^BoKjSm_utGPorR* z4hQCFmWWL1QI@%GyZB-qM!^`b1I86%H5~# z$X1u74RB@a>ujWuV1`()?W~oMi}h66h@9vL~y zM=$cx1J3{qC}*Cb0tJqXWa24agf;=at{QaI7K4e_P0J*^=23Q`L`hMy^vr1rTsAp} zaq0I!nBl6r0vQ-il%!t@4PxThAn#1kv#r%-Y(D3zgoYY)g~|gE79droLy{~-*R}M2 z3yRUF_$I6kb?X^*<_d|Ny1)msyc9hO8Xn*8dc-ss#RK5OA?Zy za)qb1F2eUOR$eVzBD%#Vl#KT!PMU|pwMfiMAdrvopGBHoLZ_QIw$wge_e|f|j7GY% z0F~7h)oZMj)JJsTYrC~?;CU_VZbvR31^H&PzNWg+5?R8ktH=GHi|J7tBHF#&>b6>) z$|pOrzb+T4)iMT+sz6O(vP95-5A!j5EQCGiE(y1893eS5TWq;P@rgl;ojF8%D3)~R)>ms?{Mdr>k+T0nxLoB!mu6JjUEBG|&hhp2HPRJs{$~uSD;V_x>-n*y5 z*7fg>s3=g!YvL-1pz@%u`uOaLe(UZ z(4-)tKkIoL#IF#Kfj(_V7d3YDKlS7TtQm!Cg*b-&2q*`LLTF2pk?d}k4^YNs+5Cj!w zTo$4lKiMkoT+cl}hWB{Zy768cQ`1=N>QHSnwGD8Wd_uu*A{EXm9d*j-q8IJiDm0zs zCm=uZ^PH5iDn+@07$@~JUPZSpXhGW#>Adw!PJ^K>G5eC)wkI4QilSY`@s`fkkmA$j zMGEdDd3j*Zt}<+YA!Qb5H{LP+2#UqH)XQwbBcdy^i5JM96ocCIVb-!X%n zpb7+Zf=z8|4)m|tv>7~nH@E9pTQD`+(%X?mRbUh94Fjai7lerY;&W%iLLLmTllk42 zx|uL}FMBy@NaT&y6P`IKTzhg^Ay*+4f0HR;f5IfBZCP$Qz(CdUU|&~;S<8K8ofrrH z=Xg-)I5q?UCkk!*KW~&T8!@KlOoemp5=p%3U+s&3YOSgH$+q#uG@Yi}cUZX>^A^ae zf>@9PA0`Ylgti&kxU41jc+RZBU{X2_qqd1YoLdK@Wz06hC2L+^zPo^BpYP~eA`zKN4axZn-$|m!YnB(mZE&=Y%M9!G{TTD^( zEU|vHzq|7==37n~bb(OlmD0yqdMpIXwD%m=l3Yw7nxjwXv!%2(mEmM6LgM+Cz6*YT z%}D_3Xc`cIwty4ZL2G4(;nNaDVBZw9)Y*-lotLa^bKmoP!@PW&&zDeG(y!2ddX(ow z@XL)3Q3Lu7s5cxwI1TGt7^zvhUX?uBTbkj z9D(M{Wo?fV7Cpoh^?`VoVDXn6MfBBwIO=QVd%4doGDNmIGLU=wy~^eA*ZyI2U80=W zx&&>HCn2A^^+mE}b)j!z^B{RHlM@oR!sHP=7UY5DFjaO;zZ3k+O}HZu$7XiTZ0nK~ zqYxe1PEJ4%0;{|blB&Fd73or=z}cf4E2PpVD+*ZfepDjUdL^Evp>EE558GFNVBh&X z>-r-ME6Iy-D^*#HRVC5qTvLE$x+-J7HVns3Jcr;CiAdq!WqkEHGqSb1H7lp zK|Z#-@*$Q3W)4a$k}{vI1~`#r(tZDavM>wLTy+uLPw~k-QhI&g%-zC0rx!emA&Vds#*B!Ne_|5eg8Auu7tRI7n6r?^HMBBCP1R$V1+7p?rikyf_Sv?4K0?7mRL@ zs9rg8NH=)pp)%(;xOi!%a%=^0bq?e92FcdS9X|l+Ssm_~3uOZ!07+?ohDg}lAUdFf zqB+&Iyui-=l052rwD22-cIO-C-*8jMw}$y8%+Li}dTWhvh-X``HEA2U3=HA70fZ_229$|^D+GB>3di{$~UhD*oGUd+uo=UdCXs0lu4-d zb;?gT<7>db;bGcDNwTC>zvkFQp?;ldfqVHSTPTfCa?jl`ySd0gb=-zhkjqHSC)q26 zATGpA6lO>mo3K%4gP<_Kw+-q-_ItadDj=EGRdRV;O)g}AVi`{nYdN6ufLUSFrOs|a zj)S5HBRtZ~%6(SV(!uZCI&Dj$%5gKyUlwag5z#LdV$a)(ko2Ml5bYvPeXK@`n`)BW z>BkJGaD<{9&&w5dt{sJ!jGUV=9}k-(!jw|= z%vVzcO_#`jXtq@k_$^QFL#JiYTC}OwyQX!;CV7VV-|`<>lOr=M<5b}eEJrfsX*$gM z`6--FqccED4Bb25971d?#z2y#Qb23?eDarpQaqt4cF}(b*{5*lM~EBheNtloZ1P9ovk^ z{U)nV(6THcE(^NGKZO|7dWDs1b}bCp$x(tqf7Pt7jg)@>wa`1Ip=ZYpv~wE4)zxsH zGN>%Qo*iu#NFLZ{`u^4ReJ5dN%%L<_SAc!T806fJF(jR>;ppD6m!ZqLzn`9flQY%- z3`AgmA@)c;iqpWyI?p-LKATwH~Arw$bQ_{G4(1MNRnl8?JP2nLqs|_J`9$ z=Vt1E&n-*+d+r*wzqm1B#TgSwO3FiS%AR1HwmueZz5Q@~t%J(?ic-AEQcvY2Pqur` zHwJLhf9jM_EF8qc7s8b_SsE%A;s)!iD+9oEfv(-t<4xT)iHRR7#5H8PsIvfka1WQG z`o=XktMmHATW;1xu>~a1+C7HZm{lfIg3 z&fqWN3CA#C5=_jaDxW-d<~Ob4yA(&&p;l$g^{Q1@8AW2_sP^^#rrC(7UhiL0^=j>+ zfA~*N_yy1zBady;{ZUFd!XRutxN0@bPO?d{+-c#*aC>0lhT9$4Py#Umh_nxjHpPKN zJV+QObJY<)n20QCtAP#R&;@R_*@6isqMlwO)~uA5}EJ9D%X6R@IaON~dJ7 zx8_DkPxia>s?<=d5u65nY{f|4{HfKKe|wkk>TKi=5piRlp{UWF@1qpPrmE*{{6Gcj zbw*){sxdh$s=(g(VYXVhzzG>DwTLw|J>*%Psfpftx74xRd{u~w#VMxI;NoC9-l(Z4K=HheZ_)|F3}KGQzaUSHYn9~9SYa{zsp7NL--_#ypg%V}f0AH_ zbu43|%)u6aD*bW%jO5_U2M^$aC)Aqb+v8wsA0D;k5D7-Ri@Pnq7TW+-h*3l7tT3Oj zwsLdZBwyYvF#Qj=b|3F-bG5ll-F(--hyZWV{(iKAPYk563QqfdsCGQXTfeQSurhU` zkIRx`b;6SgunW-rGT6&G5%*kGf5OSo(3pHy(Cw>a8?NDYwOA*f{x|f~n1ws)3wq?` zs0CH1`!Z(SXH?p3_O3*wQ2BpBrO?j?R2rkSdFvt3$#v1v3XQQFU>V<)1;=-#J9Ds< z=(;>r+#trj45FD_fbFr6(_Ngw^ikd$0@TxCN-wdfG6@#=DjgqnD?S)qf83GM#yQ1k z;=V6OLC>O+>G5Z%ZTbv99oX%?qxWPcX~ws@vp2eR+uX;qH@S~%x45^q!41*4^i~p= zAmxB%8T0?(Gy|h>_qWUZwoeV`?|ifK;LAhs&yk}P_F`d!z3^T6_7wV+reiD=I!UU) zz;O$nO%CD&FSu(eakhKBf2&j<4d(Mi-pKfm}I5Xck?G4WPwH*7_PnZ5R89oph zgbhj%Mm^KaWtn9#436j`Yp-S%#~)&`m@h8GDJo_$=y=YGn&Q%VG-vz>EI38fuuM`O z&Vrm3#;+Y)H&-u$udRNH{ig@pm}gMq;$@rXJ;8d~C;YJFF`1y4f2U^%j@LVU8C*m` z(h`P$Zez{!(OZZ^JhQ}e^Q{idfx25C=lQQVEcGsyGVs!cxSrdpm5Z%KM4TOuh5fYU zEJsAmf7+eoG~Q-e_jegH1vvSg=9 z23k&^+J0GrqKDU=Q<-}*(9w|wf;!5_NT?lGi1KV0a|vS3dBP@clsTtH&v+nWMr|0M z0{^9h7>~IqqNDtbl@WHVcT&pWJyaMOdX;%*9Tg41|oZAB|P5)@d8u8k-v|J=~=+Kr&<5k)#)j*F2?E~rVc`4Wa*5v zG4JcOmvQK3e=KLo%XO`}9p@T04lK*T=6YRhuHao^9dD86esm6`GCpDY9G~sk7!i9XU-{a^i zJ=)se-~B2+HIg5loGp5lqJDa~fSw=$dtFmx z56l|9XGTc&hRU6aF}#Jh%&6T3DW~BZCXuu1$Rj2zv+Wox4zKjG$&y>GxK$b>tP~sD zMVW~tT^(w`3i|#!FHlYG8R3g?&ex(nqeblne<=gn?Jn{bVkk&_a5KaSMZm3_>Z0GP#O5S{(LuYUo ze{6u2`SY_NEAru^Qiyg7RCo3<$eAbb0yTy?CAdIA2sXlU{;Ua->b<0rsVu*j6m0J} z!$^rQ?9Oih7RntBQ!4G8uO~TF!qaO^>;z#i;{V|ceD@s;S=CYKKG4lE3M&qVogE*i zC}H?=OabJBw#EKa(pX(Z=ZAx_97h}{e=gxTj}yW)E6NZv?m%K%a41?E5{4QpSU8Y2 zd{Ty+gUi<(mMu=k~{jiDh3|%XDaE>pVx@0Ghxf`}Te@Klde_K>u z9G=QMKrR2a5B3(*;9rNt9&Bka3IBD{HhM6t`nX{zN#=*5vf6G^fnqY2BA@jzpcJPe z)8}Il#07{Cb~`Fk4=9{T@*O#-+s6uBKw)%_f}#(?*@EvglH_ESxo3I(AXHpV%RK35 zCD0Tn@+ZVuqu|^h^@{W*&<22)F_YCG63KN!lI({D!SU#r9t(A-bg=tqe{btC!vHhG zlgCf?@q_pH7>}7X9-eHM?ZVC#Cvd|1ARp%AWFKwyhnDxY%otQ1(1Zxeqy3$oJ%O_^ z6V9VCSSx%;KVt&IVw5oQv%q>|CajN!)6@rb1m7iAUw^!N=s|jOCZw;QW|IKa872r; zPxiO=9(mC2&4l&@_~U0Ee;im`FbM$?JVx>G+s_FkwQ%s+lTUZN$&lIzSi1G_@z%aq zZbQl)4|`)QhsE$Osu1YTNKGwFWre}U_ChDvCubvA#@&Ky?LtID5)f)-r40F0a838= zzS!hOnZa}IQk-KgNSZ^_-)*?+>P=k%A~_+LE#zmm2eQavivt=QeKG(Gh$le)5L(!(sVe0RJiNw;?*UFf~p<&`YDT_#E6qV2g+7g^)V?#91z~8A zTv)Z=%UPDRq+B#4e~Qa)co2ch0-x&Y4NG-w4pLre+BOi8RoHe>G@n?*y2MGZD|Dd) zzq#or1-`D{-xBoE8bm`fQ%SGYK(a>db@N`N5|Fe?#DXu$KCcjau_Ph_QsTQRh##o9 z=>Afc_DDD=0?^+lOF>Ddl3`Rj&t*nN)TPJ{q7}|#M|G91f2*J1s~lr`V-fE@Qe@?k z-#s+V^v)AioBdpLx_U2#``IYkQ4KAkP;1Aw;uYCrlcmq=Wyz{Ya_L$uRjh+xvB8rv zSTPIQ67>kBP`2=f%%CtUFmh`Ze}I8`pIb0qS2o%ne+U5kEG_vniuvCCipBXAL2CUQ zeUO&47?1F@f55>s9p)6SK%Bw9{zg>1r~Mqjl{W51xe)oK!!=DI&7dIcn>s7r`*?mg z<#&<@G6?TJZFd92$!^hhrEF|~pQ)V+GB8uR`e8ol4dd12x=CAA`#c@@(-F~ASof9A zyQUJBz@Nf$;HrIY(TKEk@D!;XT=_*0-8c=3CD|FFe@it3nxr_&wB!JAGUD{d*^#>& zZwm%c*idZ^PS4GU!3C2ly(7Xt!7FQtxe*SK+t*+gvP3UNA)(dF@k$eBaSaGJv{qZ* zNm@NG5E4poDA77MendWw=i(IA1;`Uby0{HCEk{$*?4!9R8W${ybGu} zofMXGe{o~TMGeYiML(Dr2uUr*c`XbY*e4z;Oy(E_*S7%_4uv&F0aXi3p_(*dd$Ll6 z84bF~w=-2IdDRJ)HN7Y`>F2NB9ndCSWym$1qaS;r>L8ID)5O#1rMxa}Iw=X)=_f ze>5FbTM3BbgUd|6y=vxHq8a=-g98D66`k_!CX*^rVKhSxhi*Hp7iC`wlAdP9(fc-GZrT@aRTFs$-~LKyW}A{@=XXA zD>IZRt4M(cvSa>%p2!D1dwo7sAD&-se+I315E{z-RybE0t83ye5yc#f*@3?ilYZ9- zk!v84l0uqsboraX&fsrnF$5@FYDMJgxpv@|dMzh+X*e`>cm zohQA?(*%4?@^M?68iR_jYg=NF|0>u@)_|Xrd#0mE0P`5P+WqBl80>6irq9x`Q!txt z@B_#_iJ5)X9m#3L)B8X;hc)xpTcK&PYxN~;dbKxzlnKV{Pe?*k=YuvMF z@vK*#xZEv^i8|AZS`p`-4b*R#n-D~B7{R9?rC8qGW-<$dfzO^!meUR(|Lf$RJR0yC z{LeES97f&$xtJccG5h6K7m(?68_@F9<|SL(t!xZ$$m<1R{eB= zYnG+AT`eeig+uZ=1@mewf7=AyHdL|Ji|dHZmqo!k@6(^^Ie(o)yxh(Zc(gJ*|NiW_ z2{1IA3n+zJJ*@X-)r;exTdyXp);-C`zyL}hG``NqzZy5(bYzm2o^>huKa1lbO-4+T z+aPg<|8*~66kVHuuI%nNd5YnOT>VwoLb`!8N070vB= zOEtL<(A#O$7_~$h%;R?D2Bc5Rg&+e6yN|nGsSr3PS8;`f1!B_)5!%kfk~`3c2&9{ zkK$*PadpZdZ|hs64VuU(b;vdEOH&EDia#Tgs}l*j(cdDC;505Ww@Dy0mCL3OQcUrt%`@t_EOmg(=lEt6Q=F%pRZO2z z#+51Kh7?nrf2mtiOrH_Sm5JnL6jPk28&*u8(Z-c&nASOiLk6s(&)6c40a%9N7kU zybqxi60J)$kjw|M1)8vdXg`LrX%`&>Gf&50lj<3&v@aARiG2S$Y_!>JY`MH0-a-yw zx#wo}X^uUba%u8rmwSQ;>xYQJ(Wn2}>T+dnLBgWR@sM|1=C1O?1N<~(E0R}p{ToX< zB0SHhe`BFScn}=F`}rz`C1EiD^6j^5kYZ7BIvoJ7+UIoIcs$2)Vn`eTTsoxV<3Wlq zLEsdQ2DTPnyYHu_4Y|LbbQA`3J|PERGAMPYUewK?*k({mT%}?~)tuT>5g9>w8-Wi( zKic2jdC0`kjGxd2VWe0M{J|P9Ui=^clUs{{h6iVo)$ zX_>+AUPZIM+}k}wF&xkRX@6^bYyaRU&J5pTkw&9JPa`D>^^&ksCU}=F9k^F;#L+^Y zf0+x4iaR1b{DwY9^Dztqo|TYZ8pF~QnR8N*?Z zI2}DS4xVPG^y8}()~g}NDtQ^vJRtR;XeBdHLTanUXbPG9=1m=12V1LeVUzoCzZ3#F zO{o3D-so5U0SHu^AA-zz&m!@DFfgBwe?c(*?yp5IB~YdmF7R=jqgF-UXm!3uFIg=} z6TrZG@#mFQNMfakE_|uR@S9!FT#&*tWJ_YwpGlv~MuF-_4xQr^$czTGus%vXdN73g z`Sv|?Mp~B@-R2!CsT*e|7ub2(SxWuzPo%<&U|CjdCTp|g$O5fMwOgf>ZgkSRf02Q0 z^!{Reb+_JA!HQ}dSaInA*GraEf9{DY5KSsX4`E0 z7Se1dn*fFBe@BP4vRAvwrhVLSf4sNxAY$Ra?NS)kKq!kR)bK1&!J?49oMZ;gh4t$liY zJU&cTOd+askiq+4Ts_uUIW2S!X4L!-P!7tLpey4}5M=+6e+Pv>f5hh*mH=@9{W{AR{Mv1jBuZM+^dc!H&YxCXp)06O zjh#Z9rJsEQ&z4fBcwU$jkTR3L8T%#_V1f^6pQS#n+EgU*;iLkS2ND=npS?4Lpz0L5 zB8rF+V-&4S3`!fWfgIR?_Ba96FTY-a=P2jfYin_7b>vsCVBbh2f9Yhy$zn=Y?iq)9 zS*d7lh5cS1s3p`SGt@G4v#tP@bUXm<;4s%fYZrod7&u+^O}u)foZY6F-Hqnjoro=9 z4KSuib31Qysp|?yRlGMX0_7n%{CWXW6J2Zzv!|zP=IE8P>0u5*=I}XR;B85 z8HyU5<}>&-7XdE+e^>rHEB`O4@^7YwPTMf=&Km$2$a`r2Phtzwj)5^gn=M5&S*x9e zna^z+HdH{cthOGE#-Ht-?tgfA0sm*ep;qr|pf6z{*U=tNc=@q8xmOU2ZpigUPb%wouK zagGd0&kKOnH4F@ig_KZ4xTF!65#;3Qv<0OgH;$8U`ZH{W`jYFn=DpBHy_e~du7BCE zj(8XbCclV)e+O4SEXm*A{bP`5Kt<;C|mSJ~u zGCbyi;j!7aOom_^E{wi^b0d+3wlf6F#!)>^aDhGT;(?cLVR`z(Qe z*Yw1CQ}@Oy z=+;2Th2xX_0#*!^xDOM(pUtnYex*DqyTYY~5yVw9j09j`jXD%NF?YUWyrzy!Ifg zZLhk?X4NA_yhC`Da-O!3Gpuvp_TOcVSk?J*Yi+B@W7?PC)8q)LCUKaIUDAA@_=He`2)l*uBC)GpA7MX3<{dw+5_Kk8EDO zdF8^wciJoezvRat+vm++y6WQrgfImjJIJ>=Y%p`vO^R*{JC>)%fr-lng0OiP2#u0T!r{~3+2o}q{lL!f!$a}zN^7(#65QDO{nSeT zL+f|QF+6gyhcbd;3rzLz>8&4qyP5vrC5}@QcPi`O)v{awEXlqortth6qI3wxq-;)V z$xhPbLwh^}FPHgbj1G7wY+x$cFw5(AfAyaFIbluHukzk4W-py#?Q8;{g4jII=7A(o zD)O?WJsO6M^ZIdT=gEPd)^g>?#dJd4tdDNN7kdW^nG`d9@C(z`KP_RftGqC+=j2wr z)F7KJuesaXn7i6@Qjo}jm&hkIns4k;cTFI9Rf-??{wo|T<+c6lvHhx(ircQ@e_7?~ zTGI~J9xDk;k#Q2nJ~N2Q;KC)_I;Fk}tsC~t($p&HIfJk($w$EfdmR6>*o@rcow z0`TK00Eb7ZG*}2g9{J%aV}O3Dqxi&HG}$@T1GFwI-}CGr9gWm&B}m6N_k4PHmlx|X z>Yx5IX*GWsZ0(M2rQ+zi_PwS+e?Z`add7R%%ya8$o75lv`X)$VHk2%kH`bcD2KEMU zS?BE9@9NpJzS9@bY6_5Mc#TI@ZOvQd#mohg=!rG`p&E93=@y7{A07C5 zs;%;GQBNbU56)7D6knHnX%ax{)L;Y6G^QiR+l)susUn^y_&*BD zK!c&@C}#4~$k3&zwy+x&5YAs*N>~GLL=%N`zXc^;w3zh3D^g1GPYce1a%#Z~qIgoA zw@DZ$Gs5C1OXoVUNPl_Ze_W(O>_4R7a4m}7&=Js5L@QMf;V0h{Cw&u-9mIo||nAyF}u+pv=W4tA-Oj5WxwLHVj_lr5HmwgX)tMSqK(E&0W z7x7aVHv!)~{7!WT%i~fWh~+KIL+#fI9pf}uvW|)Z$Di3K` zM*;Mki$X7YCq6IdIEBAyg;0*N45bv?wyeV)+@bE>vFmQoW(8QeNS$O?#ZQ@Cr;NTu zixC!qwTS+X-!F^Ue_V|wSP8q$_2|=9m82SDsf%Zwv*v{KXpvo2oaI`1DsFWUowf9+ z`}F~GLd>ut%}XUM&TPr63&baZa|7(vxJQUL)s8#h|6HqN;C5q7Bk@mBG4hLh>jKpv za*+_>IstWdwau^(Q+ch7+Gb0zonEYPph&4IxLxybnP{JJe?gCfUeo*RljEz=}<9&4Kf7qL=9UQ}4W8*O@$ZEboC8LfDXdp5!E<*ePNcTn|_ z&3cW7y@*O@KY$rTZbw5;vnf-n^iS~ut$62476ESCrM!pt^r?pa8#Z|EKC2CU=U}tk z;F7x1uowG-eT5SSbWdUPM*IB^4?W>p}G1i*E zm?8d7CNP~|e}Wn8Z*4Ssbo4~bMlHK-%ju`ZzujhJ`u(r98kwH{YwboF@g+7D%knmK zxffoj>xqQa8DX+0dJ7~XC_ahOe-+2yJ>!|$OC?I~SsA!pSTw?D#JGzg3<$HzXrZVz7{LY+k-80r@2u?aHys;O9fs=eSYW2X zKuJ(3a!U}$SV){O{hZ$v+x1p8E`N8cnqi6i+tE5WnqC zi3WEy*$Ku?@DQVR#3QV2?PfDwy$bZTgHwiHEd&`BWjHu83 z>{5Bp-pM{YNn(=@161EENwI!el-_K=;jDItY!5TgBRPdF4fhF|wo;?)6x8gfphySn ze`A{Y2Y@)5nCF&zM_$5w zTNb*x2Kw2XO=$Y|%fVk|?riSIZ1Ud>uXtzCEyDZL(Re&MK9UC`ukdPC@$-y>;p#%J zk{y4s(B>dcTkH-j1uro8?$7W(UA!2)`x{3VzAcA7z5;(ypKeQ+EzVgw?P<{{e{{q= zy99>F=FyS?Wj+44@DrrLC3Bp}Gsp)`p7p2O1YmR1PYg27klSd{5;}xSmIqW{uq2&R zK!j&A!0ElT%$`M2%E>U}z&!S>FPd;yO8340hzjv~AsEO^e)=h2nODWFXi@Z8wE2=W z`r(1FwS=7356J{inZ9-24pRaWe8`{#0B?#Pd(N+gLe3W#_2r2gd6ja`yj}Z zD;qXfYmPzf6ptyB`9AdcaYOEDewB^zP8!@JsX^TbWOKq)2r_=OzkfI$!|#Xq^ZmWi zCx^JBdIf*+JCyM2Rq8%=RXeY0MLh0FG=>=9#l6i*&+-HqzY}f)rP|J?f7v2M4YbR- z8m6_z1Z)!u957YoLB+t63|QEU01VYtOcHkpm)(TrNRi2Z%zRCpR3HUfrN~*f_&LLu zX1Uj14}iZ&n6XT-`j7x4cD2vkRys0ugL0zRYH`xf#WX+_*a;A;XV4d_PuShCgZVVQ z$>wDvBEp|}0VKcS?Gfk6e-WZ+W4&u%sOQm?%5rfMfLx_>I&vOo=f!M-KahC6_hIk5 z(DYv7Mx-%b%rlD8c9rtA9=d52f<}!nzXVB+>F1A&qRfye5=UnSbO3=>0%0BlwjA-6 zB#G&(6)G$Gss!|9SWXrt$OilvZnWj3SS>5VYORgJ=lgZ-S3ccgTb_msK+FnAZs(l0VGvY2dKsUo(0<{e5A`9 zq>wa|U@MFiSXb}Rq0draykb!z96xEPAD{~7fY}t(T9Pbte_DD<=80FGuSQ5tK>W-~ z3=6)%$4s*_j0Epy;Na^{mU)>E-N!$r^T#mW#E>7rI7aB-5&!caai|ZnDJ;=|yd8uQ z&K_VO&$u~o|8hE&5%4reQZK0z_^@Q8P@&e3btViNxCa|>`4v(k1taA(x9zX>W#_<% zh&>MsZ8Vm%e@V8;&Vde*)`cwY$;NIN(gx--B!P}HPSfD`EZkpX(?6#-*F_G=uic-T zC$Q;WX6}Owgn;K@kJI3Tl_U*>57P#tVyC5#$0GiS^nf9F@vxWicq6>#`)F}%T&Jj%?Y z)675m@ne=}rNh)>_WY}T}z2^?xP3nk% z+f?jef4#0U=OCY4Eq{ERg4lVSfd;mOy*!cOy$lou;Gx55ewEL>P?h0D=-Rvcj4WMm zBS(gYG4)mmby(1geHhin=UVLaPV1%dyWgu z|5)0n5O^}u)KAnjYDCw?pNnEr>2NU9z&1Z6f0LNo`>Dt$;ZVgAl;L7NgG}7V)$|5A zyvV1(2Pp^!CMHdOwnAq&S&1v^4AmvbyCDv{27thVEPvMsURb*s)Q`|py2%@Hklpmq z9wyZMhjs0HSXWVpR&i8^EVpa6Q*wIp+r68)ZGRBoXRLKMiBRYTztn!Y0T@NTS4+7Q ze>m-Wua^z8e1=r3vT7ZcQkqgP8CXDTDO%DR3F=AK2g}CXp!Cw^ zp@RQ7wUJjnfU}~QHq4Asxi97W;T}J3If)E9WD(ul-#`BJvrk52kZipOGq5KHC@qQ* zBa1+5^9}9VX1M}qi#vSTAFQVo$QIbae-%}5`o%gj9dqf;h;)4P!7-Sp!CLsL3`kO!YCr9U2L^8VSH=%;TN1)7j$)@BU$_nihGbp@rw*KNYgf>#t-E;E+a@G6oTf0YHU zjb04=RgZ)tmSy$n-~?Eu%aTqwngwu@xNX-{mof3c+3xws@Qr4 z4pfwf4|I`o-f3f}8d?V2t9kU;Cpu6)7ge2}JJ=)7SBZ?b$kDRt4byl#Sq8yZai4-A zdhY{$bP-K!#8`Xq`!g|E+A)l*f9$mp49Cz~)>(VeMYp+_URn0Dglg$g+6pc)O+Z;9 z#5}<$M>$0}dS};Gm+k}(b?s$#4agTgM0+B@u;PAf`JQNw_L#?7OGE`+J4-Nz@!Z78 zD5F;T$;o@m%*;_cz6G#Bzr`VJ56vc?Met}FPP6YeF=2QDZ!(E^-5-Plf7tA9<^x!3 z(Jp0!NLBB+2O6k~E7!V({R#_g)q5?IgoQ(grnx)^+G3zO&K7?7lZD93_h|@uML+C) z+vp}=>0KSM5&BJVG#_6lqeCqocuIp|r@v!=J4(_4*UAcq+!^GbmnfYb9vLcoM`{Yf z_oCTm0K##EwgHv;cBbe1e=PUtKk%QipF^zK}32PA;3gzMADN2#oM)G@_Fo&@6iAc{G(ke6_Nf7pCX4`ULc$g#=N zb2?agMPCIjE2?{0CzmiKz$f?YoP%lzf!W`LPKKgvKDUxw;M;5VN}1jy!NCfB${7G1 zj+3p2+(R%A{gr!<#%M>8QtoS@P2L;&_2YKfUhWbd4?30o;HS7Cm7_oDOGeZCjrv+_ zXGPNX>y&c?smm>*f9Kre?EFX2yra8Cw0_A|TC^IO(5PJB-WQ2QlC+6s=Nx2 zIK{>Ny&ICC3L>E|eR_-69$#}yGu`ecK&U=9tyv-Dc8VaAPi{h!aaF~Ka|s-bMhBr8 zWmMvFF`8jc>CvlR2*4~5op4>EGEB)z(1%$tNNTQ8-bJOPf3szI`-L!N9>5gD@+w19 zpb2RUr_P0T7W&wTyi$Zq*_rT7Q@!uLd4(?1FtaKUA?y*Toaahha#~=IP3by`V{dp> z>6Rn`oCT|fNlKiblo>C|d!yr7-|#|b#PPO@8wAaCt%yBlZBy&|z0Ya!-gF5#*j2C5^~AzXFQ63g%IkAKr?oQyLMt?Cf{ww18yjKWq9f4L@` zPV5sGm)A{V$QCT#)J1Yp5KrXi`89S_H6vk>NSEVUvUszgS72U?;R780CMAmAlqA)R zBbo9Gf069SQq@MKy!Ku$XGCg{sIn3Twvc_FZ?9AzrU3hJc({1q`BvYDV=ocT+o0_{ z`tYTPAHMM6@##xEa^i3D@bAltAWLPLBzcCG`8u~y_D^LLUJTxnFnbus2>*y&b zvZoB3LTVV`sG#<_Hp*tSWSDT^b!1wL`N1-4rCJVZJAmeqQzuUECnYYRSIg-lhnfPe ze+;h-#Gu6?8p}y_*ixvegVy*YycR%KeDo8I;IIb<>akRV6ksuoL=45@nRMUgk-Y0- zE*G|-KD%}l7sSpQ%v^}j5Y(OUIO5Mdj%K9`J|!cFY7~?f?6fUqCq-5gx%HA{>9B%1OtRg3yrcnmE!i737I|fTkypba?shFYL^k0N zYo~iDKyRPdTxhtx)GM7zy(*<*44I6~E+&qfMZcYM+`tc#LTrxK!%B^)Fnfyy=pk%= zze>TkbPlRWan*lC)FcLHIc_~|f8+X=|JD{5Hty`(*jC{T-7B zr_o)U3q3r*t2p2W>GJqkq2r>WYe}%+H81L&mI>?_@&79Zb*fL9uejYte~W6<9W5=O z$af2D7@gJeHMuCFn8F)i5RD#_LhrRQG(Cv-!)H}w55I*mxTa-?m>Wnv5soPDKkU9K z8c%)|ICRs7W<%$t5?Fhr{q3mq-Qg^d1RM{-H{Z}hVAU?m$BLlqb2}0rz+a}m zpet_+S7IjZ536cE=v=tq ze7e+Uqd+FvPMVv`e_>`K2?8E?x?aY|?~oF5hgegpN7g7Y^xA39@g7PKU)LGC^*ZR@>S)9Gz4;s}d84oF*KZ&*OGv|P}APp-x`nq0`8ByOyy21-9DA*AzO*olW9 zQ-&Q6eU@S%gGhzxY8_HNl);d~AkH$NX11esAJPpzDH@vdq)wuRU!lS|KXH#Q+-q@G zDrlx(;qhgPmwSGcLy}^igIQN61CANLn5X$PK`OT7=sj9f@nvd#}b+hKe4G6#je{fLDjQqzkoR1qRU8O@5QDTJtqK(dJ zTZ*}S2Qy7~b=#G)v!j{?nWW^WdXl=Ar2#Gx3&gM(;^_;~cLamz8|8A;97^XxF9n&D ztN?5t|0z!{*v>kRk7_7P)%-@tP+Gz7_#%eP%zMqmb}mHVi!@*GxrXjCf&Im=bK-)3 ze?m05lkr|{ckRY;T~9zh+@ml4E~A{-NXU_S2DkLfj1N%f0CUb8?mE>InkO%Y!-v$N z)VFuz>7*TLnx8?x1gF++wakc!*mhPzZpRt3-85YYV&fbjtXHu31aL@dVvvjTacSbC zwe-QXQuc;XNj}a-wS%MRko4?DB-o0|f9qSV>@O|8kR+;ZvV|Va4b^uVkND~*cM6}s z^s0bz&lzmeU>%rEZ^U)cG>4rZy0Tym=3~ z32F_w)`C0Vt1BON43o3|n(HaUXiVXR<8_0hdLnk(byH!jZNK$Xzd{{Jpx0(`Hyx>Y z`(U*X#rCf1hl*9Kae|7aQlVK$n2zy0Hbl~jE9<%H0n~ZMlb>8iBddeF#WBM*45vP{ zkxj^ffC@KRCCUPVJrYpFB54^nfB&tsq&ATv)Z_c)oAG=%j%RMKar46m4{DmOA#Sr2 zP^o^BAxV(yX5QU^JlG75Z(D z4T;>hgdAzt^{c*j2yLQsIP$+C%h}JsS}EEre$C>244YZ1TqJI%-R_V&e{A;6lI!OChQC=Pw z)697?lyWGRBtg@i+Tjz$mP(r0dh3wBNS1{6#a-c*7~hhpD5{?LA+R>OC=%=S5?u|? zQAn$~(-%y9(-du9H7AAle{*24awAk>$}B3N8*Mh4viWq_gw$1fQ+Z@Ph7iRl21kT` znGxU;tK}*S$&8Ce%K36;sKI=r#{ERE$Eq2!e$gcsm|^$|EkN{$QD^#T?a)0SZxC*1O*2(GdEX$C!%g5L;bQ6)*LNXaaqWXT ztj1SHS%|~0S14&#RVF4_37y7>dE_4vo>p6-2I7mOv9smbjk>6ix8)rob4K?&)Mgbx zT_1jv>Nfuq-Q!tZfAmiZ+qnvZIHafH+MV#`lF(|fY7Vqi*lInb{3cW9dmgpSdO~zj}3*yD+|C#Zp&WsD>1UoPI2eHYng$(IkLv62~BLc|I5S8NH zCQ88GZX}LMe^tZFQvHREQjQNFuGC9;40j}=`EBuQ#@hy^#ij8WeHbqm$zAoWd zU;Xo_K&|&9N4Ma`^~xLW&!7?$U@e_$#OxlZi#zi|)Yk?;VfI>q977}ILs#DzRL|*o zaAR|90~4ZG>f4{q6CdUiyc{vV`g3Lnj(f-H(XgB2f2#^5u7Zb0k3i}!)MSE(Pglzs zdQc!XLYZ}T0r9}hsc zuai*|aijm}J?yVvD%r%c?V1XEDnroJPvOP;pb}+pxyn;^dl=Llx(*@~%mT$$_L`e?Ghz121a^V{iL#u{*NBo8LnoW~C zvdIXALw?bg|4vZTi$=zk4KJQ@nEPo70gL04(0=dv2M;g|Nne1d$MehX4Il#OqkSW2 zIcp$6&t^+hkEYp$xNZn#<{3KlCm2953d|>@)#n*OLH*1Kt8$xfY%~RDh8^O{dl%;G)8~idjgD>TPtMJDTYdF!LboHJ8 z;66GY21(nM+?q)(gT4IW-qEAa_?0q>_72F9DL;j@EG4`4`5b00!YSr-{*jY~9##=} zf6xaEfaI+Xg1*3L@MK=lJl4xEa%?=jy+AF*Z>a5KbC0e$ErodWXsxIB0=>Kky!GF< zKIj#NDx>wOHJ{(~M4Hc{N5JI%qP}WYQxRT$@BmYN2R;F-2$!@^i>mpO4TL@hU5+=N zXA^z603ij>cuq2SRw;^r$GbdzUNqV%e?IH6Cnkt8_+F28XoRdsiO>{3t1#2oN`tm_ z*<|GKY-A6IJaxFWg!(LnMPZN8jw<7D>86f zF>V^eVLb@gMKdDPbZQ=Z$zrQ30^k8oznw?5)&3n>En zd?&RTArrR|<-}q>Jj(k1@N+PVe;$m+pY5H3a6SQVTd6gMD& zIDCzoaLW7&o}O700QqdWVCU@8pRnf`nL=;ZWWVGkYU|H*l7AAg_*weXf6<@EEQmE= zhCh~`FnV#|4S8-;=9z|tg!FsZ)xJ*Gt$&RVyyQe;;g_UCjpMUl&3chCeJ5tS+iN5N5@DhKO_AE@6rif=4;1 z=8vsWzdAlRmgA(eCBD4q9wx6Rud*jV1Q7WwO0bO9golrZp=ohUQ}LR3wxJH(;8e&A z+D;A&If%0@4{oq}MiP1-m0hzziU{s}{JqPj3#aV|p70PG7$kOX#X5;|v zfu`A?Gyg+O+^5_!3#=7$)|czY72e~kYd_MsBVXqE#_m4|Tu)4g~Svs1my=74Bo)gV#Y9YJA=1;^=| zgOr4Zt};Lb*`QD!Qar!$)wJ5HUzcOuNe;ogCTzX670h?Z(bUFs_o6FCb0jZ}3C!R=qxIwu^c9ao&6FXfeV z!Y!L{+-h1g@BE)h3+ChKt7RGU^&c=(Q4DpM zsB~2X(C|+G(n)ms=NVwTCJm|8FHygUrdKNX)Tc44{rL?uTtingHF`&C*KclBHGJse z@sH`ve{f|0Ye1C02b+5~lrf@gF3%&GFy!yYuz+}&I)6E@-L_aYRNM53adGH-&s(Qv zQ{#i=A=?m|?TGCy7}x;Gn2*eCScuu>aZ1Nmff`^BO_VceqNrav-SLQsN|Wpl;D6Nz zy3B(7!tk5059Hm0N6k&uz_5VNuEASf!xl|)8?WIGoqx&I7u$xe_p(+u1s?PV+(9<) zw8L?4uY#et>xS5qc1QNY{Nz|;M;L((=L1%*CW8UHZbEdP6w-`sKxc)07B1$P)62!i z90PTp1jhgv%P}U?FpL)H!Z29OGK^+E0fqr6e+0uQ*j9#d_v097p(Dq{-Uvt`W0Gfg z1f$IR-+zr}?r6{Teaan6e3!E~fbnp<&8Oh?PxzBiJ_P z&!!MQ1rPm67~@E#iOxyp$RgxC6f&K<(`F1Oj^99ys2M$6F~7Hxk@|T?==1DSM;7Sh zAE9;BCM2bGQ!%=2Yus+MICNNQHd0QAJB(PdfPb2ByT@W_`!0p=*Y}N<*~Y$GK$_B} z?>Y~nqqFgH4tK^VrWC*Y%3)byfd{|L-jKh?A3~(s<1fDdV(;|uL=vMPC&zmS)%T;L zFZRCb!H?T&p&=s6^Ct1@*VVk$DH1wAN$$F7Vy8juxe&dE9SR*+73itWD56o##l9|Q zSbsdlaWxGiX@JuhsQy%E(dg8@y*0vCPkXhP$bWs*P^#3IFH_$vB3diRYi!k2GV7u} zuC{um9TdKz(P|b10CEZj z4CJ36wO@l`J8uC6Q31{92Mz>vm0r74Q|Dg*&GxO=%n4ysmIzqh&)D{OrfAPifw#efQhz$% zu}!}hF-=x4fP-=IJOxuD{5{3DMAM7RJ;vsk0Ve5HilH}1^v2D`t~0B434^sElb&2R z&?|m9`#HU7LjQi)+ju|vQMsgItjlz zG4)npBZJrcp>V54RG^y(9N}g&cc!CaA*7Re0BZ8d>7nY!+Mu-#u_C%cAb;qY-~~lg z$Y%)OK?6fR_4J7M++b5rtaj96m0qw8Rmg#fwPORT@D+^sEqrh-_~IzMR6&0{9Dr?z zbfjmgz%7>;I)A?ca;qB_w^UbuQC{-93k`s;$mI=MR1L7a@eM*%6J42S3KQUWQkEMwxx9<+47vv;h`jnuHu#|;0$Q(&4v8d~0T zC__04bl^Cq?eS)AmVaj3TS&8IH-QUKeminjX4r={zc7eP4K$gLn3a*AtQ!9bjs!WlJD6&gdav#8dia2$z94N1l zc_=UhAwC7gqc1U8eS0iM2&M4wj?5OPXir1QmX|q>Q!ta9N;HM(MZ+#k3ey(3jfof zfsCHeJ)w|wTYtD)@9KOxm_2taQ=>g7H34c3r)SR3&qw~X82pj*+MeRJBN^f7#rB(T zzB%@Nyd-_Ft5CNtwiXNNWwB`QB<7Pc=!RC_>|9?~@&E&FJZdM1{YOL?(E_DJ_J%f=9Pt0$_qQ+#6Cx~J0;(S1%ts?c*>#k{dh#ZeuQ8zzn( zxW`&2ky%sFO_%h%Gsa96sOePH*Pw+ z4*}5H!acbPfN`7yY=8rMHD$ef-65lbWuemcv}7e(S{_-t;LIOz$D zp?@kyDh6eoL>~U7kA-;zKQ15^@RW@x>DgI!if@jTdv?Yz$;#56`>rhyYo9S-9^&D% z?jNK~1We>8LFD3qjQLqh@4L>K#T6=UyQ0w{tmFdrF2j^e49;#P`NB$=1~%Ls52hl<%RuARx8Y zR42ti%jtx7cy;m9E@V?0H<10ojH3o%h!;SWg*-Hy=?0-Snn<@_6v+}=-b;R{n*5ZN z*>_XP{DsIYq6IuRO$rrNh;0+_`!nyKc!hX3*N9)AT!l7)@yoI{WodU^ zm4P-ZoUKZ#u0~n|B#hSWWi-(;;m9@0c)Fk^aI^HqXPPFiPdz-PeNqRO@RffE!(t?s zJ>^Bw-2e&sMp{}Si)vEchn8daWq-av`k*@044I$ogwtm$_xS z@-n3$O4DWASl);Ah&C!2O1QW~RpBx(Gg1E%fbrmy!;`BvpnN;t2r`>d^RFO7t8!hK z=`DstG_X_X$NoU3ynkDVw^g3A#j zWGvOP!XrW3y4-PSzFu;v%~}N-3Zav9CL3L#y_VUOwG_!!8V5r|1awnZ z=DH8O9NHoAhDfh-wrNVW+xRL;kWe=bB{w6b(P5mt^pX8r_{^^uO@H(Wl$-;ukJygl zcDIIHQ6ZOW1ORx`cQLwI>kuMgeDFSJ3dXzvjx-)2g)l*#yWx$_(}qtzhJOD z&?SN;#`8@65m?3Y8h_5F$Rav(1Tr-Y$i$MkAso|PR-5Dkf!8QSPtw>+T-q9WNmE5v zQI~>339rByh{DO{pw?=1)Rj8ayLc`|ft~0J`6V?$=NlLOszCJ!kM-iKDF` zSUe)~A@pJFy+o)P7rzy>uwj73p^$rl9+<(n^V-4Oxr5lEYJUxJ8VnH^SrZDi_(?qL zHi+;i`zQC|l7E_==9hG=OlRi_TH`bj`Fsv6NApTBxwD7w9z6VLAEF!W5kpCk;dc+* zNBdi^ZohN1fA7<+4|vad5BBO=nPNOeMZmjleTs^I3}l1KHu$w>Z2RCgKP5$m&m#5M z1_+%B4Xz8hSlO3!5Ax_JP+1Y^1AV!MKG4J=_yS{4bm z126*DML}#~F>tk1wb1@J^|m=Ve(UYKTw2DrR)6!H0o6MCj4VX0-MkO*7+uK`jjNZY zRb8D$ND)9P3T~jp2F1$haW&c)4F*L1q=uAa*pfr8NIp0yofaA0zv%gapm4X^lSbD| ziy|*zBdvC-T~+I6IZuwyLcly~uf1CJ3VbYvo;FS2uy_N$R?k9P!pv=%jXl1AqEOQG zJ%2dgMMfe$cX5EHt)wb#>ssb&{;Vs&KOLwqU1)~tE1o%;J?T(p0IzE|C2 ztyBC)5G%Us((TXZAeeck?!xi5T`#OUXzo?CwvpR-H^;l*o;o8k+iJB@0N<|Os3U0N zuu;GfPfDc>`}jvFnelN?i~d(g|5r%=SAR(VS4gje!v6~Ce@`J@8TdH#1h{872>HH? zLx6Y8?9YXOKrFZ9vH|{-K0Zx}PxkD;RpbQe-_49b|#K`Scs1xy@h zESNZRr1wsU7iC^SkFnDf9lY&8n6rbJMrr&`w2D3AHv+r~asOw#mpF|T}#Qobe%gQducCNFIS%t`3c? zr?XNJIbx0c9ax!HXNEFmxKhu!y+nbYI-Oa3#C|KLTO{J5ji2>M;oz^fK2!?#m$)=1 zO7ljtUgVYg2Dd9)=^I?&sDl&$MSnJcdmD9MJci z*tH#~MqNNjw3c?=&KCC7uzD+b%{pFOa3e*}M+H#LhXT#*j9f#{6a+wC>K%$3K&oxa zK?G>6*^876_020oLl%4dsee9a>2)4knbge`ACg*82Y0(gLS_%~^p0OrDXn_%E_lY} zSM_46g7ecQ{^pkeRy&4nL12_)XSAHuDKu2)UHT(Pd|8n-pvFyc+=}DDY|;-yya?wL zICM@YwV#t>Qg+x|lArQy5<|n{lpX&P?K(}0X_k`jih8=~=X|EFpMUKGJ4z91QsK7t3z`aBY;mfpj zup<1OQW98>@W^p5W`B*uyG;4%%L=8JxY;p{}b;YR3Dh9yq0q*@8H z1h#o;dwbjS#f@+7cVmZT-poeSh27Ci<(k+S#cOmFaCXlI}4Ja1gR_N>}0NaL=j;V3&N>F5b^J%0#En23xdK>Sn$Lov_Y z;U+R>u_PJz7^WHUoy_FojOC48)-+4LkTHkzd9KqPEJ*A1sPN>9D;S_JIO5c3H z2DbY+J)3WiZ23LfH#d>V?8hT?=-X_XwY02;co1XA+kcULNaA<-q&cV;Z55i1kL$j& z{T$a)4RR1|N<%_h5MlUyE)~WW-F)XI_dsnZ{sfoG2@b(fnmiU@Oxv}mvv5CqaQsk+ z23AZ<$(<(JztmLta#P_eO@*(nN=29bj@AOJCk} zSB)foh=0r+sSeHjuE$>J!skKUm20X2@*74zeFX~5`=x>D)T$q-)V(a~M>C?ly4Ik| zmHv8UX|=Dx73=)TbTw+70ok^z^i$&+02rOExz=7QfT(F5bJh5+Z4qcAMh`7ZbS;Wp zBDZw_HnKd@#u-0VJJ0DY8C8Ww6FqxivG}AjsDHDh09z(&Ju|!;n4;N?4CQkW(Be*V zneb&|c}dx4;4RtKB>!2!ru4$B)JGjaGJF)khV9S^ru2^sBGxxa?$Ai=7Khg#1Ptk!}CX#Iy*Z>wShDkXS znu)egPQ*!b&dQ%l?$7{*FZza!?oa7oJK^=G6u$|y=5Nq-bk zB%<)`5Tr%w$25tl!IB;{Ws$dZ^dw>IP#E7Twc=4dd7>$+S(-6P*Ah*F@tH@~Ns)50 zNj_rmZJ9g`(_3I^7+2RrzPCwKEhWGoJ$R#P)O3Lx27REVofxcQd|;Kbjc`A zaC@f}Z>7&QvWvH20DZUgggYZgFt&?Ymo>(5KsBW;m;*nm9Mt183^o1>TYuZsBwl~y zuD~S-4rQvSPz{RV0a_5KRX9xINzaQkEzzS>aUeCCbQrp>SNv33 zDE6!FxIWJ&^GA2?aJP}q$_J|Y8Hnmb|Am7CK-muey%cWRztDlvdOlT)ntFa!5Vtx& z{PND7&H%qefSp8>=#B4@Y=5mHcPKS#S0H@DVJ|_r+}_&ndVjrvdvhCOz-B=0*<=HF ze;faW|Ge6CWF{B7LBJ@ZVD3gCokt;w`pK|9fUSJvfys&3xS8s5q1xg%RgP-Dh@t1< zMKVdvG8WHhaWQ9jU*N58T=byq<)=wlr7=U-+?q??u!V(+k0VE4T5Y)E`>^O{Y7|~ zL>BOeaGs9xe2z2Sg#^OlBqq`RT;Q?QC`#rh7+Z7Zq2-W8@*vt z==%jiTi++veNtU=r?BF}BR8)x=UVW=w*l}p;1*EwkOZC9KIss48#F*Lac?LGEDh}0 zP-)UFxB5*njR6{*JFX&m7o~|z=zBk;uv?Y!HSzv@xQSP_zJFBVYifPj#pJw&8$0TR zEm5;B$;4`+Ddm zdsGDKbT)6an9X8hGDLjCM^(ZJueL)s6p|~si#~D6Zj;#7X26Id$+=HGf|%Rw@t;0n z{!P>%z_gz>9DmH*9e$5E%je-IQFOEj)kIl4G+@m_?!(Jo;2{-#j5*CZ2c&WndIt8x zEdLp-7jQ+fOy|RKtf7jWAoM@*Y4I>n8+B|(3D|10Kr{vr0SN)BRS~p&7?3a%P+DK1 zxv-^ALcy(=1|$gAGJcFYv}hME;vhhw%g!?=<4SI1`>gnz4+nNbstK%0Bh(YX`X($a5^-Dds>!vr;PP<~(prGDBMeW+F(Na}U?Ww8WSXb?e zatw0?@_+LG8?3%Qi@%fZyS_`wC*)reYV<*>Sy{**!Ogd90V99?Pu3(AaZ!U0p}xv9 z*HWVk#vjNNJ}^~60}E)sIA5S!L+OTbM$bEyBJqhgje)SI?FF49E*JAT-(S0pqYc*@ z1^?&RiGbgnmt)^S(;DV4cY@ierC5xO2%J?z6MrlYJpez7>PXauGw9Dz1}WZ%yV6W}j2c z{pE=%KBmuY%{iF-8nj|``dm-+d;21-%*=2YcH$`Nj)E?^OJs8{yDFL$eI^w-Dv&+JXS z>m1?#yaVqUw*@zfueui<+$y>~>@{xnA-G6Nv!K-rVJpN<8of*Ci+A1p=bWGEmKy$E zFV$o`#<3j^32Pts+`U)ZUJ9jj7Z_oTpCZ2rE8v}CR>*}HvNX_J_iBN} zr_6Z{Z`LRFdh^C5iwkx{0jk*2!>$_(3tm7g>Wel4E)Wj{2XYeke{#cn?Pl2FjU zY)jl-pl+lIn#UwOjA{qg1bI4hvVUxKs@juZKs=}EVnR}RUb1ygUw=w3axbc1qUXEs zE6Ygec{N5{)oc(QV?5}*7+sgpk+vTM3x>k0uKt`H^b>x(?z_?KWvx zEkb5s$2mgxQx~#dTqjxl_= zDrW$&Si&CwsJ`fQ#Drgh}Z zEoMAMRxx05c`c;dGQ`(R&wpUf4EG_>9)Gd>4ZZ!9AR6@M>K&hOM&ep6D{nM!%AlIiQ8*2wkZ7ap*nf9>g5}MfWsWo@ zB};zn9#TLKNnMSqtbCS?-!z_`VU;L<&%2dS1HGLNyH(M~XK>c3!&{Q3yRO=0FaNiP zom!1ode2b{DA>Vz5VcTDbddTrqJZ`Z1d|8eN=QH-%P{5tOM{^{(LaUB!Z}Ez3aO1z zJ5OkTG~E_5Oe&r%sDBE&rf}U16%o)n>P8%n8Ua1C9cq#z9EC)U$1sE3E&pn&vW%)M zo2n$!Ij3A``S=jiOw?R6*JfrE+K{gUBQY48bzSsr4}AOdn;An0 zQ`feI8GVEJ6YF83B23|>SVBquL9GDHL1Pprw`XFK(1tF2pnrHqV^iNS7yQ)#=WFiB z%t!ZzEBH!%lF%fLprZS`H0F^^=$+22Tx02iGsmLte^k zoGc1d7`b$#UVp3dRjkdV=fm*pvi>y@=lqSkpoEi><2(Qj5kme1D@C@a8(~MO%DpMRJg0wh&>*x*N zsmuAD6H_8SPHU)}L3`k*A)gG$K*0S~y+J2ACN~F4cYm^jSHq$|xf21?(D^)HqxupE zjUXFnzsGcjp<9vKsVolIpox8$1_2rW&bl@o_-CCJZq6w(!bN9?+m`)1_&;{5NPbf9gKlZ0ieCAEUGfX&Fan zACFDQ0^Ec+fw0)c!d4uLyiD1>Km$g0ekL3Si0|k*s~&1vL%~!I0oQ+|v%;ggp`TuU z&|IMwN1d_~rWq7+(xzd2!|YJCRcUKB#c|{Ei>1_lWxz@)nq; zN`GL|ec>yJrNyRbQ55MWfOTH7md9P|eMGC4IFb$nKif03gpb6E%pDoM8ni{OXw}LQ zE0>?Ma;bVa!{v{erk^#+CT^7P;{eE5D$Y+zkIu~A$a|v@l-g`Xx~XTmwAU;&veRGN zPh1o_ZHe|@{aG^*s{*SC?*$;`yQjUviGRkpeyN6NL@m_JY<8AEPC}{FQOmN^YF$CX znUaGicgNHoHce^0DY@Eg?fhkvSwpAWgqk^QCJN4DJhetG{2(<+os#Hz))BQW>wlGE z6%rHAm-8w~$}IQtB=a66Y8GQu%zn$NJ3_gxGTHvZi@R(Uj*SO{_0!#fhmCN$&f6_s z@b>kVv@*65Vmo_|P}_+rjF#1HJL|R_Yjsknb`9k=##DID@>{5nCHUeDPqEFhPRcYX zP9OQiXwPh2Kny?1K4iFxKw|8F5r0`+S-2wVxtqS{dp*|bn|F(PAA1RM|_R7z0jqB&AaB6NlU-#d`<;0JFM-C58 zww*Y9{QNV(;LNsRV`bY2VpxS&#g42B;=Ah~zB{n#d2l&qHvCgGLY->PhinF~d;)%M z7gkSv7VkvUxN5=(To(otL4VVp*fp9ew2}>)apmpVez7o=)yz&E>atyTfgbz4LeouO z`An;0J+I)QJMHDu@d zdXv$kk-o<9p}IP@@HFpYsqX=7lGj@7+JJut#Ou3bq`ST)6_XV&(h*{X!?Jnr}->TQC? zU>MwXG#+p*HF6LTIJ8?KhXDJl=^=Priy&Ymyd~~nP%$xXN9abEyibO>5lBgyZ)r^* z27x9YHX(lvtVN`_7K1WU0yD@ke-LIc;8!Fx=c0>g(kI-{v42ez%Z7v4$a9)gNp-*f z@yCt;CG?6?pO69wZqhN{&DvZ~(E;-vZQjUFE%`lek)vATiZ^;b;hfReTDdx$!vCh_ zc#@{D2ricc4NNhX+T~b;w(b4fs+MwT9S42N8sszI{3KUaA<{}dDBFwrz1UB(&DlXR z`2s;_&NoH~8h_X=Fl8^XAmvkEh$4RsK>pGWFIKjHtzqhTTRMgwPIx_&2DU0Bs_MVab*blk zuod_2gAd+6{KCocU=8cbt|et-y#Dy)Jz44M+P3k2{C~Eu97%v<3VbYHIfTo2Jofgi z#&E4IC|9cP^$`E?;N!!)_dh*3IC6Q>yY>Fz(Wf8pe{w(rx0nML+mngPtj_L@AzbUH zH*56Ju^dR=fm_dQzXV=8((iB$aQYQ+-<>s{lIwg)*MV5B1+jF&jEClSX#p1Z9-{Eh zotikL$bW40OqAj;0myXpkMDJ@sD5dkUVF!fw3|Ajg~BifJaX&vy0+KRoU*HPwubLE zTdVp7*2B%a^}HNHA=tFf0*GhY883AB##IZ|JJ5!cNeseXw$_r%KSNyWVm)8G-mnIs z0Mg*mm>GGnZYrJ!_l33dHSC7naxHetCyJef5r2a&W|W9#I?v{dNs1FlDZ6seJ9$&W z=m^~gRlVZWUXs{}VWWubpgm|LzKQ*$u3?fw%hk(12D+QO>0% zlNBfJWm$M#-?pA=WJe>|%|xeEUnke>i;^BfY_0u~k~w}IEiY0rR@MjE^KD;DZr^m- zuYZ5$*Y;zr;A7idqc2NwF76Fz*$ime8xTEwdx#EmF+}^FK^vX3M_=K4o1SRKTHd3S zLV761w(3q*t4;WHu~)Z=DI*$I8MLpR-=eQDxkfkoM344683g=h4M&S68YsW%s|Lsq z;4v-y54^R6ryoCL5R@xRcHN`-{IcAA@qfj1HvU;k$9Zx7BK~?2n<9N5f&?nE$Isl& zFD~F$;fqTT^zkP2``CSRnwRby5QOstRHUW*rp#vk_cy-g($~~4pgk_t}4&n1q-|wI!QC> z-malltB9JcT1Y^%9gd~Az(2a7_EcM4x5Bjy_@<0|`>cCi=4DDL1NYXE{7$m?ww;%+ z53-f5uMg7icfAg?w)G1wMD3`$gMW2XpPg81Mg19_4Xk#W17_JN(qiP2(x-Y}l$^t} z#Qc@Xlrz}btN{Al`}&U3YvLEz3Q-cUGrj*nf2LAZjts$7xA*$}ps6bk6*EM`Vl6x>)$JZU&wUSgZ70iOIcPDFC^RHA<(E^^~z%*4<{3ADWnkmL`*KNRjwi95)pICZvw#s{HiGj9H za)=*0a2xlS_$b9M0I^+~GKShPEG*ur_JR!u**r%s7z|saUZjFe-+yIYVC@+Z22vm% zG>@OPaZTG(`Pjg%pY%!YWll+!eizW<_H4_J0ZQrfJ6?T1wz7>A{ z>)1KqW~Agbn0adpzz7|DYNmAJqkrK40tcH2J#Cwv#SL*JS|Tt$&d#83+`@Op90u+d zR}v-3y2X{Wb-k5D1b?xs$%ej~q;vGOfm=`piD{%cZ}}N6B1weH6NMkslA}|Ps8}|F z4>V})IY|7p;1Ks>qaTl>6cMze@S;s;<)ZMRa*xt2T8_{^#~RN{+<@5JKTT%PgblOHh)UluX zGTfAdC*K0MF^lx&G#}Xh$#NQ!=mu?&@rK97O#gor-$^}V1B*J0k^<Wi;yY*bfMpu%ThRhmGDE|XM#Nr6TYkXmAOou+5=AlKFDBajg?7@ouE)eUV@t#_Sl zN1LX}?0>;!D{=gHS5*KeTbo!%*j_`##AP;wj9(I+Vos^QUn_#zONA1=9hj!!2ll8m z(qk9SZTIPqvk42f+M0q1{49mRWb-9izIJrE8^fYU4h&-G4|YK&e7ios4FpF2wtKNT zjwVpk$s$tMK=dPIl_QaKGP(ppZ)3FTW*j~l)Fu#P z<$nb!G~ONjrxf1pOvPdLQ-!#Tp?wHL*w~Lw4pi(x(KN@g;JBa%0maVa#BkgYDUhL_ zxJ(PdZp4PV&kx~!&}osPNX4L@8EIpzNG90~`*i8!^mH+215JTmXq*c2?xznN?Q6Js z!FM$GPe4=1J?PVEQu=VBQ<)A;^;DY}JAVMeBcBP)b=z`-Q%-{c-QpG55{5JbhnAt& zIsJ6qyZ_n2JxHG`n=tk+WsDnF2d6_=A@T*E=>jX=#qU0xc z>eB!n*UKT5YnROCd>Wsnnodq{uD)AFv|$Z2#*O_536p#B%3RZ45^$a;AqZE}*%oYQ zS7#LboJ%M(Gz#!MMt`s!|56;(dAAf_wu{pBk_p-@knl^nof-I8KIzw zWx44v2_fZOR9z&-AmWEnI4Allm83DCPPusxXCN@Lx#T^>G6FP=uZi2?s^=8$lek`D zBpe-FHi;`YrnUFz$fQO#xWXxyqV}|(f-NU1k4@VIcZ=6>M z2Q%bP0#Xh_71^Z6Y)|b;c_L}}Q6|I^TSh`uD1i3XhJ|eVly#_q189CE?_cP%E5wy= zgN9V5R0OibXrc7XV&|o8UeTtXzR6MvQYQ-Km+b^nbI&ZTw5us=YJb_B@-f2Oxbu9z znwHQ=A2=m~ZSp}40L;PulS!{B^Z(q-uw zB@aT1US_Kz#7Y4vjbS9GWCA;12HSmtKbr=rD}@+1mfXJV>Tm3OKp2j}EuSUT#QLznB4S)S>MShZ3)7TsSr^$ABeO9lKuFqGzvo&kD>wH+F2&aV*+*@@2 z&t>8UWWaLW8$e}*+l2r$q8$pG#lnE-!FSA1fs>Q+Is5M<5`T2iT?IqiI@D!|Fgvfp zo3EnVSwrhr5MA&0SU+U?Sie?o&+IGH8kl|EKJrZjfj>&lWmZw82)+|#nwX{4vTNsN zmPKTivv29Lux-1SiS zxDk_%u~fsYMS>K~n<0P$Z|_{zydq&`inOxw#0re2YkvrS7s{E>$>x~ON??49otR+W zfr9ij;7QWOj`#1mGMlHXO_^#JI|c#I1<3;Tt)do2R_r9OMiv)Qy}@Zdbnj2mbm6T> zZg4N3WM`Sb?Mr7xh9C%$N^B*_Hba$(fWg83do>Fj7xGUqAOjUj_ij?A&)|0X^i%k; z$ufuKV1F)#;*+F+^>+LN?xRL)=N<95B83=xse+78D{toCcu!u60XN{ zZa9W=Ev3L+nYO?%JUZKEdkv)7l1+fXl;4gXR)1u#b`vM!)!It>*A^IG2KmGW%w}9sG z=YNf@&;8$R`g`}Sho64|?_zHsK9qV@kBs8b9BE$UaS?c1U_<$&(&(k=UIAKR9(F-I zF&_?^u zrJNjoaRTz|MBuvnl)SLC9)1DfUVGbpIy-$i)2~w8r#;+%?e5!bK$WCzYRT=Dli|y( zn20#i1}x2QWI%0z_Doh7~O=BiJG$YcTx!yLVL~t60oyi=L(I(TMw~9y=SE4Us9sYhmNY zDJuI_kzWByQqq4#$C3ejAD;6ze30$s=3C7YHV0eV73>WP}|<5Tm2eXmuB4`v~Mj z;2zO==v(_JUh-({siLLA`y)Ig6-V=p zmZcb*)rOx2%nbNu!-GyMN~DF(w{P9MEPf zdlLiJXm6D`QEi%{krbu*&zWZ^Um{=6VB7Ug2uHoOsBG6uocCAM>eB|M!B@(x6j+dA z<#Tn9V8cog!teE*StO{LMj^ILcu=j41lKdSCcB=wffRzD#d#tXV&2^WOVbe$yjug2 zy>aJG_VUgU&ahzuWq)^J6V2-_omhL;9?c`Hj%HU^6QFT1;4R7)?IfWN-|ngw*}U(< zi%=YH%!8v7s}Q0ZLIpH@hEQ-@-Qhqw^~`Y4KbuZQ_drSG$LhP=`+fe@XMe>$6xsd^ zwuL80$J@udnaKwqqp$$P>)hRav}nL|>zm<#NoY*Rex_*$hJOR3flpep)MUO0_QdDv z`1-u-2=V~8^;1_Fp5l)2QhcfafD>DNkHXiVdD@*#b+tPV3CT4E3Fi8gmW zYpM4LE5%6<*jHi;1H?|tNkJP{QE=j-(16<9g#o3d>u2PX&ab|5UOaA@yJb!!LRfEr z+T_T9>#|iN)qigwbq}fIf#VPw!qmx;uI3-oga>wNkk>qzUZXejXsLuD0h1yzp0L0; z+}&vv7n@3p6mhYxyx2rsjMJsXc)74xUskLoD%vGQtDtC;6E_wUYt7i^3A=K>KKbc7 zZkw$c@V6dvzy+|y^U8GYd=5g=6&3gyPa%W-jDOGR$bpS4Y-#!Zh25hE2ZzVk z!70N1+K)V7WlFQZU4^j8(+Ed6KVy@QHjQ|c;}8L~3$vw2&}Ec%^RuuX4U&I&NiMX@ zkw^|(f^t;I$qm}2N-0yhE`NuUqnR5(=O5q%L!%xq{kQRs#RW|@=bZK?Bkgj2D!?o z>b+c|SG*sFN(pqhy|aJd-~{}ODtZx%J>CcR8h=^GvXZ>ToCAVDoXH$u026syii4%g zf6j*^vegR>?=3KS1V?v|*$N4Ee{T4-_=nkvy5QMptd(T;1|S`rkH7Lt=aX_ce(eiB zJN~Fd=0<<5UxATuz&iI{d4)!~2mznt(413YWHhXhpO!PNwqQB9^%Ng=|w)Akhd8+!jzM!p`*+4$ITkTicQe*`Afc~ zPG!Oy>N<|+8j_zLPl23~XK!V)kIT`(U6s|)jPC6W@b+}UVX%5rX`%$4R9Cjg@xWb_ zU`fEEOdeMlX1TQ@{bHgC{#>;J&{yQ@6n~>J8vb2a_*bz>I*1r(Cv|gqK9eI6uITE6 z)m%6qi)oUXV+jA)WH}7a*x&u}5;v-k3vknc8ho9*7;sgQGycR2l4q3&;y3$pIyElx z$*DA^o>%~|E;(Z!ilRC`RWy<{vXo;6l|r2wTsZgCku-b z07owh7_M{R*~RzF)RMO@VQt_AGxCouCwgrxuYNQG8g>F_NL7H=K47^`d77r^>3~`o zZ(A6eW?>K<9ablU6`R|SWB;Q8*4*UEDla!Bs} z2#h{{eKw}Qbkh_cMVXOP35|rbL1#^j2iUCfgq!e*rN>XR0#Ss4VMU(LrnR?Aer~7N z6y{M_L?OW#`Vlzhy05&_Z)%WLSDKE}7pf+D6ZI$7g(M5EkUNP(0ZL=kkXI|j$di~N@#7cLt&M2$(o%Bm{q zP@J?%go)NjL0~kRf!A$#R7`FvR2H2cOIi`s^W{qWz!IOk&DsWNm;vh@>{>Q+EX0bb zI8cn(vjd_R%N?-%1qpi>g|6Gfd$1hUGNV+Sh<7 zeK8&)XX)6R_T>Vwzso2aMm#qK&dKfQd_?&(m=f41*kGFbrW>d+@_%b^U5DY5K3r7jiyUSwsGZmQ> z{+4h}XJm)8Vq9F#-Fe6rlZHX8m6eC}&xc6V2<%?T>Jc9u5Qbb^+gLhI(gjdT$qifk z67C&oK^G^=)yih5*nd|j4tVI;w+vP<(FpoY%Lq%fX3dN6U^s$J{ABkp`JCP$A>4Ie zLoO~Hy$hfNQS&iqAkbl0g~)a_VvQkN9d|lD? ztj0~#Z6&XRVrLp=VMxIfOILYo)2%n&FLoD~*eP8Y#T8ZV-Plr4>@pH%ZoEOuJGzsQ~E+agiEQE0a zKYr|mcHn#JTN;id<3ceQPRohGOKu`@pJJ>itB#f=8oczZfCr2z9v3x%G934V+8P4tg+&Ykf1t6*0Z7p?ECJNgM4t$zJb}k>cEs*;tdBrkP52{%15Vk;FksaS>O264XyiG7rU6dE zPhSy(;iq9m;+fet91cNnCE(rd2gmydk51s<@yCDg?O59JJ4pz@NwQoTHRTg=K*|3C zs+1=Yf0+g0xo4R@_~hQX=qeXwQHUj{%;jH$%t%bBv|+Y$5g&6&uC92R)Q2TskfJ1H zQ$fbLj}AWj?BJ_KCS>m)9RWQcsODo!`ov83uFovpZ1>CiMsc>tPnJZ{nk^4jOyhj8%`!D<7V(IAxE=Xe7Py&I!U z5eb|v-=ZR7b>t%Aw$UIJxquID-z2(q;VXY9ymuVKK=Jw-1j6njaH_%V+}Q%O`&& zQFC-A=<;b@D#ediMVTi-{Ysy%T3M17IeBC%y@hY&OB`A?z2O!BgwIU?#Di$Y^%g+$ zaMu~&Mu1sevV+0!ROy5Qs*UoTv`uDp)Xc;X48F?er0VFSX5Fo}vZB5nf9X#ay1k|4 zcJaInkIT9qVpwSLN)BV(brD@Of;@lIho8lHnXWEsuPF6p*TrO8e>B3wH($4hTNhsI zpLbZE1`7r4%afwTDKjXC2T*KcCK-tXfvYWwP5diMhBt|eHR)B?gz&dx-Uv8wT*zwM zRTm9Zw6EjP2X_{k5026IU%&6wz8n2~S@1h9Y(wDn--7?|Y&jk1aHkRKynTOBV_Vw4 zClT!Iqm%7Hh1j2?sDPn|ei^@-O&3u-=u~`sCT^c*OOiuF1Gf5#eS08!zx$aLe_-RY z8NEo#jp-hKS^^`?;g5PNsE>j;YW!B9F>zAc{9{EvitndrzOoUoZB2A1jv}=YeWuB& zH*F94cF{ft>NV|ny7k6%h+BU)NT!C|8zj#a{#Z_UA0?wI7uq#^E*`_?5XF{Ha@wh5 zb!pqThX}$8Aq|Tt-@=2OF2@XN$-BEG?~NsSZ*rdInzIpX7Xy))a*fA9&|1AQd!D1k zw4j`xbmPi2UWO*o_PmR@X)SwzPy-24Jxozse4MJb5y@+t_?Ah;o{oRvzpdjdIs~)m zjU9a5Suw$Yv1;myeT;afU=ZAV!r~du+SPCQl~8@qlS#@N9oCDk_(@vbxSUFD%c0b?dvh_a_ey9zNWDw9`t3W>0rkAY?qV zRTR%;MLwzF0}HyEh`i>Saf+%J(oV3ETD9nlRZB@{rucf(n~tS<#tbLs{F8_SIL;mP zNv@s1+3*=#C!r4LZQfBybM$Q(@e@sv4GYKj8;OUH8KnbpmB4>;BpJMOzW0w4)KzX+ z(v*|ap`6njpLz7V(X|yUqBAs#s8f2s5ly;FcEmJk!x7P_R^p*2)aArbzVEs)V>RwE zB+rX!uLb9YH*W^G=j4@aq$my;BZ3X$Lka9~hE0=FIF-v20FfPu8ZCM_iSSz3M|9(> zeV8sl>r<~**7ASJ+lBf-pB#fE?T?`G!{_5g>{RFzEl|^6O7{{F2G-`W#J2L48QM9S z_*fei4k8`U6K0V`!`B_2a|eN*`zRV28|iiyDqWn#IwP%CC?wxVHmLCF&p7ZkNp7MoqbsBjs#ESvv05!PuVjE+?;uI+k~5Jm9G>H`^@ zk5(4HcF9X++ZrUe#tV7 z+Pp(CoFsqj$Ai_}EHln^w50lcW~3G=yQE|0`nuD`GW8 ztQ@1k>VJJ~1AUAQQvd5?|7m^fu=qiYaTm9!nuUL0|JTw|v^1HIsoI*9Ut4RFimJUO z6#BPnag5yGrpBc!ad`J4ycr$a%UR*Ud`;X$M+>iM|F5O}uciH0wKStNnM1+9Q(bCV zNEpX>;jsD1Cpt$piE~@}($<{~6{a_y4vlI1b~L2z|23i(Mz)j9uykw5BrPbe66rrS z`>%i1e6Z~X%?Fb`K5HsISaWB_kF?Po+DK1XPgjwvoFhmjL z{K^Uk`H=O4y_tt&^&n1CWNvYNeDaGCdy3R?HC{9ucmz~`l|O(mT(b~gEyBYJL=LK@ zGE4JoFjlz9F378GHD)JLLfT&A+@HWVo%VmDlF*LO-lQnTZe5p!!(vqA6-*SWeNKeT znj1*KFyoX5IL9$y_@n*fJ{6{vKB1Vo=o$(X6C?&M5Ak@u`D-BOeR|(RWa~buAvuTg?7E5 z9iv;(3@XO9xq$>6n*=BpPSOl;@+yBCBtBR4`4&`zMUS6UpN(o@`V44jk5~8kHgtn0 zJkEsTvTW;=(vlWvE?qIh~K_Rr-gHNEx z7Y3jByo51_=War)mPJV`ti2!9X!KbFR9(IBOZz${(%juo=u@|6cZ8USvxi?Nub%Hj z+oA-5acumxNXAt*AsW~Gi^!&ETEYn`KsquTuTM9Ka5C_S4VB{#G*OzeNbBHz7o!(p%zfC5{Pe&IEJN#3p6YF~!q#7O`D^IB zK-ZF(P?BfF6tB(5DPh}EsmT?6kEQauByD@m<}akLpq_tBUfz=1_j4>8r!UD#3o<_u zfNQdZ{H#A00El8XS%ZojEYBRDDQe|bmg+d}Q)~NpMmtLjXPtGo zffg%`;%!=&l279}V|C)Yh-CI&Qddi2YxR(+n%iH@1}(EX=4Dd|U`vm%UA_5aTbDc= z88xm>v4el_3n&iGNQn?<5^Lhe7w`nIR*xOQZM&RaD=g+kQ(7|6B4@7D0FIzJZ7}Wi( zJ8=ev5a-D07~Z`9m6s=YDAzy!;_%V_qrH>Q5B7f_9mm!3(KK#vZt_oRptncU;dC}A z2=s^BhX;nGJhhZTLIU0G_G&~wE`><)ok+x>ghZM*kMrh1o*@q>Z$KQVM5GCsHONe) zOMn5CsPPY0BIpl>le1B=&BO`1mW7RH?oKQ;G=jYjSGFMNH5XlBWx^s!s-cAj@rZ9YJNM*#N3;#%lfW%syET6) zF3X>_Q_FBcV5`v`4@Z8#e-qIN7igb8j^(o9&#DXDFD&jQ|8BMt{vE+lF$gYEyJedwiuInsFW1YWDi-p9Z8H2sTl^~` z9wq54aQg9j(Zm*i=n3~Kt@J>OUJHMEnkcn(2TAqToxhV-<3Wo0iA|99DW|9B<%AT^ zsBuz07e2n77&E&hGf!J3yGhH|L0hIuYnN1}By5ouV&#Mll@TWhoqp~Q$LD3&z3dCU z97`FlVGUG(*tDpzR)@cJ>YzIz6@ZfZv`I*xUL*_Fp&S=Y+OqrULEIujQ3Q$UK7k-zgr2=jdze>=UxC*)jylOOCuxde{{q%-T|K54|<<7Ns z+so1LtLC*RaCf9YZ{>>P#q)pq3lGz0L+Wfw8wbRZvpS_s{lt!)_5Nl0|wfWNYcXHZ#Li|?wXZPu0p!KM*CS&kYW*fGP8Lu#~n(3{h zK~aHeV9t+Vi}Ty;$t-XnV4sq8tzH%|lPP48ker4}X(tF*P-oP2LXU3Gw2Em!)`W9} zMa`50g-wR&_^BPD<4u2t==i2XbiDBp9Y3KVS~$5qjZS0oqOfh-=d9;;C6y{`yi#wH zUZ@sIjV!3kAjvK$iTjVo<%Ay9)q-wNvRs|!;2-Nx6%=9x1L=CTtM2VfakM4!{xGmN zHTEp)9TQ^SxZE)w=_X=rJ+Z|tmw50GtO!d-?5--#s%(Q5$Yg(i?RQpAhQs3Vu<~zb z77JL3PsP%}SyvE&Nu8~`rKZjYs^5#&3?s!xBN`_y@q`kPPvjZ%B=dv~Y* zR=wAZ36un^Ov^{q@*8i%Dc$Q>w&z}PT}0@0I=>U{QYN@dT;S(SCj$r>6wjb;hA3r- zPlgTRFJg^)n>?U0wza&~W5lc@TvX4yyB=FXdzLQ|j6qt4XwMJPo(_>uo%_^zl=>T{ z+98TN&6s~+NjpS)(Gcy)5bdoRBBBC}5CF)abOu#3#3(~_@Ed-rkI-wtCGw!X2D&uQ z#@DG%Uc%s0E!1H~&fMH5&3)25bH727(1ls}x~2KOj{!sYrCZG^zg#@skylhb!h}jI zDuRM-`g%!^AsX7KaOF96Yg$qgi1~|hjQ2uE99(}QZZ#iWUE~1!67C81bCBtGap?QM zA*F#DF?k>1V|Rr+3)|!%Qx%eU{MeHiZaqzZDg3kjXJq_wIYl$Y?l4Uz`CvG!YKsht zeI!IbX!IkAWV%_J8W!0tL^?;CF0NPNd8jcrb zej|T4MyT$~pfF!p7_Ttxv^lkl;Q&&1=9-2h$;{IVO0ZH;%Ld&rxZC*>SwOE=@k9V+ zw7_5`)Tf*k%+nmc=R7PvO~J+diBMxoyoQh>HsvH?R~7R6hHU{Ah*wqPq}e#1%$vG1 zgY~+kh%(H6V|NMB%Z68@IcDk{qZCqIKsx?DG$R*YBBYV=;djMbn(;}m;qa4Y;6 z48`=#C$1Qmv&R>1%wd5p@}K>bhv_we=x+|7Q3x5#t$rC^6>e0VQ`rd$oqpep=WKs5 zpgTC%U$3zv3@m5O8?t`mtlvzQyKWX4V|QkSvvyjCdk?_YB%`t(VhyOi0!ugide^-g z@SyS@7yB(JCQK-R>vu-UpLIt#?@PwyKF0;CT@;-HIUmCkpYtTC$P*TE%obTy6sxrH zvTD<+2NMR@JoqD8sV%Y3CHC7&03Lr(0?{#x`D?Ua3@RAa3E*d6fDar`A=8cuok5AYo-%9MP?%UuY&&!%JbHe5zdJbEo-_ zg+?-@*$5Vl2|VspXfsr6!V!@GuJo!`V>wjb=*^u*S`bc12t%CLAdPvh|E7QI!GEt4 zsJdPx0HElr5m4nzU*uQgfaqbjqFmYU-dm0@Bij~meUjsDvXZ&Tv+7*-8P;IhzvcvZRX z!y#S}zA7f3HEjHBwmr~nZ@7Qy%5n2TM|BhA(JibE<{ojop~5=%n;OF3_0`wB1wC)dt29nJ z8b_ld`#V|m9eL>rmfEUY>u68RrnQz1PJe)|y8BV_eo3jdxf<07!<~Ob890zp!o6X& z`|Gd*OOMIw4+kgiJvdL}pU9rnND{Fup(Db*kA~xcL25-^W)+hhvWmodTnG%;4syQ| zR>^D?{fVo5Ii$!A$u&O9E8L`~SNIfER=9w-UIi~T(<>oba4UYT@?RD}!{Kzktj_%= zDZwCw*ml$voB)Vt7Q?W-u>wY{4K78H)I{5+ zXpIWltpYS}1~gwA&~J@^ST_y8h??q+RX8q|@7q_$Y>7D38?P*T4K`siCm zmdkairq%PCCNce;2NCe&8g=!Zz(D!j08l@4jx&VX4CK!&L27^SBzZHK5XZm(gtQHz z`K_0MDCq)Kj|X&+)0?^B0FQ?wGs5xqh<_jR7QQ~e@N3l_Ozum)}#=9P}c+1fNa<);B;tI8}*X_CaCTLC zH6lMZMWB%C%RqdyXzx232?3W}>3(WSPk`>Cjm37aef~uRM(WrydIDQ2X z*^BA`QmHL~wwT-kmR0Bpl;owwifY$Pn8wt8zm+n4{|+QTXw4^;BFG< zFaub#e6%(;fpJoxYf{sCTOKy@#U`{fVhbv3?v!J*zMU?Apz2H7wGGbFd=kwC zm-{I1G`-k29D^YVmH|hvC*EtDpVhs`u*L1dB!01zbviu^9irSHc`z&G*2322=JRnt5qw2b)1sgZpYQ}AENL|RaDK-5jY@F+024x+{8e8ZHnAt=dz-v^$ zpI%ls)Y_g5peC6KVw}pkN$bY0q?Ok3)J{I@_E%x?PWLachYJ#GX#GK@d7?sISH?G3 zZQwl+b6tLHxWojNosjwb-2 zn7j~IzvlXxgNHhx=?cn!m{-LMA8sG*UNgL#{m6sx0JynnbpNA{k*~xr7lYYOs`A-LR&s6$V6J=O9pdy$sMcsb$NO9zcjj0i)|7L z{EVvHyToLvFDsKizR$1!k~iJY<#6Bz`6VnL@I7vT$76r$su?bs+`n@P!?`dR=OZ{^ zySErFaM3xQfF?nu7ARLyTR>bwOS5eQX|~EHKtLb=cyH$LWbB>Y ztkb3-4$d!L&*AZSJRXnjpR>uJl!QIX!!7&5$ftzW$(*9eB9l=D+~4G73fO-yM>C|1 zGi3(f1~mlf=xXVppss*<45yCUKkA9sb}AOHRiKdVW*<998@3 z3aU$YSO~68BL~D&$CUQ@)YWRBc~Ri&4Z>X63jflk=ukV?uf8-!U>_5#bu37Hd~E6F5fa;J_PU~EbV`O%^uL{4*x;D?3vN;b6Nxq zhF4el1X?tj)8V;6Qm_nWH0>2v%^We6dPO(^Ao0OZ$1pR1TAX88^!qtT`znLeZZdk% z3@=vY4C4Cp^b;IAr|-VoUrtCI(Tf6nDod!|%bVnPlE~z_T0oH8CoJdg5=h^PW(AGp zDzfneYcWrPRV8JIvHm?J^-p zQAT%pL+KYqU3bOx2-61dG*%@S&T1Lm0ZfCP(P-6Y-*i<{PZ}98>C{CR?>N~ug^9cq7bC925t;@R=h$;CN;(2yfI0O!-$ zk6F?^%Ese)@5L7(@R)9s2|P8+3oNWkAF{Qw{8%8QA~J}E3R`4 zr|>8uoa8A^@)E>G(@t}6mN`|R@`h$AbWvd(W+hEMN&%-+3|qN}ydC(3e3x+yP272P z5AuH%CR6fE@(f;#Oc8ua=Lj45N%>S|0qeIJ2;q+6`7n=M!94sun2~2yx^KGxbQn3} zPuUEN>m+%1geQ63efD}3?V^D=!%~`A_?bUk4fD|eweq?1;|sT6kQ}|kGqwYkQ1v2E z{mj!LDohB+$oe4?bQyV_uu3Pz3Sw$q^GbipB!@3gg4a(f`urVd5hng?UDac6?@WgI z6(H7)H&kJu zlN!!?2IJ|{H@Ow3#ySzL$BDYwg8(kr5JH+zG(Y{y~x%Qg5q^@aZGg7U+So50rYgKEi z7^~ZUKzq#$wg^yM^e8rM;CxNYD&l`Plb1J}xjoA7#qCl4Xxwf#m<{sAm)mcu5@)@+ z>cb2M;fS}9T)ov;aJ6-qiU;x6tmU}qinJ1L*I^B80jBne4=cqQ2-(k=iSi}NFRuV=YM;5u<8!PS+WipYMFeWOllam9bP-qj~$ zt$kEsG`6c2n^Eg$wW9SFyNfnN%GA|fmsAm5jDrzYj}@z{zBa)+d{HById5F~gEe#z zj;H*dxB=myb~mB~A=@vA+aie=*(TsV)z-{RIZhvG<@>4 z8Y%i(s(J_8TWiui1;Scu^*;Y;!EiiFeOH7h0^->VpqN$r-m2^i@}}Q#?DnJddP9g5 z4Mu?9>`b_LYD4xwrZ=Z!VF|{oxVqvy)j0Dl*zf2AB1r_$ zUWye4`AAm5_wnrZ`+TAb9Nd;DH#thGA~!l8#3VCZj*2q(vl&9ZILSF#1Qfgc+)*~_ zC0{^`XiEhNLQpiw7ZP6N21ficoXEClKRL|CzzpRV(ni_$Lf~#TxdV8Tp?;!LdLC&x%^&C!U#;lCY8ea3&VP26{+K1|e_+l=>FyXxUCfkvS(10N5TDZ|TuZPv`HdJ$NawdzHHxf>Gl^}>8=ws~Pq(F;?tT`wxq z50hW+t1e5CK8hCIH_Pe1O0s_A5nxtLu*SoFYMT1OnsrJNX*?Z6c+TM)4C_Q;)KcLZe6@ zMp^0eGrJqWB6u|gck4&vAL%KzWSn1Tl!#MIG${vjW|432261XdmWQoCK5Yl|lQoT+ z1;1U}1T%W<=Vkt3(}$NVDu0MsfH%-_(m~cp5UYR52v~+Ne!K>%iVKSdjC_7sH2xuj z^ZYTgE@O3Bj5WLD>z~g(yj>w;=JN1E(-K2#=`605;^uI!yOx=oQT?^^wPwIRbaGy- z&>q3Jui)+)VqxFgkIm~yt!=z~tsLp+yAA|^hiL#HcP;AK`G>L5`*lBZ@d$sDhobEY3DebKd3~T)e?({9haG@b`7({; zPY&Ms==dn=O~8`}Q+Q9)S`OaJl5{L%74Q zFP-z|XXA6{TBR=;0kVr{z6Vj)-|0HL%95@o6ucZuAO%Y^jOaDcv|+}jSfXhXhY^1? zsa_+^)!MmOjz-Ycb$>gyHu~(}ERnKV{MBQKlkmc`Z`CEU^k~8qsZYKG*{;cTo^K4s z7A}md(#S*TP_?6pB#e_$gn|b%b_}Xk^0KLJX@=YH4S=-<7doGAgCwJ@)Dlo+=YXS1ODASZEGGwm#Ze>gZQrS zNie6#8L;zWHo45H#27kPFE%u8+e6NBRe_&tBT;@jeW zree-yYCsVX)uN{W6;I28gx_(|q%;jT%EE8}cu?akfm&hl2>}&W0JRUFxI(uVHj4_E zAX7o&AN$wtcJz9xy#_?*sD6MV`3`jkbAS35`R&~ZQ_LtSqx`yw@VASaeNy5;W_3VT zK$2f)GE0Wzfuxlz!{p^DdN+T3*Q%a*$}apI$f;IR20^2s5k=cBHst8V#yY|qQ1t?J z-#$v6#9qlM7ynU;-}7J#wQds1z`j}G*R{&7AA4ec_rE(B3}~j()YSm4Qq|2Xjg`{` z?KVq?qedN-aBVC(ybM{yB_=<-lh{@grHi>-I3laHKCe}Q>+(GlzqEf}r^BYqf>n)Y z@Y`0eQ}m!Lf{JL3HE_O0wIERgOC!L4{R!4<(8=9Za%fYZkiHVcebRu5t7+10;{+O^ z>b|L?nirTO%8%JBk7-$BCU^ciKCP79MZ_p#3&p)CI%*$7VHo99ZY-`)rHhM0oYhN< zEzI1)%-djowJ>tear1wJBfgA{9Zd1+pyzksf?~Rlm>XHQI#(=F8sIEgln%JM%eBB& z`aAVNUk@+N0EmUUQFAnkTi~ouT7CE&&N>$4wv1!x)-d zVZQ%sYKneQGh&fh{4del*U&vB`Dc)%b8}csT%~TcTYBO-7({>O!S6WYTgi*uz`LPN zUv=_0%C9GRUWWxRY`zBPL=+Dr2zA+xw&w@QfRT1mL#KY=DM}rB&4VvY+w@<@-ohW= zxT9+t#SPPB+6EU*Tr-uUPv0 zM`LZcSRZ=Q)hBc1s0dr~GvLc7<5!S7{*~l*H$*73maZU{duIk*EwceN9@&y*N3*wP zsWy0J?Vg)KQ|Fhp`);C^!7(!Lfxz$;dMo4lQVXS&ZApLl3c8hOZE5}c_bX1lT&3IV z-!b^=b8wP0JR@;`r|iCt+5Mce`bQ`lUoQ^BcA?L0V~@WuC?BnZ-lik>2+amxKk5no^#Um=!A~EHcdCFnOf?!s2;W#^?H;xS|9uF zu3#70#@&0oEYHpf#;;>$P~;_XnIi{)Z+=@$@_urJehB9P^OMVuIhec`C+J zhp)5d`e6c(o<5dbA3FZ54~WC6=J3OlPu^3GzXBpm=FP2t)+&`&!mMOe%i;6R`qH5)ZA9Cwx4Q zqe{)y*q%roeQYfdWNC%MVv**GVC46`M6<$rPH-(*(Jf!qDc!ZK?H;hcTf-V}jqAKM zul4>F>pj0Q&2xv;wtkA{AXUHXmzsE40=Iv_#(4Oq3;8drhT4BK{CIBR0i ze$+t5*e0h>G!uSV%=W(-J8NZJkCpH)`PlFKg15VrKI}ay99TwGPOGq?*`P;iI=~7}x`?5E|S_xF{#p-bD1H;YF1XpKkij#k+ zAEy=OH{D+Ku^X-6 zF1K>L=yNZ{Kr+9yt{ypF>7^GDo<8p=cX)(vGNO!bm97$_)1H=R=0P7sYLvlw&Tk2m zAm9g~KR8Lac0%9!ad^(}V4dmXkzOtF12W3E)5QamW6(oaDU!y)XgZwE2Kj%2Oy&xr z(7Qg|hCa;3nY+;*wn!29YL?S^^srl3=}Y-bFFGS!M4#lC3`?I{nhd8{ggbedI>@)3 zu@Z(*e2W*DO8-T%Vl?op(YqF6O?Ux(Q{3j1@7WhMn-F;F@<>&U$b4u1t7sxm$#pe2 zX=%<5Wap5)L^{&O7Ec42AI{nR70Vc^$FEND0mD+(K^hB*xrEJ4TyYQpK+b}M3k{*?oH*DxlB3XFG*JV7OYQA zARP^qC&MLnn8~h0s#)xhpsj@WFVa?`_19@Dkz2R664G^RD;w&Do~Kvx=#O;%0_=Wn zwegfaL3YfUn*-2Xng`T*y+-14h(eVI)MEN`4)fPG>_*d6yN7>&U_r}dOizc;QPsIc z0<-5pUWfl{lRV^aCdeVLV_wkm7x>1&z+k`01B5cj-OV$QsBA)k=AQ&TG6qzsvf;XzLL9LwB-Fg9Mku@g>-RTG!VP~ z(C?-ZSkaa$gl&Hz!&l1hK*{4V=>9LfW3o&DkyLcd%V zjVFtf#9lYhrIqV2$Ct`=IzX#tt+>uI(Q5UNo`D*an5c9k44tN(Ccm{*m)*SeTaikK z^Lh`>9rf`g8?l9x@z8GmH~CPj>V;75t}tI#)npY=r!s%t1m{$V)Twpm@Wk|8XnpJK zzh6X2bRmC8$3Ld1bGtSBaEEq(Epu>+7)~@-HfPOGDhK?k0MP+3qKIQ}~CbQDr zdmh9Vo_JwF8hG+HW5f_!Ne?aCCjDLH=+#@CG2>a$%rCY1uW}}OatpFRC>v7q4=t-O z`kHcaLNjoh+~RR)aM`o@9cH{LoC|Jc)A~@<)o6d7z_-xc3k0H)EEWl2(z;gSU_tr} zcOS!0ZOzlb8kB~+mAq+W)v1P$|AE~?9!#_&RdPJHJjH-Wn0*``xetfu1 zPJz!R9GR(-PJ{3Bq#i$M0})ByG&J}1>%nl+4emQvX8K;O5oNvg-#IutP1~ze-3!ol z7#M$45CL;QBVY;CMWKpEQ)2L$H&L}fq#{NBAo=<^@5f7<@MegWnkbu}yyN3glif7V zJ}IUrV`R2#mNh!~M3Zr`m}HoIHGnnL))A|360C6hLDEqm52MjkifVX97+IrDGLk{D zsN(S^%XN}DnLN?NB@9UwIex_rQ%RVqaoK-7)@!CC&QgsFWm;?C>YID|y?f_m`v@#Q zDZ`V+^|jhHFC|&K7@9}95k3y}S`ntU=G=0wVZJ2uEg<@V6m^D7t0j#3<|6p8#Ad8y zF;=%1_pugBZG~?sG$46P*EN!ZUN{uR4GJ z?`bxq&pF{?6@wuIC;(=`#hQqa_+uD{kODE%j9yo7wQH|xyMK!YO_c*#3`(ax)VzcZ zTw++Hj`$Bo>}gnIt~{=2NJ5qZ6C#DJ=3@opv8w4<-Eah*r^RY8s-m*ZJije|%+DaK z5N%kh(yMmHCy=-EbN<34Pp%914#9t*NXh~?KH)cCzMhTJY9;6!442E=f^^LH%rh>w z4tc-N{cD|?FS0qYxOfmHw?0v51q*toYk2u%n!u>#1FGT5Mj0%wyiH?ThRQC~w6IH( zF=B>jSux2bbBgOz3P&^Z=d!2_KG~I}JU-MSgLfBi2l<`K=}O<#EPA~TJ^gV56XVzyPBfq9kdqA=aMv7d z6Nyo7gnsJEb{TD!Vfx$8^$JJnW5Yo{;iiKSd=>0B@}%+jQxGnmn`eHq+hRsDkX-9; za*B+YsCPtjS!QGxRc!YO4r+fkNq4Cf)8_WrZ4yOVeMoC*N4>d}gAj*hMB(kHCGn&C zZlidQaV_0UdE9N3rfoPodaM>Sv(4ly0pLz^eVPs$j(LN(n{iU%>Jf-HU&fGSsP=cwPz}Y82Sj z@On1My?oW2v8(&Hyh&$N?V@-eJZHxcG?7bXEco6vfV*md<&3ns--i2>JcH?CD(!8= zKjwO{03Cu_j^+)tG;=%42!KOXe0E`%EqCGx$wF$o99CnRi7{-el=7tMdB+lqje5O z12%h>e0{orSK63%tx~H^yVlQqyjL;u!^Kz#k|%!`NJ=z2yJg~m_{(fKqUk(yZ}!t@ zLggA2<7*z^Gyt*@Igc>TE&=0p0R|WUjEiUfBdP!lQfCMT6ty2DcN6%-FUc5MQ%PeG zX6#+$sw2sP?-DT26jjogO6C+ks3W=Dx9rR112-(^d?;(gk2Lb7H~5wZU+^LieDr)q zMIV2G71B?`1$!xCrcrtt0ZY|lVFhhi5FoI!(50b%q1C8jNQJRS%$C)DcvA`U>XN#< zt31$wVY<6T&uwBosnJ)Z20Lv_37!P(!wVl=8?{>?9TCzRt!`T+U)o#cJ!oGKC~JQwZK4J2@ZoCK$Bqw?_(=86$|dK6ZS(AP z1$7;w*1C?@d@?B}n5R{QV~2yE!?DI|1y7pfLu?fv4#6y`Q7%x0DfLM{e@A#-ZD3=TDo=ZPAyBlr79YRZ7oKuVoMdmkbBc`5TRtWko)f` zR&8(F^>1xY2mQ*`AKs~6M}4G+y{mtx?`1!XMZv*Ey?jf;kX#hqg>4>ga#77^jab2o z3sjH1*%=C!&s_y4ska~ZG2!`0A8eU9$6%p#o%UhTd<+|d{L9@r=+O;y+x_B7Lf^lP z!rlyaa6-(`_H%G6ES1Py^a5AoLuHkF@+_L3xyGX|w^wRd1Wgyu2(t4g?oxlAZ3AD% zUcLn#5`>Q3PkF|nzj$H>pf3o^_TXDliUMZs+kzbD>jzW9*88~GfL zzySa+|Ij8ylMSwZF&Anz%qr~HkUg*lO26A1fJFHFN9NL8@&D`%p2-v~?9j9BW4Rm1 zDZbkDCX*;}5Dw_jLQ7*wd~&mINCy*tildbZ3`|7x62y0%U2|$#b&6Pu59+PJJQ1ZT z#ChF*yU3nOC7O*0^GnV?us55^ZS5yxB0>wK&%t|H_^rtk1*iijFz*!VcV`DjC!d|W z!>IBV1}1g8O=M3S8?0kksoOP-P*`4FpO+GA%FXTuwL-g!M&LPoZb@F`D9uHGc!7}( ztEI}>qUmWUY~|QC>$k9K8X#8#Mzhrt7S%g>_q}HB2>%< zsP2%H$fr@=?x$Zm{e?T;Tw*tWx^2H&;no>@3uotuR%H`*CDH7#m{BC@xeEV%_yPZ= z%)xRQqI0mbmp6*;_7-inw%(P5)iAFuWC7OOO{yoD&T~QEt*6?CU~$bDrfVjhGe1d4 zGR`QWu!E=W1zXHbe{zf4kJ%j4GRdn(tR*No-#tSd0D;RND@zxDR4fD(Z^Gn!EJt7DdIxmM)C%eb!27 zeM5%rpVeS|nDR~q?**~LtcL?6qRTN=y1?qE;egyuV}`lv!kqgN;l|o0<3avQ_0+^> z8Y1hpF7;gXuYIiFYO0XYH1aqklf~_U=|w5V##JqxIBIO$aHM&EKrM?;9cZ<^q8a%9 z;z&TM!4j7ekn*DG=OO6JCRwmgN{)^1KIu9(iw9%TwGlx#h75=P*bUO4t^?z1M=dBQ#Qt!Gyn?eQl^Acg*g2_pVMqR9!R1kxB`QG z;`i`YTc;i#e0F$n{@Ho8V`GHBrv7eI1-!UfC7=?y%x0HaIm28~I@A*;X2?|-!_rSr zI=P}Gt)H`h@zhfdP0kYtx&Lu~TmI<%1}ejHxcL2XHvh4> z`w)gn2@B0k%kf_GY&4$dpBIC<78kz`iXRt0KY=q-&<_1w{8Zr6EW>%Jh3EMgZif7@ z82xxN)WQM)4+gNC;uT$I(G!aW_i+V zW!*Nj)&9zKE*_EuF@X-n+qA6}W;RqJ2bx0S$`X=ExFcy>X7(d(4U?oLMAx6CrLkuG zlco-(b>um!+@9D)Up>{4KO!vUPf5wi(E_=D=1o<=HG7JSILQ4D&V<=yE;|k&y)WN8 z{lpVrN2+wv1tdjb$^~qX4?|M~+&ha+g@?tcnDoDZ2|DlXzdHgW!AnEtpAntS#xSo# zBZA-B5~b^X))rOU%XG7)iB9sHaZQxI-~6_|krr)Q zT@m3B;k()*#fFz zvHI10-q#+M{snZyk~{?&D6)%JMEu{9uT3ykem~LGrm5Szedk>h10Z`-9wpqo*7Jj`T@@*hS_kZz!L6jGB z=5wi;k}d2y_aGI9qYYV;F{{g+t^{j^?bxiRL=Us#O>At&fqT1AEp7*X)EQoXX`cmB zunvd*Wl2hV!kgg~kCz!hFWeav#Y7XKD}gT))eK>mzGjCJmp57F@6}p)k-P06{H$M< zJbh@}v1Vz=wpthFpL}##V50tilszuhSKLAC`?mp8%tvo=AC>_`|6{JjDU}@#Ai-pX zmkM+aE)F|QSs{(n9QR7ZR#v@?KhNR+5NvSwHEGtGeCYO;1InIE_I=s)k@bJ+B`-C6 znm2#?wSgRrr02@H*6@P==2N$5FgEQVBNTut#E@=Ikr5T%J{1P zZoqcy_=eNXbh4{-s9fk#;A9>_-MuoO4v*#wYI78k$% zB>gJ}!8{he)!(=xd(cULRU7ctZWSCs+V;{e{wv9@5o_yau;*A?v@ccjTw+p7lJH%< z4sVqc$3YAeVJE1Osh{z}J#w#I$6jGu>SJe*v1$wq6{>4PZ*GO_c2o=r$`SCNv+nQYXm z;3{NR@n{jVfa3|p=|cpYpbPOSEbZ^`-=E+6@p^xMPCYj4>1c-y^ptL=z#YTu2^8x^ zXA_>9`{FV;TORhdjd#^6Uwdnob-R;e7Dc)_;JJ8O}*EXg9wiJ2?JI0m1ZWK?UH#TZ%Z*INTmp*9H zJfOU_y`eyVd#`Wqs4iHA6QEbO>PP}Fdq&SxMxewCh4f{#p?p4ARj|mH&Cbr2ico28 zyly00+cU52>~1WEpx4mdt*t89b^r!l;-EHtu-A4>Q)@eAdvCMA<1%`+A8>#JoyuQ~c_18k3tOeg~=KggL9K^I+ zBmLd2U888KG#i1|yoQW&RUg4?YA6kYQ0+GBT-y&iXY!FJCS6jpokMWpz3I+)AQfV_*(Y2%LfPwh#-1*|3owFOa zYZ)Ma00FJyvIb6Z zi$Y`rmWDY%SQ=)MhYj&Sv!CQntCp-gP19|ESI~#cu0<(AybZ>|z_e_Uh{$efXv9It zQma2S7A zj6%#>TYg?*EcqG!Nv1FLiS99XArnbiryO@p_mXp$q02!&66poZsbtW-=yYG;Dr+(4`4Ia%v3{GoRc8Tjzo{>HJt*D4>~) z+;&d#fb|t59uBzMFy#*V}lACuTl5pEwduYIL%{dn3Nhi6LXh=howkM5je|yrIOr$hNaJc!8l9| zV=F_h85$~F+7m>j%vQOetyO-M)EG#@Zp~%o47MziVQJ@b z0LpgR8S0YV%Pzu?5)*8|iME)r7TZ~0kVUp3y8Bk^!i2YisV%mq|0FZkzH+h0#LddG z917VWccZ!vJ(ly9fs0%M!~REq01IP+Eg|3GNuq(1AqQvgw9SBNxykA$nX$6?CN0eP zp^NLR!71p~E?gEzB1-^Sq=RvJW>-@}#qt??df>GjoUKpwI>_ z^8q`4lF13HVMcxFfKYqqDVLXW!fN2*FcZL|Way`y8^Ey6_S>_4Fi6<*ha>Ndh54G~ znjkE$+Ml5w<(;U&s}Y?w!E6h+0~2^;=ynUtkYV8MfQwREx18%q2}h=SAp6}g*%uOu zvN8c>k|HdTeu{nDfAZ3Qm>t@Y3|}~K>JKUc2eh0(m7w}UzakiEaC!IwTsq~I{tJYL zi4Yk4X%kHPgDt@bXs5%r`yd*z+-u!`uZ9WxmZ7L^VXn)i zt%1LWS@dDW6-W0umdi9we+?5i(Xy^osz|Dz=KdOH-Y?R2#{$G*KjVcZb}mUn0jA`N zTzc4e1T>-OE>w+2?~-GoY=R#cuCL+YtV=4}t?o2;6kZDs6mmP2TecoVQYgp^NiF<~u(?gdXZEj6Hv%n1#ds1G_bp7{Xfbf-Z}s=&nS7+-}-M%CrwVeSl_}4VhGtCTU0y1k`iIfdR3ah_Z)U%|@BN zG~ov!1w3TC5Jpz~mwCXE8HvpUZTU6*rde6?1r($oX*O`)uPOJq6~)(NmG6DX-$90>{v>qm`{mkOTI)!Xg(ehQ@SHLSwe5tvQl& zPeVhJo-hzh2Om&jk<3%!fRKmy#VrkJSciGaG4vMN0|Oc)bI|UC92+kj`u6vD>LaGR zYHRhYdSsbdEIQiEn)3tK{(vSlG%zX1_C!Q=`V=OA-SR+RCm0f5dX=N=8AF6rl+&*u z2jd+f^AD{qe)@$ic4~{QJ?lxT^y-^L`)mba>(o!>xfo=liFa*G4QSX$upJp1vMZmv zXC`z$$R#w?NRsY#890XsBstG>KXhS2L)(+^0BmXEXyrW;2LS=Mq+Mj(3?nLkw#o%* zY@g+S81eZ2^R}7OM3jb*Chz1kxu{$4eYq$PA%kLN%Y@p12Yn^d)KG_Db<4__1>cuR z1zNH6(=TlK6BqwU^0YG-KOeSVCmMuMV1IMCpTa?Q_x2MC2icJ497DsT;}k*6ScZn; zEfZnr%t(>NjAdwS#FfwxcZZ#4YJ)O?YJ_Zmdc=j{| zOpQP6w_nk90Ci+pN`vZr!68g$;S8PU+8PEhv>k}u37e9EM|>E|ou5g6I1K0;h0~sY zzGOTbjY z;R_=%k*6J|zG1nO@Q}xcb$$Z;kZa@&4&;;WRum<^s8}oU!4OY*i^BMb=3aH%yu_|L zS-cLQD(xx zP7~wZ7uF}k4|AbrVPt~Oobb?45psbJ#dew*>NihXGuGd^-K%>HrE;iMU3U|IW|756 zsO6;67r>-Y5$-%~$)OuibbJ#un^YFB7~1Hd&lwsTO_I*5P{4WNgvJYvo@BYSv^Fr5 z1;y$?=f)I)oFrkVeBd?>AT<>Il8RC2pAd7@1e5h}lCKcE7mq>398m@x@LdUc9BRS4 z8oRN@SLm0G8X~r_``WWbP&#^Y-(2>yDy#df!#={I~_*3Uh z188vrnV?}??_HO`)iM`Q0nI#}6AYk735QpPhHXW65)RP94+z?S?Q&qNnzhoc>I2ME zpqYvmdZJnIgb)+flDKe648brUmqcszo%)8xt$>;{I#}v-u%Zlq*+Y~3qRy}6f0C`U z`Z<@qW-6Rd_ftaxEMxS%Rb~bf4G0Pvit%DzG7#uoBvJ^JC*2L zGxk{5PtCM{iN%Hp_{kX`iMYk+fqs6*t%c@iUxJjNe>G-*Hzn|o(gdkN6A^0I_Xlc_ zQSoo>F!X)KwuBTT##Ya$S}jUkZSRcVp#q@SX+F4v)#Zv zF2u+@I>69>F4VEX*nthsh#OUR3LIc~9vx(S2Xaf~<2V6*WlHFS9(S0Z1_jxkhK3lv zjWpKG9NOfBRoYuh7-Vc38fNJhT9)xBHr8JwYHL70-)`k*RL~0Dj15_%CE8ds^w@RU zC#N*E6f$lf zi4ZrjLBhPnLq_W2xW2<5R1r#(Ljrw>0e12u2HVA#T*P7*^T+ZjrV!>=JbowNVzAx( z%R$bqpU3!FfLhX>)sj9!E$QxRNw=vb-AgUr=|`Ws5V})OJ0=;92};A&$dDAgjWQ-i z4xM^`6H+lpgm6JAw;CCiZnuzX@s5*b>)+zHW!H~8OsfWkyax5Q-*k<(5nU#&aF+-3NLVU)A z2ur0rMA~Y2R08F77`h29RHUAEI0%jj$`sVdkW8VCGA2e2ohcAfVR#{2P^O?phGhyZ zq*}b=WD0aqR#+Avch+NZP+&0@hlW*R1=3hCbNCu8VHNfj5(ZXZacF4iRiGsqk5zPk zHLq9-E%3VzYxBsk#Gl6prT=d9vBBWMw*m%gt@r@ZLwsQ~K5%p3Bwz`Dq>X}k`LCrO z>)m$OFh&OL8;tQGn+G@g*ktg~+XxeNqxb;P16;!xAGWJ-60n6o&i;b$mkH(QHyzbn zJua+}t49aba9yb54Pytd+%n=u)tv%=hqyvBIac^hrKVd&s4PG~zEoCbxtH;oN+?lxi;^f=~j-H&Oh zL%i=WzdbsrfYO2qsi64D#BGKTT|;T3Z;TSCju3aTVZzENUP4kK$0?-PS3lZ+O0(Z? zcOh$RP!?rDgyc~^60yzbp>ru4d1HnkB?P#Q1re4}d5E;taGb14T|E$h0{Igp)g85_lac8I7A5+-7onI&2la$iFuThw*0IDzv|C6BOsQPUURBIUeCMf1ay(3(E{{`U4f7MMsnpW3PV>VC3buGE;9w*RHZyrp62nnxSu4Bn0xlPbEe zXNw=BwNJht_{^WDXVGo7zFAH!KGQRabhe(2=d<6(h$Mtn&Fz~HsJ!w0d>uzq%>~^O zA-57LgO}@@Xbc08cZR8dt3|zB)zSEu@oYZ+VO|l>?=63=eyLV*^su~-CgVjkh7!^Z zT_s_Z71|8vIbpBws>$qnHevLQ9_k(`;qqGHyRQMqqSBX9eyHG%iXIs=e=O6l%hgXr zf?qOrO}A?F{S~p?JbqBVbayv@h;Bh&v%9&(U^>+2b)~4#)fq5TbDOTWXlC zS=;O$4d&>JS$#jA$I-`k>)8bV=hN|Y42r${^s_7Y!r7drJ~M`Wll7cP9hBP!6k3lluv5s|W- z3zd3dP5}N1bWA?5O~s1#pS4aicy;?6sGiVE_7^Qj!{w|dstQC8viMa@ z!l>CV61mQ4)z@=!ss)!xs z>%;|f&hCPLDZ{6YXCo+2UX&Rbs8NCZ7`d(Yn3VSHyfP>uA)Fg}nNYmXZb91HYJntY zilkRjg1@AHpgrd72B@mLtcsW^-~KEB^(H}U zX37ji{>^O?HRW$B#EwRP9k(oc5|7~@&}a=aM`u@RLcpx{Pf?OXGrF0Xdr8wEKvQ>{ z52y3v?AMUn)q+S^nh-JVXTye#PAkGk1PsjJ`8zA{%HGz&l@c377gFC72*3olNyr|a@5X^y~ z@!5|zYZ$X$E$0!Yv-Rx91q}XVwfqql=vxJUK!3j^GEK?`2;utSu4=ue7qCHtOype* zM<+^Wn6#)rs+Ex*HPPsuSen|Uqt|st ztSUfcE?Zvx*^;*q3~O!h;8}afvoQ>?RH47N!B0OXiTQ;#KRj8?<~)|IM=$iJIHY$; zbC5{N2(Ow3cum#Z0+8U$wXooW6Sc;F5*|4P%zBgk0T7!8mHPPo!RCU(cJ#SGiJC_! zT_b6!l}e~uwz$R7<3AFzp>YgEw{BGhbuAtpaz z>+y^876Vc^Wt7KBr%)V7JnbVUY7+1nWy*KbQz@(-b#6kr#YG3(EeNr&?4bt{m3-Yq z%PuSB{p}Bs zjj0MmsElf`M^613WIYKLRsjfs$0#JoDkN-b`MO8}5eT3xA1_mRd}g z3f0Of;fcI@ahd;X1@kQe%&v{mWbg$(cd86upuX%3X))7_s#fHOW7x8fTZq*$DV@=4 z(KhAGC7hbBX49#v{9s7KLEKV!UDNwskzr5iXct`-egHJv{^W&@-ZcFH2gEhhbo zj|OJ#oHH6Rs)hBuMFz*qJ&*>*yz8^K-h2Dv^AFzsRBfr$4vR*Ae=mo}(H{|wcy{yh z+33%>OH8>J(XIvi+*>}YIQ0;!*Vtefc;PvK5kw14)4!t9 zfD5`cbHNJ z)sR%!&wI1!_tC5HbzAzY@e;!4v^jw_PQ&Pb)D9B>{K>L^p5Y|=qMBrFBt;KTK>JFedaF8u;=nV8O^ z?;`k#!sz9w50=&HU{`|hWCej(QdW;yZ-464OM4r?diC5{I%9WYAgoS1!{66V`rqov z#eeMtt->RJLsL?>7pfk6y?nbbPKbgt$QGSJ;TQF8Z`4rib>oHd_TEUf#hr+!%}YjJ z&1;hs1UU47AF79?Zch*ngBy0=3>+lXOO{0b*K(G48Q=w=+bGm93$TpgieH1ubGy4esn9qJ?qM=v663Lea}{@Kr( zT(-p);dtfQ*vYicUZQ4yQv(vWc=2Y}a~h4|z$rT0baM4LVnjdiA3%ACT(XI>>oxT% zjJu6$J_40;^N~|l%=wp*P7bmA3-ZwWF)GK?^w47>UY9g|PYv*Fyx4E>@8*B$&(=AV zJWTF?Jkr9Uui*=YIT)S)aLdN15IRxmliscL0#Buoc;LyDvNN_6+$|T>0t1;Dx7{{l z?L*s6#daUvI$Ptguc7ncR=3uS9pdi5CT#)CKiQ00_LHnqe*q4qP3|?YxR|tBG}`CD zvd=-E;=5SwI2`7IbVMxoHgvq(;dQgVpdiRPI@t9qRYC@^{pK zlBbZ*16+-p9O|gTna{`5czS{NkXt`$aooy6OrFb3IiG3-aq{Pe< zAzYQ2PRH<9-k2(SHa|>+D`#wA0D)TDl8(Bs$HoZlcPzVFEn!$ccBLEIy;^#IepU}M z^$aB>iJ2L7`=9SPULg7w+|OmK)n1f2n-o)TYG~Kx$L_ z?0UJQI)&gqXR(3UJ(>s{Qouw>Ey%{RNG_>p>0(a*dNJxVuuutJWl-x{m_EYHd5no3 zg}HER>hFx8+rC&KjeJFCPH%O8-BaJ=Usp9m*7|07Kc7-@`G=}n(B%LsI^W{5TrY1c zx_*M8o^GUIe+OaRJGdM^EF6Bei_jM`O+{QnhG=Zx$^kw1rKL|FoL2@5(5_dF(Ej)p&_n__BJ(=p!=_Y|Ffw|qec%PuiE z{Q9Q10ykgYo<>PLN}AG+=0yk_$^?!LV}j}N^lh@`&JVmmfhy?JF7J#dCouLXpL5Z- zm6^;ApKYO5Dp9(?R}=NSt&Lot>Xxg`#|EaLTWZew1wT9vmRu~VRUNCC1v3UTc7Nx& z%Y-J?e8Lb^Z8f)ByMP3LM9A6le%1bbj0QBz%&&A_GvqHtSXyen0P{-ov%z$)Pm|ye z$=IKUVIG)Y!GWZHK}uj?tqrxuB20CwG9bR>(B_{Eqg@|Fp$(iKt?!isrn}|*;dZ&Y zgKD!-u6Cg{bb>is@0QoLd9)Ycg~cCTUs7rF34xhd)eUBfRU!<3zD9+6_05|35{qU` z3NY67_($NY#)H&5Xjs$tk9{;Qa2WNqAsI{iTIq{QRq|OwTa^5+8!><*8+vN3zyz8@ zrAb_=nPn{pNO8ZK88Vs|$J_b^_rqgXHL2?L^6oB3*9f#h1&kuN7zEg?F_2{3fdrr= z-9veKt(y0yFWoGEC&a6o)~o90`>Ga~z=hgQ2t8y#fZldA{XHbMGJ73Rz>x9~m5Fx0 z9>PeEpu-YYaKF$1TfRNQJbns4SN-YLPN?VHmFzh`Yn_8uR+;~R0gS|!x{3-a_k>F^L$r&nJHF?2qt(+zX6fS2a! zwD&BSUntbAm;B51v}o7W)c$mq$PWBhk%2+~C1m|loh`Gtt_#KTE-?W6Z|)Li*|6?a zu`wnY)eC^@hr=AWH*WK+cm!=RYdrqJ-j&VzBxjODGsZOOjZ$`1~n{zVRxd` zKzSQ~3LfJKPpmwQ264fao|*@f^vHd{DGSiz(lMfy7nU`+WkC@%h;l4~hqLA{KHkyl zB(OI&>RJ1t*fQ9!|BL$uBXhN6^=%$_#IxLghAI@fb(g@y{6r`hyWTF$1Gc9+8Coxa>VuCZoTY@hJz5 zXvSYd6stJ8HvI2>1&4ujE=;p}0#y=GKc6p`cRioG?GWyowLlMX_X&Pj|ETYFiJqH( z&(xjG_9O1OY0+$*SMoV!8v$t2?EE)@KD<)gs2?qDlKm@)I&HkFQ+va=;M`(c_6lj% zaD~ASBAhYro+coHOf>sQ{%j~DrXKT!V7|x4GJW0rpSXGD7=Z`JqRquW*!7h93*^ek zTGc~Qqx%0@lZ?|;Az1P2lMk<6?3+}7@gVqFJdIFC!i<(_vW>Ov(e!|V+S_0XO~&g} zKn~d-{G-=&!;`;0G5(;)!?2g=Is%$pUU}7O-#6Ix`jhl1!`r^oqu~ zY|^XfSuO{+E(J87RDR`~1@dAGZ3+pZXORWCn!>x0iP-j3e>=pw?W&qrsVpT7W5O9KRw z&l;1YDHD@B&knOgB3rBvaYorlM{RgKQY-=h+4KyPtPf9+lT;b|1VAJvh)ZXr`zz>eCeF+AP7qlHL|Ds%R)-+>){q2^!@ zc_mVp8k1fZ0O|zVDC^4DuG&X?X1tns0BD0qq-CX2=D~`YN(qNfN@~&rMmXvZ2_lKE zc6c;+7n5Y~e$m4N8lWK}uDUE#@hLA@r~(>?KezBs&Ot~6e<5D~I72;xIWS?NopVrt zd9)OP>9D6RqsEgUh@ueYOaxrX61?l!IVJasmcD_+<*J*;EeX|{DTDnDM1`aow|Q_| zWE)phR1^X6Np0aS;}}F<{4MamR4;R_ZHJGluaMn@UL?Csw-c_ERDjV`Rz>D-)X_8( z!CfZwkJNSTe}#58cTE=@2g@#MMyGkq9M`sgr#0zyov%4Bc{XR14Ws{_hU9hR*iK=p z@@J!meme|NgF98#;KD(74B=)$t*PJCOJ2slrhBu$p80Gt{VIBSYV-Pf5cq(Plg&KY zDw?vjSaXiSsLC&dwv~EZrSsJ+SfqadP)h>@6aWAKw`xoRlB^HzW7tTgxd&tP0RRAg z1pt=|`2sZsPe-+n1D8el0zCo*B9>GF6_=U$0yqMODV9_MBbWC10xAP0F#wk%`T{Zo zNU;EySo#7o0;ji^A>slYm#F#zDkLAu004Jka%E_5b#rBNP)h{{000003;+xOPXhn| JGtB@1005C=Eaw0K diff --git a/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.miz b/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.miz index eb53bdf95d301d76936fe0905d429d553cd14b38..5ef15347831fbd8402d5adbfacf8c70748611ed3 100644 GIT binary patch delta 143654 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 delta 638 zcmV-^0)hRlq6*K=0kEPO5AI{wNTs<4WAp(40Dc7kld%~af2CBxj@mE~J%hwQjC@%e z(Xgb|9wKp|KvzfwszMJ{ceOH!4UrOiWjno8{rB2V3T8K3fqIEDo;UN}j6K7|&nOpM zVz}w|`>Pf9+lT;b|1VAJvh)ZXr`zz>eCeF+AP7qlHL|Ds%R)-+>){q2^!@c_mVp z8k1fZ0O|zVDC^4DuG&X?X1tns0BD0qq-CX2=D~`YN(qNfN@~&rMmXvZ2_lKEc6c;+ z7n5Y~e$m4N8lWK}uDUE#@hLA@r~(>?KezBs&Ot~6e<5D~I72;xIWS?NopVrtd9)OP z>9D6RqsEgUh@ueYOaxrX61?l!IVJasmcD_+<*J*;EeX|{DTDnDM1`aow|Q_|WE)ph zR1^X6Np0aS;}}F<{4MamR4;R_ZHJGluaMn@UL?Csw-c_ERDjV`Rz>D-)X_8(!CfZw zkJNSTe}#58cTE=@2g@#MMyGkq9M`sgr#0zyov%4Bc{XR14Ws{_hU9hR*iK=p@@J!m zeme|NgF98#;KD(74B=)$t*PJCOJ2slrhBu$p80Gt{VIBSYV-Pf5cq(Plg&KYDw?vj zSaXiSsLC&dwv~EZrSsJ+SfqadP)h>@6aWAKwADg*vt0GAAr0viUhV*mgE04WC{&j0`b diff --git a/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz b/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz index 04b8ea18aeac0af35fc1ddfc04d9803f3762bfe7..43cbe10c0c3fa6bf5ad87d7659416165ce7136bc 100644 GIT binary patch delta 143886 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

qiSi6xD|m2@FPpk#Cy%)swmg4GjVFIw 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 N*HIP*hSXY+tpKV$U047B diff --git a/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz b/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz index 2e07736aab604679a6eda6cfb5fc8dd7fcde816b..81729afd8c0f3f1c8c4b36331d8b8ae6c0a6768d 100644 GIT binary patch delta 143830 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

qiSi6xD|m2@FPpk#Cy%)swmg4G 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 delta 754 zcmZ2Cg?rt8rVYnDr;D9r64?H5In#Bf=_^1?^^Hs!LcB|NvL}CIWMHUcWnd7SexZU% zv|cZ#G;wLj!MsNX0=Dd(^%6gW*f%aq3Ac55(&?pkrcw3s)F)!H(?is&dkkLkI*A-xb?Z^$e{Ydv*1x;w%@3644anH+T`O8% zd9X(Gg2bJ@jrHu6Y%v)hKE8U%@s+9S{EkMp;|lzrlQi}$J}S4WN6NdWVZ!1Q&pH$) zFJigxBDds*XVfmHs7}Y&EoUYKES+)XMrngc)3TYJ&C#~eJ3ImdQ>JrhzJ?X>R9Cw>#pl-EI5s~KI(IZ)AgO=U8V>1 z);2v&chjeu&h0gO@~QCdyRy9FuOs(NG)dIncglz- zDlAWN!?vlv@~57g7MwrvA8Ua3_U#o+PZ&2J^DJiCKD~;`N_YE?RZQ`0+xrhQ@v(qX zkrdMo&*}G0N?FqzPB3XP zIVOTcRHyeI2XZ8nr|&$@b(Wcd;q+{fG64FZOP~M% diff --git a/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz b/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz index 6d027216a2f6c7bdbf7e150598c327368f32e526..08536ea49c330cbfe938a18dde16371ff30e67b7 100644 GIT binary patch delta 143883 zcmV(#K;*yuq5=K)39xAvvuZAu0)KHv*+@ricsx=p0sz_c3;-4Y003+;Fm5kIMMgnY zOjIvTZ*OyDE^KvS>>X)S8_V%Cse1omf-5D-Ue>aRUs6s;f(?GA!r=gZu7o($qFuqp zl2+MW0g{XS_Vh959y$PHl9=ZQyFESKJv}`=Gd;&f!%IIN_L8P(Jbn69?0+2`9BqrE z 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 delta 818 zcmezSo%8P^#toTb+m9wORS0blO=K!yoNimn)WyAYCwuZYMh1pDR))!ZlG61{Lk{LW zG7zw3@2r>j8N|MESxUIA%Oi)zFc0n!?&=k{RvC3NPZZj{Y3|-N-|k;8+tj_#(e;&T zmu>#Dy)!@ZJl^kd&baa6s_U;0CT)#6pYUskjQ%s>8T#t?>;2L<-0P{&IdE&eLQ7t| z>>M#C4Yuz+#-62m7CE0LY5JbtF0ttK!}_ydeZRadm8g}yHt(*VqEOU&tfnUA$;p!@}?R+mmMwKI*X zm#01vlbs%-UfpBxlGjP(*s5EP690RP9JBu2J#T)XJa0h8X75_j^2&oXq8B9Y>}_PP zWQ(cK`0(-7OOCHhRp)m!vK?38|D2?;XYoq6TM4Fb(>}-y4-y?z__WYRtAU#CCXsJ&t z|0@0IZ+F+J?2auzutY@2U{=Q}k63qIUt_^(yiuPsoa(Rd6z?)UsJFK1X~Ij_qa3r2 z&w1E(c3*J+m(O$F&pXSRdiKRWb>~ObeP=|}jOs6EJ=k`bLAIbSO!))*U85hfS?6-r zy5-+^Rqa#0Zr{U~J64ykesONE*^^I&ci)xe9e*9UXQD}>_P$d_JW*kJiW{~~{gprU z+_d2QiT_vwyqQ@<7`8XMGUYOE&J>%*wEdMEQ?}Ihf|AVqyyEHWtC_S^V!as{$`gxH bGxAG|Q;P$>X)S8_V%Cse1omf-5D-Ue>aRUs6s;f(?GA!r=gZu7o($qFuqp zl2+MW0g{XS_Vh959y$PHl9=ZQyFESKJv}`=Gd;&f!%IIN_L8P(Jbn69?0+2`9BqrE z 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

9_i6si^Lf`wm7^nZKd7<~Lb=QcTisZG)P_0&w7 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 W1^@s601W^Q0FMIz0FX`q0002|s4dU{ diff --git a/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.miz b/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.miz index 2620b5c3eab5b982334f3e911fe588a95e67187b..f98754531049e55a9f88f289d399340d8be0e45c 100644 GIT binary patch delta 143704 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 Q01W_*0{{RNP5=M^0E9X$<^TWy diff --git a/Moose Training/Documentation/AIBalancer.html b/Moose Training/Documentation/AIBalancer.html index 267dbe1fd..c07c2ae71 100644 --- a/Moose Training/Documentation/AIBalancer.html +++ b/Moose Training/Documentation/AIBalancer.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/Airbase.html b/Moose Training/Documentation/Airbase.html index 9d1bafccd..8e13e9b7f 100644 --- a/Moose Training/Documentation/Airbase.html +++ b/Moose Training/Documentation/Airbase.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -80,7 +86,7 @@
    -

    1) Airbase#AIRBASE class, extends Base#BASE

    +

    1) Airbase#AIRBASE class, extends Positionable#POSITIONABLE

    The AIRBASE class is a wrapper class to handle the DCS Airbase objects:

    - - -
    -
    - - DCSGroup#Group - -GROUP.DCSGroup - -
    -
    - -

    The DCS group class.

    -
    @@ -1253,341 +661,6 @@ So all event listeners will catch the destroy event of this DCS Group.

    - -GROUP:EnRouteTaskAWACS() - -
    -
    - -

    (AIR) Aircraft will act as an AWACS for friendly units (will provide them with information about contacts).

    - - -

    No parameters.

    - -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:EnRouteTaskEWR() - -
    -
    - -

    (GROUND) Ground unit (EW-radar) will act as an EWR for friendly units (will provide them with information about contacts).

    - - -

    No parameters.

    - -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:EnRouteTaskEngageGroup(AttackGroup, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit) - -
    -
    - -

    (AIR) Engaging a group.

    - - -

    The task does not assign the target group to the unit/group to attack now; it just allows the unit/group to engage the target group as well as other assigned targets.

    - -

    Parameters

    -
      -
    • - -

      Group#GROUP AttackGroup : -The Group to be attacked.

      - -
    • -
    • - -

      #number Priority : -All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first.

      - -
    • -
    • - -

      #number WeaponType : -(optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage.

      - -
    • -
    • - -

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

      - -
    • -
    • - -

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

      - -
    • -
    • - -

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

      - -
    • -
    • - -

      DCSTypes#Distance Altitude : -(optional) Desired attack start altitude. Group/aircraft will make its attacks from the altitude. If the altitude is too low or too high to use weapon aircraft/group will choose closest altitude to the desired attack start altitude. If the desired altitude is defined group/aircraft will not attack from safe altitude.

      - -
    • -
    • - -

      #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 "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:EnRouteTaskEngageTargets(Distance, TargetTypes, Priority) - -
    -
    - -

    (AIR) Engaging targets of defined types.

    - -

    Parameters

    -
      -
    • - -

      DCSTypes#Distance Distance : -Maximal distance from the target to a route leg. If the target is on a greater distance it will be ignored.

      - -
    • -
    • - -

      DCSTypes#AttributeNameArray TargetTypes : -Array of target categories allowed to engage.

      - -
    • -
    • - -

      #number Priority : -All enroute tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:EnRouteTaskEngageUnit(AttackUnit, Priority, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, GroupAttack) - -
    -
    - -

    (AIR) Attack the Unit.

    - -

    Parameters

    -
      -
    • - -

      Unit#UNIT AttackUnit : -The UNIT.

      - -
    • -
    • - -

      #number Priority : -All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first.

      - -
    • -
    • - -

      #number WeaponType : -(optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage.

      - -
    • -
    • - -

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

      - -
    • -
    • - -

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

      - -
    • -
    • - -

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

      - -
    • -
    • - -

      #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 "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks.

      - -
    • -
    • - -

      #boolean GroupAttack : -(optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:EnRouteTaskFAC(Radius, Priority) - -
    -
    - -

    (AIR + GROUND) The task makes the group/unit a FAC and lets the FAC to choose a targets (enemy ground group) around as well as other assigned targets.

    - - -

    The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. -If the task is assigned to the group lead unit will be a FAC.

    - -

    Parameters

    -
      -
    • - -

      DCSTypes#Distance Radius : - The maximal distance from the FAC to a target.

      - -
    • -
    • - -

      #number Priority : -All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:EnRouteTaskFAC_EngageGroup(AttackGroup, Priority, WeaponType, Designation, Datalink) - -
    -
    - -

    (AIR + GROUND) The task makes the group/unit a FAC and lets the FAC to choose the target (enemy ground group) as well as other assigned targets.

    - - -

    The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. -If the task is assigned to the group lead unit will be a FAC.

    - -

    Parameters

    -
      -
    • - -

      Group#GROUP AttackGroup : -Target GROUP.

      - -
    • -
    • - -

      #number Priority : -All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first.

      - -
    • -
    • - -

      #number WeaponType : -Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage.

      - -
    • -
    • - -

      DCSTypes#AI.Task.Designation Designation : -(optional) Designation type.

      - -
    • -
    • - -

      #boolean Datalink : -(optional) Allows to use datalink to send the target information to attack aircraft. Enabled by default.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:EnRouteTaskTanker() - -
    -
    - -

    (AIR) Aircraft will act as a tanker for friendly units.

    - - -

    No parameters.

    - -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - GROUP:Find(DCSGroup) @@ -1742,8 +815,8 @@ The DCS Group is not existing or alive.

    - -GROUP:GetDCSGroup() + +GROUP:GetDCSObject()
    @@ -1808,37 +881,6 @@ The DCS Units.

    - -GROUP:GetDetectedTargets() - -
    -
    - - - -
    -
    -
    -
    - - -GROUP:GetID() - -
    -
    - -

    Returns the DCS Group identifier.

    - -

    Return value

    - -

    #number: -The identifier of the DCS Group.

    - -
    -
    -
    -
    - GROUP:GetInitialSize() @@ -1925,24 +967,6 @@ Minimum height found.

    - -GROUP:GetName() - -
    -
    - -

    Returns the name of the DCS Group.

    - -

    Return value

    - -

    #string: -The DCS Group name.

    - -
    -
    -
    -
    - GROUP:GetPointVec2() @@ -2110,20 +1134,6 @@ The UNIT wrapper class.

    #table: The UNITs wrappers.

    -
    -
    -
    -
    - - #number - -GROUP.GroupID - -
    -
    - - -
    @@ -2338,27 +1348,6 @@ true if DCS Group contains Ships.

    - -GROUP:IsTargetDetected(DCSObject) - -
    -
    - - - -

    Parameter

    -
      -
    • - -

      DCSObject :

      - -
    • -
    -
    -
    -
    -
    - GROUP:Message(Message, Duration) @@ -2522,343 +1511,6 @@ The duration of the message.

    - -GROUP:OptionROEHoldFire() - -
    -
    - -

    Holding weapons.

    - -

    Return value

    - -

    Group#GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:OptionROEHoldFirePossible() - -
    -
    - -

    Can the GROUP hold their weapons?

    - -

    Return value

    - -

    #boolean:

    - - -
    -
    -
    -
    - - -GROUP:OptionROEOpenFire() - -
    -
    - -

    Openfire.

    - -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:OptionROEOpenFirePossible() - -
    -
    - -

    Can the GROUP attack designated targets?

    - -

    Return value

    - -

    #boolean:

    - - -
    -
    -
    -
    - - -GROUP:OptionROEReturnFire() - -
    -
    - -

    Return fire.

    - -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:OptionROEReturnFirePossible() - -
    -
    - -

    Can the GROUP attack returning on enemy fire?

    - -

    Return value

    - -

    #boolean:

    - - -
    -
    -
    -
    - - -GROUP:OptionROEWeaponFree() - -
    -
    - -

    Weapon free.

    - -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:OptionROEWeaponFreePossible() - -
    -
    - -

    Can the GROUP attack targets of opportunity?

    - -

    Return value

    - -

    #boolean:

    - - -
    -
    -
    -
    - - -GROUP:OptionROTEvadeFire() - -
    -
    - -

    Evade on fire.

    - -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:OptionROTEvadeFirePossible() - -
    -
    - -

    Can the GROUP evade on enemy fire?

    - -

    Return value

    - -

    #boolean:

    - - -
    -
    -
    -
    - - -GROUP:OptionROTNoReaction() - -
    -
    - -

    No evasion on enemy threats.

    - -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:OptionROTNoReactionPossible() - -
    -
    - -

    Can the GROUP ignore enemy fire?

    - -

    Return value

    - -

    #boolean:

    - - -
    -
    -
    -
    - - -GROUP:OptionROTPassiveDefense() - -
    -
    - -

    Evasion passive defense.

    - -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:OptionROTPassiveDefensePossible() - -
    -
    - -

    Can the GROUP evade using passive defenses?

    - -

    Return value

    - -

    #boolean:

    - - -
    -
    -
    -
    - - -GROUP:OptionROTVertical() - -
    -
    - -

    Evade on fire using vertical manoeuvres.

    - -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:OptionROTVerticalPossible() - -
    -
    - -

    Can the GROUP evade on fire using vertical manoeuvres?

    - -

    Return value

    - -

    #boolean:

    - - -
    -
    -
    -
    - - -GROUP:PopCurrentTask() - -
    -
    - -

    Popping current Task from the group.

    - -

    Return value

    - -

    Group#GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:PushTask(DCSTask, WaitTime) - -
    -
    - -

    Pushing Task on the queue from the group.

    - -

    Parameters

    -
      -
    • - -

      DCSTask :

      - -
    • -
    • - -

      WaitTime :

      - -
    • -
    -

    Return value

    - -

    Group#GROUP: -self

    - -
    -
    -
    -
    - GROUP:Register(GroupName) @@ -2902,1394 +1554,6 @@ self

    - -
    -
    -
    - - -GROUP:Route(GoPoints) - -
    -
    - -

    Make the group to follow a given route.

    - -

    Parameter

    -
      -
    • - -

      #table GoPoints : -A table of Route Points.

      - -
    • -
    -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:RouteReturnToAirbase(ReturnAirbase, Speed) - -
    -
    - -

    (AIR) Return the Group to an Airbase#AIRBASE -A speed can be given in km/h.

    - - -

    A given formation can be given.

    - -

    Parameters

    - -

    Return value

    - -

    #string: -The route

    - -
    -
    -
    -
    - - -GROUP:SetCommand(DCSCommand) - -
    -
    - -

    Executes a command action

    - -

    Parameter

    - -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:SetTask(DCSTask, WaitTime) - -
    -
    - -

    Clearing the Task Queue and Setting the Task on the queue from the group.

    - -

    Parameters

    -
      -
    • - -

      DCSTask :

      - -
    • -
    • - -

      WaitTime :

      - -
    • -
    -

    Return value

    - -

    Group#GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:TaskAttackGroup(AttackGroup, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit) - -
    -
    - -

    (AIR) Attack a Group.

    - -

    Parameters

    -
      -
    • - -

      Group#GROUP AttackGroup : -The Group to be attacked.

      - -
    • -
    • - -

      #number WeaponType : -(optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage.

      - -
    • -
    • - -

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

      - -
    • -
    • - -

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

      - -
    • -
    • - -

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

      - -
    • -
    • - -

      DCSTypes#Distance Altitude : -(optional) Desired attack start altitude. Group/aircraft will make its attacks from the altitude. If the altitude is too low or too high to use weapon aircraft/group will choose closest altitude to the desired attack start altitude. If the desired altitude is defined group/aircraft will not attack from safe altitude.

      - -
    • -
    • - -

      #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 "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:TaskAttackMapObject(PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack) - -
    -
    - -

    (AIR) Attacking the map object (building, structure, e.t.c).

    - -

    Parameters

    -
      -
    • - -

      DCSTypes#Vec2 PointVec2 : -2D-coordinates of the point the map object is closest to. The distance between the point and the map object must not be greater than 2000 meters. Object id is not used here because Mission Editor doesn't support map object identificators.

      - -
    • -
    • - -

      #number WeaponType : -(optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage.

      - -
    • -
    • - -

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

      - -
    • -
    • - -

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

      - -
    • -
    • - -

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

      - -
    • -
    • - -

      #boolean GroupAttack : -(optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:TaskAttackUnit(AttackUnit, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, GroupAttack) - -
    -
    - -

    (AIR) Attack the Unit.

    - -

    Parameters

    -
      -
    • - -

      Unit#UNIT AttackUnit : -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.

      - -
    • -
    • - -

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

      - -
    • -
    • - -

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

      - -
    • -
    • - -

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

      - -
    • -
    • - -

      #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 "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks.

      - -
    • -
    • - -

      #boolean GroupAttack : -(optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:TaskBombing(PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack) - -
    -
    - -

    (AIR) Delivering weapon at the point on the ground.

    - -

    Parameters

    -
      -
    • - -

      DCSTypes#Vec2 PointVec2 : -2D-coordinates of the point to deliver weapon at.

      - -
    • -
    • - -

      #number WeaponType : -(optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage.

      - -
    • -
    • - -

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

      - -
    • -
    • - -

      #number AttackQty : -(optional) Desired quantity of passes. The parameter is not the same in AttackGroup and AttackUnit tasks.

      - -
    • -
    • - -

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

      - -
    • -
    • - -

      #boolean GroupAttack : -(optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:TaskBombingRunway(Airbase, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack) - -
    -
    - -

    (AIR) Delivering weapon on the runway.

    - -

    Parameters

    -
      -
    • - -

      Airbase#AIRBASE Airbase : -Airbase to attack.

      - -
    • -
    • - -

      #number WeaponType : -(optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage.

      - -
    • -
    • - -

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

      - -
    • -
    • - -

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

      - -
    • -
    • - -

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

      - -
    • -
    • - -

      #boolean GroupAttack : -(optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:TaskCombo(DCSTasks) - -
    -
    - -

    Return a Combo Task taking an array of Tasks.

    - -

    Parameter

    - -

    Return value

    - -

    DCSTask#Task:

    - - -
    -
    -
    -
    - - -GROUP:TaskCondition(time, userFlag, userFlagValue, condition, duration, lastWayPoint) - -
    -
    - -

    Return a condition section for a controlled task.

    - -

    Parameters

    -
      -
    • - -

      DCSTime#Time time :

      - -
    • -
    • - -

      #string userFlag :

      - -
    • -
    • - -

      #boolean userFlagValue :

      - -
    • -
    • - -

      #string condition :

      - -
    • -
    • - -

      DCSTime#Time duration :

      - -
    • -
    • - -

      #number lastWayPoint : -return DCSTask#Task

      - -
    • -
    -
    -
    -
    -
    - - -GROUP:TaskControlled(DCSTask, DCSStopCondition) - -
    -
    - -

    Return a Controlled Task taking a Task and a TaskCondition.

    - -

    Parameters

    - -

    Return value

    - -

    DCSTask#Task:

    - - -
    -
    -
    -
    - - -GROUP:TaskEmbarkToTransport(Point, Radius) - -
    -
    - -

    Move to a defined Vec2 Point, and embark to a group when arrived within a defined Radius.

    - -

    Parameters

    -
      -
    • - -

      DCSTypes#Vec2 Point : -The point where to wait.

      - -
    • -
    • - -

      #number Radius : -The radius of the embarking zone around the Point.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:TaskEmbarking(Point, Duration, EmbarkingGroup) - -
    -
    - -

    (AIR) Move the group to a Vec2 Point, wait for a defined duration and embark a group.

    - -

    Parameters

    -
      -
    • - -

      DCSTypes#Vec2 Point : -The point where to wait.

      - -
    • -
    • - -

      #number Duration : -The duration in seconds to wait.

      - -
    • -
    • - -

      #GROUP EmbarkingGroup : -The group to be embarked.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure

    - -
    -
    -
    -
    - - -GROUP:TaskEscort(EscortGroup, PointVec3, LastWaypointIndex, EngagementDistanceMax, TargetTypes, FollowGroup, EngagementDistance) - -
    -
    - -

    (AIR) Escort another airborne group.

    - - -

    The unit / group will follow lead unit of another group, wingmens of both groups will continue following their leaders. -The unit / group will also protect that group from threats of specified types.

    - -

    Parameters

    -
      -
    • - -

      Group#GROUP EscortGroup : -The group to be escorted.

      - -
    • -
    • - -

      DCSTypes#Vec3 PointVec3 : -Position of the unit / lead unit of the group relative lead unit of another group in frame reference oriented by course of lead unit of another group. If another group is on land the unit / group will orbit around.

      - -
    • -
    • - -

      #number LastWaypointIndex : -Detach waypoint of another group. Once reached the unit / group Follow task is finished.

      - -
    • -
    • - -

      #number EngagementDistanceMax : -Maximal distance from escorted group to threat. If the threat is already engaged by escort escort will disengage if the distance becomes greater than 1.5 * engagementDistMax.

      - -
    • -
    • - -

      DCSTypes#AttributeNameArray TargetTypes : -Array of AttributeName that is contains threat categories allowed to engage.

      - -
    • -
    • - -

      FollowGroup :

      - -
    • -
    • - -

      EngagementDistance :

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:TaskFAC_AttackGroup(AttackGroup, WeaponType, Designation, Datalink) - -
    -
    - -

    (AIR + GROUND) The task makes the group/unit a FAC and orders the FAC to control the target (enemy ground group) destruction.

    - - -

    The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. -If the task is assigned to the group lead unit will be a FAC.

    - -

    Parameters

    -
      -
    • - -

      Group#GROUP AttackGroup : -Target GROUP.

      - -
    • -
    • - -

      #number WeaponType : -Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage.

      - -
    • -
    • - -

      DCSTypes#AI.Task.Designation Designation : -(optional) Designation type.

      - -
    • -
    • - -

      #boolean Datalink : -(optional) Allows to use datalink to send the target information to attack aircraft. Enabled by default.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:TaskFireAtPoint(PointVec2, Radius) - -
    -
    - -

    (GROUND) Fire at a VEC2 point until ammunition is finished.

    - -

    Parameters

    - -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:TaskFollow(FollowGroup, PointVec3, LastWaypointIndex) - -
    -
    - -

    (AIR) Following another airborne group.

    - - -

    The unit / group will follow lead unit of another group, wingmens of both groups will continue following their leaders. -If another group is on land the unit / group will orbit around.

    - -

    Parameters

    -
      -
    • - -

      Group#GROUP FollowGroup : -The group to be followed.

      - -
    • -
    • - -

      DCSTypes#Vec3 PointVec3 : -Position of the unit / lead unit of the group relative lead unit of another group in frame reference oriented by course of lead unit of another group. If another group is on land the unit / group will orbit around.

      - -
    • -
    • - -

      #number LastWaypointIndex : -Detach waypoint of another group. Once reached the unit / group Follow task is finished.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:TaskFunction(WayPoint, WayPointIndex, FunctionString, FunctionArguments) - -
    -
    - - - -

    Parameters

    -
      -
    • - -

      WayPoint :

      - -
    • -
    • - -

      WayPointIndex :

      - -
    • -
    • - -

      FunctionString :

      - -
    • -
    • - -

      FunctionArguments :

      - -
    • -
    -
    -
    -
    -
    - - -GROUP:TaskHold() - -
    -
    - -

    (GROUND) Hold ground group from moving.

    - -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:TaskHoldPosition(Duration) - -
    -
    - -

    (AIR) Hold position at the current position of the first unit of the group.

    - -

    Parameter

    -
      -
    • - -

      #number Duration : -The maximum duration in seconds to hold the position.

      - -
    • -
    -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:TaskLandAtVec2(Point, Duration) - -
    -
    - -

    (AIR HELICOPTER) Landing at the ground.

    - - -

    For helicopters only.

    - -

    Parameters

    -
      -
    • - -

      DCSTypes#Vec2 Point : -The point where to land.

      - -
    • -
    • - -

      #number Duration : -The duration in seconds to stay on the ground.

      - -
    • -
    -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:TaskLandAtZone(Zone, Duration, RandomPoint) - -
    -
    - -

    (AIR) Land the group at a @{Zone#ZONE_RADIUS).

    - -

    Parameters

    -
      -
    • - -

      Zone#ZONE Zone : -The zone where to land.

      - -
    • -
    • - -

      #number Duration : -The duration in seconds to stay on the ground.

      - -
    • -
    • - -

      RandomPoint :

      - -
    • -
    -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:TaskMission(TaskMission) - -
    -
    - -

    (AIR + GROUND) Return a mission task from a mission template.

    - -

    Parameter

    -
      -
    • - -

      #table TaskMission : -A table containing the mission task.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task:

    - - -
    -
    -
    -
    - - -GROUP:TaskOrbitCircle(Altitude, Speed) - -
    -
    - -

    (AIR) Orbit at the current position of the first unit of the group at a specified alititude.

    - -

    Parameters

    -
      -
    • - -

      #number Altitude : -The altitude to hold the position.

      - -
    • -
    • - -

      #number Speed : -The speed flying when holding the position.

      - -
    • -
    -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:TaskOrbitCircleAtVec2(Point, Altitude, Speed) - -
    -
    - -

    (AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed.

    - -

    Parameters

    -
      -
    • - -

      DCSTypes#Vec2 Point : -The point to hold the position.

      - -
    • -
    • - -

      #number Altitude : -The altitude to hold the position.

      - -
    • -
    • - -

      #number Speed : -The speed flying when holding the position.

      - -
    • -
    -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:TaskRefueling() - -
    -
    - -

    (AIR) Refueling from the nearest tanker.

    - - -

    No parameters.

    - -

    Return value

    - -

    DCSTask#Task: -The DCS task structure.

    - -
    -
    -
    -
    - - -GROUP:TaskRoute(Points) - -
    -
    - -

    Return a Misson task to follow a given route defined by Points.

    - -

    Parameter

    -
      -
    • - -

      #table Points : -A table of route points.

      - -
    • -
    -

    Return value

    - -

    DCSTask#Task:

    - - -
    -
    -
    -
    - - -GROUP:TaskRouteToVec2(Point, Speed) - -
    -
    - -

    (AIR + GROUND) Make the Group move to fly to a given point.

    - -

    Parameters

    -
      -
    • - -

      DCSTypes#Vec3 Point : -The destination point in Vec3 format.

      - -
    • -
    • - -

      #number Speed : -The speed to travel.

      - -
    • -
    -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:TaskRouteToVec3(Point, Speed) - -
    -
    - -

    (AIR + GROUND) Make the Group move to a given point.

    - -

    Parameters

    -
      -
    • - -

      DCSTypes#Vec3 Point : -The destination point in Vec3 format.

      - -
    • -
    • - -

      #number Speed : -The speed to travel.

      - -
    • -
    -

    Return value

    - -

    #GROUP: -self

    - -
    -
    -
    -
    - - -GROUP:TaskRouteToZone(Zone, Randomize, Speed, Formation) - -
    -
    - -

    (AIR + GROUND) Route the group to a given zone.

    - - -

    The group final destination point can be randomized. -A speed can be given in km/h. -A given formation can be given.

    - -

    Parameters

    -
      -
    • - -

      Zone#ZONE Zone : -The zone where to route to.

      - -
    • -
    • - -

      #boolean Randomize : -Defines whether to target point gets randomized within the Zone.

      - -
    • -
    • - -

      #number Speed : -The speed.

      - -
    • -
    • - -

      Base#FORMATION Formation : -The formation string.

      - -
    • -
    -
    -
    -
    -
    - - -GROUP:TaskWrappedAction(DCSCommand, Index) - -
    -
    - -

    Return a WrappedAction Task taking a Command.

    - -

    Parameters

    - -

    Return value

    - -

    DCSTask#Task:

    - - -
    -
    -
    -
    - - -GROUP:WayPointExecute(WayPoint, WaitTime) - -
    -
    - -

    Executes the WayPoint plan.

    - - -

    The function gets a WayPoint parameter, that you can use to restart the mission at a specific WayPoint. -Note that when the WayPoint parameter is used, the new start mission waypoint of the group will be 1!

    - -

    Parameters

    -
      -
    • - -

      #number WayPoint : -The WayPoint from where to execute the mission.

      - -
    • -
    • - -

      #number WaitTime : -The amount seconds to wait before initiating the mission.

      - -
    • -
    -

    Return value

    - -

    #GROUP:

    - - -
    -
    -
    -
    - - -GROUP:WayPointFunction(WayPoint, WayPointIndex, WayPointFunction, ...) - -
    -
    - -

    Registers a waypoint function that will be executed when the group moves over the WayPoint.

    - -

    Parameters

    -
      -
    • - -

      #number WayPoint : -The waypoint number. Note that the start waypoint on the route is WayPoint 1!

      - -
    • -
    • - -

      #number WayPointIndex : -When defining multiple WayPoint functions for one WayPoint, use WayPointIndex to set the sequence of actions.

      - -
    • -
    • - -

      #function WayPointFunction : -The waypoint function to be called when the group moves over the waypoint. The waypoint function takes variable parameters.

      - -
    • -
    • - -

      ... :

      - -
    • -
    -

    Return value

    - -

    #GROUP:

    - - -
    -
    -
    -
    - - - -GROUP.WayPointFunctions - -
    -
    - - - -
    -
    -
    -
    - - -GROUP:WayPointInitialize(WayPoints) - -
    -
    - -

    Retrieve the group mission and allow to place function hooks within the mission waypoint plan.

    - - -

    Use the method Group#GROUP to define the hook functions for specific waypoints. - Use the method @{Group@GROUP:WayPointExecute) to start the execution of the new mission plan. - Note that when WayPointInitialize is called, the Mission of the group is RESTARTED!

    - -

    Parameter

    -
      -
    • - -

      #table WayPoints : -If WayPoints is given, then use the route.

      - -
    • -
    -

    Return value

    - -

    #GROUP:

    - - -
    -
    -
    -
    - - - -GROUP.WayPoints - -
    -
    - - - -
    -
    -
    -
    - - -GROUP:_GetController() - -
    -
    - -

    Get the controller for the GROUP.

    - -

    Return value

    - -

    DCSController#Controller:

    - -
    diff --git a/Moose Training/Documentation/Identifiable.html b/Moose Training/Documentation/Identifiable.html new file mode 100644 index 000000000..3b30e11ca --- /dev/null +++ b/Moose Training/Documentation/Identifiable.html @@ -0,0 +1,466 @@ + + + + + + +
    +
    + +
    +
    +
    +
    + +
    +

    Module Identifiable

    + +

    This module contains the IDENTIFIABLE class.

    + + + +

    1) Identifiable#IDENTIFIABLE class, extends Object#OBJECT

    +

    The Identifiable#IDENTIFIABLE class is a wrapper class to handle the DCS Identifiable objects:

    + +
      +
    • Support all DCS Identifiable APIs.
    • +
    • Enhance with Identifiable specific APIs not in the DCS Identifiable API set.
    • +
    • Manage the "state" of the DCS Identifiable.
    • +
    + +

    1.1) IDENTIFIABLE constructor:

    +

    The IDENTIFIABLE class provides the following functions to construct a IDENTIFIABLE instance:

    + + + +

    1.2) IDENTIFIABLE methods:

    +

    The following methods can be used to identify an identifiable object:

    + + + + +
    + + +

    Global(s)

    + + + + + +
    IDENTIFIABLE + +
    +

    Type IDENTIFIABLE

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDENTIFIABLE.ClassName + +
    IDENTIFIABLE:GetCategoryName() +

    Returns the DCS Identifiable category name as defined within the DCS Identifiable Descriptor.

    +
    IDENTIFIABLE:GetCoalition() +

    Returns coalition of the Identifiable.

    +
    IDENTIFIABLE:GetCountry() +

    Returns country of the Identifiable.

    +
    IDENTIFIABLE:GetDesc() +

    Returns Identifiable descriptor.

    +
    IDENTIFIABLE:GetName() +

    Returns DCS Identifiable object name.

    +
    IDENTIFIABLE:GetTypeName() +

    Returns the type name of the DCS Identifiable.

    +
    IDENTIFIABLE.IdentifiableName +

    The name of the identifiable.

    +
    IDENTIFIABLE:IsAlive() +

    Returns if the Identifiable is alive.

    +
    IDENTIFIABLE:New(IdentifiableName) +

    Create a new IDENTIFIABLE from a DCSIdentifiable

    +
    + +

    Global(s)

    +
    +
    + + #IDENTIFIABLE + +IDENTIFIABLE + +
    +
    + + + +
    +
    +

    Type Identifiable

    + +

    Type IDENTIFIABLE

    + +

    The IDENTIFIABLE class

    + +

    Field(s)

    +
    +
    + + #string + +IDENTIFIABLE.ClassName + +
    +
    + + + +
    +
    +
    +
    + + +IDENTIFIABLE:GetCategoryName() + +
    +
    + +

    Returns the DCS Identifiable category name as defined within the DCS Identifiable Descriptor.

    + +

    Return value

    + +

    #string: +The DCS Identifiable Category Name

    + +
    +
    +
    +
    + + +IDENTIFIABLE:GetCoalition() + +
    +
    + +

    Returns coalition of the Identifiable.

    + +

    Return values

    +
      +
    1. + +

      DCSCoalitionObject#coalition.side: +The side of the coalition.

      + +
    2. +
    3. + +

      #nil: +The DCS Identifiable is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +IDENTIFIABLE:GetCountry() + +
    +
    + +

    Returns country of the Identifiable.

    + +

    Return values

    +
      +
    1. + +

      DCScountry#country.id: +The country identifier.

      + +
    2. +
    3. + +

      #nil: +The DCS Identifiable is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +IDENTIFIABLE:GetDesc() + +
    +
    + +

    Returns Identifiable descriptor.

    + + +

    Descriptor type depends on Identifiable category.

    + +

    Return values

    +
      +
    1. + +

      DCSIdentifiable#Identifiable.Desc: +The Identifiable descriptor.

      + +
    2. +
    3. + +

      #nil: +The DCS Identifiable is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +IDENTIFIABLE:GetName() + +
    +
    + +

    Returns DCS Identifiable object name.

    + + +

    The function provides access to non-activated objects too.

    + +

    Return values

    +
      +
    1. + +

      #string: +The name of the DCS Identifiable.

      + +
    2. +
    3. + +

      #nil: +The DCS Identifiable is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +IDENTIFIABLE:GetTypeName() + +
    +
    + +

    Returns the type name of the DCS Identifiable.

    + +

    Return values

    +
      +
    1. + +

      #string: +The type name of the DCS Identifiable.

      + +
    2. +
    3. + +

      #nil: +The DCS Identifiable is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + #string + +IDENTIFIABLE.IdentifiableName + +
    +
    + +

    The name of the identifiable.

    + +
    +
    +
    +
    + + +IDENTIFIABLE:IsAlive() + +
    +
    + +

    Returns if the Identifiable is alive.

    + +

    Return values

    +
      +
    1. + +

      #boolean: +true if Identifiable is alive.

      + +
    2. +
    3. + +

      #nil: +The DCS Identifiable is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +IDENTIFIABLE:New(IdentifiableName) + +
    +
    + +

    Create a new IDENTIFIABLE from a DCSIdentifiable

    + +

    Parameter

    + +

    Return value

    + +

    #IDENTIFIABLE: +self

    + +
    +
    + +
    + +
    + + diff --git a/Moose Training/Documentation/MISSION.html b/Moose Training/Documentation/MISSION.html index 83f2d4e69..a44aece40 100644 --- a/Moose Training/Documentation/MISSION.html +++ b/Moose Training/Documentation/MISSION.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/MOVEMENT.html b/Moose Training/Documentation/MOVEMENT.html index 578915315..305f917a3 100644 --- a/Moose Training/Documentation/MOVEMENT.html +++ b/Moose Training/Documentation/MOVEMENT.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/Menu.html b/Moose Training/Documentation/Menu.html index 9b6cf848b..0f175ce8f 100644 --- a/Moose Training/Documentation/Menu.html +++ b/Moose Training/Documentation/Menu.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/Message.html b/Moose Training/Documentation/Message.html index 85a2767a2..238b511e6 100644 --- a/Moose Training/Documentation/Message.html +++ b/Moose Training/Documentation/Message.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/MissileTrainer.html b/Moose Training/Documentation/MissileTrainer.html index db9d7acc5..e387d6ad0 100644 --- a/Moose Training/Documentation/MissileTrainer.html +++ b/Moose Training/Documentation/MissileTrainer.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/NOTASK.html b/Moose Training/Documentation/NOTASK.html index 5d097b91e..d295f2fd7 100644 --- a/Moose Training/Documentation/NOTASK.html +++ b/Moose Training/Documentation/NOTASK.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/Object.html b/Moose Training/Documentation/Object.html new file mode 100644 index 000000000..eb36a3165 --- /dev/null +++ b/Moose Training/Documentation/Object.html @@ -0,0 +1,523 @@ + + + + + + +
    +
    + +
    +
    +
    +
    + +
    +

    Module Object

    + +

    This module contains the OBJECT class.

    + + + +

    1) Object#OBJECT class, extends Base#BASE

    +

    The Object#OBJECT class is a wrapper class to handle the DCS Object objects:

    + +
      +
    • Support all DCS Object APIs.
    • +
    • Enhance with Object specific APIs not in the DCS Object API set.
    • +
    • Manage the "state" of the DCS Object.
    • +
    + +

    1.1) OBJECT constructor:

    +

    The OBJECT class provides the following functions to construct a OBJECT instance:

    + + + +

    1.2) OBJECT methods:

    +

    The following methods can be used to identify an Object object:

    + + + +
    + + +

    Global(s)

    + + + + + +
    OBJECT + +
    +

    Type DCSObject

    + + + + + +
    DCSObject.id_ +

    The ID of the controllable in DCS

    +
    + +

    Type OBJECT

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OBJECT.ClassName + +
    OBJECT:GetCallSign() +

    Returns the Object's callsign - the localized string.

    +
    OBJECT:GetCategoryName() +

    Returns the DCS Object category name as defined within the DCS Object Descriptor.

    +
    OBJECT:GetCoalition() +

    Returns coalition of the Object.

    +
    OBJECT:GetCountry() +

    Returns country of the Object.

    +
    OBJECT:GetDesc() +

    Returns Object descriptor.

    +
    OBJECT:GetName() +

    Returns DCS Object object name.

    +
    OBJECT:GetTypeName() +

    Returns the type name of the DCS Object.

    +
    OBJECT:IsAlive() +

    Returns if the Object is alive.

    +
    OBJECT:New(ObjectName) +

    Create a new OBJECT from a DCSObject

    +
    OBJECT.ObjectName +

    The name of the Object.

    +
    + +

    Global(s)

    +
    +
    + + #OBJECT + +OBJECT + +
    +
    + + + +
    +
    +

    Type Object

    + +

    Type DCSObject

    + +

    A DCSObject

    + +

    Field(s)

    +
    +
    + + +DCSObject.id_ + +
    +
    + +

    The ID of the controllable in DCS

    + +
    +
    + +

    Type OBJECT

    + +

    The OBJECT class

    + +

    Field(s)

    +
    +
    + + #string + +OBJECT.ClassName + +
    +
    + + + +
    +
    +
    +
    + + +OBJECT:GetCallSign() + +
    +
    + +

    Returns the Object's callsign - the localized string.

    + +

    Return values

    +
      +
    1. + +

      #string: +The Callsign of the Object.

      + +
    2. +
    3. + +

      #nil: +The DCS Object is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +OBJECT:GetCategoryName() + +
    +
    + +

    Returns the DCS Object category name as defined within the DCS Object Descriptor.

    + +

    Return value

    + +

    #string: +The DCS Object Category Name

    + +
    +
    +
    +
    + + +OBJECT:GetCoalition() + +
    +
    + +

    Returns coalition of the Object.

    + +

    Return values

    +
      +
    1. + +

      DCSCoalitionObject#coalition.side: +The side of the coalition.

      + +
    2. +
    3. + +

      #nil: +The DCS Object is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +OBJECT:GetCountry() + +
    +
    + +

    Returns country of the Object.

    + +

    Return values

    +
      +
    1. + +

      DCScountry#country.id: +The country identifier.

      + +
    2. +
    3. + +

      #nil: +The DCS Object is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +OBJECT:GetDesc() + +
    +
    + +

    Returns Object descriptor.

    + + +

    Descriptor type depends on Object category.

    + +

    Return values

    +
      +
    1. + +

      DCSObject#Object.Desc: +The Object descriptor.

      + +
    2. +
    3. + +

      #nil: +The DCS Object is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +OBJECT:GetName() + +
    +
    + +

    Returns DCS Object object name.

    + + +

    The function provides access to non-activated objects too.

    + +

    Return values

    +
      +
    1. + +

      #string: +The name of the DCS Object.

      + +
    2. +
    3. + +

      #nil: +The DCS Object is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +OBJECT:GetTypeName() + +
    +
    + +

    Returns the type name of the DCS Object.

    + +

    Return values

    +
      +
    1. + +

      #string: +The type name of the DCS Object.

      + +
    2. +
    3. + +

      #nil: +The DCS Object is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +OBJECT:IsAlive() + +
    +
    + +

    Returns if the Object is alive.

    + +

    Return values

    +
      +
    1. + +

      #boolean: +true if Object is alive.

      + +
    2. +
    3. + +

      #nil: +The DCS Object is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +OBJECT:New(ObjectName) + +
    +
    + +

    Create a new OBJECT from a DCSObject

    + +

    Parameter

    + +

    Return value

    + +

    #OBJECT: +self

    + +
    +
    +
    +
    + + #string + +OBJECT.ObjectName + +
    +
    + +

    The name of the Object.

    + +
    +
    + +
    + +
    + + diff --git a/Moose Training/Documentation/PICKUPTASK.html b/Moose Training/Documentation/PICKUPTASK.html index f996c7e6b..b4d42b424 100644 --- a/Moose Training/Documentation/PICKUPTASK.html +++ b/Moose Training/Documentation/PICKUPTASK.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/PatrolZone.html b/Moose Training/Documentation/PatrolZone.html index 66df2c4af..57e301d3f 100644 --- a/Moose Training/Documentation/PatrolZone.html +++ b/Moose Training/Documentation/PatrolZone.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/Point.html b/Moose Training/Documentation/Point.html index f1202e5d5..ad61c002b 100644 --- a/Moose Training/Documentation/Point.html +++ b/Moose Training/Documentation/Point.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/Positionable.html b/Moose Training/Documentation/Positionable.html new file mode 100644 index 000000000..d6801e50e --- /dev/null +++ b/Moose Training/Documentation/Positionable.html @@ -0,0 +1,518 @@ + + + + + + +
    +
    + +
    +
    +
    +
    + +
    +

    Module Positionable

    + +

    This module contains the POSITIONABLE class.

    + + + +

    1) Positionable#POSITIONABLE class, extends Identifiable#IDENTIFIABLE

    +

    The Positionable#POSITIONABLE class is a wrapper class to handle the DCS Positionable objects:

    + +
      +
    • Support all DCS Positionable APIs.
    • +
    • Enhance with Positionable specific APIs not in the DCS Positionable API set.
    • +
    • Manage the "state" of the DCS Positionable.
    • +
    + +

    1.1) POSITIONABLE constructor:

    +

    The POSITIONABLE class provides the following functions to construct a POSITIONABLE instance:

    + + + +

    1.2) POSITIONABLE methods:

    +

    The following methods can be used to identify an measurable object:

    + + + +
    + + +

    Global(s)

    + + + + + +
    POSITIONABLE + +
    +

    Type DCSPositionable

    + + + + + +
    DCSPositionable.id_ +

    The ID of the controllable in DCS

    +
    + +

    Type POSITIONABLE

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    POSITIONABLE.ClassName + +
    POSITIONABLE:GetAltitude() +

    Returns the altitude of the DCS Positionable.

    +
    POSITIONABLE:GetHeading() +

    Returns the DCS Positionable heading.

    +
    POSITIONABLE:GetPointVec2() +

    Returns the DCSTypes#Vec2 vector indicating the point in 2D of the DCS Positionable within the mission.

    +
    POSITIONABLE:GetPointVec3() +

    Returns the DCSTypes#Vec3 vector indicating the point in 3D of the DCS Positionable within the mission.

    +
    POSITIONABLE:GetPositionVec3() +

    Returns the DCSTypes#Position3 position vectors indicating the point and direction vectors in 3D of the DCS Positionable within the mission.

    +
    POSITIONABLE:GetVelocity() +

    Returns the DCS Positionable velocity vector.

    +
    POSITIONABLE:InAir() +

    Returns true if the DCS Positionable is in the air.

    +
    POSITIONABLE:IsAboveRunway() +

    Returns if the Positionable is located above a runway.

    +
    POSITIONABLE:New(PositionableName) +

    Create a new POSITIONABLE from a DCSPositionable

    +
    POSITIONABLE.PositionableName +

    The name of the measurable.

    +
    + +

    Global(s)

    +
    +
    + + #POSITIONABLE + +POSITIONABLE + +
    +
    + + + +
    +
    +

    Type Positionable

    + +

    Type DCSPositionable

    + +

    A DCSPositionable

    + +

    Field(s)

    +
    +
    + + +DCSPositionable.id_ + +
    +
    + +

    The ID of the controllable in DCS

    + +
    +
    + +

    Type POSITIONABLE

    + +

    The POSITIONABLE class

    + +

    Field(s)

    +
    +
    + + #string + +POSITIONABLE.ClassName + +
    +
    + + + +
    +
    +
    +
    + + +POSITIONABLE:GetAltitude() + +
    +
    + +

    Returns the altitude of the DCS Positionable.

    + +

    Return values

    +
      +
    1. + +

      DCSTypes#Distance: +The altitude of the DCS Positionable.

      + +
    2. +
    3. + +

      #nil: +The DCS Positionable is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +POSITIONABLE:GetHeading() + +
    +
    + +

    Returns the DCS Positionable heading.

    + +

    Return value

    + +

    #number: +The DCS Positionable heading

    + +
    +
    +
    +
    + + +POSITIONABLE:GetPointVec2() + +
    +
    + +

    Returns the DCSTypes#Vec2 vector indicating the point in 2D of the DCS Positionable within the mission.

    + +

    Return values

    +
      +
    1. + +

      DCSTypes#Vec2: +The 2D point vector of the DCS Positionable.

      + +
    2. +
    3. + +

      #nil: +The DCS Positionable is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +POSITIONABLE:GetPointVec3() + +
    +
    + +

    Returns the DCSTypes#Vec3 vector indicating the point in 3D of the DCS Positionable within the mission.

    + +

    Return values

    +
      +
    1. + +

      DCSTypes#Vec3: +The 3D point vector of the DCS Positionable.

      + +
    2. +
    3. + +

      #nil: +The DCS Positionable is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +POSITIONABLE:GetPositionVec3() + +
    +
    + +

    Returns the DCSTypes#Position3 position vectors indicating the point and direction vectors in 3D of the DCS Positionable within the mission.

    + +

    Return values

    +
      +
    1. + +

      DCSTypes#Position: +The 3D position vectors of the DCS Positionable.

      + +
    2. +
    3. + +

      #nil: +The DCS Positionable is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +POSITIONABLE:GetVelocity() + +
    +
    + +

    Returns the DCS Positionable velocity vector.

    + +

    Return values

    +
      +
    1. + +

      DCSTypes#Vec3: +The velocity vector

      + +
    2. +
    3. + +

      #nil: +The DCS Positionable is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +POSITIONABLE:InAir() + +
    +
    + +

    Returns true if the DCS Positionable is in the air.

    + +

    Return values

    +
      +
    1. + +

      #boolean: +true if in the air.

      + +
    2. +
    3. + +

      #nil: +The DCS Positionable is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +POSITIONABLE:IsAboveRunway() + +
    +
    + +

    Returns if the Positionable is located above a runway.

    + +

    Return values

    +
      +
    1. + +

      #boolean: +true if Positionable is above a runway.

      + +
    2. +
    3. + +

      #nil: +The DCS Positionable is not existing or alive.

      + +
    4. +
    +
    +
    +
    +
    + + +POSITIONABLE:New(PositionableName) + +
    +
    + +

    Create a new POSITIONABLE from a DCSPositionable

    + +

    Parameter

    + +

    Return value

    + +

    #POSITIONABLE: +self

    + +
    +
    +
    +
    + + #string + +POSITIONABLE.PositionableName + +
    +
    + +

    The name of the measurable.

    + +
    +
    + +
    + +
    + + diff --git a/Moose Training/Documentation/ROUTETASK.html b/Moose Training/Documentation/ROUTETASK.html index d09a08b26..b4b6af4de 100644 --- a/Moose Training/Documentation/ROUTETASK.html +++ b/Moose Training/Documentation/ROUTETASK.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/STAGE.html b/Moose Training/Documentation/STAGE.html index e36f92952..bb3a81b5d 100644 --- a/Moose Training/Documentation/STAGE.html +++ b/Moose Training/Documentation/STAGE.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/Scheduler.html b/Moose Training/Documentation/Scheduler.html index 785c3ba4d..0e09087bb 100644 --- a/Moose Training/Documentation/Scheduler.html +++ b/Moose Training/Documentation/Scheduler.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/Scoring.html b/Moose Training/Documentation/Scoring.html index 9c7a0404a..fd4e0d8a4 100644 --- a/Moose Training/Documentation/Scoring.html +++ b/Moose Training/Documentation/Scoring.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/Sead.html b/Moose Training/Documentation/Sead.html index 0499fd234..d712387fc 100644 --- a/Moose Training/Documentation/Sead.html +++ b/Moose Training/Documentation/Sead.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/Set.html b/Moose Training/Documentation/Set.html index 597140810..c618696b0 100644 --- a/Moose Training/Documentation/Set.html +++ b/Moose Training/Documentation/Set.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -485,6 +491,12 @@ The following iterator methods are currently available within the SETAIRBAS SET_BASE:ForEach(IteratorFunction, arg, Set, Function, FunctionArguments)

    Iterate the SETBASE and derived classes and call an iterator function for the given SETBASE, providing the Object for each element within the set and optional parameters.

    + + + + SET_BASE:GetSet() + +

    Gets the Set.

    @@ -803,6 +815,12 @@ The following iterator methods are currently available within the SETAIRBAS SET_UNIT:AddInDatabase(Event)

    Handles the Database to check on an event (birth) that the Object was added in the Database.

    + + + + SET_UNIT:AddUnit(AddUnit) + +

    Add UNIT(s) to SET_UNIT.

    @@ -1547,6 +1565,24 @@ self

    + +SET_BASE:GetSet() + +
    +
    + +

    Gets the Set.

    + +

    Return value

    + +

    #SET_BASE: +self

    + +
    +
    +
    +
    + SET_BASE:IsIncludeObject(Object) @@ -2912,6 +2948,33 @@ The UNIT

    + +SET_UNIT:AddUnit(AddUnit) + +
    +
    + +

    Add UNIT(s) to SET_UNIT.

    + +

    Parameter

    +
      +
    • + +

      #string AddUnit : +A single UNIT.

      + +
    • +
    +

    Return value

    + +

    #SET_UNIT: +self

    + +
    +
    +
    +
    + SET_UNIT:AddUnitsByName(AddUnitNames) @@ -2931,8 +2994,8 @@ A single name or an array of UNIT names.

    Return value

    - -

    self

    +

    #SET_UNIT: +self

    diff --git a/Moose Training/Documentation/Spawn.html b/Moose Training/Documentation/Spawn.html index 6b4e369eb..f50b51d79 100644 --- a/Moose Training/Documentation/Spawn.html +++ b/Moose Training/Documentation/Spawn.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/Static.html b/Moose Training/Documentation/Static.html index 95cc3cc4c..70c8ae9ed 100644 --- a/Moose Training/Documentation/Static.html +++ b/Moose Training/Documentation/Static.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -78,7 +84,7 @@ -

    1) Static#STATIC class, extends Unit#UNIT

    +

    1) Static#STATIC class, extends Positionable#POSITIONABLE

    Statics are Static Units defined within the Mission Editor. Note that Statics are almost the same as Units, but they don't have a controller. The Static#STATIC class is a wrapper class to handle the DCS Static objects:

    diff --git a/Moose Training/Documentation/StaticObject.html b/Moose Training/Documentation/StaticObject.html index 54ac84727..a7273b25a 100644 --- a/Moose Training/Documentation/StaticObject.html +++ b/Moose Training/Documentation/StaticObject.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/TASK.html b/Moose Training/Documentation/TASK.html index 49736f3e0..8c57f3460 100644 --- a/Moose Training/Documentation/TASK.html +++ b/Moose Training/Documentation/TASK.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • diff --git a/Moose Training/Documentation/Unit.html b/Moose Training/Documentation/Unit.html index 77eadcbf0..573d22500 100644 --- a/Moose Training/Documentation/Unit.html +++ b/Moose Training/Documentation/Unit.html @@ -24,6 +24,7 @@
  • CARGO
  • CleanUp
  • Client
  • +
  • Controllable
  • DCSAirbase
  • DCSCoalitionObject
  • DCSCommand
  • @@ -41,19 +42,24 @@
  • DESTROYRADARSTASK
  • DESTROYUNITTYPESTASK
  • Database
  • +
  • Detection
  • Escort
  • Event
  • +
  • Fac
  • GOHOMETASK
  • Group
  • +
  • Identifiable
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • NOTASK
  • +
  • Object
  • PICKUPTASK
  • PatrolZone
  • Point
  • +
  • Positionable
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -78,7 +84,7 @@ -

    1) Unit#UNIT class, extends Base#BASE

    +

    1) Unit#UNIT class, extends Controllable#CONTROLLABLE

    The Unit#UNIT class is a wrapper class to handle the DCS Unit objects:

    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 delta 800 zcmdnCnrquN#toTb+skU0DukvlpTZ=tU96fZfpPk~KBg}2r90V^zcDf})Uh&5)|Zs7 zUm9{S?~#FkEqiCZ#Lpo1jmuKPZCxHYG=_O_hj3S~xV6ftlX;@h?oD&|uK9NVdfBG# zg^sSTRJ&~RpY5Ibk>~M#k8{S24_94(eK2Wj)cJ&8J7n~q3D3}1zhCc{zTsX^ea?Yf z>lIq^+GXd6Icczc?=ki))w9U?G)dF<^md6wuOHT*{p$PWZK*`9?6rA!{S<|w4os6; zFSzI4?bVk4U0Pe8->=_eT)ChsUvG1lx|s>zZdryE%o@7AnyI(5+{=8dO#|gGNVU3j zda0dhRJ}a)iJ0v45cTRFgO|KcBF9$UdX)IzTjZGa@9uf?1Lb)GGB$hHik4R%tP#B+ zac6HMdnH>;ea456uU>L|WvV*Aqmk{n0{`bEjXjHx%B|{=^6qJvu=vEY4u#2!Snj*X zExF+twTmgL(=m3-nF#?)XI!~a+91-jY-VS3v~BbbkHEkbtCvl)j`$uC{IKW8{0HeF z`bA59TKQM$Pk+0+PGxs&`GF-OLI$%sR(Zs_>-riCPUDUGoZ(b|eW!Sr=|R1$BEqnJkt<7QxTVcM?h&h*fDdqqD}4fFIjQ<$Wfqs17e zb53Q_1|=dX=F1uk(~nGH(wJ^C707eeVwfH{l}X(IDM2xaF+cz?eF4E)Ee3`hLxVhh z7gsmOP@fQe-~9aI)ae0}m_(+pa%B?W0V#qg{jM{8hbxoTbX{O-ot!C#ELEmAU0^bk zGt*py$@3(nKq|DD4GkHlM@?ZeVqPD|Fui{Ylf?82pqo_qQW+S^6N^$a@=J?Tivzq_ S*+4e%0$~m_1H+bd5Dx&6ut)^} diff --git a/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz b/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz index c016d26794e06fc51706d56022c52ed9891e9742..8d593e3c6969d1504771f482c0bbb660565ec14f 100644 GIT binary patch delta 143707 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 z zBRqYb}e+&GQna&Hn?@^oMr)hcsr2?Cn-Qc z+lk-{8L)?l<{7YD*1f=eQ!EG(1PXBe&W7;wz7#4Rj>gt4CFh8=AxudukEeft?w2m~ zCy+n{?rLpB-HIjQ)2+?p&DWbp+x~GhfGulyHv}mqJ2AOF`TT6|nuLG+X_eq~h|Pqa zLdUXUEU(TB`jFbEp}zIKk*3OQPCi-`&7s7W`7o_wQu>4pxDMr=6^_sM>`c^mB&?4# zs1zbV`M59$JdHz-p9;k((v^QDQJIsof6^CXSsnVdK*SK%*-2_QJ9S<7@!&4(DaNr_ zkv@;MFXB;665h`d)udfU7jaj0iYs(AXrGjnMf~+72(@3zJ<1u&C*|Z?Yf?=px`pac zwdEwU@eo{QE~l1BG@n$U;iaZ6xs6oSX#=a2Qh%w1Rn@}qQ*`0{Sg3!G3Km!~OvM!1 zWHs&8WTA$%!7Wu;8=q8#fAG%u;tHB~8qv;IXr<^^B$F~1AN?8attByq&a>xN~_^2ExN>!aIg<6F;%BYnE{hAa+@Db!T$Vp9ZumJ z*XD1g{zaJXWC;du^oeCd6lmUy17%W=splZsjA-Ac_pK&M>qC0JYGl0I2!mF19q@mx_33>JR821#ma+`%a;$Kb z7s@8hfd{g>cJxms=&zB^!qc0W6SV5u05aT2SVFCY@- z0;U?!nMti%MH@!DR!^}2TQDO{a5#^iQ^Spep}^NhkxtY7s%e=qdo>Et1nlv}qFGdq zg)^K|j#huQQcQU;iJU?i$EevUDE`vk+A#`d&0!X|HcZ_*863Lm*KJJJ)`O>wj-QOZ z8ctLIZ28pWT%8h_ixMVd=w{D??&n7FOA+01N({^QIEPU*dXtPMO(lHG`3A%jmD3X) zPprM*_HwII10_>v^0915%fvR^b3If;5uzz?|iPh$csEAu&d!he-M8#9JF z%|>;$ay>)*eivSkqBMr#)HG^pk!Emi8S?PTM>6r#NpQTEp)F@ng&|KBjnf zH{5@udVq_vF$F&|I^fT1Q2lZxseCHuQ8$f8dBbCv$wTk>MexA@+royd93pLIW;c*e z{*k|-ilq5e7>b-Z>Owdl&rJ}=eAVA>C$m4`Z|bVzyU5g@_1F8gxtBjVTpDZ^Kbc>$ zq|yMigkhU_c_>)=v@ySxz-nMZe-+T_?x=rsbzeJ%e={t*^o8OXD+fREKAm?_e14I` zRuBB>I0BqSAA6fJCTL|Nru=%f$qKq+V6$Z->Ww<;>o5$|+Y=qYR2X+*1_b~-_dye*SPC)%)TPik2k2-vjldP?`7wQQD`Lt07Y4~F*f^s z!pPx3zny+G3a*Ane3K^AWuAM{a15UDq5wjac421@rfudq^thn7{?BmB0W@&EBxG6N z00{8msj4ii#>OZ!;#5oWq)5J5B1u#S@!5J}3E`aq7pRe|WH6gu>b*g8hT{+xw?)cMiA3U3qM8 zzB%4G*gu7T$M4|nxQb;N%isQab8Fj(5cf(-`nR*9UKDaP&MvSAX%CZRt}TObHSOvnd|`jiw5Z})#8nsZo3^7Ph$^BGFKU_*rVB*iMpTo#vq!>`hA!dsM+0b11y%N^RT7q+;3^-xRcHu-AO#W51Ere0)Tqw1(Q2tJB{`H0Oum8WgC(^(J`X}OdM+bj}kzCWJs|xgh zE{gcw(MQcM(E0-xX#JiGG{@_%e-*Dg#FE_F?H;6OaX#PSBHC9P#l3P}?OnY`y@&d^ zz4;!z#k+&ut;gb{Tt=_7eG6&PS}!4jU8Bax7(Fm5)sTY$k2$Qh4=tl6r1uQ=4>#Xz zpB}^SKMR<+dti*o2pE5cCX5n}(?Gub*lq(B{@0ps=)b;|q3^(nFqDrsbY2B9&j0m! zvUmtI#$>qJt*!kSg3SlL-h6wPh~F*#&KCdrukSaHj!rlCw@$Z@-fX_#Uc`WYdn*IN zN?U_kyR~_|OZwq_+d!=EhVg9-%usw9W< zV$DSSISsO55(eq5OS2UL$7B*MVDcJuk&^x9RwdIcs66XSmWLYNWlF#YemL#JiMPLpyBgjt$M@6yxL)6;z~5-k}XwF&gb z1_fFrj9o6(n;VqM?E*WnertoQ8~Us^_HS>Hz3Eumn7*??rZyDaYP_KIZz(hb#=8FK zHOmj26 z&gSPL;IEJ8CImkOz^_VK9L$sR-n(xO0HuNGQ`~+&g74Q*G^?}&s*(Zn@!8lg!Rc{o zXbn~S@Wt15W?O^$31TZCGU{`X;Fls_RCsH?6>Wd;`fFif>Cd$}vtJK&tT8mGKrgpP z7X6yGJ{T0gucdge50!V9K@^8r%R*4@eCZ^Z5Ur5gogsHRL%z`&@=bS_w!6o{gYzau z36zdQXxISYK`mRT9s9eyH><=a7siWI1OQXq)!X=cdJC6M7?$Zw!q{zZpmMgxUp<04 zO0s_{eT2O%7(VU~DYrBLh{4}Hck&=ovQ;IE3bu7Xa)>R@&IS$2fFu%*{x&dI-&bPJ zAxKkbMtX^t-{ginPgItHy+^r&@NHG8asBe|l9$4}RRyNW|Gz?FjJj~IJ>}Yf(2D}Q z3y-t6e~F?`Bwgi29%~i(yiT3cYbQpQJ34=IV2$M{B%TR9tmLIvj)oG%Xlp@&w{stf z?G8-hQSw{u=5E^Vw$%@MPoFMKndohQ4fJ>MfEexyZ^&!J0J<~z8#-Xn)3AR4 zE$5d#Jb@7<4!m1MjPl{(b~K+Nf;el&j^{JF)v)I0E8UsBF&PJdZ%$DKxli)^iZ@r- zJXM}(Q8b_rKoY$~0{nWB&ZWGrN)-XIyYKq!t}+7 z&t4g9!}-^o*1$Qj z_Q1JZqx#pAq^!P4Zs?$vPTSAUVeoqB#m{(p+jMEw#lxD;JEyC1-D?&#+xTbbcr{v|u5!tD$-#nLGlQK>?M2!e;W_w-s z_M8t`n@8L~0mKs`zSVy@zjQzDQD!yP`Z2`vd)f*bM%rpza>`uXh*s_ z<{zu0;0L9@6TdZh;s-Q$SFUSv=F3(wBG*HJJJgf=NfuSETEx1f*n-&J?qWXfhp)N7 zwzejryW8XjYYabg?4GYG8jfHXv3rqZ=W=$GWD9)renWMDAL}#y9)vgbZ-9YY6!tkA zCW`uT6!M_pE z6&9<`5%%veH~fZsRrpJKDd`Im49jJ&SkdU=jefP6HSv^{CRFp4=aU3a?GWfM>B1z6NVLN2~w55 zysTMTUd?}#8&n@d;5QEfc4xt2DH7#Zmhc+_)?ZM9ChAn^t?)(Qpk7xHtJ+-ea>w|;^QY@?KkcHbN3K# zSoTRSfT%Dsbt=RX2|u1Mu zc&rhn48XIuQ+wdb3XI2Z%5<;GETrBruB^K1V{RH$RO@7V0d)y^w&%S^98>@)KZj#Z};XQ`7!Cvq6e%)AI{G|mw{#;-i z8qJ%Ko zJR(qJ>bnaC+bV*f@0mlaeq4z@Ef^fkSo`UKGgQwP)Vup`$hKT7mA!>3 zQE>=%!#dmp6yKz}GUU2r+vtCWp*smi)4#gms!OFw&W7!c^d~l{2iZKorI9^!j1 z`B4*P9xp0yql0gt&t9Sey!4~$zLxe=+Gdx^AXxe^@G+YS{fMi+pVpOK8}VzkbhKqo zHqM=jfl;6NVPn3qMY?b68iZj}9OlPh4>&R0DC~-B2~q+BxN?X7%V2+yB_UY+FL`qeSE8r^*w+{lp=2Vffdaj@F+(QTx zM54@_VY*p8lHuk@Tw3AL+!=wH+9?RbICK;KfX+QSUaG_yU)JpdZpA!@1tHgQf8N3J z5#Jy_2KJWhkR;pf^UId<|r-gD^Ajk9}B^Ecg1v`l;sd1 z1^w^!zWC^mhnRKCd6fFN{()4aEPY_}=4iRNl7&jbx=iMCOy_?TS&ErFgPDpMy=0t% zH6I_3_Z=Y)D{%n^2LA9pn<&J~#BrM2GofULX?7utl(u%@%JUQsy391Ep@)hs1T8M7 zNB88kDsjgyr0CPtLjESF3!==Tk<>50ytg|Z&hzt^UlwN+SAxOHLgj6ZlWQo-Cs3W` z4*>YXll;8gLePJF4p2_9zQ`;29{j(!r0qR7`9l1P?|9OT&!UvIS^+Mgfs){oLV|3S zq&>(8$2zkoElFN{(#4eA@&$wF6J4vjyr7&%O&`h`Wj9KS87LPD2(0o;qB0Pdi&6

    V$r+y@b`p%Pd#uFxjdTZsegb!r-D$N`Yyppe9D;SJsU84kzcM#`D#78{U-msS1Ak;j;OAP4Hje-xd^S23IBG63& z{L_Gc4YQ3KT+1B~L7XTf;D^t+XdN|RC)rOCTzMP^fJ5yLR#_#^=Gu$)o5sxzN1A7e zo>50Lzct@3FtqsUh}Ih5!yi3~VBG>jQFVZa*B`*eO8|k{calO?TYAKF_!yyFcqtb6 zR&!9-XKS#mYh41J;8t|802)o#yCuDQK~BwoqShBBEB*CYKKy-S-`;=BBAML@IAd#~ zpkP72`c>92i*xjGKr)bD(G)=DF5b{1GiMyp;{69m!w!W|fXl5xa}gRoc=G#6qY>T= zB5~o-cNrrqx_Qc)byqb!I>;_-Lgw}mZ282FzL_6}@uQbAUb?pZLN&9jgK8F!Rf0Q9o7@WnhB0ceE zHTLq*>|6PO-Q77Jz+*x2_jhM-7iS>d!S@9eGg>Y?0!Wzc2o`MhuMfXnZXVc=kj!O&KO)sY>sI>srl%$6hwr0|`*SQ`?+2;l*AKag zNOi!cEY@h>Gd5he0s5!~SiiziPyaJbF6lld#5|AaN>+p!FXcakV`ResrnrR;zMJ_! z=lI5bFxE-c{*ThOVxkjah4WKm4u*MFwdWLpc8nc2?|SH>-`TxEyIJyIjS!xD^YI&S6$3NTVSe_WtjM z>|*UJ{>+*CnWcg|#X#>r_9>d`X3Ex#)sK5NuCi*D4zGNTVchL@3*6$&_u~i&NzKRY?9 zM-uE()$tI%?R((t-rSruf`6oL%N;oG^@b@#^PYejeT+@$x%u)Lbifo|6g&VJNBW{ep zfn=7+n4xt0&_Gy#033p+=_P6rl9Z2B3bJdCGJ+uF51)cZ{3hah)^~KgvzEN+pL2qm zh-(YW!m6SQuO-GfZpkHoMG`KC;Vmv}YM!>1W8C9P0F}jjHAHhHteAF%8c>h5AAc$o z)sRvMFibv?kDnM%%c~#CMx(8CCwmV!1ReC~Z1m3XZwUaK;!TjACj|1uZa|;CrWDb_ z-aJq7gIYc3MD&|+3LO=lM%&p^-)i8NZHT!Wl{n#p^g{;A9JyA1-<&X*J6oQ4F$Qas zvX43&R49abLk_!f55FMt2iR`xx2>(gg@V|c!mO@}5K`2T-mL6UvNs=}LC5!b-n9%y z(P>kxu6p$UmjclnVXmillT4+TtG!&9V>o`D;YIZbomJ%|NHvvJ#I&s65XI!fD1%QX z=#O|*U_jJxR#O93RuvO!1vVPA1N#+Y zu(~xA>FEvhMxQf|l9tFCgLd-U23=8)U-am~N%YlN;<}W7Vm_2nokY6}%Sq;o8d6HQ zo~~ff>Ihp=Onqlv3428G* zih4}dR9#6gN^Y5?u0S@Vl$(s3#z&&RbTYkKg%M*V9sLQqC5VAb1ow3wcftFX_qmq2 zm@Al<;cyXuq#-gelmTij$IR+u_Tfv2WP)@l=j^`56ZnS^Z_)3}?R6wd$tXab}YB7XKL_|t_B}N?bUQpMfID98U2)h%Cwm8ukWf%g)c|Z?ym|`&+4-j ztK}HUZi}NYkV|y^vG(crY~76_EeD>BT)0* zHxQkF7l@+1&kd^`s>LtmLI6}THE>4%@{V9yaYOhwagkPZlMIg^tA^qR+Y}b?OC?84 z#Ff@W^ppu1WMw=ied?sU#&T%chSS5c63yo$bo5(QG9ys6E)-OD>Xu;lRk;#kI1>Pt zc!-P3an-!6dNOD0Ti6J4Ts#0Sgc|@47Yu-Z3sK@S*BC($@MGOKHoHb&Ii&IP81$+9 z0u&()7dEZLoU$ufyhSW6uBJk8TjoNN5xkUOq_0X+7Nwi2DdLRws&STWv!>NnwA;co zj+*iO)@<5yxmEGfaT9WI%kb0_jhj@XDmP%#295hnUODFDwObQwKva!G7)~65?zzK% zPN_yVeGwi`T^#A)9e@K|Sv-rdx#Jo=5cws~5XuU4bw+@D5J27XrWUOg_cHGpJuxF= z-@AlUR&wssu985Wz!+`<00!4pM%ePg{(KqT1^ z<_%|6MpFPe6~T(e0V#N2PY{&K--Dn3mLG7h~^ovT-Lq7eN!w55d;cw{?3N*^S%@+ z9*)M=EhXoOv>{AMERUyv?w2lq^e2!&1nz2WMBR!d;nS_nKKcA??wW*u{ArcobcoG_o4^Z2t18LkDm&~DbkfCQJIr}vwzYTVp$#f zwLruW*4asFH#>D*`0?N_>?y{vSdl)DwlCsQO%mSE5!Iw!Mi+5cb&4x=HE5rdltujY zBnY)%%00>%%O~aJT5D2GD7uB}P_^YGv+)pIW-h0eNi?5Spy8#aExCoS7@c^ zS0s}%7a#o@?X4^UeXbZvds36AuYR=|*xz&2pQ158{9-i6h@?4wG)k-CDlNLik#MjN zD=}54NtpqYF>;$9O~L;BbsbLO8`tKChCQ{pD2L8TztO_typaKa47?ckmjQ2M-P;yj zI)prc>paw+VnqTkcEw^*ui-l!*?U$?fE|qzKz=H?4z>Jg=~}8mUzZA>XP}+hpPtr$ z+6-|TrVwA-F>)ACT_*HtqaZYS6r?_jBh(Cmq{e0{Fz(SPV77@NhN40*b1IOH|3o(z z++D4y0cw3#`$Y|ZU74CnDd*B(TC&s8P-l86bpAz{?qmrDZ}f>}LlkJ? zLMID;YTCk={gMka-=B6grf2rD99AXMEnvF7cl^4n;&4CB9x_0%@^)~e)|2OsXL|6I3p9Qx{?zviS z6}~%QgmynWfMBT@jd2pInlB&{j7mo>Rk(gQ39J zMv+d_{iC`OIvE_g>ep>d*4BfkjgFs;y&6tb0BrfxQUfJZX!T+&!G>wSTHgF$aN=g}P!>of z@~2CGKGUa(Gn()5CsV}7_W-9e=>+Tt1S@yT-D8+btjlqMIW+s8h8zm40kU5-5;=)_ zP{0qk_)lX3EGzRldBT5{J{vQJI?YCPwsJi~{C*c+kD@e&;nXy0YLRAeZW;3M%11Ks z(@Ai=m!U0ZP=z2=2U%>01U{yCb~oIldVq_6vM~ieGCJVTYf$}iC8>NW=TSF}M|s0z zn8`!$_(kx+0NcWbtQ;b3W@a~#PyUg=p^BvWR2Yh!IqE_mB4CXLVp#|>F%g>bzeJw zhJQ0GyYz+P87l`r@jjh*QG9-p!&VRc=r{tLMIU>cGA3wcBc}X%waE&)VqmjnBkGMh z>gzBJ)Y}ssz*HD_VdQgACPofgX;Ucbi{7eC4sR*_+M3>S1FJr;cLgq{PZ|G}ON`cY z41_n-m<$G~0Bk8nWfkH|52;w?r}ZU&yO?V>N2jsWVd-rE{NK@d{nxnba?HLW(~mc( z*Ruq6mG5Qehf!!H0{}%?wJ|pPeZt7$K);=SGzzYUM|_he(`BA}(Qpi&@uC1ily+ff z4yJA9IrO-oxc<*@%Kt|7ZFyh5nH^md1J3c4*n{n#Lp?`R= zU4+8gBZB>d_uKoYZ+8y2#a(%9Z@xL+IoLmif5-3O?YN3%8Oz`Pd2?&qh!FQmO8U36 zqFxkoG|n!t2Wb{W{KCB&*F0%|8G1vjC)A4(MSkdrcD9-=5ASY|u*buKAPfIv6pWJL zHi7-k-Cej+fynbG_Ea!a5e4fBYa`bw5Z~LS;SQr@td}z zBZw-Z5HD()5vB`7;6_xFyR%5{&i`W*)cSpx7O2_XZv!lrrt`3+>D+H==D3s29os%kzCV%rmG6{fG&#o-O)$QFVOk}7ij&S3pB^;u74G;JH(RQ+U*{s zXK_B?;Ud~s8pXYGUF}`HN4w0#R{(ONGdf?cD=$QV5^ zD%FsK0gpMXwGS<$CZzWa_76ATY@Z&(?>`HexO-rX$p{#RCX5n)j?+NC{Mc>-7XH_o zZ|J|im7(vzi7=FpH*{VFG0y+>d9rv2G{$7O*{!Yp7=q0Qz21C#mx$jj{>~Qv`mgUd zkB&|^_qR^BkKSy)-(JLketRne!b)3%TD!G*yi5AweA_^*?}qVh4CCdk34?tRfU7#dC-l`;r@?yVG;)EtxK~N0moz#EnxB*b&-<&=2j)s zET}x|OO}Tk-ey0(EVQ|DaSUd$4IhI9bK9_+Wg8FLWNIiVPfi(XdK~K@oAg(4MnJRf z1AnWIZP?tLV>xz0buI5?Td=94Sv+M^Ga7_d^~*TAVzoDatMpe!v-CKSQGDa;_{vSa zTF}-hW!0Iz<#b5M&1-g_6|GP1kw!I}WtRrIRwbuk{8!>9MIHDSjf&Q^(J&yf-k#)| zKP9Q^MM$xv5VAGNE36mz4Ll32VHI1$s?{1Qa;(k?(P}tI?3FpG>xQW^tQoGnrp)mdLyhEpD#ZHrQ z41`&lNbl0q)6>&^FA^;o9<>Sd#s&piC5&Az)teiX%IyL>uzqWUtQ-2QHui6CkiF?x z+L*qxL8dko-DQBH*u&=OzR{1i-IKSscuh^WM8}4gjTr=u_N& zK7#MpP&BKw1FDh%^6}Z&Fv00@YG@5r`|!orc4k|H`UzqyATsK6kl>dhUsQN&z7=io z`fFi-Vd>AcIkR66b*wQos6a2bM;85>wmujXzptfuuMd@Xmq8SVSj$3C?tJMam=LXy z+nphIIzztE8S+hcm$tjd!GrTAMG2ISLul9l;6W{0s2%&eyf>@FCl|(xQv?80+|}Fo zdwL6(P8gQyOv2c0Z=iCv#$P>xI!dxCeT2P#EEqoS4=J}a0EofgJa_USQnFPgiwd@N zKyrvJ&&~!7%77#ij{Y_*)6ep%!l1Q~__#CL+ZoKP(~qIo zG45XEc_|OGvxLrQ^~6NZNr6ubd6xc0Z|x3D;!*Nj?dERU?zYtrdQYD&Oqu9ye+~3^ z@qifa3UA13!~nW8`5QW5(9^I0E$5eiJv@OCB@Vn>MU3*{;dV5iB7!(;#*XJRy4A4e z=PTWry)hXFfNxGw1-Vc1{E9bM*gRF9Xi+qv4?q&VL<0PJk-UPJV zI3zF>&NSkFIfb^O!}-^LoYufOvG%~ZT%-EelccP^Np9$%mQLHx&SCQS5+>C5(y~gj zsXR&y!XzocOz<#V+18vG!EI2jFzYobpO{x(O^nkT8kA1Pf-6EtJh-NIP^aYO z#Sz)5tKU4AT$3_RI7E#IZf1L3_V%0)Ser-OKLNxOBEHo*zjQx;?onnn*7`BT@_XHf zoFd@y-GNsF{ea>yW0C=z5K`|^r6Ppc^Q6-25Aah*837!fmmN!d)>h8E#dWVH^_A)m zedGlu>l+ysbR&a{pd;%Bq-TpChuNy?6ED8DJ@a)q0Ji-lOz4ZNCFNcMMR>QUJ$v08 zB-So*3+9$ibM%sbIKL%U{AfqII_4j%qu>XnzZ1VTc;W{%cUP`!a^}lcF(TJPfIHNa z`$-m6u3E&pq}YPk-tJ;P?uW0rz_zv~p}X7U25SsIbL^h4DjJSp7_obiWan~rlw=Eh z^L|5hfFJ8K{T_rj^>2WITNL&=8zzeSaTM~P_K|K>!xNi-OXHo8Lgj=$kHc_i1I4+@ z*EYHh86JMnytZH4K(X-i+a`(q4#YM=>z3Z&$6Ni*#Ir5X{??D{5%md@8(E8{NALAJ z67q$@?(a@AZK79fK4|N89%!ffu>^;~qB$&-F%8}KELHd^hYkoYy zL#dynG7KnxcR6{r{Z=Kux^zIJ3l$ct&Jp(SFgN^$dsX;LdMW7(5)8{_uUOIO;f;Q^ znKki}&lv`2c?K(!m7EzF1mlY>ESpKC@N`Q+#F&dja1yW6E($q(i33vu9Bx#xg#3AK zP7f=ELvqZenMX5isuPA4XbDo4zPzkiT3*eQ8&n^EL*O?L0(NJ?Vkr{kSC;S_0@hzp zf+p%z=&kTY;GkYt5Ubi;?{dkC#%1Q7Ek?gS)frTXHsexew8Vxur;NiT-<& z+%DsPi*Oyk1>)l;U+p*T{d4yaZdmq7E`X>oGIc7%5(z(^FXZM$M5=4c2u;qrZpiN~ z?$G(54<|bX%304q`i;HsZ<_a~j}XR&`3-);Md6LLG(Bi>g1e&vjPMF6PWNt+^3#47 zw+?s%*br3}Ecw^MuI$_k9fZ_0G9%PglCa<-UDo!4Xg z8LQ+1&&k~m=r*|m+Z{6R^--~}4dCCBp$aq3pF&9H+9CbsX=zM@VFU;QCf>U5-JusX zNPi)RLDjT8pDuHfkO|Gn+qA>kZ(2Zq|DjWpW*!d-SnxWBNnn?03rpOVm&m83OXjCi z3AyvPw6Tx(!EA?5>D;#m(orf4W(iWF!S5t8q4@HKYjjLa;Zt_qCMeN23U9+ZKN9C{ z#Ar7YS~3OpaSQc@A^wzdH}fRa7VAvUFeMh$x%~w6Bu#$JyL;RvXV1R+8>@(a#BP$& z)!{vcw!vQS^?u!0UHqj5J^ox^8yeGvrb^THNgWgn8kOCJ#KN*}Ksjcvp_Pw9N=hLw zud17&ppFrz80do%b;x_7&u>Ac;*;=*# zh>HEn-#S!<5tfaPe}YCjpc-X=QZnJkOGCdnP(mFM2}VJl-fDs69-gcslY!wlH@^UN z&?W#=4kzJk`+W&58cNlrJn9r2!8{`P4y^=bsGB>flIpt)1=}iupzoPOtbSaHJ}np= z%vk&BfHPFj7u37^ZpgM=E0w*4Dp7F=cEdW{0~Ft+x-#UtW83J4p*snGM$^B#;i^le zNzR7tjr1orspNZgR&A#vgdXC1FZoduWgagoZ=-{6pwC{S0=)F2>b{otQ`%;i${<+! zFz_*(3H^wxzMs~WT^sRhwRE&)PBzY+ih)s|`C((eutmCW>l%b%Qyk{UU=KJk+$ijd zYY9>U1GsXB{>xyHB_UXU{4rfGX!Q2?wp5IjQB{na((iX9;Ed;NLMQZ^D^f)2$wW$3 zjVs_Q4z~{izvfhtv3jnb@Z3WP6GWoSn_;?HJ(A((M_gLr(cBqs}f>hwVNZEZ2+S zjW}3*{M1IuFTFHq@-743KHgv6OL$XGu0{`W&?oqviBdet6MWm~`t{-KT!(yWZ-Q@u zUgjt*?JG{wj2{cZcX!2fo|NSfAqD;K^}hJ%kB69b%XyUgxc-4uq%3`4^X6!|xRQlR z!n#c6b4=$HS&Er|JcF5v8NFnjf;Ar>kM|uR4l8j11_u7{J)0=R%fxY-+cTkLhG}*o ziLQ;FSLljvC z_?4@Kt0F%yptf|0lLnK@&meg!3nZiraHtK#KJQvep9j{xwsASb_q=5?z2N%StuCuD z7fplI#5Gt#Gn`%w7@XOOX(5wJRi>_4Cc;Tv;w0mL+Oag9^Af15^`6YW)L*a`hChJPIuchL)HV6vw3x~EwCsL(eH(X(BP#E0D*+*yQ&-vFi)XHF6KYG_6a#C z^|{Psk*Fp+&#ThucDO8FGbNoIkOfY(h4W*7=*euBx+>2q+Xw(TK*qmWGOjc*bcVWY6zq&s}^QH47u!VoXbu_d)nS~gX&nk$Ov9~Q^pYF3{d#0GY%H75?t+d zdLc{=e*)8k1zQGurXHQgk%9C6@o6@(Z}`l!%#ef@tjQPID_lY)bP{Kd4gtu6V-k) zY&X)gB!0#&s*L9d!}KH4kjgdrltmM3uhDqHe+_&nkIMpGFemcQvsBJ!oR6azLdoz; ze&*Mmg=Ibj34eGme-zx39%VBCZ=^5y89$kkkLC8Wj5>1OgAXS-+MwV2 z;Fc=ZDE_9~G0lqpt*bD)s0BtO8S(Fy ze^5+a#;0I!Zp1x=)YOc_s{9K7u?|onVC4Km&T4}&JE$1y0e~G&P;)7{WAg?C6oK1; z9)`g%@^ih1s#kJ#f*gS;<@}6Od7gulu{gvLqHH~wYaFM3w7|6i`l^SwGYR>H#6o-8 z@C{}%8h<{}vVj-0A@5KJ4+IkqlWYMnf1eBBXFS!e9E)KbyAc2eE-qE(XEjixYr79j z=51`2LEq`vg`kE^nBp-9z{=0|C~-h(NCGF+43_>vFvG7^rz9R*HUwhfSWYV;&PTA3 z=d;{+(-ig(msNTW%|xVJa{W3hnq(m{q$g-O8xDtJFV9}81e)K^qRfYOg3C$`e=>W8 zj6eU%`F&LDE)8?Y&HqZt#;EL+xU3RyKWZtfOGv9QP3g`6@e~c|>iP4O54jKsq&hxS zf8{+Y3?Js|9N)=>2Lj>xXSf>RT|D^b!w-Z@nMCud$6ndwIRl&~&|M|h78{D{w!MBh z+G=g;F3qzrZT`WiG?3M_n+QE+e?E+gVy{vH9(_?iTNKuOm47=)(>Nlean`!zp>7k7s=&(1l% zHNH0igHxK*zMX(s2!~Ez7<*$%-3<<~iWGtxuK3l=jZ&jV#{$D0H`5D;e|Xq=84+d; z<`gj`Idd(dR(wV zKWRomDcB9s=)JVQXehe$=jznRWJQ5|^+S<-7s-8r;?dwjmn$UT+C4nc#py&YUWg^~ zH;LY=uGIx!S@%(;*R(yBf0gQO=V@8t%m>X3RZ`wE$L}x4?QoJqb|6b{|Y@DUH zHMTe4(QHN-Jw_b(_@+;P??3@yib@+&Liy~W^W&A*c?ZT4kRSOkfYIM}NN4}1_q!c) zpU-^Tp{_tX6o zBZ@nCVezd*#&Ak)IUTx&WtGniSYrFrHkQ#nUD_jMDKtBonK%$IQrR#7uTCc3ey|lb%Ju-(-k?a`YCyUQFk2aNH zZT&)^WYU^#pYf?Pfz^R(@*vfzS@6s_{AsnjJ^F)K>6w6ljG(bthDFwOwi=3 zll>s`=x{s+*3ZY2(a9v1xgQo}a(w*x^WEbwCMU;FqH+V(f8(ctIEN>bPXn!fbu@xU zFh_?^K*&HpUwm@-#XgJp)zet+r(aF>j=%XL(94t2cl#&L;Vb)G~?kNgs z?n8HZf8Z~D>xYC{IOW;MFAY>?mGZ54@JA<^vOqe@f1=a*N`_h@6|0t})#S7NIEA@k zO4o3|(wiOt^$mTYRG!9Da|U*qmXNt*9R?>Rg27@j7JlPR2l%C|U`-n+TR%Ol;UCk= z&_n(s4z)^52U)DXC}6JFs#O zTnPqDe|=zRdZE`JcOh`=zA@!m;DZNfey-&Wy|y(#5H>=~ml7Q_v|><>tIWr)T$HOV z6900Fk@B$-7?Z)&Om}ITKmDhD-l@Vn)|8kW z?;Yc{3AkUSlJ$X%y%Iq*f9y2=B{)`AA@6*0e>YAHhiX#asCJrMA=whA^BJqO%grl< zeNDqJrdO{=tpv(cb6mE<{J`oNS3)}balph(-KA&5+{}7~VIkRETX2YUEVLgIHlK15 zFR20up3Sw`9Augus5!gOUL64E&f`RNfdeu+V<~!AmVizGVF;#Y4)@0)DMue#{dKsp ze_JIUP1``gChKY8xg`EDnCCLAIz`N;$u%RuYsVSSRVBiS=gnLU~PfXn PjnAEOb0d1? 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 delta 13641 zcma*OWl$Vl*EWh1Ja_^_a1Ty^0fGc~cX!vpt#L_k4-9T05L|<6a3@G`cL~8Ee8YV| z-}9b2=lyYdYO1Dp_1;%6yY^aZy31GH8j5*OlN^a?fUekS_Lptf%;nAt zDcXY`c=Vzh6URh#2!v6i-9h;bwpilH4YDnrwtXE*b$u>Yf;{hwr+3dse4XeFcs}{p z>dYNe`wmJfQUCN8lHgsQ=Dn-_Zp3@9^C+gJDw)#~_yy?9c6lQ;F1q*Qn4?BIE`g!b zc)KLB#Q8JZn=1w_q%Ll<$YfvhH-L%bqvJQEC35c(yG+#Jb819p1=PL8-32XV+rRzQeDC!d*A=b7C+1_$)iyKtcIpWJHO{xXQ}B z=}#-Z&KloqH}N-a*m+|bA$Cdn(Vf9w9W*> zX0-+on96WxOT{ayc7H{c~?+ zutx6T-uK66kjH3#>LH5b4ntWE5s3f}4(mY zv|LF9LV(rY-K0ppD|V6n<@=Cc;b=b{(#fjA**8=!xguK9$X`F;Xn59hMqwr3`C16H zsXtyXDxzER>IL~kac1*gtVF->=^bYv);De1zrL^1ujGZK`x_~weqwy9IX%8=37NO2 zH)>pa;1$W8!wODSwMDs>XO~c5MYg|4v=JNLMFKW{O)eiBJgnOgbdb*`v^i3$>2}60 ze&G;YZYc~p00)gKs=~vI+lx5K{4`*)2azO~lB(kSTlI5BHtjD6BoV@m zXNtg>s5By_;S-zM=bHM!q<)7&U)sgTI%Wq@aHlP>#Uov#0?)<&N|fDAm1D!;=WeK zFNYe^v?w&^RL#a^rUy(ES18X55d%Ja|17h(V~sthSOR-Xoy72B75K zzI#?Bn9ZBVDjBQbDLZ`2eQRFPHG`rr<8nYc8lB!U}|1qw0v_MkfaZms`-;T6fNS9=VvK9ew5>w524q>8xtpdd$B zGb9tF6o0@(`DdyBSt)AGQy_#D4o(7u2!{$=(ZL1+v2k)dHZXt`NT>Rr8s(i$%ZvYV z`15Uk9`)^DLx18K#o+96Jtwe4Fynm+kcE%X?0q#2dqdDt)1lP>?%L?> zdU=EXA_L-mX4l2VvSo`QkzWA7<@MLQF@xAIV+lRSV1D&ChTq{aNVAk9pt1-k;Rvk^ z{adM} z*uQ6^dZ(I7%a^u?--wS;P8?5``+P{3FVSC{ezaPzg2DYhwmvYE|LPc8YSXM25j-w4dQe=9XADIek!$y_k~?P-L+0W z6#<52g6$d=(7t{H$E;JUeUanCg}qiEZ|?;xNAAnj%0DU=8?3w|dh|Zu41sTZA!{r5 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 Z9GBsL0xAOwPym+>fC3u^u~Gm4008+&AUXg5 diff --git a/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz b/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz index cc0efee880b2d8ae3b0c0aa8c0fee873862283f4..c36c147577edb11a2d76970543a750b37e099774 100644 GIT binary patch delta 143867 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 delta 896 zcmbQdf@kYx<_%x+>fa^b@L0N&J^2eG14A7v1A`a?14E9XL7u*gtD9q}PletvPP zUQTJ^(vX9Fw+sYqn~&J{)I>^O+_2=ToKoQehj0(pRZje&d~!L{B8aHM%mhh&l316RfDEWO^y?1c*Sx{u$MMr|p?l!I07H zu_SeA(6fVGGrc(5{k*a+F}qpRzvAaq>ReY=VNxMJIpuxb#ly@}3lx>s?a~SPsHq>Z zf=Q~~e)|W%bB-R&igEufoNb#d4H6g5Ee>d?+#=HWa>H`H#m6QqbSx5h=ED+mQfSZX z8|?r|S7&K9|K)XQT_U-?vLHG|Iy@vqgz=+i?nAxD5-xFnbn8Ft z5794Po7>*MYW;+}EpaNleYXp*n-bD+F(l0OS^kxaCc+0})xPv!DSg{oW?t?qF2jCW zFUxIt^;{Ws7o|Hbh;g`7TQ~KieI%}T5X6w+a4-Pq& z^E^y*T)XoA74NuX`<7L2-aqeWj?rJOs>-a-iodD^el+w?K5KJRYu2W%5ygE6SDeys z**3K*X6fgvIuT3ix987hsww72ODEHR@iCjS`nzxKXP$1t&uq&iR5-n7Hj~Qq>HN%E z%>RoSrXS&Fc4T^1GCg5FljL*-0ifu)Qikci0?bBC!MmoPeZpio{irar!1QI$nFM%& ziH-r70D-`2FT?cvKt-H04>K?X#akFzOy9`EEIZv?kXee;X2KnY=?cQkE}U6+85qJm+~VD)3$indKvYZw usc^iO2np%a$+2D} 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