From e2250dc92fb65b4ed4088276901de001689bef39 Mon Sep 17 00:00:00 2001 From: FlightControl Date: Thu, 30 Jun 2016 10:52:37 +0200 Subject: [PATCH] Statemachine --- Moose Development/Moose/FAC.lua | 168 +- Moose Development/Moose/Moose.lua | 3 + Moose Development/Moose/StateMachine.lua | 128 + Moose Development/Moose/Task.lua | 6 - Moose Development/Moose/Task2.lua | 37 + Moose Development/Moose/TaskSead.lua | 106 + Moose Development/Moose/TaskWorkflow.lua | 17 + .../l10n/DEFAULT/Moose.lua | 23430 +--------------- Moose Mission Setup/Moose.lua | 23430 +--------------- .../Moose_Test_AIBALANCER.miz | Bin 168397 -> 27566 bytes .../Moose_Test_AIRBASEPOLICE.miz | Bin 183936 -> 43105 bytes .../Moose_Test_AIRBLANCER_with_Moose.miz | Bin 161389 -> 20558 bytes .../Moose_Test_AIRBLANCER_without_Moose.miz | Bin 160654 -> 19823 bytes .../Moose_Test_BASE/Moose_Test_BASE.miz | Bin 160020 -> 19189 bytes .../Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz | Bin 240467 -> 99636 bytes .../Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz | Bin 175844 -> 35013 bytes .../Moose_Test_DETECTION.miz | Bin 167898 -> 27067 bytes .../Moose_Test_DETECTION_Laser.miz | Bin 162674 -> 21843 bytes .../Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz | Bin 200534 -> 59703 bytes .../Moose_Test_FAC/Moose_Test_FAC.lua | 5 +- .../Moose_Test_FAC/Moose_Test_FAC.miz | Bin 186065 -> 45234 bytes .../Moose_Test_MISSILETRAINER.miz | Bin 267098 -> 126267 bytes .../MOOSE_Test_PATROLZONE.miz | Bin 159932 -> 19101 bytes .../Moose_Test_SEAD/MOOSE_Test_SEAD.miz | Bin 166456 -> 25625 bytes .../Moose_Test_SET_AIRBASE.miz | Bin 158664 -> 17833 bytes .../Moose_Test_SET_CLIENT.miz | Bin 160309 -> 19478 bytes .../Moose_Test_SET_GROUP.miz | Bin 181967 -> 41136 bytes .../Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz | Bin 194105 -> 53274 bytes .../MOOSE_Test_SPAWN_Repeat.miz | Bin 167024 -> 26193 bytes .../Moose_Test_TASK_DISPATCHER.lua | 13 + .../MOOSE_Test_TASK_Pickup_and_Deploy.miz | Bin 174083 -> 33252 bytes .../Moose_Test_TASK_SEAD.lua | 4 + .../Moose_Test_TASK_SEAD.miz | Bin 0 -> 19313 bytes .../Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz | Bin 181617 -> 40786 bytes .../Moose_Test_ZONE/Moose_Test_ZONE.miz | Bin 161600 -> 20769 bytes .../Moose_Test_ZONE_POLYGON.miz | Bin 168128 -> 27297 bytes .../Moose_Test_ZONE_RADIUS.miz | Bin 161750 -> 20919 bytes .../Moose_Test_ZONE_UNIT.miz | Bin 161624 -> 20793 bytes 38 files changed, 468 insertions(+), 46879 deletions(-) create mode 100644 Moose Development/Moose/StateMachine.lua create mode 100644 Moose Development/Moose/Task2.lua create mode 100644 Moose Development/Moose/TaskSead.lua create mode 100644 Moose Development/Moose/TaskWorkflow.lua create mode 100644 Moose Test Missions/Moose_Test_TASK_DISPATCHER/Moose_Test_TASK_DISPATCHER.lua create mode 100644 Moose Test Missions/Moose_Test_TASK_SEAD/Moose_Test_TASK_SEAD.lua create mode 100644 Moose Test Missions/Moose_Test_TASK_SEAD/Moose_Test_TASK_SEAD.miz diff --git a/Moose Development/Moose/FAC.lua b/Moose Development/Moose/FAC.lua index 554888549..596699fd2 100644 --- a/Moose Development/Moose/FAC.lua +++ b/Moose Development/Moose/FAC.lua @@ -2,33 +2,33 @@ -- -- === -- --- 1) @{Fac#FAC_BASE} class, extends @{Base#BASE} +-- 1) @{Fac#DETECTION_MANAGER} 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. +-- The @{Fac#DETECTION_MANAGER} 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 DETECTION_MANAGER to model the reporting behaviour. -- --- 1.1) FAC_BASE constructor: +-- 1.1) DETECTION_MANAGER constructor: -- ---------------------------- --- * @{Fac#FAC_BASE.New}(): Create a new FAC_BASE instance. +-- * @{Fac#DETECTION_MANAGER.New}(): Create a new DETECTION_MANAGER instance. -- --- 1.2) FAC_BASE reporting: +-- 1.2) DETECTION_MANAGER reporting: -- ------------------------ --- Derived FAC_BASE classes will reports detected units using the method @{Fac#FAC_BASE.ReportDetected}(). This method implements polymorphic behaviour. +-- Derived DETECTION_MANAGER classes will reports detected units using the method @{Fac#DETECTION_MANAGER.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. +-- The time interval in seconds of the reporting can be changed using the methods @{Fac#DETECTION_MANAGER.SetReportInterval}(). +-- To control how long a reporting message is displayed, use @{Fac#DETECTION_MANAGER.SetReportDisplayTime}(). +-- Derived classes need to implement the method @{Fac#DETECTION_MANAGER.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}(). +-- Reporting can be started and stopped using the methods @{Fac#DETECTION_MANAGER.StartReporting}() and @{Fac#DETECTION_MANAGER.StopReporting}() respectively. +-- If an ad-hoc report is requested, use the method @{Fac#DETECTION_MANAGER#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} +-- 2) @{Fac#FAC_REPORTING} class, extends @{Fac#DETECTION_MANAGER} -- ====================================================== --- The @{Fac#FAC_REPORTING} class implements detected units reporting. Reporting can be controlled using the reporting methods available in the @{Fac#FAC_BASE} class. +-- The @{Fac#FAC_REPORTING} class implements detected units reporting. Reporting can be controlled using the reporting methods available in the @{Fac#DETECTION_MANAGER} class. -- -- 2.1) FAC_REPORTING constructor: -- ------------------------------- @@ -42,26 +42,26 @@ ---- FAC_BASE class. --- @type FAC_BASE +--- DETECTION_MANAGER class. +-- @type DETECTION_MANAGER -- @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", +DETECTION_MANAGER = { + ClassName = "DETECTION_MANAGER", ClientSet = nil, Detection = nil, } --- FAC constructor. --- @param #FAC_BASE self +-- @param #DETECTION_MANAGER self -- @param Set#SET_CLIENT ClientSet -- @param Detection#DETECTION_BASE Detection --- @return #FAC_BASE self -function FAC_BASE:New( ClientSet, Detection ) +-- @return #DETECTION_MANAGER self +function DETECTION_MANAGER:New( ClientSet, Detection ) -- Inherits from BASE - local self = BASE:Inherit( self, BASE:New() ) -- Fac#FAC_BASE + local self = BASE:Inherit( self, BASE:New() ) -- Fac#DETECTION_MANAGER self.ClientSet = ClientSet self.Detection = Detection @@ -73,10 +73,10 @@ function FAC_BASE:New( ClientSet, Detection ) end --- Set the reporting time interval. --- @param #FAC_BASE self +-- @param #DETECTION_MANAGER self -- @param #number ReportInterval The interval in seconds when a report needs to be done. --- @return #FAC_BASE self -function FAC_BASE:SetReportInterval( ReportInterval ) +-- @return #DETECTION_MANAGER self +function DETECTION_MANAGER:SetReportInterval( ReportInterval ) self:F2() self._ReportInterval = ReportInterval @@ -84,29 +84,29 @@ end --- Set the reporting message display time. --- @param #FAC_BASE self +-- @param #DETECTION_MANAGER 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 ) +-- @return #DETECTION_MANAGER self +function DETECTION_MANAGER:SetReportDisplayTime( ReportDisplayTime ) self:F2() self._ReportDisplayTime = ReportDisplayTime end --- Get the reporting message display time. --- @param #FAC_BASE self +-- @param #DETECTION_MANAGER self -- @return #number ReportDisplayTime The display time in seconds when a report needs to be done. -function FAC_BASE:GetReportDisplayTime() +function DETECTION_MANAGER:GetReportDisplayTime() self:F2() return self._ReportDisplayTime end --- Reports the detected items to the @{Set#SET_CLIENT}. --- @param #FAC_BASE self +-- @param #DETECTION_MANAGER 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 ) +-- @return #DETECTION_MANAGER self +function DETECTION_MANAGER:ReportDetected( DetectedSets ) self:F2() @@ -114,11 +114,11 @@ function FAC_BASE:ReportDetected( DetectedSets ) end --- Schedule the FAC reporting. --- @param #FAC_BASE self +-- @param #DETECTION_MANAGER 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 ) +-- @return #DETECTION_MANAGER self +function DETECTION_MANAGER:Schedule( DelayTime, ReportInterval ) self:F2() self._ScheduleDelayTime = DelayTime @@ -130,8 +130,8 @@ function FAC_BASE:Schedule( DelayTime, ReportInterval ) 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 ) +-- @param #DETECTION_MANAGER self +function DETECTION_MANAGER:_FacScheduler( SchedulerName ) self:F2( { SchedulerName } ) self.ClientSet:ForEachClient( @@ -139,7 +139,7 @@ function FAC_BASE:_FacScheduler( SchedulerName ) function( Client ) if Client:IsAlive() then local DetectedSets = self.Detection:GetDetectedSets() - return self:ReportDetected( Client, DetectedSets ) + return self:ProcessDetected( Client, DetectedSets ) end end ) @@ -153,7 +153,7 @@ end -- @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 +-- @extends #DETECTION_MANAGER FAC_REPORTING = { ClassName = "FAC_REPORTING", } @@ -166,8 +166,8 @@ FAC_REPORTING = { -- @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 + -- Inherits from DETECTION_MANAGER + local self = BASE:Inherit( self, DETECTION_MANAGER:New( ClientSet, Detection ) ) -- #FAC_REPORTING self:Schedule( 5, 60 ) return self @@ -179,7 +179,7 @@ end -- @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 ) +function FAC_REPORTING:ProcessDetected( Client, DetectedSets ) self:F2( Client ) local DetectedMsg = {} @@ -208,3 +208,85 @@ function FAC_REPORTING:ReportDetected( Client, DetectedSets ) return true end + +--- TASK_DISPATCHER + +--- TASK_DISPATCHER class. +-- @type TASK_DISPATCHER +-- @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 #DETECTION_MANAGER +TASK_DISPATCHER = { + ClassName = "TASK_DISPATCHER", +} + + +--- TASK_DISPATCHER constructor. +-- @param #TASK_DISPATCHER self +-- @param Set#SET_CLIENT ClientSet +-- @param Detection#DETECTION_BASE Detection +-- @return #TASK_DISPATCHER self +function TASK_DISPATCHER:New( ClientSet, Detection, TaskType, Priority ) + + -- Inherits from DETECTION_MANAGER + local self = BASE:Inherit( self, DETECTION_MANAGER:New( ClientSet, Detection ) ) -- #TASK_DISPATCHER + + self:Schedule( 5, 60 ) + return self +end + + +--- Assigns tasks in relation to 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. +-- @param Mission#MISSIONSCHEDULER MissionScheduler +-- @param #string TaskID The task to be executed. +-- @return #boolean Return true if you want the task assigning to continue... false will cancel the loop. +function TASK_DISPATCHER:ProcessDetected( Client, DetectedSets, MissionScheduler, Targets ) + self:F2( Client ) + + local DetectedMsg = {} + + local FACGroup = self.Detection:GetFACGroup() + local FACGroupName = FACGroup:GetName() + + for DetectedUnitSetID, DetectedUnitSet in pairs( DetectedSets ) do + local UnitSet = DetectedUnitSet -- Set#SET_UNIT + local MT = {} -- Message Text + local UnitTypes = {} + if not MissionScheduler.FindMission( FACGroupName ) then + local Mission = MISSION:New() + MissionScheduler.AddMission(Mission) + end + + for DetectedUnitID, DetectedUnitData in pairs( UnitSet:GetSet() ) do + + local DetectedUnit = DetectedUnitData -- Unit#UNIT + local UnitType = DetectedUnit:GetTypeName() + local DetectedUnitName = DetectedUnit:GetName() + + if Task:GetTarget( DetectedUnitName ) then + if not UnitTypes[UnitType] then + UnitTypes[UnitType] = 1 + else + UnitTypes[UnitType] = UnitTypes[UnitType] + 1 + end + Task:AddTarget( DetectedUnit ) + end + end + + for UnitTypeID, UnitType in pairs( UnitTypes ) do + MT[#MT+1] = Task:GetCommand() .. " " .. UnitType .. " of " .. UnitTypeID + end + + local MessageText = table.concat( MT, ", " ) + DetectedMsg[#DetectedMsg+1] = " - Group #" .. DetectedUnitSetID .. ": " .. MessageText + end + + Task:Assign( Client ) + local FACGroup = self.Detection:GetFACGroup() + 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 1c2f3ffe6..a5aed3bde 100644 --- a/Moose Development/Moose/Moose.lua +++ b/Moose Development/Moose/Moose.lua @@ -45,6 +45,9 @@ Include.File( "AIBalancer" ) Include.File( "AirbasePolice" ) Include.File( "Detection" ) Include.File( "FAC" ) +Include.File( "Task2" ) +Include.File( "TaskSead" ) +Include.File( "StateMachine" ) -- The order of the declarations is important here. Don't touch it. diff --git a/Moose Development/Moose/StateMachine.lua b/Moose Development/Moose/StateMachine.lua new file mode 100644 index 000000000..0d4df8852 --- /dev/null +++ b/Moose Development/Moose/StateMachine.lua @@ -0,0 +1,128 @@ +local machine = {} +machine.__index = machine + +--- This module contains the STATEMACHINE class. +-- +-- === +-- +-- 1) @{Workflow#STATEMACHINE} class, extends @{Base#BASE} +-- ============================================== +-- +-- 1.1) Add or remove objects from the STATEMACHINE +-- -------------------------------------------- +-- @module StateMachine +-- @author FlightControl + + +--- STATEMACHINE class +-- @type STATEMACHINE +STATEMACHINE = { + ClassName = "STATEMACHINE", +} + +--- Creates a new STATEMACHINE object. +-- @param #STATEMACHINE self +-- @return #STATEMACHINE +function STATEMACHINE:New(options) + + local self = routines.utils.deepCopy( self ) -- Create a new self instance + + assert(options.events) + + local FiniteStateMachine = {} + setmetatable( FiniteStateMachine, self ) + self.__index = self + + FiniteStateMachine.options = options + FiniteStateMachine.current = options.initial or 'none' + FiniteStateMachine.events = {} + + for _, event in ipairs(options.events or {}) do + local name = event.name + FiniteStateMachine[name] = FiniteStateMachine[name] or self:create_transition(name) + FiniteStateMachine.events[name] = FiniteStateMachine.events[name] or { map = {} } + self:add_to_map(FiniteStateMachine.events[name].map, event) + end + + for name, callback in pairs(options.callbacks or {}) do + FiniteStateMachine[name] = callback + end + + return FiniteStateMachine +end + + +function STATEMACHINE:call_handler(handler, params) + if handler then + return handler(unpack(params)) + end +end + +function STATEMACHINE:create_transition(name) + return function(self, ...) + local can, to = self:can(name) + + if can then + local from = self.current + local params = { self, name, from, to, ... } + + if self:call_handler(self["onbefore" .. name], params) == false + or self:call_handler(self["onleave" .. from], params) == false then + return false + end + + self.current = to + + self:call_handler(self["onenter" .. to] or self["on" .. to], params) + self:call_handler(self["onafter" .. name] or self["on" .. name], params) + self:call_handler(self["onstatechange"], params) + + return true + end + + return false + end +end + +function STATEMACHINE:add_to_map(map, event) + if type(event.from) == 'string' then + map[event.from] = event.to + else + for _, from in ipairs(event.from) do + map[from] = event.to + end + end +end + +function STATEMACHINE:is(state) + return self.current == state +end + +function STATEMACHINE:can(e) + local event = self.events[e] + local to = event and event.map[self.current] or event.map['*'] + return to ~= nil, to +end + +function STATEMACHINE:cannot(e) + return not self:can(e) +end + +function STATEMACHINE:todot(filename) + local dotfile = io.open(filename,'w') + dotfile:write('digraph {\n') + local transition = function(event,from,to) + dotfile:write(string.format('%s -> %s [label=%s];\n',from,to,event)) + end + for _, event in pairs(self.options.events) do + if type(event.from) == 'table' then + for _, from in ipairs(event.from) do + transition(event.name,from,event.to) + end + else + transition(event.name,event.from,event.to) + end + end + dotfile:write('}\n') + dotfile:close() +end diff --git a/Moose Development/Moose/Task.lua b/Moose Development/Moose/Task.lua index 8ff24a085..d9159fbbf 100644 --- a/Moose Development/Moose/Task.lua +++ b/Moose Development/Moose/Task.lua @@ -1,12 +1,6 @@ --- 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 diff --git a/Moose Development/Moose/Task2.lua b/Moose Development/Moose/Task2.lua new file mode 100644 index 000000000..50aa64249 --- /dev/null +++ b/Moose Development/Moose/Task2.lua @@ -0,0 +1,37 @@ +--- @module TASK2 + +--- The TASK2 class +-- @type TASK2 +-- @field Scheduler#SCHEDULER TaskScheduler +-- @extends Base#BASE +TASK2 = { + ClassName = "TASK", + TaskScheduler = nil, + NextEvent = nil, +} + +--- Instantiates a new TASK Base. Should never be used. Interface Class. +-- @return #TASK2 self +function TASK2:New( Client ) + local self = BASE:Inherit( self, BASE:New() ) + self:F() + + self.Client = Client + + return self +end + +--- @param #TASK2 self +function TASK2:Schedule() + + self.TaskScheduler = SCHEDULER:New( self.StateMachine, self.StateMachine.Assign, { self, self.Client }, 1) +end + +--- @param #TASK2 self +function TASK2:NextEvent( NextEvent, ... ) + self:E( NextEvent ) + + self.TaskScheduler = SCHEDULER:New( self.StateMachine, NextEvent, { self, self.Client }, 1 ) +end + + diff --git a/Moose Development/Moose/TaskSead.lua b/Moose Development/Moose/TaskSead.lua new file mode 100644 index 000000000..249a79c3f --- /dev/null +++ b/Moose Development/Moose/TaskSead.lua @@ -0,0 +1,106 @@ + + +--- @module Task2 + +--- TASK2_SEAD class +-- @type TASK2_SEAD +-- @extends Task2#TASK2 +TASK2_SEAD = { + ClassName = "TASK2_SEAD", + StateMachine = {}, +} + + +function TASK2_SEAD:New( Client ) + + -- Inherits from BASE + local self = BASE:Inherit( self, TASK2:New( Client ) ) -- #TASK2_SEAD + + + --- @param #TASK2_SEAD self + -- @param #string Event + -- @param #string From + -- @param #string To + -- @param Client#CLIENT Client + local function OnAssign( self, Event, From, To, Task, Client ) + Task:E( { Event, From, To, Client.ClientName} ) + + Client:Message( "Assigned", 15 ) + Task:NextEvent( self.Await ) + end + + --- @param #string Event + -- @param #string From + -- @param #string To + local function OnAwait( self, Event, From, To, Task, Client ) + Task:E( { Event, From, To, Client.ClientName} ) + + Client:Message( "Waiting", 15 ) + Task:NextEvent( self.Await ) + end + + --- @param #string Event + -- @param #string From + -- @param #string To + local function OnHitTarget( self, Event, From, To ) + + end + + --- @param #string Event + -- @param #string From + -- @param #string To + local function OnMoreTargets( self, Event, From, To ) + + end + + local function OnKilled( self, Event, From, To ) + + end + + local function OnFailed( self, Event, From, To ) + + end + + local function OnDestroyed( self, Event, From, To ) + + end + + self.StateMachine = STATEMACHINE:New( { + initial = 'Unassigned', + events = { + { name = 'Assign', from = 'Unassigned', to = 'Assigned' }, + { name = 'Await', from = 'Assigned', to = 'Waiting' }, + { name = 'Await', from = 'Waiting', to = 'Waiting' }, + { name = 'HitTarget', from = 'Waiting', to = 'Destroyed' }, + { name = 'MoreTargets', from = 'Destroyed', to = 'Waiting' }, + { name = 'Killed', from = 'Waiting', to = 'Killed' }, + { name = 'Failed', from = 'Killed', to = 'Unassigned' }, + { name = 'Destroyed', from = 'Destroyed', to = 'Finished' } + }, + callbacks = { + onAssign = OnAssign, + onAwait = OnAwait, + onHitTarget = OnHitTarget, + onMoreTargets = OnMoreTargets, + onKilled = OnKilled, + onFailed = OnFailed, + onDestroyed = OnDestroyed, + } + } ) + + + _EVENTDISPATCHER:OnHit( self.OnHit, self ) + + self:Schedule() + +end + +--- @param #TASK2_SEAD self +-- @param Event#EVENTDATA Event +function TASK2_SEAD:OnHit( Event ) + + if Event.IniUnit then + self:NextEvent( self.StateMachine.OnHitTarget ) + end +end + diff --git a/Moose Development/Moose/TaskWorkflow.lua b/Moose Development/Moose/TaskWorkflow.lua new file mode 100644 index 000000000..dad35f11c --- /dev/null +++ b/Moose Development/Moose/TaskWorkflow.lua @@ -0,0 +1,17 @@ +--- @module Task2Workflow + +--- The TASK2_WORKFLOW class +-- @type TASK2_WORKFLOW +-- @extends Base#BASE +TASK2_WORKFLOW = { + ClassName = "TASK2_WORKFLOW", +} + +function TASK2_WORKFLOW:New( Client, Task ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + Task:Assign( Client ) + +end 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 e474c94e6..31441b888 100644 --- a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua +++ b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua @@ -1,23429 +1,31 @@ -env.info( '*** MOOSE STATIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20160628_1157' ) +env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) +env.info( 'Moose Generation Timestamp: 20160629_1929' ) + local base = _G Include = {} -Include.Files = {} + Include.File = function( IncludeFile ) -end - ---- 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) + if not Include.Files[ IncludeFile ] then + Include.Files[IncludeFile] = IncludeFile + env.info( "Include:" .. IncludeFile .. " from " .. Include.ProgramPath ) + local f = assert( base.loadfile( Include.ProgramPath .. IncludeFile .. ".lua" ) ) + if f == nil then + error ("Could not load MOOSE file " .. IncludeFile .. ".lua" ) else - 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 + env.info( "Include:" .. IncludeFile .. " loaded from " .. Include.ProgramPath ) + return f() end end end +Include.ProgramPath = "Scripts/Moose/" -routines.utils.toDegree = function(angle) - return angle*180/math.pi -end +env.info( "Include.ProgramPath = " .. Include.ProgramPath) -routines.utils.toRadian = function(angle) - return angle*math.pi/180 -end +Include.Files = {} -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 - - -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 debug and ( _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 debug and _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 debug and _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 debug and _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 debug and ( _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 debug and _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 debug and _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 debug and _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 ) - - if debug then - 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 - -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 the unit's unique identifier. --- @param Object#OBJECT self --- @return DCSObject#Object.ID ObjectID --- @return #nil The DCS Object is not existing or alive. -function OBJECT:GetID() - self:F2( self.ObjectName ) - - local DCSObject = self:GetDCSObject() - - if DCSObject then - local ObjectID = DCSObject:getID() - return ObjectID - end - - 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, OBJECT:New( IdentifiableName ) ) - 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 category of the DCS Identifiable. --- @param #IDENTIFIABLE self --- @return DCSObject#Object.Category The category ID -function IDENTIFIABLE:GetCategory() - self:F2( self.ObjectName ) - - local DCSObject = self:GetDCSObject() - if DCSObject then - local ObjectCategory = DCSObject:getCategory() - self:T3( ObjectCategory ) - return ObjectCategory - end - - 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 - 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 - 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 ) - 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 ) - if debug ~= nil then - env.info( debug.traceback() ) - end - - 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 - - ---- @param #EVENT self --- @param #EVENTDATA Event -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.IniUnitName, Event.TgtUnitName, Event.WeaponName } ) - 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. --- Source learned and taken from: https://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html --- @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 Next - local Prev - local InPolygon = false - - Next = 1 - Prev = #self.Polygon - - while Next <= #self.Polygon do - self:T( { Next, Prev, self.Polygon[Next], self.Polygon[Prev] } ) - if ( ( ( self.Polygon[Next].y > PointVec2.y ) ~= ( self.Polygon[Prev].y > PointVec2.y ) ) and - ( PointVec2.x < ( self.Polygon[Prev].x - self.Polygon[Next].x ) * ( PointVec2.y - self.Polygon[Next].y ) / ( self.Polygon[Prev].y - self.Polygon[Next].y ) + self.Polygon[Next].x ) - ) then - InPolygon = not InPolygon - end - self:T2( { InPolygon = InPolygon } ) - Prev = Next - Next = Next + 1 - end - - self:T( { InPolygon = InPolygon } ) - return InPolygon -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:GetDCSObject() - local DCSAirbase = Airbase.getByName( self.AirbaseName ) - - if DCSAirbase then - return DCSAirbase - 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:F3( { 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:T3( 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 debugging 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 } ) - - 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" ) --- 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 ) - - 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 = 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() - 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 ) - 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 ) - 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 - -- 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 ) - if self.TargetSkill[_targetskill] then - if (_evade > self.TargetSkill[_targetskill].Evade) then - self:T( string.format("Evading, target skill " ..string.format(_targetskill)) ) - 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 = 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 = 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 ) - SCHEDULER:New( EscortGroup, - EscortGroup.PushTask, - { EscortGroup:TaskCombo( - { EscortGroup:TaskAttackUnit( AttackUnit ), - EscortGroup:TaskFunction( 1, 2, "_Resume", { "''" } ) - } - ) - }, 10 - ) - else - 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() - SCHDULER:New( EscortGroupAttack, - EscortGroupAttack.PushTask, - { EscortGroupAttack:TaskCombo( - { EscortGroupAttack:TaskAttackUnit( AttackUnit ), - EscortGroupAttack:TaskOrbitCircle( 500, 350 ) - } - ) - }, 10 - ) - else - 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 - - 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_BASE.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 - return self -end - ---- Flare the detected units --- @param #DETECTION_UNITGROUPS self --- @return #DETECTION_UNITGROUPS self -function DETECTION_UNITGROUPS:FlareDetectedUnits() - self:F2() - - self._FlareDetectedUnits = true - return self -end - ---- Smoke the detected zones --- @param #DETECTION_UNITGROUPS self --- @return #DETECTION_UNITGROUPS self -function DETECTION_UNITGROUPS:SmokeDetectedZones() - self:F2() - - self._SmokeDetectedZones = true - return self -end - ---- Flare the detected zones --- @param #DETECTION_UNITGROUPS self --- @return #DETECTION_UNITGROUPS self -function DETECTION_UNITGROUPS:FlareDetectedZones() - self:F2() - - self._FlareDetectedZones = true - return self -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 - 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 ) +BASE:TraceOnOff( true ) env.info( '*** MOOSE INCLUDE END *** ' ) diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index e474c94e6..31441b888 100644 --- a/Moose Mission Setup/Moose.lua +++ b/Moose Mission Setup/Moose.lua @@ -1,23429 +1,31 @@ -env.info( '*** MOOSE STATIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20160628_1157' ) +env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) +env.info( 'Moose Generation Timestamp: 20160629_1929' ) + local base = _G Include = {} -Include.Files = {} + Include.File = function( IncludeFile ) -end - ---- 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) + if not Include.Files[ IncludeFile ] then + Include.Files[IncludeFile] = IncludeFile + env.info( "Include:" .. IncludeFile .. " from " .. Include.ProgramPath ) + local f = assert( base.loadfile( Include.ProgramPath .. IncludeFile .. ".lua" ) ) + if f == nil then + error ("Could not load MOOSE file " .. IncludeFile .. ".lua" ) else - 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 + env.info( "Include:" .. IncludeFile .. " loaded from " .. Include.ProgramPath ) + return f() end end end +Include.ProgramPath = "Scripts/Moose/" -routines.utils.toDegree = function(angle) - return angle*180/math.pi -end +env.info( "Include.ProgramPath = " .. Include.ProgramPath) -routines.utils.toRadian = function(angle) - return angle*math.pi/180 -end +Include.Files = {} -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 - - -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 debug and ( _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 debug and _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 debug and _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 debug and _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 debug and ( _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 debug and _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 debug and _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 debug and _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 ) - - if debug then - 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 - -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 the unit's unique identifier. --- @param Object#OBJECT self --- @return DCSObject#Object.ID ObjectID --- @return #nil The DCS Object is not existing or alive. -function OBJECT:GetID() - self:F2( self.ObjectName ) - - local DCSObject = self:GetDCSObject() - - if DCSObject then - local ObjectID = DCSObject:getID() - return ObjectID - end - - 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, OBJECT:New( IdentifiableName ) ) - 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 category of the DCS Identifiable. --- @param #IDENTIFIABLE self --- @return DCSObject#Object.Category The category ID -function IDENTIFIABLE:GetCategory() - self:F2( self.ObjectName ) - - local DCSObject = self:GetDCSObject() - if DCSObject then - local ObjectCategory = DCSObject:getCategory() - self:T3( ObjectCategory ) - return ObjectCategory - end - - 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 - 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 - 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 ) - 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 ) - if debug ~= nil then - env.info( debug.traceback() ) - end - - 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 - - ---- @param #EVENT self --- @param #EVENTDATA Event -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.IniUnitName, Event.TgtUnitName, Event.WeaponName } ) - 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. --- Source learned and taken from: https://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html --- @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 Next - local Prev - local InPolygon = false - - Next = 1 - Prev = #self.Polygon - - while Next <= #self.Polygon do - self:T( { Next, Prev, self.Polygon[Next], self.Polygon[Prev] } ) - if ( ( ( self.Polygon[Next].y > PointVec2.y ) ~= ( self.Polygon[Prev].y > PointVec2.y ) ) and - ( PointVec2.x < ( self.Polygon[Prev].x - self.Polygon[Next].x ) * ( PointVec2.y - self.Polygon[Next].y ) / ( self.Polygon[Prev].y - self.Polygon[Next].y ) + self.Polygon[Next].x ) - ) then - InPolygon = not InPolygon - end - self:T2( { InPolygon = InPolygon } ) - Prev = Next - Next = Next + 1 - end - - self:T( { InPolygon = InPolygon } ) - return InPolygon -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:GetDCSObject() - local DCSAirbase = Airbase.getByName( self.AirbaseName ) - - if DCSAirbase then - return DCSAirbase - 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:F3( { 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:T3( 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 debugging 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 } ) - - 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" ) --- 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 ) - - 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 = 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() - 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 ) - 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 ) - 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 - -- 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 ) - if self.TargetSkill[_targetskill] then - if (_evade > self.TargetSkill[_targetskill].Evade) then - self:T( string.format("Evading, target skill " ..string.format(_targetskill)) ) - 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 = 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 = 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 ) - SCHEDULER:New( EscortGroup, - EscortGroup.PushTask, - { EscortGroup:TaskCombo( - { EscortGroup:TaskAttackUnit( AttackUnit ), - EscortGroup:TaskFunction( 1, 2, "_Resume", { "''" } ) - } - ) - }, 10 - ) - else - 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() - SCHDULER:New( EscortGroupAttack, - EscortGroupAttack.PushTask, - { EscortGroupAttack:TaskCombo( - { EscortGroupAttack:TaskAttackUnit( AttackUnit ), - EscortGroupAttack:TaskOrbitCircle( 500, 350 ) - } - ) - }, 10 - ) - else - 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 - - 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_BASE.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 - return self -end - ---- Flare the detected units --- @param #DETECTION_UNITGROUPS self --- @return #DETECTION_UNITGROUPS self -function DETECTION_UNITGROUPS:FlareDetectedUnits() - self:F2() - - self._FlareDetectedUnits = true - return self -end - ---- Smoke the detected zones --- @param #DETECTION_UNITGROUPS self --- @return #DETECTION_UNITGROUPS self -function DETECTION_UNITGROUPS:SmokeDetectedZones() - self:F2() - - self._SmokeDetectedZones = true - return self -end - ---- Flare the detected zones --- @param #DETECTION_UNITGROUPS self --- @return #DETECTION_UNITGROUPS self -function DETECTION_UNITGROUPS:FlareDetectedZones() - self:F2() - - self._FlareDetectedZones = true - return self -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 - 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 ) +BASE:TraceOnOff( true ) env.info( '*** MOOSE INCLUDE END *** ' ) 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 495301a36755314ea818266a25e78810279a5378..85b7bf96801fe32a9248d417da2cce34844ea82f 100644 GIT binary patch delta 553 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 mdU9gLV3mY4(`a{@ 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 VsRFZgRwyh3_AlM4{-oYoQN5>Bz!+)or!mm?l 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 H0ssI2qwzc& 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 2028748a38f70a3eaf21e0d84ba8143d20958e1b..3d8702a01ca8d3a3e552c065e4614898759b5da1 100644 GIT binary patch delta 544 zcmV+*0^j|BoeSa60F0A7?iC}TRnXOlISZ(GvcZ&#;batD9$#)A6f~n872~Ra4k6&DDx$tjw=j}TJy|M z`*2R!`@nOZf&v!`n)vGB0<{BmAY4P8OHc!|(-Mu)U_bq#b7q1d44W_$BA`-~&`gC} zDV`)Qw^$u)i_Xa})grj6h*ZAy9x{P*s(Jjj$~LW#)fhp4U`e%c!#D+Auy=#HYbk{U zAI(M0a{DkwiQ{{Qg+MuFsic?U-lRZ9-kKS}Xif9z=w&uy!m0!lJj z997k`gVsX^dD-3fq8~d6zD`%wI&+%Wsv)oiSFTt>P)h^1Xh#Cvgb%u#-AGsPGB0)k003tL0GCtD0yP!H`2N-_($N7~qAVax(a`}} zqAVaxmz~T4EdoX%mw`tDE0_1o0xAOtA^?{p%>pt5IEMh2SLIVen i0GHFv0!0IVp#YZ~&H_OL38Da(U(Ny>2D+pG0002(y73_Z delta 142481 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 mdU9gLV3mY4(`a{@ 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 VsRFZgRwyh3_AlM4{-oYoQN5>Bz!+)or!mm?l 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 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 974231d04b038896b95500d3fde96152d7e799d2..cd5b19cde2fb831294b0f1391a63a8e7d1a407d9 100644 GIT binary patch delta 544 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 mdU9gLV3mY4(`a{@ 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 VsRFZgRwyh3_AlM4{-oYoQN5>Bz!+)or!mm?l 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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 2813646919e848a568f6b5fd111f0f65e2d72865..9229bb704b5ee478df3b9f484d1492719e70dc3d 100644 GIT binary patch delta 570 zcmeBs&iQ^8v<&FnP6vbp6y|TmQob0&|5m|37@P)U*9d z@`@{7vR=}wytb_LkPujz-Q|FP7u5Vb4W zbysiAV~fs&!u>PXh8IWVJ~J=x=9pAcHoNI$xdOxaT#>b{D>!sG)rD3&6?k+{3gMc5 zoRjBwb6~xR%zO6w#}9vmyxi%NGUK4~wb0-j`e(0prLQ^X`{&cGj>E5;W_m|`J`?b} z!0*QI1I2Tjn8dke{do0|X)AN7LX7iV?*Qh_mxX#SB-sC5Se(|Rz%$!GSZP7flnXws z(VFvA^tMOH=5(Jssee^z$EuEyeP88_8jDv|{@HfQZ0&@r5{?O;TMO$CTd>A$C~w}C zt=Y;Vf7bPE(QgB{Cx5(GK6KnK5Pg4*(ZBy68QdD5)K{{*3x#^~U9tE47*qcylmC3~ z>N!kaMv*e1S2s6bb7rf&dH4Gwd27yne&JWGif3J4rMQ7Le6z}|B|_;c&kUE^X++-s znSFb1|J+Wq?qkRHFa~%tvxqP-Y)^7vayLYendv(UnM~!5{P=fG`_e_m$VEB|J{J*m zfHxx(1H<%q2PP?L1|R^&CJ@+2F)-w278hsc=Rp-53}TX+9#zD|#XL`kVS0KIlM(YD wBZld7ikO_3b4(bfKP+N$WqRT^T|SpdV!A^ylNNKnJHzzcVkT)ec`uNW01Ef;C;$Ke delta 142502 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�}E*FvJ?GRMVokT^~~v)EHy9z`uztYyh+# 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 z zX(ADvTC&L%V8&ryCLC&03s^0Y;p@wM%F8!9X~m%S&@#@zAPAA`CK45qS_*6>DZjD% zJ_lOX8153ye|&`YV&~7fOmW{zv6VYMW-f2>WMQ!Y9#3OYdN^%dn1D%P8q)f9u~(N{ zua@4fC~k^~Dft|LHELTh^b1v$WwkJ-DI9Ckt}9;*AYuh0XfMcXR!q@s6G;h4XI%Rw z$eH-bsCZ81pZ?j`;|=N2$m{I6*2&KCr$01{-a0RDf1W|aTmlhnkA8qCJ90spC^p@9 zWVYeA6qYPwbL7soebWj8{-+}_8Y-}yhQrASwyY)8*ASUwN!W@+SPs9nSZ;UTvp+w} zOtf)M)88&iRHtqQZi-rDxT@=T8=a2VYgf1DuOx6Jgmpw41$RT$g0B-%%rJ+f{WB41 zP+Xfxe>8UfN*tO_*P&*Tr2^F4i~y2|-D0ZzaFm#i&2aN{@L4!E!v&Z_ScjdpiQtc0E`ARI!_j*dBsO->QD;b)6}PALTi`=6dmN1|adl?RfDzkp zf9bgeQyqhd2E+PX&`?O9z+-DMY&d>zi6E#2e}bO`O>w7V_QG*d60g^2K{qN&Z;{#J z7T8kLv3*+WPtK>2k*fe16S)dtQIV?v7ZqJhL ze;vx1^%QZ}_UPTJhPK+GA+5vBwxo(7{>0RviY2B1;#nc4^8-xTAv2dhZ-{2RAj0vQ zT-7DHX+*Cs%bi0Gxm_JO*(O~fP2+A|F;(Ie09Q=bFlz~m9_Tplnw%C57j;;T*c=Uj zVc)z1AtdvSLo}(o;SfMq$RvP9Zv$g7f38DhG+ljk>MCm&j#ph-F~og1o^F0wCc-XC z@fY8G)&x@+!TKkSaM$NE+7*K|B0G{XQZYa)?w(O4#}fkXR?XasECXQ?dQd6 z*qZrbZRdC5=o0?T=As^|`&^m|9R(sk(1y6nux;-eWehKo%L2tLP4MiLyI<@&f3fw2 z3f-PX`Xw8U&k9^O;HB5-5xB%)CCXP*EWUcK={#koRi4_v?66XB>78YFdH#_zn8Yv_ zVfvS_y1-e?*^Y|(VaO#9Gip-O+m}D`IqyiR#$XVcmU}YQI>Z1tTDJAwxFflaCZa_w zjmEWn!1#wyP_9x1jok|zwsZn@e`RSAUZuEMK*gUcq6%j^$l4vi0ZV0)W1Kz7h)st_ zxrGA3>ELqRKWE55%TpQ`n6$G9OOFQ)4J!hXp9+K16q3lv{;H#xBrgUP6OW^qd=*o&Gfq_ApR#azj6g<}&}WUja@ z_2ptpc^(Z6YoW)2CCSQce;AgapuD}nP18Nh$nyEHWFe;S!Fwxwl!zf z6n2+RKCnDTIa@g4-E(YH9c0nbz)5ToQDC0NN!Foly6~SluhHwIzJsN+xW*QX)-s38 z{00tGXVEqnzAYuA0da-4QwoWQ6CDsJ6$Ptub&#zLk1B@HeuRy_e*w_8zFD-6#j6ul zVS0jJV@`g%n4B(XUb*;ENydR7zIPKX`bbMC)vGb)*Eb8hpn4%`rBIl_d4{lL3STwP zT2LarfZ92}2=(oDdT|FnEFT$v8XE!rK$9SSqxZ1vq#mb*0o6TRWu}chRWUc-(Ft!> z)kxuZM`}4|N@Yj9e`b*$AVz=T1bX2FdfuHtFFZg|>!KGPpe2@6cj*E8Zj8_mQB5BX zxfx)9c^8J39zD*`eHFf5#m{*QER&GxZ!9*g*JS=W?1eAsPS#%w`;xvJ&-W%Ju@mhV z&ZKyw`NEm>4?C0Y+!$iHX}vo0t>Fu=)SX(z#l2GBjbr>$f6<2Vgbvos`lFJ&a!2tv*~S0yaHm~T;P&~KIHhK}rH*qraXu_hie2br zKXps<-4plH*d&2CY_2)IA~|B2c|7EYEij7eT~0CyosEqx`nN;rGK`Ktf%{iVXVTJn zxbZkU10lo5e?@k7Srn75E%l8z-`Uvc^-KZd&qm{x`0s2$8+Ezl*WUqBmKH*^qXmQv z9b^i=m>r_3CBR@=*4gT08A93LRH*OJ^&$Aq7r{{KoYV68G4qHJkZbjH z7&2q7tqgNgf5}WeAeQXsQ^-;8oe7<1aBaev-r#8}fAb849uo|SwTO+kMZrF09-7A*I!x?0|L4N#APXT#A1vZ0vl*U4y_!)LdL*6iDF z_lxuLyYKM|G>0A!&-hnSW`2w^@mqz&>nuW{_wN)hsPiY0?ba!U%;d)-hc?c zE1L3Ge?CDTMnzVDl)A(d*q>k5fPy|Gq>xpO<)O7b{Cf+Z*+K-QC>k*uGuOJhDz4Md z=oUeDA=KEu^43W^M>pe>5&h!7j2@U=9+hsdCBr&{Q884aot&#g2i4H^1g}b}CZ@wz zB|(TGOSZMMhkcq8e``88GRdGA1Tuq|?_Re04Lu!mLyug{re#G2 zQ77RF?a?FWGH(Ggdo9SxhqrXRzd^y4)+o<+BH3*e1%*O%L4X1OwyArq!S_wyN!$jBo52V}dM=AcLarESLF3zJwTt$qaa5&p7M{j^7^UL8xnUclhc$BgYj!}*_ z_5_;;_=Rs}JL}s}JL}f2$AU#MY;wJ7tXSP-1;vLOD1V2Kxj>U?#nY(|<4p zC~0ogYuo!y5fjl|ztHZ^(Z`3$?&Y8?^OC1(yfES%1e1Rl#lDn0n4q-)$_d?yQzk=t z5q?;ILfQIQ_lBcs!I#g_P0W;8{)AgV`LsfW#=IXO(w2 zIR)_Pgy&fwO`yGhg?o~c?q`P|QEO1`j?H}^Rl*P793Jdp;>#~RAeo?|YV*|e*$-QIhY_Ef-&&!;r`(f!ag9>kB|2D4s;Pm{f|H1JF;*v zqdz}~StXUYTU-{C?BfZnprs6W#vT(YZs5J=8ZR*fkMd!i+$0}X#J+^HzqP8p8AI;N z3+Os^g1=%yMe^`y=iuWS&9`D`9!|htP$vp&Dohfx_)@hHeLIFIf4qaO_Y7L=;GqXk8OZi1I56{a58 zoY%~Mf@@jG%O~~$9NTw!$%oo>dVzTZHf_QP`IYyfhWr3No0k$&PcKk-V;`p?M^%h1 zyK?~v9bP$`W+5qT5gPsPb^C}sOIieVU6i9~^(N22SV!XgfBJe-3{LUxs0utY#Gd5W zFalr>U`nA=TK^2!rM!!%QGzQrV)2*H65|sl%Y-z|L zrW#baN~Ge0QnyJ%>^TiLnU}bWhgGLZfKo!f zfd_KE?aXriL|_A+HHSC#ZGnzQ=g^Zr$>9NoDGmaVzP_%}YxWD;H0&g>)-xkLhbdCIM2|sfs#25L0DQ(5_i-Y2x|7DVrFl!YTg&>yXX1S6%v$wm!}| z8}GyGkB9kh-5$}vLNozVc%8J>FL%&PbbGbJ?W!HdJ70lEIg2^jOiW2;wO>Q5;ubN4 zeFWprfA4vs$k++AuLz2Sc)IiD0d^996K?H~uCPOGrk0CHUh8}7EffocZ0CuNda*)D zn|eD0{)ac(e{O#xQ6p6MsbCi;Tmzf)<_xq6*6=vWaLOd5U!KaSUdk3Py_SAwCj|d){Ej* zrdo&g3^i$X+XFCz?Q>gx(V;P)Un2GqO!F7unj@W=u3ur@?)yN78>L@3g{)fDf2f#l z>BOBC_i*Y5K%V8=8l_#rSb0IP*zyTY^GYZcLorsR0$vT!^_eF~lwzp)SJV14o4zHx z((J)j7hCNa@huXh&K&v41$E5gRL$<#%%)MC-GGFk>*vLw%4Xy|WB#EH6dy*k9>v^N zfB@5W0t;TP`>#5B<9PAqt2w4ee^kBw=9|e^<6%m=Lt&z{$4c&d|sbHje5$H<@+CG`1VZc|NqE+7sH!$8dq<8D5-F7W_mn{98_O z>*@wHW`cp|B`i~TIg#{qu)GK$bEE=#ve`8WX2l6~_@?n46 zhM9bL7rcBvM%vN}94;lhXNoheGliFR1>$e_wI&+8t4$%<-jc$~FX)1A) z|9mr=00~u!r9r%he`y?};}lp3V6!VGsD{c4d1qM8xS}!`-Oi*k9?~)#%i>L%>h)HN zG0gCf2!70PS=+Df5VX7n(cHqgWOiT#vpU>_^{O_{7UH+Ql?L5i-S?iftU3h&{S!5} zrfh}EXD3Sl8aeT^%?By*Nqz+<%cd592bbi*+(~E4No>oB={yeIa3UuX z<4XwIg2mII?1pK{w4)JMBt=m%y!HI8K-staFeQ2x%59|Qvsy4V(N>RJfe;!S!!mF4 z?q}=8uw4k#f8S0RgGfTHfE%k{UcrvaJ-p4Uz8+QF(a5W}sdGq~JKq(Ct>t3`cP?#t z9p`!Mu(hRnb&Kq{0De81~Ce zD4cV?PWa0X__oTr!ltpjjSs+10ig*w790iGs!8n+&$3sVT)^-W2+%CU2j4(DhNc>g zYceE11RiF1HaPu>k2erq6!rlJ-}(xi-y3B}6YUCBt-k03Is(KBVOmz3Q;&a7M962| ziH-zHe@m2ag-5_bxBgIeV-R2iTfMhCpP4jyX9F*%q2N5smq;dRp)i{x`5@vHDGY(> zHV8Azq*2_E(WKY5QvEUFHR+@@C}{4b**z+uT2UUPb{PSp{-LkQ@1N02Kpq5_aLDLz zAeUuU#P%Z~WvO8h5+JrIFSCC6bTFA7o)JiYe|!WZ(v6x{q%|}2)P!Jgcn$EcKelY2ZGw)1x^;L`w3McR{5J^>+AXdENRp)3gPf__%~lD7ai z6$@Z6JIge_#x^1lFeu8p@iio{W&yn{Npb!0&S;`wN0`EZ(j}V+9132=dtVjinAFf}MI%k4;GV5X#7uWLH)XW>c0#&{Y!u4It=rrA^6x<3;`NxO7q( zzb8FSM5~~X(&>tzn~h|JLFW3~SNZR?e@$2=h#|p-8V|E)H>1npmruJDXDO`lpwCkL zBooto8lpg~VzElH+}$E~I_I{|7|32Mf_glX4?aBHIeK#3f3inw zeF;hrk@ceP?|pP4MKxmXPax`}tb&{ku`Qtb41b{BA$k>n?+Aa}ZI5-Zx=m<9e^?My zD&jCo>lUmPt=n-aa)vQQQCic^<051ak!zpSgx_BJNT8kg*A@`}+J991AMWgax{UM@ zKO}rK22Rop-4_I%`k&SPkB$xxmePG9&`SJk3yA-}s{1%%EF=A0Ab7O1-&wLg-ipXL zHkYF#D&m|*SKpjbMr>FnR{WHBe_;3KGXKcT+`Bba3nZDRp*0uR@6Xh^jA<=-%T(Za z_mjORpYQJ-$)U4!fdULUwHOTVP9^xq*}qJZ$aTsRdzrN8vr=AeYCmHRio{pB@Js5) z6l)8JAzmC&+}e|m;eAyD;Oy#Rs&i+NuK>=OQ$XTu8@pj#0y3wu7u)2=e@U(rWPml$#3R< z5Q{={34;td-c`sN3^u0_f3XG`1t`<`#pP|YpD+=(w*(yMY$jb)>&W7KhYnSy0&)cE zo|lf@WLHP1m3LF)yCbCb=xa7vqoc;S|g#lQk~;AP2ZPd4mX#anQVN6I%B4GXt(8;1n3 zS2|(sfWtZ6fInQY$t|fW$Qat&OVwV1r}s|$yue!Pb*Ss(rJAqCzY7e_^zBA_cB>BG z+NTRRt=9FGKR3>uf5;xKHqONLL=aR@6AYEig}`Gy3;P&c7t9jGOhr~k&sI|tq;_lJ z%@Id3ptWssL~hgOYpvUSt$mxX{qNfRLEA=0_w%A{Ub(L0Jg3~v+xShx-CQtq^8d1% zw`y?ocrV<`3Asg+ueEOSwf0T^|Lf%~n;eJ#7cKrTZ*hs~f2vwf?OS**6^!3RP{^sB ztK=+^53 z0)yax)%B>!aX}ZYp4<14=$2m2#LIJagit<4-=V}ThR^B<+dCNcLo54&%mP3XQ8|3e zg&J%oE=}0$|^b}-8H4{SU@bv2UoiyETN5oCj}cPVg#!gTJgHuB^LR2p022-*{=QRi91l-lnFao3o6 z8M0Or2k&W7dELw>POK;^yT*YYCsh2H=mf-8Ty;5bLPKNnM)DXg{9fNoozz~9;;p9m z`{ESce^Z_NP!$p;`^N}NoP()Oysgyr+i$Jbj!HSbf)_tvknCpmcJ>$*wboOj?t^7} z%(Ia?t{v`cX|hev;~w$z{rB+K0_8G5W>{Q0(XYM;486T=GDNo{6%F}Tiu z7z26E9z0ury!rTtQw@c;+}F@ICFeIx7X7T!Z&mtjm3{?7F=jdUYg7;wFJ4VZrB-9g zLQu3tl5>&M?j>bxaO$7c^sajQFB=SpbrtL;9{ZhYsq!=tFJo!9omUydm2BwM_O9ZJ zf9#KI#Vl7gC)e5}`cmnD5vi_}P2BYgL+}BivfIGY6IWaH1bx@^JBiq@8Q z-Ile8Y`4x_)!%>MZz}lQrd;w5; z^%5FBe}gOXtWJgBvMMi%U&r=Dj-_@z80VM#vhcY6S}#8eN@ss*Z9)o$Sn%o#7z0h7 zybmlwAR;fl+DC5eqdjtjNIwO8#dPYT&Oq2k#Oj(Y^WaWNQ0w#lxI#Fk$BOtxe;2nk zGgv|XnZaS&X-*G`$r&okOFSQUU&~I%8FuBCZ`7Nz+P{#^P7+L@j=xuRR&7p3} z9El^8?RljV!sA|YTt_FiEiZu9P8u`BQnGVt3vxI&NnW?w6_S-bk^g5V7@~$@Bnu;W zps@Dk*BOWaRH3M6-CiG+8hOg&f07?M=;%RFeBoOaj;j|NB{5(L@(%tSFm`$gMXnNabv&&WGM!o+V!w zH}rszRXou;5O~#`U_t0p8j4f61(GSNv}H%E5mB7v<#mqlR^iXn(KTt1e|jY;@FbI^ zbON%s?^aFmH`@rCohj7u&DFDfV)LHd@MC=Ztd_|ejjb_5N?-yZ@Dxg`_vsQ&Y+nwO zXR}OX7G_!6x@({R>M;ujEdT9#0+81F$r7VkH}y_7nO$LOP;!fnCgqd_gEbT52{{Gc zBAP=zZlUN7++fsr7h7rge@)e6Dh))2bMQl=pjZ`|vS~gs8Q5EK=*$OXG>FHXe-0q) znmckzqsrsA)mQ>}-1A0fBl8*~J!RQxmI3$B`paN7gKS$4dAzAGaI4QNY!6b4Gy8^P zCuM5`y|VM=XzVb-9bz+B*@OYw)l|ylgnKQu)}q_oA8b5#=LCupf3v)m;AQA^2gt9* z_!ZuI;1&RZa^|l%fr7X~a`BX}K$*Z^>IfZYi>jgBqNR~-@o2lyqU2~<2FY~}y=;05 zaycDy5oF+NpJe@VC=e4T3HF^E3_R?MMO&8jXYKg< zmpHE)7Y@v*w9m2pn&YO@qbZrc1O;89C`QxE9JanVNXi3KCR%JB|z$&v75 zhhNT$9xbu*g!fqH5vTcj3Y1@IE7vOHiC!KjF5eD95 z;`|XjA=jzpe;a$XYKv$GA8i@8G zH9k4c{0%wh>e>K}mJ%rsMhK>3Nb`lOy5SF)EVf^`eU- zrd!jK5_VBCs!neqw)P+rR;94)lv8m>u`4KI*pJJ}Q{P<}f)?3J~)vzw$B@L(ue zAF^yqvMkGT1s}oIqj=6qmZx|Cy8^-Ymmqb@kn(t1sWvVnGd34CG-OfA^lzYG?c&vEVYe-k(9P;M1fZ9^0xq znni?_b&hx=>15J-@1F`A>)$<9V;y^YtzcVOwCHwj#c=Ey>XDYoNY5+??W$GqUZ8M? zLsCIN(DPWBa#m0^NhCBWNa)9-&lqCXr?H=ZvHyj0Bx??3bv9ytB}FLkO{BtE zrK3(cT@-MhtwI;`{0!tLeqI`7OjDE{e~4KcpYbZXZ9xm#{(#O~f0NT-XiLn#WVY=K z2Z*9*R&l(gvpb>Z{?GGPAQ;bCnY5Cluywz*i>}FUVq+4 zaOZtM*35N<`a8)mCujtYyNZD9PYuEcpK>_`i4I_-x;}v5Qv_b+O>r2`rI+0be~O{? zck{a``i8m1mRXKfHGfrR%%k087dtLxsJ48jz&Y9ZBpYGjwr)-Gljj%Xk!<-VLox-r znYY2gM21}>&+iFoeC3D3cIGz66e-_&dkEPh4P~%skzd!ZV!D0-a=bF3#xROqQIbu`MxqAVfr8AKGFs38!a5pEg3rp zl+0G7HR|<87)4XMKHW^2ysvvXX-MRa))SsNDI7hytdMI-Dr%D{ukz?5f23_$ZaTm~ z)$w3oSB4qozOqh;1OIb8h;$qu0>z0!+wRX><;zBl8RJaBIle>^ud1tkA+0q_el%@- zevw^dzVEQO7b~w+qY7d{ewQ$1m>SwnVB@l#zRGiE3w^96v;Ex@fB3!iqN#)bVS5ag z=73wIpXPDp%}q-Bsy`;uMOfV646dYR)4`=pv4mXS;B^z7-QtU{x*5mhGs>G`oofAi z-1HA%h#uJt?}|5#G85Pu?qZ#gJ-}~e|MzTgG0)nTUb@belj0Wy7`!Re;8k6LPeCyj zv=FOHfcp!POOp64f2JUMhFIS}>g|6J@-3$fxuGOSERNId`2cfqeY31A(c2E?CDaRNJNZ7wi;8lq74O+m{$yD_u#w2^K0yUsVv z$*1{z8ighO()QESJfDDHZg7Yi(66FiJ$!H^hJEQYf#M7)f9Ji4+-=I+c`X5?m5fAB zg-wolA!^o=ur7fCXu>3V1e!CKu|3MGM2EJsGth&;DldfORo=vkbg5C`9MFvwQt8u8510z?l*+WO z#j`Zj&3W&G_8RP4&$H4WWLTZN9Jf-Hwzx{>ay1@g{79dv&3f&tAH~Jzz2i zn$S<$#%k5{tCVXR85De`J~TCjJr+OcjW{x(FU+7}1WD zUe`CXSJ-HGDkz35uGCQ5z;3E>I^*1gNv?;_gp>_Vnvi=3y^~r(#zHjL*-wGeFX zWX&*y+yn0mxsi{iuxe73sGY1reK2v0XM_icL|7%!1P+o_!a3E|T!a-Z7dgmVE|d>t z!;8T1f06yO0^o|#Rf&}-M}l;NC=Zo6zs1F?%2dKu@a)Y=)ZW0^L8AkOR}|&$)#S>v z0T6(+G()6pZV(;NLh(7(w!Fm7eMKHs*N-@cA@6*{{Hr&0d~28kRcaS(>A`L6@ce;m zVvM*6al&wDR(ViqmOq$W;syPrC2Z}<5#eYpe~R2spqj>_2+InGYm5|vklp zR}~Kfd5`X2UeS)jP)BRU%Uyymgn4U zkR&d445tX}24qPXaMKw(VSsOPiFSv8e=?Dq|1p1BT6r;vZWg5w&5~?JJ>B4w-Ge=d zq7=~%q(DeNFas4hmmmmIf-6hU#gt#+RB7+VwSpRBu42+bp3mS%-@k|DqI~;mfN8kF zy6ub#kw^W~;+ce6Uu7J^8KVLJiic@)Pm-mr_?lxDh4?zt0{8M2TPTfCa?d?se|EDE z`^2~nr68A)Cz)igpg~-TnMh~ID>J%LW&>52<89BtAon{prz;?t#wyu7t|k{Uv5cdL zwJcBxU{;uPsnaXSaZvPNgh!fLxzDOvIyla))wbl(H*SXc%U~@jBKoC5D7>u*Nhi2J z(JtaNz-pwpc}4;&Uj?#R{}6=P;Dy^WaB`;lpMnT1#Gb0RFV_$un6DRgVUL$vie>qbq#0j9U;_Hm6 z9qvXqxeTTML6#>RXN8~zuPbn;w;TkhZ!(R4Mwa4kT`$M@ynVZa$RNDPnl8?JP2nLq zdmCm-unqLE(7^IgF0A{J!)nQo*&J#N4%v_^lGNE94jUL8_V2@yHzBg* zY4?*))GEPHB(4B%EY$xtu1o#fxIyhNY)sg+#srd*63ET7CnQ!|pNY2K{@}&!4l3)L zp5jfGdMYn@vfZ=3F@Tf*PfQ8L!s@wtAzWFLrJ-^mZm`bUe=-2fFVHo6dc3K-El<{K zg*ZZ{%Q_2`5B6V=>KoSFjLz#4Z@F0)#TJl2kMFa5mW7P*-2{gCv_JTTA_*fe^8pCQ zFP-6F^VW=MrAT3;dadfvOIjUz$(60wrwS#>?dw8pnZ6EfC`s<2I+P^0uMfqSX;x*h zP}2sPZ9-i0e;fQEp0Er9Cc!j$Sml#XtobdZ;wyz=OKVk0a~*if6glIFIv(3;vni3DfvM~^NT4M zYon^B6!3IP27702loYbxo>yfFy)}Z(ug*s95CJ#l1&SKo`995H zY^r+ROW#w0xXvgnQ8gxyiz={}zhA5tE^$JJN-bgyO;31M7iyw+-YxG~u3itciC&sl(@=mC*82$pq!eI7}$!#ajBQRZNaKbHPDZbo|i#e)ZM!4qmN_U*B-BR)JL)RhFI-NpTuU(0QP zBE%?AI-ATVtgYPMHp!JYOHBU zNwRcDT|tk$9JHVcb+2N^eN3gzW^XMjh06a6DusSFpwbYf)vbp_CpSe)n>5CDfMt9) zf0rEJ&F;d%@>630`v7RN`#*ckltET8@eJ z)206>V+;_fo()P7Mx1GCS>`$z21j(6wKu{lFsNd&s23OF6cw@6-KTdZ!jEr!Pitj$Np2mHs%@BxOmy-c~7yP?-PDf@|a9e$kS7U zm_kAGAKq^IvdS;x3jl@Y02_p4*Db#nv(+ z&Wy*>e%f-D<5{_aez_epbWMDrf4xV?;}4G8cBHJd#w|%s(A&C{Nh3V)u=*107n5Rq zhOaZ_Gx4nU5c@1IOei=vmCqD8r`<`|Q2gPw=Tyn7GSI=127)@xXGo|WTZr<^Gv@M$Ie+H~ zo7hq2oQR(BK*Wr=SF9{jR( zaZap@Z}m?y3ju&RoE&khN|Jz=v34_-v*hb_t+^ZL8a57GmxImCy4bAYWW(LOen*>i zoJ3Z4wP|ReTG{GN6@Bitnb*a@N7+_^F|Dv?F*W#nmg5SaCVTjBGTwO#vVXg%#*Mru zt86Z5!s*H)NPutN<7gdnx^bVQ$5eN#RL2^@8pjC@mv?VmALjWm`6xe4lZ7M9BdbmH zYiwr2D>CI?zoET47nOBhmU*+^zmB`HzlP}?d_tvq4wyw zC89voM-z0x7X|>22fZsBvl+xvp730B$kgjK&-w-uO96l9reBpPmSaUCuf(U zQpBf+3-}WxU~g)Q%z;^>cxHrTf1=!}1j9RsWk&5TNjVK;m;}zM1AjqGHsf{-u_mk) z+2opAt+-VtiLg>=Y?oywl5{cDfEE1v>%2fUwP)yvaMstN9d9w+lKZ&<^!e zKHFLR(~>t|;HNX>K@%8}`uSOs6~&cTDMY;j)tw`J*eLEGZs5oxTpqV>bUw;ZSZPF%|GJkAMI_+g)zu?G?t z1wTb=o`j*s3KkBe4WE_IP4bINMX5BWR&;GuQBNuUc{qzA8iup*hNhPz{sXaUsCPx$ z+W++MOM3t2dw+e73IA`UZSY`L_nBn3>hEjYx~s3M zPEvW@yO+0hza$9}<}c}rd?WJor8=-3#=QaJuh!wM(SLr?!}?W08b26k`4p62Y=ZGF zizth;yk$fU%X>%oVV^t#Nb&#^DV-#bvckNBpPco7&S$7GY|V3&*~E{(!ojQi6qV6- z(+U(|bbb%3j}J<58Zv!813_GX_+YoAB6EPknIzwlgSrE(&;=BxmnbL(Ae;^O0V7FH zR%08MSARW1Mdh@_(;clmG{uSh3Gb}Ym>CW~IXuD--s9tY%&hV7WZP`}>|AjMC%g~xNj^)D&{lt9cyBkE zfvN+V5J7o(w7-8Ka9&yn=iv;j6)vQoFacpPN`LtBv%q?JA*}Z&7nuv{6uwKWzWT6t z;y`+3A*8P!jpqu~Z)yGKsBm!#Zi(w|{DEQWumg3_Ilnp&933WIsu3!PvOf1AQGZWmNz z7k?rek_VwSH_IoV3a)8C?H8NeC{u-Nm*V`^f}~kA)o#O7*IO-VQ{`wdyU5R_34FV2 zEDmUJkSEJH?E~^tcT-VW!yF6p%Cc^63R(#GMfT^&`pGo=jhL4BG)=%~>0&a3RJiMF z->XX#dQ@%HA7m_kQuX>1))wWCKJAtuNq=hh1oAXma7zg7^b3>-G<_&f`>^d!z?yJ@ z;`L(2u~MN=vkPk9n#LS} z@=J$nnnIeYAncnun@)T@x0~`iO$8Z*_a<$372;&KXxmceZGfMsoeDBAQ-6N-lYHKv zgsaPSleSmwvurlVrbJJ=?z5e@lIpVrPT$IbtM<7?BhvC8Pm$W{$}f88hG|eN$<_#6 zsu|EEy`xM^4ge=3&R{k^wRhu9K?Q{k)yCkoQ4fO)rd4`JgcZS8ttH8=aDd#t2D6YM zdNB$Kt**u^O_;?tAl%T}YJa&WX>ne#NT_l2L~HH)5&0~fi&GSPAWsnK;x;&GS(-8i z_BUC}VPDsldGC&r3QCeU?-Uhh^TJRrZVb6-f->2oA52t2(ih{r7ODo0h=*V&Y8eFA zw;>eP!Wv%z^%j`IYckR8$x5X&8g!9wXL_CFRYxsr{-V^RpT9VFK!2Nbl_5tu%bBXX zDl4``A7w>0ujTWNrIl5`-$=Dgp&|-Zuiqm}Bo~RS#D%MQXz8(-q-dzIY`f^__YN?Z zK&e#G3`lZVE6KEfW*q@2&;CXr^;1ag3rsbUe@Z&5ne1;Xsj?t(f>k^1x6<0)JVB6p zfWEaQzn2zbB~Ua*Gk?=^O-|ksZC^dk?iuSzLkkNR9@#m;WAfm$3pfcFXK=Kr#vAo; zccP~Jf~R1_6J^tLe*TiuWGJUuHmtUyh~nKsiMKn#VOI9Ijur`H-)KWAm#WT1g9e=2+P(IPVAac}0O=0;c zOl0B&#uJn4$-KYhAv*GH2p1zWJW*DW0u5wG{ehmy2Y>bke5gLTTx|x8cn}&IyRC4p zG!|>(J`qKY#q8MKh)KUALgWTWq@<8$99{l4VB`F4Ek@TxCtWIlNjwXJ3bll0%s3@U zA#Wif$rXvP zYqlbllXza5m;PTfDQ301oX)fU{80+NCi$%Gn;KQc7kpcy%6|@QCELKy>8nY{BLU1~ z+@kx-$wcjJWu|}2W>&#$w!v2(P<%w>TiT?M7#V{0wtu4D&?Z~Oq-86&JXu^nCxRM` z?_Qql)C~F7;weLrf?G?#^1+4uR^~iTd0UR3v=vVVO^yrn#bzcyslz$G*-nm!9H8Cm z2w%CD7%8Z!2rdDj5fcATx8%(b;tOm-MGLm6t4NDrea4z!b(@3vP??JbN+YBkg~-)~ z`ZnYAl7GF^1h4^fW}j)|TF|z)*YR&nD4OSPbamTW^{6jTGuK2AE#B~c`}E@c=U>E~ zv(2uBx3p%`SSb-v#?iPJ(c*9Y^2FtSSxh2ldKLPqJsXH`n41uUI*i~`kWwu7_L$7{ zW8jOYljXDp$p5$UPl5(K5C8EDtHY=_e=06c+kcq-OsfmXbh-^_N3V2x@aPSX-2so< zXE^CV1T*q>mrw9~A~&l+w!}5d(%UWyN}_N`KBr(_#IjAmO+yuHy||8;d|4EX^FIAk zJ?D=(#LMjrfk!K|_3s~#ngBz?xq$Lei^F<{SG_n6e(TkQtyoAt1_n@+(D*8!{gT+> zrhg-otn{qQ(EnK+4{0(&lH5EJm+=2>B#feK63~_1{w7Z``jD%?zB`Y0R^iTD&gDdj zWkLRbUfW5BPJihfqNN>3+&doCT02!ZR*`5}`%e##D^WZm_02s7`3M%3(ZjOxWeW$M zcj58TWBoT>c8(8-D!ilWHW-Ss-gYA0PJb*SzPFVe)B1TketEes;f?^^_EcGRASI_< zWkz(3{WokkLtiz7>fZ(Rltt|$qZ!DqZG3W18qztq3V<#Y0^S8aLjO~CeAH;2UZM_} zpYy6+B_*{=6Jh_wE2Kwr2hLJW?gJD%jT)ntD1&+2tlWU~dASgb0YdMSu2V|mDSz*3 z3}_64_i24aQWN4X+=-iC3^PKFs&jTyuw$WZEKP$F2c1K~H#aPE;-UqAFOpa+;@EjO zMMu??=1HfM3v3FLSZ!=wx*(6@$CR-?WstY^9nuC(WP~~r^Uumug0A9^iDZ2uK{xt4 zq!FCP>lPsB{QsCXu7Ni2V#Hk%2Y*iFbyLSQq3axv>EjycgRZ*VC4taXUN?o1Vv09y z9#hAv)B!G^v)fTjah`5hF?~!KYg5K8DW*76cchp;CX%&@0@pBxGlvLr)qh{l#a@ihld{?e!7oU-Pij(wXs>CLcR4+mSn7Jh{7?Me{TV3bc^n+RE z+?bX^KB@l6q}qk)ys~7g?s%U-DI{8(nm{ri#1=3V=#%mxj7_`fU}Oe52AfyUP^EpL z7)j*&*SgVWx3T5&w!Vd|VSil-G<}+5j;3sy#O$&mh_Jp!tedpl&sLW!a|`k;8Yk)( ztW$fH9|G{xkZnp{Rk0ma zOI)QwMZGySry??f5*vXJLf=2??SH_;(d85h;i6I~ii=6{gAjJBfg`C^#!ha<<0r+= z44!vVwvsz0gcOi7(LT@ISq@SzpBe9jGCBZq9mhDMi9u0VaFit$KM2G|Ov$0{Oa)09 zW*kayq=Ty{fmB6@^M8u0%;30J!K^P1dM7A`!?`~m?e6U!9skIgIu?sG8WegyQj!pt zgq1QXE?qXXQEJ(lr z{h_c*f&!z2ke4P;uf=r-TZ_FBf-xP_)|$(w7g;mDYJbKT%>}N6AA+cwF#R6?xc?>W z<9^)R-`yjRAZCGIjiMG>IGIn_-;hOsU1njNmJ`+#g7Im>U~l(im%k+%0=D+);oRvR9tPh%QWN;gSK+ zWx9PoW`Aqz26Q>WDEg>NY-F=ByxuWvUtBDGXuRV=nYf1YKR&E`RO+YyI zCq{aX%|=yXv|;clA_U&K{bZyszc5Qqs5ADae##=+gZluNC7N^SD4<9nY_(tc7D9i{ z;5<+Xlr3`Dwm+iRcn%CG{QL!TmSXJu84y?K3hJjS zr_hM>^Pj-;ONmoFFU%=OnPJJ+*{ zMa0k;brpAXbi);p9Y3HwGNAb7S1T}&a=w3UO_vr&e(?%6jVMWHH=Hb{?8-gmFfR)g z&3_HI-}Ql7Tum}VEkicz0#JsICm;?Eb3JHrA-KZC$*S+gtH+UxZBt}-Be{{Ch!hAL zU{sOl?!zn9itRRxuG*^ISO_e=TB+>iHWwSml+kQ|(PVER00Y|t4X>%P&z91SQq|`& z6g9X%p2AP>BEV0NmH)=d|CUkyeIgUK)qi;_ZvbE-*UA(Na>o5h1SKa|$I18l(~UyiO4`x9=VGJx0$tMW@F-Rh zcf-JpM+&%e<-;HHw|8y^$x?Z);D7g`|4z4G!oO*%%5>a|1uDx?vQ9`VHKDxiv?nt% zJdPd1W7xJ#hF}&f0rg8tgj6rdu2sFHR9y8UTWQgXYF-Ld{dw66dJD_LDVBvoa&?tQ zlMMH2ZC4`A$4>;3%9BOgM{%j;x2ghc1}1&8Ym(uY-<-GB23A^`8(e8uTYop#SpvDsqaB zv`ovvaG8iWlv1@4Q3~4F^M3)ESicWdU=)Ezx0y@rGZ&v@eK5(gIsSORj~S3$dyo~| zt1h!yHAoTd5FUj+Pn+8_tbu9!zN`_8I$vzmwu&?+joN`J7VK=*+7zL45nVd_y0(?3 z%#zF6`n$@c;&QSQkZKumR@rczE2?G4y<(FHZBx5fR7?7&P~v70uYdAq0IO0y##V0< z)L3|>z4GHFUxSSE&7H3LcmQFE0*@W+@5o_;&E|uKW(zx(r^kVb$}I#-=1m|3RRe$J zSD(+zySB?I1iQ&+y$2tE@mbK1(7wx!^7O&((ZfT0)l!@Wm0PCP83braT)0EmeuGjh zq%3e=R7K!y*)8EEb$=`fIr!f97w5Rbox{&;xOG7v*cpC!NbjzsMpTjD#_IP|3;hp$ zzeA4UF}C(lMo_gtqy8hk^&@XL(;r^qI2Bx~?D}_hQOp6B%^u|wczzC1+6QA&HY2s< z%{1ggdpHFzm)YiYG9+r2N4MY?dk5NK63pbmFH9HzwA6x)dtv&XlN)-e zK{A6eqi%27+_>kYMPdxJL_VpC-`Jz>oIvubq#yUb3kOR~XN)8Q1b0$!+YvlDS1+`> z6WlRXrmQ3+gMUEfOThMuf7mcX`^`Jh7%f zRKspAZGVxFA>N{&IBQ%#`7`XNW`zBuyte%`&&KHw?PqgoM&b_r?2ouM1`DgY^&7hk zv6s{Vz)nHYT2#TQ9_y@J{OG{dQ*D)hi+XCjJ~&GqQe0i`rA=UoD+v&HlOIGmrk6xk zQ(uyj5=}>r4>QiEQbjyZ@IMrko(4nDQB38fk$+y2q1wW3R6sa)aVcdDJc=d?=WYW^ zyl64$fmfuIU^&e7jxE7f=bOf{% z(Mt70_~|?1q_=kLQ0ADBRQP981%7})n|JNIP_-M{OIex0%=T^imG;CK<1ArSn!(Mf z#eaLud|u8-z3e)u_o9!^9~~gGaS=C#aTD+s0!gawu!4e?2V%KT;z{53+8?1FtGK!c zyxO&p?07_NIe3mPuJ_f}V;R)vp;aul2Jtqzzg2nMfF^&9532k22DRmwt_Uoqc{iZ? z8@e4wxgRc)olb8Xnqek3s63=$9R<*LiGK;b=$!bRoZ}S!rWHatDr6|7*n^ODxP!aY zy<2uY*=e!@tX-r|^Q-b>97J;>h{n#N-c}%f4xA&f*W+#wkAKy+ z9dLhdR5Eb8F`$w7Pf;<7@tt*ndJwsYkMJr1b#^t)uos!URz_{JCD=|cHC&=dsVn#q z963d`PgBt0px5+XzdZR<+^jdsuP5aa<4db$k6ne@S@#q+^;p{^xQLY+@=Rg=ZnWuf zcFd;7kkN|AxaTAMUQC;9dIxnM*?+7THS8HGz5g4SLF9Hc^faF^wJP@%FVKp2zGM;L zwv&wa@Qyz9(7$Da=iYs7;I9d6mLo2yYYltWA54Lf!EZ=i85y$I7-(5*Y-{PgxW>44 zZ-WVJjRlM`-DClCwy$!E#Mo#8V}|&5GJ)yz`X0<+|JFvM^W)EAHfq>yhku-YR{po! zjDmju*IJE&p8nU`jWptmH5JS9)=LT}yinH@DKm#+IY}5kREjxKoKYEJG84T85)l-i zMCpp-?w)Z=*%#j5&n6_>i(t=%JR-uD3U=wU$3l3`$k7}`k z=H3eAXjBA(L}^Xp=P8V+&FHi5liw+r?PL!OYg}xjI{$#moq!5#u(7Fd)o2qlKatF@o(F zBDEU~*IC)$Z#yE`^l*lxC}aew*STh#)VxVs&# z6~<~ti&@cbV?+Z&H*up_XuhNk&D-8LiTEu|XWI+&xFo-WA^XGHtC!*(#{naY>O5Hpet`4*+pAF~==;jzrQr+DNMqUASLg9~p37-X{1T z!?k>(i6N^{RwK7iZv48_X$cf=<|A&i$sKPSZ@gpm#`8B-MSrDn0K;9C;ft;W)!a!A zh=NUT2ELaX<+u*$V(fd`E1e&j7RDIt8ALv3#6b(0_4ZqC*S<^yLgJ6)tfWDF!2A2) zNu(zGV(=EyzsO9;yyooA5a=%LILksi*FZOW^ASzoZng8TGIz%NF&+JHhF83`=oaDq z>S!=HIysgHBY&^(YF7Da%E54TAy>(czgTE<5T|?W4lD)77<~5=yiaErgWrC~k%e!n zo{O)*U(~0YD#_k&L;xQFuK8GG(Msm-JtNaM>q`^Is6{!1w zY(ba`L4OA4`}>E30p5YcpU?Y8FAs4?^#p(MJCyM2DRm#as-0K0!j5}t#t;L%B){gQ z`#b>#zcJfDS8exIKF?4CZF8=MX^k-fn}h-fOjUVMGw>(}7Iq>4Lv@v-G&zLJZo+b; z$P^!PR}&`{NP$Kv@;;w`%JHRH?zPhc;2#oZDt{BKJ|w`1UBhQ?YaN-oK{@8NTAcJV zF%3`!b^^re7>Z2lLkx3vFrQ@0d{#9e!u(m3K=LJTk2p_`5Jem7T)RRYho)4Pi<1E4 zDx1-f^B^CV(-Hna;&q%mB^867=QB(nUY2E* zBY#mOj?NV500OH5!dwEj9PySUNn>ACsI2L$63~@pF-tqcDL>+vIjSaqD~l-rQjy=> zv`)!&Z4adok`AEEQFq}pcIu!amru&+1ug+i^c-eb3JF)`Q_7tzg(i3X{nz*} zh_o5Rqo29Jv9lR4UWL(PQ=|Xe(-hW4m)ix^c>!OUo;|=mQXgqpIUCtyon*dfpIkG z-xB}f2OR2yd;&`}ARi9G5zZc9Ab-cW1#tgjGLaE*G)Gb|s1o?Fvrx z8%T;Pq(lZr%4=@hUF*w-z=()F4-9QI7SmBa&xb$AGhO~jX3`wA)jMFsu zJ@xn3*z~7td0iHe{PVk0^AtAS3y33@gAi~WjGPA`qD*l~0WXI+ppL#gXn*XR%hMDj zhh>p-cxCt7>!?u&#vbSeuV=v%h^Sdr2sX7O{|1bgJx!o`DJnS z6YNoo>JIQUs|MFRiQU9q z1~N&-4ubSstf2SYf!j$P5pdgz9jw<@<{T8GtHp=Q48+c54jR}3_VPrAXE`Vez(a=< z2r4^uLRE$rp=ad^}|45!3{3E~kSm3Jv`+uyuE_#G`g%Gt4 z0vMDR*>tkFz`?<18SXePH2n&RXd(ma-|UB|Qu1 zN{W^YjRdPndW_Z_bA!@hr|m2FmsuEj)d6^4mXpZLII8xge1F&M@lDIAG3by*w7D1=TZ0>mcOc9)lxa_x*HC(E!k|5HGhq~wpj~XWHDO$9 zci|VDS!24o(0`IF?gqt9vJF|#F1T?z2^wLm*k;>_giW=cLIe1=)-L=d?UL#WN{Oo* z!z=`^D6(8uEUn>HBsD4vTpPU@_-i#1j#!q}r-KtTV7iE8ybWOfl85pYAdUlcrJqR$Wi&WyAHg@ZwWq-gO>(LW=q65`)QPt_WgFbn_ zN@TowftF2Yn8w@5G6=3p@(K*m{crTqMKrAuWA)+pYcj1x$Iw{WS4Pl`VPIKj?Zqy- zjRtru!Lx*F=~3DmE(w}|vP6hkicyXVig5IsJyYFuM=RcIF0&Va{3%0>oCq*1+mCy$ zCz_)@=6|u)5~e`X%o2>DotrorWz;G+IeBlH>l|$y-xAoM+u#t^N3)4z5j@(4)9l+# zOc)-|n@l2JcX!MHM%~R^0BbGUrmPpK>Nm+F4OHbS+iqdM`~vq@do7cMg+q&`xjYBj zVxT(CA$;?bgvihC(h%~BeuVdJ%}u__xjJGa^naV+XgvJyzTdV_A&JHo- z$-QCH>|Ruh_gzT+QK#4G>}*;&c;gL#>Ak=vB|O_9jrXjSAnaV>Q2_lB}@tM$vqo#Pz@n4`Y(3;2f`57FuiQBwpdCd@C4UCm6rG-1KW=)>T0o_6-nD&rChQjb-6|KoV(12A3*aqcZ+EKlB=|6HHwBt zy%)JJVnvd)pT0AfN1!UL0whjxaeuZX392Ac`qHPjc1l@xGqr}rer1P!YtTHS6ri< zi%Laj%j6^|Q=54JQxMCm98G~iNLx5{F154J$0+hj5iS+ZgtxJJe|`IeF4HixDi9&; zF{qqFB`!HFu*ar!oy4&-ysC6dQ-2T6oK?d#BhF8&oEPQ((aE$M@Iq_E@wQ5`<2BQ^ zBKDZIO|9$pK4;~#$s+H@RuL}X6h$&^m$Ru0NcNg zByb_6;Ijcb8Z@ZE8XP0TF7Uz!nt%CMUwtLmo*o{oMK(5t@SYt?LudDbZ0LpqQpt42 zhyh#B8}tL7jHk{Strpptt`-@+ZBIvYJPmo_^tjnMWt(sP)Gz&T|I+t%M<4%9r*SgQ zJhZAqbemSf*cnAo*{UNkn}3e=iL>Q(ljySri#K(VoR`EC#jv=>j;dxPEMjyyt|f~% z3wj0Sv=~0X;crr+=uJsd%{Y=NzYxieEOl*E%2(dY$TF zbouFjd6&aMe)3=5Z54h7X@^_Ks2?zR&Cf`5g_ zbewL4FAheM1#&XJ4aFTWJ_Dhx#U!xi8gE7*o<1akRV z6ksuo7>45TOuBD#NZxiamkV1^pItl3F|o4-GZ!L6g1QqP$AA1;*l1R|;8QY!Fs#S4 zV5e;27PT+UXv8= zq!8oLdRVCu6{bI*gC4@>_p1ziOJ|^plvmv+q9!Rg%W<1&YwL&nx3NGky0dR$TZPk0 zp3u@2E{R&2%c;n02pz_EtKMok)L!scbAjE%Dc*KG{KzNu%>`4kENX(U2yqjMrw4%% zM1^-T%73SDA5=~L3Pqh0Uzxi&V?8{;t2p2WnH2U|q2;2YYl*ku#TWHf%LI0e`2R_O zI@PDlC&^yaq8huSr3DoEc7YAeSsh=KGZDoU-VO%Q=rAetUMoY>gLoRgn2PM+H!z0Q zwCrHHfz%V>i0bac?wX?U6#&~){Jl!jxfv~ z%Fd@B(_%U)i2@F2W>OAmq7 zyDS$gg09c)N_+r!nR-0V>Ax7Ndw)Nlv>`sAUeib9E6AWRtn3q=>d8$vA z9N*QQ7n=zJr?znRDqJv}EcDqZkV#=DBR7{dGnE7Z4?MkE#>MZD5^{%FQ|d?7DAD)Y zY0hyTN{_$REWS}$Vd~F+{z%hZ(XWG>yN#Xk@9;{Oeu|H9>_q}Let$&{C{$z zC=G>utC8VwHzbkBFi>8b%UM@4O1${$#3zZxZYEKmdV97TBH)VEE+|Ptf2|x-7-)c> zkYD0^NF+TeXC0>P3mh^?<4JZQAuvIa1pEO8bi>>s?Xi`BCz6{mK>fl?-u;Zc2QVe7esW4rwL#q2S7*ZI-`y8m5?`qx0bbo_Siu&d} zsgr8qCserLC+_iudo9jN1)v8Q!ZbNw>bJdRwJ=hyq? z^^$FLJZIG?CRc?K4+2O_EPwsvcm!~4%;2>Tq2la2YQR5}DwS3h-$<<;4{;Mx0ShsT zbakp}s8G4})W|ucxrJ_(X^dGErpQj;dtwHmtS*}0LQ*qT6<1yJQGE*CthsOm0aySI%Bhk6Qik(! zBc-dfK@lW|@fVFbr`=P`<=dNSx~qFoD?7WYS&&IeeyS&F@-u0GOIU&E7ehQTEXwSA_1A1_u|A(5+8v# zSuy8x4c%n|`-@-aDDnRIXmTg*UTtsV#&J_mKt9}|FYYd*oY+Xnky#G6^sAf?P-g&h z#vATcs;4whe(Db&QioE1y=SMBb|f}Gy?zN!jooUP5r){YS$}!2<&1d{n=S+~ItK{r zH7q^?9MTmr$i?}%G1Jlrjw<(E(XnwDB?m@vIa9=pb?A;;eJC(sZBa< z>=yR?^Y&{K8-H}7e9&>%10tNzajej3`QV3HDKq5ofisD7c0$o{k1M#Hq5d7 zi4|>Hy%ZU3E4EcHkpwFZC5;7l->EAfb_|pA?uP3rJu{|o!tr&0qk1B?+I3T5t!=;c z(|#Ep$w6P4#qD&Y=Iw*kJ`~&Asvjy=vBoK%;ybtvLVrR#X6A8}NSfYQFR33uo#j0F z$#v9N9po*JDXw8S^`VV?L=FU0IA)coN(lByKoN_yVcg)`&XSdhWKg&F$+zSAb{y}x z-E#BeM~_xCT|?YvDWFpQG)Iyk*G-+f0mt7JGwx7aj+!^hI$8`&9|tFRRTG7EU!yoP z%A2<9aeq-RUP5d1+YTENxo;^s(r)V4>fXV(iO%52e@T|JPrzCk+ARK&+kFh1S?XLQ zZmZpHk2-Ak&0e-+Xl-@G0Z$}(QdY*->mr-I$JJ_BPA2&fjDxB62MtkU4A@r#Yl|XX zcA~|;r*%<7;3zMbC0K4987esxOH;4uR_*YKVt+#=&1}4NNM9sN{QKfb>694PlBg)E zp70PvY;-0P>-7R%4TmVC)!gX{rmks#=HvT)pUG1*RXqLJJT* zEPv`uKaISgEaJ*(+=b>#r8q;iLU8k63MhK^X1SuMK+M(T@I_Gnp0zn;hQ|4FbRgN+ zo?TEiKDUUh9ab-+yQ>eIk3Wt~5Sz*+tK!yNvj-=NH@)N$d4q668=9%p$@_+aIaj#_8S_e*tA zA#clDMCLU2JJe?7LERjFlj_F*n0q|yi+)dGJJ(@gLwW{WyX)Uv5?bx7n*$9M?lm4# zzV+3~zp5R(v5uZ%ug%9tnE-}doB<{U?Ht$M{*hx$acRXARuWU^yP-us@%iJhfPYJM z62On$!`$jb>jvH(n2xORJ58u{hZ5irxvd}`*Z6SK5sX1%15CTRW)kxYHF|+vIVKcU zI>$D}eimRC1@sM04vk1yRIu#9ywjn*@jZq9Kf}Jn3}eUL#NF2A^})C$#Gx^Jv zekNN`J_og%&@`WUF}m|yhJ)eA&3_W9MW1-?JJ+PmLNq$D;g;ZqEB zR)zp6KHv5`Xg3~!t`~hv6Mu1|fBp>n>y}D3u{=m(g&mb4XzD9?@!qRM8C*`r6yq;w z&0f+%go61X+ANP-*zN<$xLdmf0!;2t;!Pv}Mth7IcWW6TP>&4{5+yk#BN`N7$c1l6 z46PgLUGW#zYc?@=8#vLObafN=!GC>Bco-yYPjXjGYB}uX5BtaGulbcSiuMl3kSRZdv^*ob_HYI> z7vYpMI{zrhLJzA5Jm^C~=a2AGP*q|ycrq_&9_!`f0vk8C7qA8UhT1+hcYe)j8N{PU zYdyUe=;S@%t^aH4gI-anGa8>-bNR6+(p(lj0w(tt^;NSK6@TIBqeqzPI`9&#B3v?j zT2#%KY#?+o=nA~?JRRx71qjJ|#&eXzvq~lc9`Ew>c~P@dyzj6lCNLR%uSYv{gsjJj z<(QvUnCfe#Ufa5CGIDq}(uX03>bSLp`YeUy`ulZO)vq1_R0VAjyf`lG^LeIdMi7P+rB`Te1F#nlVd*Ul}ByeJ>~g;xb%Sy z_TkM;Ew7P>gF=dcKHo`g8f0u6CdZ0-|0wI-;UB;#dT=y&-9H22dJrJLE1fID}qs$-gZsRG7bNC4wYo@O}C_p}$X97HZ52cQQO;^la=4 zdGS(MT_ZC>eeMRynKX^?^*h&Ns?_yc?*;HI=WZxV{7bCl7bH$X;Q_+kPv0%7L!g>Q zLk=Pmj&d#*xZvuN7=6*lA!4&+CE(zG{na z{R(>Uz*+}uf;u55PywJA?6`bGw0Y(rp1C;d@UlR4|4p7z5LYV)cpEawzn}Tf0-s;6!R|w_;oSCpntmA zs6BX+_8Y+73gUW@ROmCq1mn&Ybj8xzZv^Re{nNAa*Xuy?ez*n57e{C7;NaqB@_{9{Z)E?pKX?(2Q!DVT2y<}Q zKM3J(f#CoGmIk9P^%Y7Gyb1niRDX4fg6$r+8WIlFPErns3wfxVaLY#=`Wn3V$)gs^ zt5hVnA$G{fChcrS^*T+sQLC}#S*hc%WA}n(Oj#YZl3hNWspgCE*j-POI3~$x!LiK| z15|udZ~~r@F2w!Q+e*4YV4o?sE_a;gxTx2(9M?fE-(Ac?1)Rr@?#`pmvwwr9b|XkC z#(YS}yJWtcRbVgx+aS4f2kl`?syM`I=x)zcT*1bN(SF7IzaH@ME_y(cG|offLo|$* zb5C^!9@H=rJUzv7tDY!q5Uo51`A?_?^NBFt{I`7l1!gLWp%xRBZfgJ<&hK72iGKGy z1H!IJLuzNRM15AcR+ zF9~w>F*7(7{h3w|3OwrWa0l7!(hMj0^*R`eyKYn+X?JCh%CB)nJ0f=%T5~EB^1A?- zvTE!ZGdqlD7xS%$5$b%7VN@_?7&S9Kidvw}C}Od26gBfRj3Pk!e4_}!T8^SU(MGHT zn=&712imCn9ktV%O@G7Zx74;V#C>2n@V{8rs*vgQ)UZ?WF4?AnuZcIVYNbMuVQ=h>ys z5YWjlu{^I#NJ?wB7Pr&OlRYD_TZsRyR&nMID^_BFVz}L50e=hoE`{&b_pO$`#=cuX zn$o84IuFd*&tNfwdq)(Ph+hxo(4Mg9f^T1^$KQh&5bgBj&AT`Kv%^zKG(S#H`Umy* z`SF|npE~g4re0`>$nr#neL=aNw>m|P1C7hwG)=;3V2|F-i^{&x(Tl$wHF_8tt+;8g z${7|>Tqa|jhkB&rN!WinIix7VLYj_x_p`X;Uc27Y+kh0pi;0d zHk`L=XQPACgG4yXLQ7NgksZN)chEoUqeBaZNMWB{UNFMWadhs}d~lt8nsyYEuv>q~ zhfnP)PwxO@v_Cx;bsY%m?KA^@LK+L_ujHiPLf#6f^ncrU(PgCQKh~r5MA3>10suLI z9XRrjm)c!{5_UcWWFpJi(f3clSJiCo(u#`x6VPmb^|gImI@$r(11~LQv7~hajCPA@ zzc9Ds10tbe;zf?0jvkFTAx@s?=yQe0z%7%9VM`3B#Vir9yvGRJyRji}!UDerFFfgd z%QoF!B!6hKenlFrW5Wz=W$^C=-=oaNd2)%(F$0XUs|>?8km$9|THlX#yM&#MVRt@X zH_9o-koc4>W9Z)v`!HsVe$;M_SgUf*sM!pyU&Wlf4(O&lxlB$<_)SZ!T|rUhAY)gP zAZ`#tJtm%ZbEiDRjI7M?d7fJzZXvvpmY1pMTawBP&VAH|_?t zbU;kLS=PwlD-J!lRU;~pH#5bq>A+qx1pqi$7t!P-|L07*c$zjqqrwP^&M>Ub731v7uFqRTXfkkDBBYV&)=~lT@dB84J%q0*NzrZ37 zKwv+p_RHc5SM{z;gOn0(c49*-!Mn_BgN%PDvP)5M8^C{xI5n>vC^uQTE6@cYJ_S~z z97|SLACnP6eP86Ujut-an9W8j%s?mz!I*}K*gN9F*E5)~-@dDXXY_Pjt^rQ81A=&( z$eHc3T)=p7#C3@dZ<(8sVBY4_T7H7awoZk5m`{222w>D7pFg>$FUn7NEu}|OB&dIY z3=6@+vdYv%wxag=*pdoRtK4yxS`CPCt85eD;^PuUBNgXQpg0zVe>CtMqbGFFDD2ro zT&;I?yb^o_VIV`JEhse+0gKc9i;Ih%yKw}c{5I+kmmPUkjBfq@>Q}!?T^mod4LpWy z*TlocLRwiYnj5ivQhCkL%$r{5?L2?(pvSF)5*pTL>TyEl6-f^giOe;)j^}voDIXca z{iJ3wUN15rIxbDzioOKfyg29*fD#{!Z2-$WQAkTbAH>mOc-eDznRJD6F+dkpv=Q?E z#bSDE-7K-Z{HM|x_kvAvh1a5ZM%6udcKH0{^bjW-)7LD%8Lk-DfQMahtIW9mEy%RZIq)>AU#<7cMP`pQ)V7U1}buq&V79{H@YTS5z(zcJeM=Y zS9BwK#S|QzrVrT7N%S$nju<>kn*fO}$<K)CmNBhN%@IVl}dLkYr+8U@8q=!=NKjgP-P(x)uy^YXo(o<`mCdF9R6o$46&3O+fi{JPNXyQuRN>E1!SLb^dE%7LwAy3}HeBFb4I_ z>B;%)`}8*{KWaw+aB2n1R;?v@eFfUpV98@f2TDl`4le7@CCtJZ?eF=TFrR1}pxil` zQ$OFas*VJf*f6E)%?wQ$H8qeoGZ>R+Msu$Bf!ueZI0>$V7@=UPR?Hj{w5-b+hX!3o zg9?d7fQ^5-kXiE<)OFz=3PguXYS$bWcxAZskuLizilMiE{uM|-q zRKHR$Y~BG~m86#uXg&^^vqsPH0udS{Q7~~P7jOScWk!~u1c z4XHM3kCFrlb<-bP(Y@A z=aqljP;+}e!DzpPCUy=R9_H0}0VPdGX$DDOdyoRTB)~Zb1FnHC;Y~3fXY!B0A|bEg zXo@VNJ%=Y#O;8__n~{({`x?>*E+~tmkuJIT}}j$&I~xcKGi1eTa~=M+_x_YM&h@zwbZ%`q6Js`>$R<{Dyzm ztOHo9r&W$I`4j=?w)Gkne+#5TX&t_9Xl)-{=VLZ2@Lr#8yWDLqQYm>a!Hc-ki-F!B zjYb_k3ea7Rw3)>$g2WH%w5F)W=#HJdLnxmJM7^c%;7Yc*B-6j@LDq~`F}8JWOrH3x zi=^5bN2p!n5@nM0UGaPN4@p`*w5Wfr#pT%Uz;(j{$tZ~7zw7H9M+Sy(=!78Y)@j`` zJ^w*&7x9+&y<=2qnG9T4U^4_wMbre)Fxb?|E2p@tkMv42r}=o|xh`v03~$3_Uc?vEU&Fl7p0JVKq|dAkSE! zS1W`3D*G0=Szp(F6wV}I-EV&(n#fff+ZE(RSRycKg-8$=xH)xO6vP&0fvcsef%b!( zZFBYZTTkER(9)h-%}WNf($F8sLe$vIbAZR_$~(h2dudqJ)melT0i-1F1WIgBteg(& z-dZ#m5c!h^q$I)jagtmM(D`&8f)+>M2uB!FZk_X2{ zvIp#=$6k$k1zzAnPn%dCCU+pWzCYOzC+%Udu-gMD3P()&-u})QiFDuP5TFUq3p+#1 zP(h3wPyb6byQW4|owY64LlL%S%}Z_6ofqSz{TJwa^*Poi#jgkPhU+Hbg25aFGmq3h zY;T+O!n%QmR#|I9m%M*xC7%6msWT$8ZBiQ<@aNSVwFfZ{>vde@qaWpBM45%dW`jRbnp%b!kp~|<;m?k(Rr|)>JkveD;~KP;)v&B^e4A@CTuwto<_0~ z6-JF+YmA>T35kEWkfy2cZfkw2n521sI+^U$`r8zkbiiJ$dIk-%TEKCBd8UER=O2@Lz+A;OB`OsKKTE3V z^)+f_fO{N;tdFaf1q!T+X^!`J?BcG+!%UV2JBtg3JT!NA$ty^!aj7n3YC)6QQb+}- zMPaGCIWh__+=X zV#!icIIn*@K*Ec1@2;7_MGg*&^PE?~ZErpHXkY0hyFKi`8ypGwb7bZA>MPA2?3xZ# zy*8jET1&HT7Z$FnVXds>#dSPea4SX6MFmjJ2P36ni2q2>6a+wC>K%z2K(1}8jsdjP z>_tk3`sP)}kVPJUBGzK`y0BIzbu-0>q@k#TyWM|rMrIH3^tLallvXS6E_lY}SM_46 zg7ecg{^pkep>_=2g21R!>mS4npwLjAPx2o?;>(Jx0S(*~(?%Q*M}yTc#EWn~fkWqX zQu`?z52_Y>OZH<~3@kJ(&e`!V)2{PuJS=kZT~SXr{alXJ^|N_kC)uEwRx+%y`!z}k zG5UWKZ!mU*$^oRWNS{^D^YI@SFh|+YL+IRmkTW@(=qA3RJ{Sz~spT`VK_;F=XEBS$ z7aamKkYkljvcC-ogJ4a%n7RXH?rXi|^=*%8Tdb8b(Uhx?a$X z(a}cmds!2Q^1eR+K%O_QmG-RKEJ)+Fr(u)fk#zJ7xgLZhOhiEvz&;hhSi+O!XcK=K zb37v%_%lpdF^Xl3e3Ap4T;wR(DCl{S*e{GfH8Qtb6LTqqEWW}kE<{1J=ozn`%)HTK zO+>iN?Z?n1nGChUHL;)f;_qn0(g5vogR1AB+*NF#+ur1-oKB*GY?Z6RVvL^VAtcUv zC_1t`xy(AF8<7LfRc3EKvJ)ycDxBhtRq31SH-Mdd zmY+{Hdtv!8?VFp(WZ}mXbm-fR&01c~hj?f)2tH!ssMWBfoD`;7wYf!qJ`Dhx8@>>5}EZAe?p2lC>(t7;liN*=_LBR^4!)C}pJ_se`ljFj0&84^`M z-wX&Wf>Vi2pRLzwsZW3PB4B-<>o0W4Y!lX5OLNwhLl z(=l69biXI{#kYh>zdgC@mY73jw8LJ)>^KAdqc=C;_CX2~O;MUQshukrl}{cer_-(1 zUQf30vBfDE*PUO`yh6TJQ@bDl08audW<&2{onJsEr^vSW1~Py8z=H+BqsOO@pj#_y z&pzByj6NODuBxZ+16o@SC&I7Vw33zt<<8qGa0$Nuy0sIE*BxjA4N1K2#oupsLb

heaJM_k}(J0Wimbf)AjD?K1yFl5*Z|(&#(&{IZ^VwweYM^eb2+IY>)@bSUjV}#hl@NjkmtG=$o+UYt~}Js`K(&T<%k-U+$*o z!1jOqZlzE)>8KCow|>XprCsc{(Y}3C?sI5(tZ@KSzLkvnr4o0#U2Y85prE{BTlE z0-H_GL)QDVaD#G(E;|=DzwPwS(XuY+D>8q{9LkS|$66v{8IyBpL=*2){%o*J%?(^D zQC`#rhGTLOH>M80i{3D+@xw7fTiz$ueO6s^r?BF@BM+@H`Vhwl-v+?bfIC3RK@xNt z`=mqIUC;o**xpbMC=Hs=hDwum$-!@nsRbC|+;SDkyC_X$Lf=y`a;d*G?>jSF&QGh;iD@4gwMA_Y{ev3a*tPuQ+Aic zwl)Jr6iLo~>JcQk-A@1X33G3vIv#(ft7*eJbF>bMb9!x{pXQ2=7NMFbYljA`X|!E< z*(*GxqK`4>3Fm-R$$*}LJsp)lf%O8eC}#Pjn_3N39ut1SLjy6^HXC7+OcNvP2Wspi~5ehD|< zvIX?q^*>pYRK%GEA47eWXGueiHW+^-Px!!8DGdyugYm@_-5S7k*=F>-H&-M+ccw8A z_O!jAbHw#@GU5B{WaDHbX^evZlXW8CH|JIAI*6@d{<oomz@TYeawGtQwkNvFiZ1 zQOu7-Z8(GeY%)mkM%{nVm9h9XlIv|hA5+lx&cRWaJJ!@cd6fgO z4qaY$V-VV1BKn4T$`XHe7Chq>ol9>C)m9()BrA#1h5dXf9;MWw`j_(XGIgmHc> zUU4L-TMLv$iNiozZL`lQ=KgZT6d%)@>ubEp6C~|U*8e`}_%6chO(w%373H%iK zP1qRTDHdb7@Isabdh1>-koc52DdElfAUrvSVdD7^zWm52(-EcVo`4F59fXx1LXTG?SzeQHEvRd=4a`Air$GC}BWdqX`C&Nq89Z9aw)8zuy+lwRasRKJ+#yB{jcNa%SrM%>hF5G`Xo=)45FE}7$XO%}#nDw+QCzSATn4gZnm!)0$|pa)$tEiC zTo=VyqN<>ijrBg)^u>cQh%wew&H>9v z%#6!)K9SGnVX`QFVV(!3wQ=SaGae(W7%;h<7Sexi8RBcE7cgf=@-fgJf3f=wz5SIS zB1ljrS&0-Lmh?(Z7e-W1eh5g7`PnCdE%A5o&|BZJH@~QhfS|DB?Pu@;r19)@=ZW(7om&Yt(A#Oh zTNQ1524|hx+>%7@x@wob{NEMq)W&!v_Z&8$U<>PkX`z_tAoZ)Efc6OllLy{PNI)OU zFy;Sl$1_supZsLu9Hdc&)JAUsPiTKPNeq87Oe&r%s0zBKaNPnG5zsp7MjVbB0X?%F zYEU8^g+z^0m_hEAf5ocIOqE%zN;aHu%7uoHk1@?ey#||;!ci_5#p**wnr95slBf{N^K~kw9{WS)SF-Z)b8judIUzmrSl-W3&j!}PM;iZs&na@x|D|dMM_((Itt8)sZc>^N6 zz`5QeV^usVlc&p(7N>6=o#7jlT7Kuml(5HX4RzCL4*b;RlK~kBxW9RC&`E!Z$<2Y% zt?c0QVbPzGGXWFnd{Qn^eF=m{koC0RQ#!-Ytw`-uW&<{8Vjre~N5;Riu1yF2QEP>p za|(8dTs=#)we;)7aEuwMIH!8vzW4W0g`a^Eyi^U2$aEqQ%cKTv$Fli8-}VKngo4?p zKchCyt*kmNL~d>w*TaR@ZMA>GpB=O{lu2zi`?Hj_+EhU6<#b%G*7)#%25p7 zgEsT0?z3@QpP%{|r9DVX8=XB(O~?W<@o)lRv5T2j6pFmc*}XsmMz($?><5T%={c(& zYFb0V%pC&Of26a(qdL;hN`BC;f{mk2Sqbw33SH!J>%iFOP?2)8TylRU5FGdrn7_5r zJtDjK5#JW@2b*Drqrq2;9CXFY*A66@Vf*=(E{i<(*6US5vo`_|U&b)Ohx+FlNb$Pf zeP3h)x6g-MqDiJu${GDZWW7|q@Y42c1Cch7@pZkIVhW0jneJMu4lLS2!G>+@Fzy+p z{6kRT^!Xh>R$n3Ro6mn+V4A9cNe_gtAeI)JqD4`pn*i2%$y#o^*87M?EwLvZdVaR& zXbJC$6`4B<^lH!+xnihR_E@?6ij_-|k*+#_#Glk6rflLy`5_K~jHTlIr1WUb>`~t9 z8Bk)g1?0?n7TIR9(8x}|wx75tblMW_zxvY}h(!@G2=99!<-32Qy}~hLT)x-!?1pE# zc$EMA?3frs=`vrSgA_(Mu9)BcaSZ!;{_~&8uK`cUFFDazhPHM7tE_Dpdze}2EKv(J zGg~;zpJl#OYN=%f(;9UJ(V3EiCwIrx?#8CH-jrNzws!uq$*iH%ZbE}Oj1vXt(N1lk z7JifmNu4tDJnMgi+E(>SR)xgG^VMXYBxO`Oc~Ur!5;co4D#3ossyjkiSD9>n;l*7x z3diWdVEJ^n;Nd_xt@Cy(Fvje78dU7f3$a~zj!@f)DvTkkhwVbQWvkUmq1rW++XPei zPn6$$eJsNlXLyQ@$2zIi%R|KD582N?+3^m{m8!z@5i-1WV3zyOaA*(thI)cq@IaR=@ zOQaMb@$t`c2~Vf1ZjHAHuTvVP9!KCT(!cD4ZNbC+h4kgE4R8RhrcWpu$=0qpkr;Sg zefQ;;3kH7%1w1R4EHgqNerSvh`UoENel7f=YgO2v3-#Fm|F_w@{zQ4yu~&J1XIwu) zg;R6exw`)zE+>BcJ94;pvTeoT>B}zwgEQOujg@T;M868JiXB-M#CPi-zFV;Ag?Bj? zZ1{aNLiIK0LotF^K8By0gw->j#d~HN7fl#}Yr}tFB50ZuyPBy&D_JLwt8UNwB@RPb zE!e4jUAFBmu)={Cbfv-h1h_5RDx^8*w%9q%Q+Ts^zNnigf@{46$|%k{k$n$q)c3rY$dL1) zM8kjQIW_62rd7leU{7r=&xdi6hEXg+OS?fG<9br6s|E5cL^z%z>sg)<<_Cm!n*E|m z9ScgkeCU9%>#e;0q8|Jo*g|9ajfn&>VaYOkwzs!Vbv6y z6|=T`%@!qW=W*MQsJ96kovwG=5k26B)F?qf;Lz@b90KgGrib9M7D2#Bct_m9pe!-& zM(CPL-e*Hx15#4vhqR^-9Z!=tP0(KhYY{2dVo*j(V0szm5B&@V{ECF;Ty!x_`hyi`^p z(n>z4uov}v2|vj;7Y>ri=SxlAU*ms5Fb+EoQ-pW~qPdiO3VbYHIfP4^rp}%f57!z;d9LcNhxo^bpB>$Q_{G`b2^d;dZhdfc^2KKdpC8h| zL(GAT!;^{1tk&+00yplbH;Q`bgd9lTfm<(a?}FEk^xItmoPG)SEvpN{dYLcjG7z(+ zAZCd-)ckQ&qRXR&eufJTLoD2sZ7r0OEya#`7J%an(Zg7PR4H5*@#n zt)=90&k&coSWlL&H>?3DfHb&FnUOoors8FAUsyU{-FDc`mSQ)1rr3W;7%}K#M2TpI zlVUO*4yM5cnr1MVjKc4gV(#dA`@3vrP z?ZAo~c%z>W4QP=RkqSvF}e%ffYi+g4N~TN=S`CpxA2GPxGMC|N;>Eww*VGRJSt z@*)*uVSSK2->-_v-J5?dSL+}7b@8!QVc9lo^raNH#VZ4v#R1J$21F0v9;3sYLX3ZB z(1FgmLSO!Sn-$TtTHa+&Aw3l1u5=>kU-<&=NImmS6A?B?20P~^yf|J_vhrhepw~ofgqe@pd!tZ@2X%u_)@4A%TiQ(iP#Lq*G>wfjBt8XJ&*-HL8uGLKJg)6^<72 z(JGsZ6IXN3-6;z^3!S8ybRVvvMXQLKELuoFvmK75IK@8#Cfbu-U3bE@4EVN;d-trn zF7q;_lz~^)k=#x){l1x(*9Y0i*6V|G``t>1*|7C14Mcx!sk(!8Q=grL){6Qwx-hU> zzXZ&RKGLF>WR*+xJgqo~XNCDIvms}&tK$9}g!TH4(o5nO*9uV*urs~;K!2uERgMCJ zt8VY~`%bJY4i(cy!=f3dY@7T05N~kQY4yxmpXnQicCS*@<2}A$ zZFj~6j?Ll{HGPl|^9kqWNYhj=_h8G*D=JPf1528Qt5C8%bTHlQXrf+2CR^$@c(A^! zMF&qRDD{J@4SfY=^Q8AFW>3yU}Ad%;Em**trR84OyQ zUZsD6P1j{zVC@GY45WY^o02dwueuueu;~MEk=`aP~OpM(S#wg zW^Az4=H1F)Ve2#Wo$&Kt$Ic!%BPG{h=B+INBXn@7neu^){(=AV9Bd4F+O{~i4RIt| zA}~HH&Y^GI!go>*19yijiIQa9;Y!+CZzX>bLBiD(hQ1o)6ZEx#TTljxX{0%C`8h5k zNrcN2g&*^Zqf_^&ST=%>G-&MwNc?=vA@0RSpQa{71nnriX!B7u9lKDuC;1jFN9dnp zjTaSeKy2(c!u76tNZ>otYPDD5!cVI*+>nDO-vPHVi>%6NF0lQxy`*Q(T9xh{~Av*c0&&jIdFfl*d+wFEL-mNgXx4TMZVRRir|9-#z>fJ@3xp*3cSrqB396$Uy!;EeG8Y-SE<_M4XHh1z*<@jknmK84>t-7XG3v*n> zOp2${XYD=MhJM-Tt?Dc4iq|zZs;enb;Y+Y84e%yzzwZ!T=%+DuYuB-kf z$Ost>&!KsBLz`6NT_@YohIxNBdUV}L9QQq$R{$nknpj8JUPHuaSv-V{TN15ePN~0N zBZAt?93^-=FwFfA>`@s=k3BfIJ)}R522QZqH3bv+We$TWCNr{p?dWp1hDD_=7{t&Y z?21hI;rjgE6Bw(v-M8jAnm|n_i%6}3&?{k^BgvljZoNYf{iQQQr6_*`!fA34;>nfu zBy{jxd4G}Du`F>vE3WtnI%lMrWTU*C zVkVm(b9!A*kv1q##?XZcvL>#?Ekt0QIo)&}Km79W7}Dp;CXBsH8RN#)!RZiIh zxFO#*de1+1BjD~6%_^l7Kc?d6S4fvjnEatQL-W9JzWcedp;40Q=Kj};pMb-bb@Lnl zIXQ;fymjPs($0Uls@wt0KXuS?z3NiAcFAncr}0s)>E!h0>dDN|hBZ)&8~YIwCdcy1 zT+?0>aGob22v^eC7Hnu&XB6C=ODHom3h+EyzivS*lIilZmR!YGDWyi&;8l4&CjAxJ zp1VAD)AIPy>Ekb8!!9vX>i!%9P9FGcviayVIm<>*6IXvH`3w|}&0bi3Tnq-oJoe=T zvPepk`yX$;{?-Gy_AkrpYBRwkgp_wtbrFk!;fJ1?6MdD60v1rG+`LC45E#Wo@*ZLt z0qWXo;%2z&IfeTqt{00$LI;;k;>u0?7~WLdH?8#HWVEWqC%KUgKr745==MGP7m01v zk~vncM!J7hUO^zTKrb^~v5-U&MNL(J+{MrApq^^4N|Sw`LbdMi%i~L0SHW69e&iL& zQk?RFAxn~AP;J#1taX_2Ze)~~y=e0~MDU0@Tqc@Lz8N=qLF(Mq;Q~(6yjO?l!OJpr2Kfr4po86e_Qq38dzpQ9jqM zhOB?76%)$G_#t>pmXpP_gg$DdtYLONnacCcCwdcHkzI>U&Ac3b%E#)pqsW;j*cF80 z9u9!l`z40Kc~a43X^N5uA(@xistB=CKuV(@$tfGa&R4*8pW)BgAa$h>16#@M%5MI~ zz6XS13T`1LI+U>-)A&S-VyjcoY#tRm0IGkXKZ8=Wz-h1ao=_ziWx@i(=C5auQapRJNk~+gP7)bPK6~9|(rhJn9*sXGr~nwQj}4 zI9=z%8bvq_gy7!H{Xdt98&Ck2>)rw?Bit+mpb_m**vtw8rbi#kp#mo-<#YDmNhE*h zpxX+Drgf;x5Mj1ng|}Ztce93;uOPbKUt#@_>0|j?xjVD3Osi-1O%9N63Q zl_K~~l!-A*qh&Xon_g1abwh7YE|BvQA2IzPfC07MOSbJLhMUszN%jN`2NQG=?gSkt zFN0S&x^KQ(2k5ixCbmcvmb}#qx}bk46SfuPmC4L-uqfnU?p@he#-c5wVQOpzvx(^^ z*}$|UzImBmAC5umfi8o`YeYB8!JFDZD5ND^nK9DBclQG#Di#WuahKFQCoqpL(J{+Ry!dZ`!&T%;?&I@8eZw3=R(-)GTmZ$Unh= z3{`$lpj#iM!YYum{U{M|!fAC=_*Ak~1qRtNSrz}l|E+J#!Ld$2wR z5(coq>QjRSzjxlM!J;1D@L(PO+|P$YU^WY@j@N4_5n{03WLN;|hUkBY6eVu=O))pg zT82;MTwY%l2QE5r>8Aa zw)2Ji{{j7f_l@H(9zkC0gOg)vS9QrK4&9OFMIINPw*_{TjVp~_itZJl6=wbr#1rHG zCEDiMzVf6%8xo(9q%VJhKtI|Uc|*E0J*~Z0KEj`6B)s{$`%bwcC`a79j=g6ArqS8( z{Defr&U*j;{V#aYKA;)REBQjd2h0m6Qy6$QLY%-RH38iwqdqCZ88^=+ldS)gDMBTW zPaZu6`Sn=fCi_%8x3r!-0&rVzCZA59Z1(i0RCi^^M_apZvH^cpiVmo!BUO|+`&)mmhg>p0v&sds+C_it?pg(kH{8eUyCIRzz~ zsKQam0?8EeJ{PzConDrXtSKqt_}iHO8Vzv|@`)HHvysRY&I<}KXa{N*ASnc(b$3*- z$Mm8L9b5-0-3@;$+E|8gL`2qL`1QPZRW7@j<+b_9+MLmd`=}i|8wCfVpbqba(Swtz z`&FJ@14>fU{Y1x-0sJn``55vO6|;C{V?hLn=~9c(YRvN`VEAqg%TImN(Jn~XA*@!< zNnzvI$<5EQ>4=nwedl;&d+pMa3UGnSv=wZ?t`hqw8$y56_k)j)x881S&D+YtuU~Ai zIgPf4y#G|J=H8Z-QDZ#;JZP_+}G~MOuA>!y_71*p$=M6Hq6g){aK%ab$qnG{B6$nL}ER9OXinBNqLZV1ZLOWM}m{l2SLN=s>>fr8tU59y} z)K&0`&*>B>`iiXz9jGB&7*Kk;xhH?p^_42;*?H?Fcg%@Ii13QNwm5pgb-iUXl}3L^ z-9_p+;5dZ=Vd~_7`ZXgZNSHG)kp;r~gcdxoQ$#-VWOln~o$3bbXrY850nQ8T&ycC+K7u)<;6PUV$@z*j1~)v)n&y>qM}(+Gzy9)IdN+-vC@i-FW9B)_1Q1i zQPXPW#oF#hUN0WW#GXB!=Pahn+;e{rl1W~H^X>#bu=DOY+40$O!RCu!UpPFy|M2AO z#xu?D*Zz{MP(f{WVyh4~x$oc%XMMJlXxE5GIr0%eV=J3q1YJhyFzfs6Xp&quBY7n* z_Y4_m_~kH{>ku^dlv1ZkI{X{1W2Q-Ax}Lw78zmp^Y_s#QjL$-G7xh18;~9S(xB;hu z(6{eiY1zn}1c9zXs)?W_pwM8J^i+*`M$(_mhpcsRD=qMNS=w)%uACOlOQ?hT0 z&j1>#k}Ft0>|31=u%lk`WJ*@(8PV#RuaHP9EXVi(AYELt|5JJOgrA=~Q|v}Q*o(4G$V!snI0FQMIO7?>048#@6tBf3 z`!OqqWB?Z$?#(gz9PYy|*tD0XDR;bO|6+EcAviV~X(L&^9>@ePonL-=ve<;W6&|DBtQM8 zI{ve7oyT*Hb59vb;LFglw=&tsCHT@@msJtW?%hoA!DP;1uzOQ&q6A+5R^f>4#9fwP z7{L2Mo>!P=c?u%qVxoTu{@k)j>5MIqg@1AV_R}jos9xl0asVy(jdVWXrXpwDH4+q0D-p!6r*h>p%Cqqk z=}g^k(gakooF$CNdYuIx5=N~->hl9_#@vXa8a|boNkbOoc?N&ghB`I4dId=$g<5Vz zhqpoNRq}T?<8pqk$l(0D9)WshD7^6im0K_aznGwH72;EqsJJe#w{Tp6Tr9_P3sOHL z*94fZbKu$e?_SVK5=g?{z#FD?9v9qod@?q<{! zJ5g9fA;BEF893v%FTb3|I%L(AmZOY?nu*>-kjBd9ycwT^)$J`bC<4bU(>)_ZsuvRT4HET4#1 z!jRo1AS8c4cEL{yI?%9-WueUBCzE+c0U;izZL_%s(rlGYfE+5{_}|RKli68&vrd}A0e6Bl@nbw5kH_QjcuYD8T)oc2 z`X4XKP==0Atw5$@(YCsLc3SfRX!-$+}ZE_X}$_#P86e2)b(45 zg3d-|qi%)?yxy>!W?H)%Fr_ahBjhX{d#`=DRVx<+c}$RV&Vh3>e{}9s{v4(RHVQVF zaNl$TH9`K)st*SpJk34_0Y9~@X4KfJ7gi}&xYrdLLrmb6YC?KwVNrrCc8~{U{ z`($-h!%qqxP}dHAWpnjft;D|g3p%KrC19E0P=)Mqckq(%m)EFFQQ{}Gn%?>3^CN%o z8@ld`Bmz;#ex-P?J|7aHz{2JcVkALmv-L=!W-h=)h5{LjrleRosxClk5W!K!B?}*q zbF1J*Q96@~EUZedDz#9TW=q4t%#e+EdRBP52u6-lSno)KFmcg3nDIRN((MF8@M-0$ z!l!LoDZ0&a7rCmH&vTF$({)>MJ!pS#1hsCs4&>B154`9S3Z6F{r7VJBsAO&l;yM_W zAlzgLXsC`xl;-LgRA+NZxHj+9*69)N8MRN1V0F0Hg6ogDNXD}{I5gyohMr*HdE|7~ zxno*nrIO0Hx}xj(8aGY1R$d3i&TE*3Aw?uClG0hTrlJ<+sumi79ER^yp16NDd~JvH zOKpUsy-#4quL0i<=|t%s`PI@+&HrSPVY*91UsrDhofu2#*^>vl(}J!Q|)?W(fM#j`#6yUAq)MlH(Z2#=I#nzTM>sH@ge4JdpA)yx#2DfC&Qi_RxzWW7{XOcRaBcQIjcqF zRbb9WhB3J!3yu%(xguX66;F}y_{9p8(IlBrs_x3))0Z->s7_jn= zIuF1h8hH+&X@HaP+c(5u_-#~@cxJY(4u>Gv3i#f^C#Ofp4DE_Q#A=#!XIX~S%n7(V8b zTwU?>Qoktp))6Hkn+h^Xa{u`A&yT-ZW zf1_R}q9GQ4ogVW2V=)X-XpuE<^l6Cb-{V^4%Ue=0wajinz(`whqm>LNR(?U1s!XvJ zWI5L#nr{igWi)~D<&zTA9GwZmKD;iK?2Aw)^KqqqsqaCxmZU{aUT%tS;XC^xd{L}h~Bt=ZUHn8cbx%l1X$H2I~WX4l};$2+9=OSzsbJGn|5L-2H#{0Qg!sD zuOlKP!L{7Vt;C71T#T95tTiXiS{eHvd?WkK)r9 z%~v+!wXKQn#8IRM(Px^RIn(wa^%w0^pk8Rl)2%nAL)@@I@@mL6K=NGSuf>%2Q8KD> zOI%~p;xTLnp<($Xr=CL*`9Y1H?8F#AQ+Hj*|#ZTi?^w28*A^BT>+zhm#1eh25tcU(LgG0a~AWwX&8^-Y(P!`j#+A(*6hI5 zwMbq8!ob=*k$_RIGD91ZiI25W;ULm~0UcqMSu}jz(U3a`^gKe*$k<4?`$p-aEY=xm zwIWBDL3rhn*O}qr3mG`!6{Sy#5x6k^!V@;a6%P9Wx;wjA(;bOO$YH*yEf}dLKMNLUmr+oK58v~okTB{O>29l!=ESxCpCxdowmKkUIv!Yy-E>*1{ic~POQHv5xX!sv@M>A$>}JGZW4{h6Sq84Cxn_X)1%~70?OkzG;bT`Pyq$#x_*P zaF_B=>0(>hr#)B1o-1NCMXZ>h!Rom_wt+sz2C3)z*#BA|dzAkq#<+_us%BNN&$YA| zEluWQthOfQ*VfvkqH1puh5oBr93%ISsd4d29NxXC-i)^Pa#naSUlTWf(b1~cw4ZBf z&$YDwtCr>|P2Qp4KdCN-7ZSnIEF6A*^oh<%P2y}zU)tT-P+@xO+0d8{wxb~(JlBX? z7+EKq>CwuPQCg6#qWVuT`|s6!utH@Q)O7tvM zOE|byj56XGjA)5qh$6^;`RNi4@*(R7dozzF>OmZ($ZTNv>%m(W`rJ0^L&!5 z>$31DALm&K6NPFIiIDwp0}&YZIpq_a;}|gf;n8VIg()Q^6#I#PxrPG81PQPcRPlJJ zlO(IV{0OQf8+RE*hj#e3x(p~1^yV%j9@^oyF2hy0S-x?Xf5qCjJ<5dQ%28%KVn_Mg z9Nk|w?ec5i`8zFT2+FWT?xW9 ztp*CjDh3YAHS_|k(5x3UW3&~`pk!>r4MgA=5};T(N;AO8t7wq;Z0YkBRD)%YZ>!Iu z8Z`D9(a;{Z_jwz-!7Yz7p}1rta2 z>inh<0~?jN=qMI__$ehsrBK|@7TQk@z%Nms;HMV}3L9ZS*pAUpqSUCHouR~yM24Y^ zV+O(;q;RQ!YINc?6fS$0M*3B^-%Ij!5@T7Rs4EU+t8t}TI97SEOx9{+2^-jb^Saj1 z;N+(gFC+&4hnsBFs$Id5k1uul5lyL(3ggkFDaCcuPC2#B#h*y>|yo7d#zwo)0SF zN~Dk{($kw?Q1z};dYkd)=5|cY!z0hx4%v)iBLdptfFUCtHdavAm)P zn9>}7NhD3vz$9Rb90-EZTh)fH`BPy{4h{IZGJPgf0}gQ8@x4}e zmKZ(&IIAo(US6}Rz`%4NCI<53t8<=TF?!&R?=|TLgjRFh2XwZ=xDQ_zFy`>mj4>#A zC~1YYw_+Lyz8`?93kUvaULx+xXx)wIQ@7`TZ^keWXAi%&UB1*YJCX>3aaj7bNXAt* zAsW~Go5-eU`h*iyfOKTBU7v0cU}Qb2L4}QI2KD|fiV2E7y%-IlR``8^m)0jDzd`_y z5X6&lS!HcP>XQe511XniMiEo>(xjk($ar9|c&W3Vd11}9N`ez(MB-`;;+w2k7?B}= z=BiB0s^ws9xN>cLzTleGa&DEYJQKmeAWO*&09fO!!4+>>@7m_j>BB-$3(lct1eX=p z-ZJ{nZ1fx2sLrX=8_uapPyIQ?NTDKG#Y<<9n?q3){gPkpIOIn=)}*Sbyta&5`Pj(c zLuK265Tz-Lv<}{PF?t4L?!#u}r?*XiU>RDM@>Fk=6}JAE%HKn0K{rTZ$dnhn6tB(5 zDG}3RsmT>xkEQauByD;~=5M60pdL+L-je%I*Z6E4za&R3$Q+#?*JO#dS&!5Yh*CE6 zaF*X-dFIearj@NM)i&f()SWXG=-Y}W^)%d_o>Y-ufW8J@zmehu^AY>n}e2PWbyPH zCr|J^EIs||(Zi#M4<3JceDv_tR?EgS+up*L<~wuqZ~hw#f}_QMd5lGGrV=-2CI6TAGS zC)}&F(!(HnBYbf`l2(&JjOvF?kmkoHmlQ~Yls?lqDSk`W){e!@Uk;h4 zeFZn9;p(8RQe(ACDpMl1Crh#Nn2m&n6NFB`q@&5O=q9g!xv(48t3fRg&6N0mN3BMa7{92bq+F{PnrkaYVfguc;EoZZw|eBZM4UPppUNk$L# zK)-!VHFnKN5l&jtX;)!aC&KE}>(*y)k|cUxSuc9Bnos*Y3cXgL=_Jhhvh(t+P_Y>- zqZG5$Be2bXqEi)?U09T$OK$dd@VKe->Z|6chs0!1bb_d^EinHiEpWsS$U3OR@a?O( zvTV>d)&Sd=1oHmFCE-v#gAj|Cwr{dyPtdE?D%E))d=x50o(s=UxC;#ZWp;O7LUi(e>a(s0QQ#fVlm${VVGZLo9NXo^LMkAH$Te}h=@8}N7vcOHi&C{CcXmZp?2-*Z{LXBQmC57BG|L%tu0U0+r(IUsq6P+)acY-JWSx z(txZHR5h?XuI&!WqNJVoiZ?Q+(08jwn* zzx~sHv(R33iIy7uN?is?J8MZidNL`d{LZ@KJSbSM&NA@sa&|d|Si(S>?OD8)!yV?L zW*k1wts+YjK8ZXx0$u>wZM~hu*NM#t0+~z*X{VJNALUO*rF-=(U&4xfA5d=e+#ZjBr}?o*55DA^xa>k>F2Z`XUll0L-?$|##+^29KDM@hD#U!R zmAto81BB!9^r@s%WR+%&f=N@N6TS497tVE+L=PmzJ2Cj=YsjfkCg7-K&`LT|tr^Kv zGjPch>M$eslZ8uKxTHltc?wBF7iQt>hUOo93K+tN?)A#-av5|zE2+A{gi0$af`Z@l z^@<)t9Gh_tp48Z_SwTr4<}Zo~UMm{&-DKNpHom&Z0QMzZGf6X$>3cZz=~JXMP{We< zAwE--C+DV33J+2ui6>7SiNR@qe)enb9$Y>r!$Oi#96IO@(*!;0NAt3_$e`FqLZp>O z?@J822YK-zKbwO8c`?Yx`vB?)x$Czs!0aWj*Fl{ZWtV!_144EIXrN3vnk>saB{-f? zJ(59TzVKnZ#^GA)H9!dCjuy=Io@@r zK4q+6o@MYm<6(g`3(oQ2=L3D_00d8&))0Y8Fk1{Vqf%Oj z3;;41o%3A>(#Jj85{y!R-#bsTbI7E-8KYUrcvV_8FCEKR4RW*&@qr_^!eRU=8e=wv zeNQoea*<3ps>DV1i<|N=y`~ViCjn>_fdF&MUq|4*JI;qxc1myYr`~wZmjil;bN$U4 zJHo(n)*_Jgl(U|CS;=)+WK5ECUpQ;0b+{h@*qUTi)4uN@VG1b^D(`Wz zr=}P)p#at^M=Ks|m)F_tJ);?r^9d~R8Bdau9H|h;{xYjHQRaeookFV~Oc-4A;E!mf zeu*P4anw`-@PHDCj<+~|k!R(6s*ER6TArnoXrWg%5txA+(^pqAzM@JH%e=uWl`0Ly zEu6YAsZTkzu1eT{IUy{9gq3M=LQe0$(o85vm%>2VOu5MA&a$6#jX_1T5ljeEc$OpA zW~kPb18M+V=~b`Ba;Ut~YY9PG5Kc%4k2r5Y8uMKGHoAu=ZxX1wUL*jZ=<5ck@}(>D zf%l?-)ZH;$WqF~Z=W=;5I>;~nLxEZ10G zYqH8mRc3>hn$rT6VPYtU8_@Ty^xXt6axE+1^m)}XA(#nhm2cLfH1 zJt0T9)}af3n&V0#0N=>r0rCtnk1Jry?`jDDkgBU<1A5MsS89Y?v`(5LM~8j$8+qvp zmfEsg>u68xmbI3S&whfgCU;How4l`5Ts1Y!ZF!Rc18EZWN9DcWMkQE!ysUIIcnp%` zogMyX>`6hAh-C>+W%uuoCIb(tmb%O;UUHRHBudwRQeY&_AdgC6mAEkLY4> zbdArm5;y7b6+Q!%74C1WSHVfm_)35lKGVHc`LA=J;b^v4Rp)Lgo$m73FgSK&kN*su$S|lW$&>jR z77(SGSfVw+q%uNlFiO7}8C>l>b^~*dCWHJpKEA&b?10d2P)Joner}3DA=Oub_-@&M z-VZbq0xr7J-Pn?j0NrI9%k5tC{4)eb>iA{!1k}$v1cSToEVO{PzmO(OBX-|od>$;| zmMxSt(kgBcD(yAGSt`=~{iVWQxh10=SzB4Km*h{1>4Nth5y(6+bpWZ@7C>8!ZUM_G z^ax7w(&CHiButoKYMM4uhA*vjJ6gtn>l>Hp(M4y$L06v}Vb%F+@-t}95)v@f#AMLU z7In=nb}&56b(#Wq5>38shIKAX{_^ zvPIgte@zXyE}m}?bG@cZaW3m|ttb)Iw#a_5444Ev90us$K;o7+WIV@u)`irkp}j@6 zb^a9&_IcQoFMdKZBQ~J2=1y6E&HCZ#@&~HEq+R>*1;QuMTyV9I@?q$$rO^ZpNk3mE z^zPMu)BG&=pTHKk3zPWePQTOX;qCXn&$0H!^0lygC=V>@TNp2O+M5Z!V;&onFOj`mLK|S-CfWnMM)kY#WpzWX?dbr2YLXd9->KX+ zY24TqsJ&NksP_qU`>U{cr~5b9!v%>owEjw^MWjMrSH?G3Z6KVyxv!v@7APeOs`A#z)v>L$wXRU zAnZkQ$sH^CU0{0ejsxyzlI5ImE@1Iq6!WS0rJ-8EUN?jSKY%BH7auWM>dVTc&nEM` zjpR-DOEDTGgX|KP5BO~x;PE(`fjt(NOzz)MqPQ&$#@QGS*!Gvh1ui-;O6NaQY1_Lb zqb^V%`Sl=trH>+mUrmc&Mgw|35fpm~8AphMyy4lQzDo*sR{WYx2c)DJIR<^pJ>;caa0`roJE8@_QXWw{3b;VX^%x{;xr(YthACdu^YZBS%#s5RiN9 zCh(G-5?e1ho?z7zcvL&8^l%8pWjJgNMT%w)kSBzcj`_@$YH0Jcz~JA4T-jU=pc5iY zA|DDXtucUqiV1t?D#4i<46BYxr;EYemz4@XE?u^N`k`@E}Tgw@B66d_*gc zVp{quXMOz{$(oEq>}VeXYJ0H_xF7R+Sw&aY&@BNrDBln^0v2UFJTkNDl>-a7`m&>_ zX1UYvCV&>V$5W%94CaKV%>R_MXIAS*m#84+Z$cl&C<=&wjZ=4aem;ka3pl%<&p@wW znKB)Jl|O?D!x|pIG#49uWdfuTvaTrws1J*JH&Lr+r}sgcm_c}Fhwp>X2ylcZ}CwNlt=U%S?IyMc5H7u|Qwl`Gqu zWjNQEq}gw94dT*J(kSJaki&c3^K2G3(^EmS);Leqo@&l~a)R3E{A z*6wL`gF$!j55lyUx8G?KG#CwsIli4fUf|_9+#oXz=Cte;!)A=Ql`tb5K_$__k0-D) z09%}(S@dk7udH7zUyNVw%DIXg&*O(UcaHDhPggf2is)$pI+fp0P|K6|<3Yw&RV`?c z)F({m;gXtFC7KyD606AWHz2qnDVBV6fsP{T2jSVWyF4 zrwJ*FGP}zQa=$1-!xc9o+%{;Zu`Ib%R?FxC;5Jwpjb?q;P1kLT6vfCEeEm^bj$0f? zw1}EsJV!eP@W!pu!G*MWK#yK{nxGgX@TE+=RZ3}U>rk01Rz+SHAKg1VIz8ck3^h4| z0&p^$|C}Y=!)!8H^j>=nEHA`hbnUZ*ew|;4oV=Ie4fVstB)c4)bJz%_%&K2qtNY)4T+->9P|v&N8N2sl1?-ir)Jkz+9%KM_a(<6wOxd9avZWRPtpW zLl@tE?_Ka$n9fKu$uoFxtdG@yXLOIS5g%Uao)oZun*$N9$es`D$Pm`yGY}&$DRn<` z254(J;;d{A!gZS5ALC747m``8qMbH0&UMMn%w}`OaFmY+$dz|a?wz{xg5>aHUa?(e zF;y=O)i1taL7_u9TGl_o2AxM<#}?_(X|IS{*S(TF$sy<31kbPW^JDgZB221}z0|M0 zeLNlILjbG?Z?3o;ICgEhK4`IU?&0X$(V$WWs?H)gd~Jr0?_E-Myj?I6!=SNV(mcHY z*%LN>miY`_s=*RbTZVgSC(x@ZuIU$$j%fM*4@%umt-+3qx(%8Xb?Hu}rUg&r5(Q>u z6H*9Z*D>pP5RV(5bhR*l)z&FsEk^QQfKB_II%UqBj1HE#alZ~=2H9((HXLplH#)>( zsvAkV1Xm1(876OWj9)+fFINuVo3ixjF#%?pVhxta>9_F`yhV5>H*dT3uwfv?c zanhTM-b`Q+jCdKz#ao317u$xYxDkHMT#lQrNGah?9kzfLKx$w3uu!akkb{jaTdR9vWE)ypbTv<7(h#V(5H_|2)R($VW zc>>ltMm0oZhiZ9$7`1&=E!PL2J8MHEOXYQELmOgtr6D2i<$vpzj2En z?4gZ0p8R{_CWNc?&Q25|(PeyM_-R6gYoT8K zVg0(L=sPJ|x!B%XlHwEyYOTdn{Vvz!*82$s3xOMj(3j-Dm-SSTVE)Y^>JydUsjmFZPbLxse+7 znSZhLh9QLz@@{ei%#_{%I!j%2MOYh`CQX$!-H=f!JD zwk*q%EZa&SxJv7b%_!z;%blj^dJv^vJLc^&&|uYXeEW~RaXI|xIR8
bv>7odk9 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 UO&SA^Z32@{O&bP2Z~_1T09yVxQ~&?~ diff --git a/Moose Test Missions/Moose_Test_BASE/Moose_Test_BASE.miz b/Moose Test Missions/Moose_Test_BASE/Moose_Test_BASE.miz index 926d5a6722c67231c8dfcbf2627eb169cb8d9254..460e88d475c188f841d0700423c83bbd7443ba10 100644 GIT binary patch delta 540 zcmbR8i1X`I#tmE&{JUn~^$7o9q+iC!z>v<&Fj-PUx_)Y~t^Z*Ifw{t({~tbC>e>D! zdBqhkSug2TURzdrNC>Rbnta1#QgV3T;iez&Z{#(KFf|>$`19W0^7A{D|5)l+h}xCx zx~sS5u|;P>;r^Lx!;2$wpP83;b4)5Jo85G>T!GO!lX3Ou?eg>X$j z&dKw;Ik4VD<~@7;70T4?YM{j*oQ($}2x{qyNo$KlsaGrglep9%O~ z;CJKqf#SJMOyXR#e!P0fw3WG3A;x*GcL4L|%R;>u672sjEKX}u;F)b8th69#$_1a+ zXw7*ldfOvpbGpx+)W52a33~r52>MPmZg+jgguGo8ijH!Q<$$vg~ z^&BQIqez+1tDBpzIkQ#Xy!(BTyfx=OzwoP8#j~!jQry5AzFB3~5}|aJXNF7dG$L>R z%)ULhe{QE)_pxJp7z4bSSwt8ZwqLMkTC9&AGt-;$nM_5G{P=fG`_e_m$VEB|J{O_% z^fUQPy3DI28K(cqXEI{`pv5rVumH&LH)NQeR>0)Myx)jn`sxBER~2(t28Qy)qSTE1 Z(&E(O0B=?{1|Z-D!f#9r3@_b5JOC#*>L~yK delta 142489 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�}E*FvJ?GRMVokT^~~v)EHy9z`uztYyh+# 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 z zX(ADvTC&L%V8&ryCLC&03s^0Y;p@wM%F8!9X~m%S&@#@zAPAA`CK45qS_*6>DZjD% zJ_lOX8153ye|&`YV&~7fOmW{zv6VYMW-f2>WMQ!Y9#3OYdN^%dn1D%P8q)f9u~(N{ zua@4fC~k^~Dft|LHELTh^b1v$WwkJ-DI9Ckt}9;*AYuh0XfMcXR!q@s6G;h4XI%Rw z$eH-bsCZ81pZ?j`;|=N2$m{I6*2&KCr$01{-a0RDf1W|aTmlhnkA8qCJ90spC^p@9 zWVYeA6qYPwbL7soebWj8{-+}_8Y-}yhQrASwyY)8*ASUwN!W@+SPs9nSZ;UTvp+w} zOtf)M)88&iRHtqQZi-rDxT@=T8=a2VYgf1DuOx6Jgmpw41$RT$g0B-%%rJ+f{WB41 zP+Xfxe>8UfN*tO_*P&*Tr2^F4i~y2|-D0ZzaFm#i&2aN{@L4!E!v&Z_ScjdpiQtc0E`ARI!_j*dBsO->QD;b)6}PALTi`=6dmN1|adl?RfDzkp zf9bgeQyqhd2E+PX&`?O9z+-DMY&d>zi6E#2e}bO`O>w7V_QG*d60g^2K{qN&Z;{#J z7T8kLv3*+WPtK>2k*fe16S)dtQIV?v7ZqJhL ze;vx1^%QZ}_UPTJhPK+GA+5vBwxo(7{>0RviY2B1;#nc4^8-xTAv2dhZ-{2RAj0vQ zT-7DHX+*Cs%bi0Gxm_JO*(O~fP2+A|F;(Ie09Q=bFlz~m9_Tplnw%C57j;;T*c=Uj zVc)z1AtdvSLo}(o;SfMq$RvP9Zv$g7f38DhG+ljk>MCm&j#ph-F~og1o^F0wCc-XC z@fY8G)&x@+!TKkSaM$NE+7*K|B0G{XQZYa)?w(O4#}fkXR?XasECXQ?dQd6 z*qZrbZRdC5=o0?T=As^|`&^m|9R(sk(1y6nux;-eWehKo%L2tLP4MiLyI<@&f3fw2 z3f-PX`Xw8U&k9^O;HB5-5xB%)CCXP*EWUcK={#koRi4_v?66XB>78YFdH#_zn8Yv_ zVfvS_y1-e?*^Y|(VaO#9Gip-O+m}D`IqyiR#$XVcmU}YQI>Z1tTDJAwxFflaCZa_w zjmEWn!1#wyP_9x1jok|zwsZn@e`RSAUZuEMK*gUcq6%j^$l4vi0ZV0)W1Kz7h)st_ zxrGA3>ELqRKWE55%TpQ`n6$G9OOFQ)4J!hXp9+K16q3lv{;H#xBrgUP6OW^qd=*o&Gfq_ApR#azj6g<}&}WUja@ z_2ptpc^(Z6YoW)2CCSQce;AgapuD}nP18Nh$nyEHWFe;S!Fwxwl!zf z6n2+RKCnDTIa@g4-E(YH9c0nbz)5ToQDC0NN!Foly6~SluhHwIzJsN+xW*QX)-s38 z{00tGXVEqnzAYuA0da-4QwoWQ6CDsJ6$Ptub&#zLk1B@HeuRy_e*w_8zFD-6#j6ul zVS0jJV@`g%n4B(XUb*;ENydR7zIPKX`bbMC)vGb)*Eb8hpn4%`rBIl_d4{lL3STwP zT2LarfZ92}2=(oDdT|FnEFT$v8XE!rK$9SSqxZ1vq#mb*0o6TRWu}chRWUc-(Ft!> z)kxuZM`}4|N@Yj9e`b*$AVz=T1bX2FdfuHtFFZg|>!KGPpe2@6cj*E8Zj8_mQB5BX zxfx)9c^8J39zD*`eHFf5#m{*QER&GxZ!9*g*JS=W?1eAsPS#%w`;xvJ&-W%Ju@mhV z&ZKyw`NEm>4?C0Y+!$iHX}vo0t>Fu=)SX(z#l2GBjbr>$f6<2Vgbvos`lFJ&a!2tv*~S0yaHm~T;P&~KIHhK}rH*qraXu_hie2br zKXps<-4plH*d&2CY_2)IA~|B2c|7EYEij7eT~0CyosEqx`nN;rGK`Ktf%{iVXVTJn zxbZkU10lo5e?@k7Srn75E%l8z-`Uvc^-KZd&qm{x`0s2$8+Ezl*WUqBmKH*^qXmQv z9b^i=m>r_3CBR@=*4gT08A93LRH*OJ^&$Aq7r{{KoYV68G4qHJkZbjH z7&2q7tqgNgf5}WeAeQXsQ^-;8oe7<1aBaev-r#8}fAb849uo|SwTO+kMZrF09-7A*I!x?0|L4N#APXT#A1vZ0vl*U4y_!)LdL*6iDF z_lxuLyYKM|G>0A!&-hnSW`2w^@mqz&>nuW{_wN)hsPiY0?ba!U%;d)-hc?c zE1L3Ge?CDTMnzVDl)A(d*q>k5fPy|Gq>xpO<)O7b{Cf+Z*+K-QC>k*uGuOJhDz4Md z=oUeDA=KEu^43W^M>pe>5&h!7j2@U=9+hsdCBr&{Q884aot&#g2i4H^1g}b}CZ@wz zB|(TGOSZMMhkcq8e``88GRdGA1Tuq|?_Re04Lu!mLyug{re#G2 zQ77RF?a?FWGH(Ggdo9SxhqrXRzd^y4)+o<+BH3*e1%*O%L4X1OwyArq!S_wyN!$jBo52V}dM=AcLarESLF3zJwTt$qaa5&p7M{j^7^UL8xnUclhc$BgYj!}*_ z_5_;;_=Rs}JL}s}JL}f2$AU#MY;wJ7tXSP-1;vLOD1V2Kxj>U?#nY(|<4p zC~0ogYuo!y5fjl|ztHZ^(Z`3$?&Y8?^OC1(yfES%1e1Rl#lDn0n4q-)$_d?yQzk=t z5q?;ILfQIQ_lBcs!I#g_P0W;8{)AgV`LsfW#=IXO(w2 zIR)_Pgy&fwO`yGhg?o~c?q`P|QEO1`j?H}^Rl*P793Jdp;>#~RAeo?|YV*|e*$-QIhY_Ef-&&!;r`(f!ag9>kB|2D4s;Pm{f|H1JF;*v zqdz}~StXUYTU-{C?BfZnprs6W#vT(YZs5J=8ZR*fkMd!i+$0}X#J+^HzqP8p8AI;N z3+Os^g1=%yMe^`y=iuWS&9`D`9!|htP$vp&Dohfx_)@hHeLIFIf4qaO_Y7L=;GqXk8OZi1I56{a58 zoY%~Mf@@jG%O~~$9NTw!$%oo>dVzTZHf_QP`IYyfhWr3No0k$&PcKk-V;`p?M^%h1 zyK?~v9bP$`W+5qT5gPsPb^C}sOIieVU6i9~^(N22SV!XgfBJe-3{LUxs0utY#Gd5W zFalr>U`nA=TK^2!rM!!%QGzQrV)2*H65|sl%Y-z|L zrW#baN~Ge0QnyJ%>^TiLnU}bWhgGLZfKo!f zfd_KE?aXriL|_A+HHSC#ZGnzQ=g^Zr$>9NoDGmaVzP_%}YxWD;H0&g>)-xkLhbdCIM2|sfs#25L0DQ(5_i-Y2x|7DVrFl!YTg&>yXX1S6%v$wm!}| z8}GyGkB9kh-5$}vLNozVc%8J>FL%&PbbGbJ?W!HdJ70lEIg2^jOiW2;wO>Q5;ubN4 zeFWprfA4vs$k++AuLz2Sc)IiD0d^996K?H~uCPOGrk0CHUh8}7EffocZ0CuNda*)D zn|eD0{)ac(e{O#xQ6p6MsbCi;Tmzf)<_xq6*6=vWaLOd5U!KaSUdk3Py_SAwCj|d){Ej* zrdo&g3^i$X+XFCz?Q>gx(V;P)Un2GqO!F7unj@W=u3ur@?)yN78>L@3g{)fDf2f#l z>BOBC_i*Y5K%V8=8l_#rSb0IP*zyTY^GYZcLorsR0$vT!^_eF~lwzp)SJV14o4zHx z((J)j7hCNa@huXh&K&v41$E5gRL$<#%%)MC-GGFk>*vLw%4Xy|WB#EH6dy*k9>v^N zfB@5W0t;TP`>#5B<9PAqt2w4ee^kBw=9|e^<6%m=Lt&z{$4c&d|sbHje5$H<@+CG`1VZc|NqE+7sH!$8dq<8D5-F7W_mn{98_O z>*@wHW`cp|B`i~TIg#{qu)GK$bEE=#ve`8WX2l6~_@?n46 zhM9bL7rcBvM%vN}94;lhXNoheGliFR1>$e_wI&+8t4$%<-jc$~FX)1A) z|9mr=00~u!r9r%he`y?};}lp3V6!VGsD{c4d1qM8xS}!`-Oi*k9?~)#%i>L%>h)HN zG0gCf2!70PS=+Df5VX7n(cHqgWOiT#vpU>_^{O_{7UH+Ql?L5i-S?iftU3h&{S!5} zrfh}EXD3Sl8aeT^%?By*Nqz+<%cd592bbi*+(~E4No>oB={yeIa3UuX z<4XwIg2mII?1pK{w4)JMBt=m%y!HI8K-staFeQ2x%59|Qvsy4V(N>RJfe;!S!!mF4 z?q}=8uw4k#f8S0RgGfTHfE%k{UcrvaJ-p4Uz8+QF(a5W}sdGq~JKq(Ct>t3`cP?#t z9p`!Mu(hRnb&Kq{0De81~Ce zD4cV?PWa0X__oTr!ltpjjSs+10ig*w790iGs!8n+&$3sVT)^-W2+%CU2j4(DhNc>g zYceE11RiF1HaPu>k2erq6!rlJ-}(xi-y3B}6YUCBt-k03Is(KBVOmz3Q;&a7M962| ziH-zHe@m2ag-5_bxBgIeV-R2iTfMhCpP4jyX9F*%q2N5smq;dRp)i{x`5@vHDGY(> zHV8Azq*2_E(WKY5QvEUFHR+@@C}{4b**z+uT2UUPb{PSp{-LkQ@1N02Kpq5_aLDLz zAeUuU#P%Z~WvO8h5+JrIFSCC6bTFA7o)JiYe|!WZ(v6x{q%|}2)P!Jgcn$EcKelY2ZGw)1x^;L`w3McR{5J^>+AXdENRp)3gPf__%~lD7ai z6$@Z6JIge_#x^1lFeu8p@iio{W&yn{Npb!0&S;`wN0`EZ(j}V+9132=dtVjinAFf}MI%k4;GV5X#7uWLH)XW>c0#&{Y!u4It=rrA^6x<3;`NxO7q( zzb8FSM5~~X(&>tzn~h|JLFW3~SNZR?e@$2=h#|p-8V|E)H>1npmruJDXDO`lpwCkL zBooto8lpg~VzElH+}$E~I_I{|7|32Mf_glX4?aBHIeK#3f3inw zeF;hrk@ceP?|pP4MKxmXPax`}tb&{ku`Qtb41b{BA$k>n?+Aa}ZI5-Zx=m<9e^?My zD&jCo>lUmPt=n-aa)vQQQCic^<051ak!zpSgx_BJNT8kg*A@`}+J991AMWgax{UM@ zKO}rK22Rop-4_I%`k&SPkB$xxmePG9&`SJk3yA-}s{1%%EF=A0Ab7O1-&wLg-ipXL zHkYF#D&m|*SKpjbMr>FnR{WHBe_;3KGXKcT+`Bba3nZDRp*0uR@6Xh^jA<=-%T(Za z_mjORpYQJ-$)U4!fdULUwHOTVP9^xq*}qJZ$aTsRdzrN8vr=AeYCmHRio{pB@Js5) z6l)8JAzmC&+}e|m;eAyD;Oy#Rs&i+NuK>=OQ$XTu8@pj#0y3wu7u)2=e@U(rWPml$#3R< z5Q{={34;td-c`sN3^u0_f3XG`1t`<`#pP|YpD+=(w*(yMY$jb)>&W7KhYnSy0&)cE zo|lf@WLHP1m3LF)yCbCb=xa7vqoc;S|g#lQk~;AP2ZPd4mX#anQVN6I%B4GXt(8;1n3 zS2|(sfWtZ6fInQY$t|fW$Qat&OVwV1r}s|$yue!Pb*Ss(rJAqCzY7e_^zBA_cB>BG z+NTRRt=9FGKR3>uf5;xKHqONLL=aR@6AYEig}`Gy3;P&c7t9jGOhr~k&sI|tq;_lJ z%@Id3ptWssL~hgOYpvUSt$mxX{qNfRLEA=0_w%A{Ub(L0Jg3~v+xShx-CQtq^8d1% zw`y?ocrV<`3Asg+ueEOSwf0T^|Lf%~n;eJ#7cKrTZ*hs~f2vwf?OS**6^!3RP{^sB ztK=+^53 z0)yax)%B>!aX}ZYp4<14=$2m2#LIJagit<4-=V}ThR^B<+dCNcLo54&%mP3XQ8|3e zg&J%oE=}0$|^b}-8H4{SU@bv2UoiyETN5oCj}cPVg#!gTJgHuB^LR2p022-*{=QRi91l-lnFao3o6 z8M0Or2k&W7dELw>POK;^yT*YYCsh2H=mf-8Ty;5bLPKNnM)DXg{9fNoozz~9;;p9m z`{ESce^Z_NP!$p;`^N}NoP()Oysgyr+i$Jbj!HSbf)_tvknCpmcJ>$*wboOj?t^7} z%(Ia?t{v`cX|hev;~w$z{rB+K0_8G5W>{Q0(XYM;486T=GDNo{6%F}Tiu z7z26E9z0ury!rTtQw@c;+}F@ICFeIx7X7T!Z&mtjm3{?7F=jdUYg7;wFJ4VZrB-9g zLQu3tl5>&M?j>bxaO$7c^sajQFB=SpbrtL;9{ZhYsq!=tFJo!9omUydm2BwM_O9ZJ zf9#KI#Vl7gC)e5}`cmnD5vi_}P2BYgL+}BivfIGY6IWaH1bx@^JBiq@8Q z-Ile8Y`4x_)!%>MZz}lQrd;w5; z^%5FBe}gOXtWJgBvMMi%U&r=Dj-_@z80VM#vhcY6S}#8eN@ss*Z9)o$Sn%o#7z0h7 zybmlwAR;fl+DC5eqdjtjNIwO8#dPYT&Oq2k#Oj(Y^WaWNQ0w#lxI#Fk$BOtxe;2nk zGgv|XnZaS&X-*G`$r&okOFSQUU&~I%8FuBCZ`7Nz+P{#^P7+L@j=xuRR&7p3} z9El^8?RljV!sA|YTt_FiEiZu9P8u`BQnGVt3vxI&NnW?w6_S-bk^g5V7@~$@Bnu;W zps@Dk*BOWaRH3M6-CiG+8hOg&f07?M=;%RFeBoOaj;j|NB{5(L@(%tSFm`$gMXnNabv&&WGM!o+V!w zH}rszRXou;5O~#`U_t0p8j4f61(GSNv}H%E5mB7v<#mqlR^iXn(KTt1e|jY;@FbI^ zbON%s?^aFmH`@rCohj7u&DFDfV)LHd@MC=Ztd_|ejjb_5N?-yZ@Dxg`_vsQ&Y+nwO zXR}OX7G_!6x@({R>M;ujEdT9#0+81F$r7VkH}y_7nO$LOP;!fnCgqd_gEbT52{{Gc zBAP=zZlUN7++fsr7h7rge@)e6Dh))2bMQl=pjZ`|vS~gs8Q5EK=*$OXG>FHXe-0q) znmckzqsrsA)mQ>}-1A0fBl8*~J!RQxmI3$B`paN7gKS$4dAzAGaI4QNY!6b4Gy8^P zCuM5`y|VM=XzVb-9bz+B*@OYw)l|ylgnKQu)}q_oA8b5#=LCupf3v)m;AQA^2gt9* z_!ZuI;1&RZa^|l%fr7X~a`BX}K$*Z^>IfZYi>jgBqNR~-@o2lyqU2~<2FY~}y=;05 zaycDy5oF+NpJe@VC=e4T3HF^E3_R?MMO&8jXYKg< zmpHE)7Y@v*w9m2pn&YO@qbZrc1O;89C`QxE9JanVNXi3KCR%JB|z$&v75 zhhNT$9xbu*g!fqH5vTcj3Y1@IE7vOHiC!KjF5eD95 z;`|XjA=jzpe;a$XYKv$GA8i@8G zH9k4c{0%wh>e>K}mJ%rsMhK>3Nb`lOy5SF)EVf^`eU- zrd!jK5_VBCs!neqw)P+rR;94)lv8m>u`4KI*pJJ}Q{P<}f)?3J~)vzw$B@L(ue zAF^yqvMkGT1s}oIqj=6qmZx|Cy8^-Ymmqb@kn(t1sWvVnGd34CG-OfA^lzYG?c&vEVYe-k(9P;M1fZ9^0xq znni?_b&hx=>15J-@1F`A>)$<9V;y^YtzcVOwCHwj#c=Ey>XDYoNY5+??W$GqUZ8M? zLsCIN(DPWBa#m0^NhCBWNa)9-&lqCXr?H=ZvHyj0Bx??3bv9ytB}FLkO{BtE zrK3(cT@-MhtwI;`{0!tLeqI`7OjDE{e~4KcpYbZXZ9xm#{(#O~f0NT-XiLn#WVY=K z2Z*9*R&l(gvpb>Z{?GGPAQ;bCnY5Cluywz*i>}FUVq+4 zaOZtM*35N<`a8)mCujtYyNZD9PYuEcpK>_`i4I_-x;}v5Qv_b+O>r2`rI+0be~O{? zck{a``i8m1mRXKfHGfrR%%k087dtLxsJ48jz&Y9ZBpYGjwr)-Gljj%Xk!<-VLox-r znYY2gM21}>&+iFoeC3D3cIGz66e-_&dkEPh4P~%skzd!ZV!D0-a=bF3#xROqQIbu`MxqAVfr8AKGFs38!a5pEg3rp zl+0G7HR|<87)4XMKHW^2ysvvXX-MRa))SsNDI7hytdMI-Dr%D{ukz?5f23_$ZaTm~ z)$w3oSB4qozOqh;1OIb8h;$qu0>z0!+wRX><;zBl8RJaBIle>^ud1tkA+0q_el%@- zevw^dzVEQO7b~w+qY7d{ewQ$1m>SwnVB@l#zRGiE3w^96v;Ex@fB3!iqN#)bVS5ag z=73wIpXPDp%}q-Bsy`;uMOfV646dYR)4`=pv4mXS;B^z7-QtU{x*5mhGs>G`oofAi z-1HA%h#uJt?}|5#G85Pu?qZ#gJ-}~e|MzTgG0)nTUb@belj0Wy7`!Re;8k6LPeCyj zv=FOHfcp!POOp64f2JUMhFIS}>g|6J@-3$fxuGOSERNId`2cfqeY31A(c2E?CDaRNJNZ7wi;8lq74O+m{$yD_u#w2^K0yUsVv z$*1{z8ighO()QESJfDDHZg7Yi(66FiJ$!H^hJEQYf#M7)f9Ji4+-=I+c`X5?m5fAB zg-wolA!^o=ur7fCXu>3V1e!CKu|3MGM2EJsGth&;DldfORo=vkbg5C`9MFvwQt8u8510z?l*+WO z#j`Zj&3W&G_8RP4&$H4WWLTZN9Jf-Hwzx{>ay1@g{79dv&3f&tAH~Jzz2i zn$S<$#%k5{tCVXR85De`J~TCjJr+OcjW{x(FU+7}1WD zUe`CXSJ-HGDkz35uGCQ5z;3E>I^*1gNv?;_gp>_Vnvi=3y^~r(#zHjL*-wGeFX zWX&*y+yn0mxsi{iuxe73sGY1reK2v0XM_icL|7%!1P+o_!a3E|T!a-Z7dgmVE|d>t z!;8T1f06yO0^o|#Rf&}-M}l;NC=Zo6zs1F?%2dKu@a)Y=)ZW0^L8AkOR}|&$)#S>v z0T6(+G()6pZV(;NLh(7(w!Fm7eMKHs*N-@cA@6*{{Hr&0d~28kRcaS(>A`L6@ce;m zVvM*6al&wDR(ViqmOq$W;syPrC2Z}<5#eYpe~R2spqj>_2+InGYm5|vklp zR}~Kfd5`X2UeS)jP)BRU%Uyymgn4U zkR&d445tX}24qPXaMKw(VSsOPiFSv8e=?Dq|1p1BT6r;vZWg5w&5~?JJ>B4w-Ge=d zq7=~%q(DeNFas4hmmmmIf-6hU#gt#+RB7+VwSpRBu42+bp3mS%-@k|DqI~;mfN8kF zy6ub#kw^W~;+ce6Uu7J^8KVLJiic@)Pm-mr_?lxDh4?zt0{8M2TPTfCa?d?se|EDE z`^2~nr68A)Cz)igpg~-TnMh~ID>J%LW&>52<89BtAon{prz;?t#wyu7t|k{Uv5cdL zwJcBxU{;uPsnaXSaZvPNgh!fLxzDOvIyla))wbl(H*SXc%U~@jBKoC5D7>u*Nhi2J z(JtaNz-pwpc}4;&Uj?#R{}6=P;Dy^WaB`;lpMnT1#Gb0RFV_$un6DRgVUL$vie>qbq#0j9U;_Hm6 z9qvXqxeTTML6#>RXN8~zuPbn;w;TkhZ!(R4Mwa4kT`$M@ynVZa$RNDPnl8?JP2nLq zdmCm-unqLE(7^IgF0A{J!)nQo*&J#N4%v_^lGNE94jUL8_V2@yHzBg* zY4?*))GEPHB(4B%EY$xtu1o#fxIyhNY)sg+#srd*63ET7CnQ!|pNY2K{@}&!4l3)L zp5jfGdMYn@vfZ=3F@Tf*PfQ8L!s@wtAzWFLrJ-^mZm`bUe=-2fFVHo6dc3K-El<{K zg*ZZ{%Q_2`5B6V=>KoSFjLz#4Z@F0)#TJl2kMFa5mW7P*-2{gCv_JTTA_*fe^8pCQ zFP-6F^VW=MrAT3;dadfvOIjUz$(60wrwS#>?dw8pnZ6EfC`s<2I+P^0uMfqSX;x*h zP}2sPZ9-i0e;fQEp0Er9Cc!j$Sml#XtobdZ;wyz=OKVk0a~*if6glIFIv(3;vni3DfvM~^NT4M zYon^B6!3IP27702loYbxo>yfFy)}Z(ug*s95CJ#l1&SKo`995H zY^r+ROW#w0xXvgnQ8gxyiz={}zhA5tE^$JJN-bgyO;31M7iyw+-YxG~u3itciC&sl(@=mC*82$pq!eI7}$!#ajBQRZNaKbHPDZbo|i#e)ZM!4qmN_U*B-BR)JL)RhFI-NpTuU(0QP zBE%?AI-ATVtgYPMHp!JYOHBU zNwRcDT|tk$9JHVcb+2N^eN3gzW^XMjh06a6DusSFpwbYf)vbp_CpSe)n>5CDfMt9) zf0rEJ&F;d%@>630`v7RN`#*ckltET8@eJ z)206>V+;_fo()P7Mx1GCS>`$z21j(6wKu{lFsNd&s23OF6cw@6-KTdZ!jEr!Pitj$Np2mHs%@BxOmy-c~7yP?-PDf@|a9e$kS7U zm_kAGAKq^IvdS;x3jl@Y02_p4*Db#nv(+ z&Wy*>e%f-D<5{_aez_epbWMDrf4xV?;}4G8cBHJd#w|%s(A&C{Nh3V)u=*107n5Rq zhOaZ_Gx4nU5c@1IOei=vmCqD8r`<`|Q2gPw=Tyn7GSI=127)@xXGo|WTZr<^Gv@M$Ie+H~ zo7hq2oQR(BK*Wr=SF9{jR( zaZap@Z}m?y3ju&RoE&khN|Jz=v34_-v*hb_t+^ZL8a57GmxImCy4bAYWW(LOen*>i zoJ3Z4wP|ReTG{GN6@Bitnb*a@N7+_^F|Dv?F*W#nmg5SaCVTjBGTwO#vVXg%#*Mru zt86Z5!s*H)NPutN<7gdnx^bVQ$5eN#RL2^@8pjC@mv?VmALjWm`6xe4lZ7M9BdbmH zYiwr2D>CI?zoET47nOBhmU*+^zmB`HzlP}?d_tvq4wyw zC89voM-z0x7X|>22fZsBvl+xvp730B$kgjK&-w-uO96l9reBpPmSaUCuf(U zQpBf+3-}WxU~g)Q%z;^>cxHrTf1=!}1j9RsWk&5TNjVK;m;}zM1AjqGHsf{-u_mk) z+2opAt+-VtiLg>=Y?oywl5{cDfEE1v>%2fUwP)yvaMstN9d9w+lKZ&<^!e zKHFLR(~>t|;HNX>K@%8}`uSOs6~&cTDMY;j)tw`J*eLEGZs5oxTpqV>bUw;ZSZPF%|GJkAMI_+g)zu?G?t z1wTb=o`j*s3KkBe4WE_IP4bINMX5BWR&;GuQBNuUc{qzA8iup*hNhPz{sXaUsCPx$ z+W++MOM3t2dw+e73IA`UZSY`L_nBn3>hEjYx~s3M zPEvW@yO+0hza$9}<}c}rd?WJor8=-3#=QaJuh!wM(SLr?!}?W08b26k`4p62Y=ZGF zizth;yk$fU%X>%oVV^t#Nb&#^DV-#bvckNBpPco7&S$7GY|V3&*~E{(!ojQi6qV6- z(+U(|bbb%3j}J<58Zv!813_GX_+YoAB6EPknIzwlgSrE(&;=BxmnbL(Ae;^O0V7FH zR%08MSARW1Mdh@_(;clmG{uSh3Gb}Ym>CW~IXuD--s9tY%&hV7WZP`}>|AjMC%g~xNj^)D&{lt9cyBkE zfvN+V5J7o(w7-8Ka9&yn=iv;j6)vQoFacpPN`LtBv%q?JA*}Z&7nuv{6uwKWzWT6t z;y`+3A*8P!jpqu~Z)yGKsBm!#Zi(w|{DEQWumg3_Ilnp&933WIsu3!PvOf1AQGZWmNz z7k?rek_VwSH_IoV3a)8C?H8NeC{u-Nm*V`^f}~kA)o#O7*IO-VQ{`wdyU5R_34FV2 zEDmUJkSEJH?E~^tcT-VW!yF6p%Cc^63R(#GMfT^&`pGo=jhL4BG)=%~>0&a3RJiMF z->XX#dQ@%HA7m_kQuX>1))wWCKJAtuNq=hh1oAXma7zg7^b3>-G<_&f`>^d!z?yJ@ z;`L(2u~MN=vkPk9n#LS} z@=J$nnnIeYAncnun@)T@x0~`iO$8Z*_a<$372;&KXxmceZGfMsoeDBAQ-6N-lYHKv zgsaPSleSmwvurlVrbJJ=?z5e@lIpVrPT$IbtM<7?BhvC8Pm$W{$}f88hG|eN$<_#6 zsu|EEy`xM^4ge=3&R{k^wRhu9K?Q{k)yCkoQ4fO)rd4`JgcZS8ttH8=aDd#t2D6YM zdNB$Kt**u^O_;?tAl%T}YJa&WX>ne#NT_l2L~HH)5&0~fi&GSPAWsnK;x;&GS(-8i z_BUC}VPDsldGC&r3QCeU?-Uhh^TJRrZVb6-f->2oA52t2(ih{r7ODo0h=*V&Y8eFA zw;>eP!Wv%z^%j`IYckR8$x5X&8g!9wXL_CFRYxsr{-V^RpT9VFK!2Nbl_5tu%bBXX zDl4``A7w>0ujTWNrIl5`-$=Dgp&|-Zuiqm}Bo~RS#D%MQXz8(-q-dzIY`f^__YN?Z zK&e#G3`lZVE6KEfW*q@2&;CXr^;1ag3rsbUe@Z&5ne1;Xsj?t(f>k^1x6<0)JVB6p zfWEaQzn2zbB~Ua*Gk?=^O-|ksZC^dk?iuSzLkkNR9@#m;WAfm$3pfcFXK=Kr#vAo; zccP~Jf~R1_6J^tLe*TiuWGJUuHmtUyh~nKsiMKn#VOI9Ijur`H-)KWAm#WT1g9e=2+P(IPVAac}0O=0;c zOl0B&#uJn4$-KYhAv*GH2p1zWJW*DW0u5wG{ehmy2Y>bke5gLTTx|x8cn}&IyRC4p zG!|>(J`qKY#q8MKh)KUALgWTWq@<8$99{l4VB`F4Ek@TxCtWIlNjwXJ3bll0%s3@U zA#Wif$rXvP zYqlbllXza5m;PTfDQ301oX)fU{80+NCi$%Gn;KQc7kpcy%6|@QCELKy>8nY{BLU1~ z+@kx-$wcjJWu|}2W>&#$w!v2(P<%w>TiT?M7#V{0wtu4D&?Z~Oq-86&JXu^nCxRM` z?_Qql)C~F7;weLrf?G?#^1+4uR^~iTd0UR3v=vVVO^yrn#bzcyslz$G*-nm!9H8Cm z2w%CD7%8Z!2rdDj5fcATx8%(b;tOm-MGLm6t4NDrea4z!b(@3vP??JbN+YBkg~-)~ z`ZnYAl7GF^1h4^fW}j)|TF|z)*YR&nD4OSPbamTW^{6jTGuK2AE#B~c`}E@c=U>E~ zv(2uBx3p%`SSb-v#?iPJ(c*9Y^2FtSSxh2ldKLPqJsXH`n41uUI*i~`kWwu7_L$7{ zW8jOYljXDp$p5$UPl5(K5C8EDtHY=_e=06c+kcq-OsfmXbh-^_N3V2x@aPSX-2so< zXE^CV1T*q>mrw9~A~&l+w!}5d(%UWyN}_N`KBr(_#IjAmO+yuHy||8;d|4EX^FIAk zJ?D=(#LMjrfk!K|_3s~#ngBz?xq$Lei^F<{SG_n6e(TkQtyoAt1_n@+(D*8!{gT+> zrhg-otn{qQ(EnK+4{0(&lH5EJm+=2>B#feK63~_1{w7Z``jD%?zB`Y0R^iTD&gDdj zWkLRbUfW5BPJihfqNN>3+&doCT02!ZR*`5}`%e##D^WZm_02s7`3M%3(ZjOxWeW$M zcj58TWBoT>c8(8-D!ilWHW-Ss-gYA0PJb*SzPFVe)B1TketEes;f?^^_EcGRASI_< zWkz(3{WokkLtiz7>fZ(Rltt|$qZ!DqZG3W18qztq3V<#Y0^S8aLjO~CeAH;2UZM_} zpYy6+B_*{=6Jh_wE2Kwr2hLJW?gJD%jT)ntD1&+2tlWU~dASgb0YdMSu2V|mDSz*3 z3}_64_i24aQWN4X+=-iC3^PKFs&jTyuw$WZEKP$F2c1K~H#aPE;-UqAFOpa+;@EjO zMMu??=1HfM3v3FLSZ!=wx*(6@$CR-?WstY^9nuC(WP~~r^Uumug0A9^iDZ2uK{xt4 zq!FCP>lPsB{QsCXu7Ni2V#Hk%2Y*iFbyLSQq3axv>EjycgRZ*VC4taXUN?o1Vv09y z9#hAv)B!G^v)fTjah`5hF?~!KYg5K8DW*76cchp;CX%&@0@pBxGlvLr)qh{l#a@ihld{?e!7oU-Pij(wXs>CLcR4+mSn7Jh{7?Me{TV3bc^n+RE z+?bX^KB@l6q}qk)ys~7g?s%U-DI{8(nm{ri#1=3V=#%mxj7_`fU}Oe52AfyUP^EpL z7)j*&*SgVWx3T5&w!Vd|VSil-G<}+5j;3sy#O$&mh_Jp!tedpl&sLW!a|`k;8Yk)( ztW$fH9|G{xkZnp{Rk0ma zOI)QwMZGySry??f5*vXJLf=2??SH_;(d85h;i6I~ii=6{gAjJBfg`C^#!ha<<0r+= z44!vVwvsz0gcOi7(LT@ISq@SzpBe9jGCBZq9mhDMi9u0VaFit$KM2G|Ov$0{Oa)09 zW*kayq=Ty{fmB6@^M8u0%;30J!K^P1dM7A`!?`~m?e6U!9skIgIu?sG8WegyQj!pt zgq1QXE?qXXQEJ(lr z{h_c*f&!z2ke4P;uf=r-TZ_FBf-xP_)|$(w7g;mDYJbKT%>}N6AA+cwF#R6?xc?>W z<9^)R-`yjRAZCGIjiMG>IGIn_-;hOsU1njNmJ`+#g7Im>U~l(im%k+%0=D+);oRvR9tPh%QWN;gSK+ zWx9PoW`Aqz26Q>WDEg>NY-F=ByxuWvUtBDGXuRV=nYf1YKR&E`RO+YyI zCq{aX%|=yXv|;clA_U&K{bZyszc5Qqs5ADae##=+gZluNC7N^SD4<9nY_(tc7D9i{ z;5<+Xlr3`Dwm+iRcn%CG{QL!TmSXJu84y?K3hJjS zr_hM>^Pj-;ONmoFFU%=OnPJJ+*{ zMa0k;brpAXbi);p9Y3HwGNAb7S1T}&a=w3UO_vr&e(?%6jVMWHH=Hb{?8-gmFfR)g z&3_HI-}Ql7Tum}VEkicz0#JsICm;?Eb3JHrA-KZC$*S+gtH+UxZBt}-Be{{Ch!hAL zU{sOl?!zn9itRRxuG*^ISO_e=TB+>iHWwSml+kQ|(PVER00Y|t4X>%P&z91SQq|`& z6g9X%p2AP>BEV0NmH)=d|CUkyeIgUK)qi;_ZvbE-*UA(Na>o5h1SKa|$I18l(~UyiO4`x9=VGJx0$tMW@F-Rh zcf-JpM+&%e<-;HHw|8y^$x?Z);D7g`|4z4G!oO*%%5>a|1uDx?vQ9`VHKDxiv?nt% zJdPd1W7xJ#hF}&f0rg8tgj6rdu2sFHR9y8UTWQgXYF-Ld{dw66dJD_LDVBvoa&?tQ zlMMH2ZC4`A$4>;3%9BOgM{%j;x2ghc1}1&8Ym(uY-<-GB23A^`8(e8uTYop#SpvDsqaB zv`ovvaG8iWlv1@4Q3~4F^M3)ESicWdU=)Ezx0y@rGZ&v@eK5(gIsSORj~S3$dyo~| zt1h!yHAoTd5FUj+Pn+8_tbu9!zN`_8I$vzmwu&?+joN`J7VK=*+7zL45nVd_y0(?3 z%#zF6`n$@c;&QSQkZKumR@rczE2?G4y<(FHZBx5fR7?7&P~v70uYdAq0IO0y##V0< z)L3|>z4GHFUxSSE&7H3LcmQFE0*@W+@5o_;&E|uKW(zx(r^kVb$}I#-=1m|3RRe$J zSD(+zySB?I1iQ&+y$2tE@mbK1(7wx!^7O&((ZfT0)l!@Wm0PCP83braT)0EmeuGjh zq%3e=R7K!y*)8EEb$=`fIr!f97w5Rbox{&;xOG7v*cpC!NbjzsMpTjD#_IP|3;hp$ zzeA4UF}C(lMo_gtqy8hk^&@XL(;r^qI2Bx~?D}_hQOp6B%^u|wczzC1+6QA&HY2s< z%{1ggdpHFzm)YiYG9+r2N4MY?dk5NK63pbmFH9HzwA6x)dtv&XlN)-e zK{A6eqi%27+_>kYMPdxJL_VpC-`Jz>oIvubq#yUb3kOR~XN)8Q1b0$!+YvlDS1+`> z6WlRXrmQ3+gMUEfOThMuf7mcX`^`Jh7%f zRKspAZGVxFA>N{&IBQ%#`7`XNW`zBuyte%`&&KHw?PqgoM&b_r?2ouM1`DgY^&7hk zv6s{Vz)nHYT2#TQ9_y@J{OG{dQ*D)hi+XCjJ~&GqQe0i`rA=UoD+v&HlOIGmrk6xk zQ(uyj5=}>r4>QiEQbjyZ@IMrko(4nDQB38fk$+y2q1wW3R6sa)aVcdDJc=d?=WYW^ zyl64$fmfuIU^&e7jxE7f=bOf{% z(Mt70_~|?1q_=kLQ0ADBRQP981%7})n|JNIP_-M{OIex0%=T^imG;CK<1ArSn!(Mf z#eaLud|u8-z3e)u_o9!^9~~gGaS=C#aTD+s0!gawu!4e?2V%KT;z{53+8?1FtGK!c zyxO&p?07_NIe3mPuJ_f}V;R)vp;aul2Jtqzzg2nMfF^&9532k22DRmwt_Uoqc{iZ? z8@e4wxgRc)olb8Xnqek3s63=$9R<*LiGK;b=$!bRoZ}S!rWHatDr6|7*n^ODxP!aY zy<2uY*=e!@tX-r|^Q-b>97J;>h{n#N-c}%f4xA&f*W+#wkAKy+ z9dLhdR5Eb8F`$w7Pf;<7@tt*ndJwsYkMJr1b#^t)uos!URz_{JCD=|cHC&=dsVn#q z963d`PgBt0px5+XzdZR<+^jdsuP5aa<4db$k6ne@S@#q+^;p{^xQLY+@=Rg=ZnWuf zcFd;7kkN|AxaTAMUQC;9dIxnM*?+7THS8HGz5g4SLF9Hc^faF^wJP@%FVKp2zGM;L zwv&wa@Qyz9(7$Da=iYs7;I9d6mLo2yYYltWA54Lf!EZ=i85y$I7-(5*Y-{PgxW>44 zZ-WVJjRlM`-DClCwy$!E#Mo#8V}|&5GJ)yz`X0<+|JFvM^W)EAHfq>yhku-YR{po! zjDmju*IJE&p8nU`jWptmH5JS9)=LT}yinH@DKm#+IY}5kREjxKoKYEJG84T85)l-i zMCpp-?w)Z=*%#j5&n6_>i(t=%JR-uD3U=wU$3l3`$k7}`k z=H3eAXjBA(L}^Xp=P8V+&FHi5liw+r?PL!OYg}xjI{$#moq!5#u(7Fd)o2qlKatF@o(F zBDEU~*IC)$Z#yE`^l*lxC}aew*STh#)VxVs&# z6~<~ti&@cbV?+Z&H*up_XuhNk&D-8LiTEu|XWI+&xFo-WA^XGHtC!*(#{naY>O5Hpet`4*+pAF~==;jzrQr+DNMqUASLg9~p37-X{1T z!?k>(i6N^{RwK7iZv48_X$cf=<|A&i$sKPSZ@gpm#`8B-MSrDn0K;9C;ft;W)!a!A zh=NUT2ELaX<+u*$V(fd`E1e&j7RDIt8ALv3#6b(0_4ZqC*S<^yLgJ6)tfWDF!2A2) zNu(zGV(=EyzsO9;yyooA5a=%LILksi*FZOW^ASzoZng8TGIz%NF&+JHhF83`=oaDq z>S!=HIysgHBY&^(YF7Da%E54TAy>(czgTE<5T|?W4lD)77<~5=yiaErgWrC~k%e!n zo{O)*U(~0YD#_k&L;xQFuK8GG(Msm-JtNaM>q`^Is6{!1w zY(ba`L4OA4`}>E30p5YcpU?Y8FAs4?^#p(MJCyM2DRm#as-0K0!j5}t#t;L%B){gQ z`#b>#zcJfDS8exIKF?4CZF8=MX^k-fn}h-fOjUVMGw>(}7Iq>4Lv@v-G&zLJZo+b; z$P^!PR}&`{NP$Kv@;;w`%JHRH?zPhc;2#oZDt{BKJ|w`1UBhQ?YaN-oK{@8NTAcJV zF%3`!b^^re7>Z2lLkx3vFrQ@0d{#9e!u(m3K=LJTk2p_`5Jem7T)RRYho)4Pi<1E4 zDx1-f^B^CV(-Hna;&q%mB^867=QB(nUY2E* zBY#mOj?NV500OH5!dwEj9PySUNn>ACsI2L$63~@pF-tqcDL>+vIjSaqD~l-rQjy=> zv`)!&Z4adok`AEEQFq}pcIu!amru&+1ug+i^c-eb3JF)`Q_7tzg(i3X{nz*} zh_o5Rqo29Jv9lR4UWL(PQ=|Xe(-hW4m)ix^c>!OUo;|=mQXgqpIUCtyon*dfpIkG z-xB}f2OR2yd;&`}ARi9G5zZc9Ab-cW1#tgjGLaE*G)Gb|s1o?Fvrx z8%T;Pq(lZr%4=@hUF*w-z=()F4-9QI7SmBa&xb$AGhO~jX3`wA)jMFsu zJ@xn3*z~7td0iHe{PVk0^AtAS3y33@gAi~WjGPA`qD*l~0WXI+ppL#gXn*XR%hMDj zhh>p-cxCt7>!?u&#vbSeuV=v%h^Sdr2sX7O{|1bgJx!o`DJnS z6YNoo>JIQUs|MFRiQU9q z1~N&-4ubSstf2SYf!j$P5pdgz9jw<@<{T8GtHp=Q48+c54jR}3_VPrAXE`Vez(a=< z2r4^uLRE$rp=ad^}|45!3{3E~kSm3Jv`+uyuE_#G`g%Gt4 z0vMDR*>tkFz`?<18SXePH2n&RXd(ma-|UB|Qu1 zN{W^YjRdPndW_Z_bA!@hr|m2FmsuEj)d6^4mXpZLII8xge1F&M@lDIAG3by*w7D1=TZ0>mcOc9)lxa_x*HC(E!k|5HGhq~wpj~XWHDO$9 zci|VDS!24o(0`IF?gqt9vJF|#F1T?z2^wLm*k;>_giW=cLIe1=)-L=d?UL#WN{Oo* z!z=`^D6(8uEUn>HBsD4vTpPU@_-i#1j#!q}r-KtTV7iE8ybWOfl85pYAdUlcrJqR$Wi&WyAHg@ZwWq-gO>(LW=q65`)QPt_WgFbn_ zN@TowftF2Yn8w@5G6=3p@(K*m{crTqMKrAuWA)+pYcj1x$Iw{WS4Pl`VPIKj?Zqy- zjRtru!Lx*F=~3DmE(w}|vP6hkicyXVig5IsJyYFuM=RcIF0&Va{3%0>oCq*1+mCy$ zCz_)@=6|u)5~e`X%o2>DotrorWz;G+IeBlH>l|$y-xAoM+u#t^N3)4z5j@(4)9l+# zOc)-|n@l2JcX!MHM%~R^0BbGUrmPpK>Nm+F4OHbS+iqdM`~vq@do7cMg+q&`xjYBj zVxT(CA$;?bgvihC(h%~BeuVdJ%}u__xjJGa^naV+XgvJyzTdV_A&JHo- z$-QCH>|Ruh_gzT+QK#4G>}*;&c;gL#>Ak=vB|O_9jrXjSAnaV>Q2_lB}@tM$vqo#Pz@n4`Y(3;2f`57FuiQBwpdCd@C4UCm6rG-1KW=)>T0o_6-nD&rChQjb-6|KoV(12A3*aqcZ+EKlB=|6HHwBt zy%)JJVnvd)pT0AfN1!UL0whjxaeuZX392Ac`qHPjc1l@xGqr}rer1P!YtTHS6ri< zi%Laj%j6^|Q=54JQxMCm98G~iNLx5{F154J$0+hj5iS+ZgtxJJe|`IeF4HixDi9&; zF{qqFB`!HFu*ar!oy4&-ysC6dQ-2T6oK?d#BhF8&oEPQ((aE$M@Iq_E@wQ5`<2BQ^ zBKDZIO|9$pK4;~#$s+H@RuL}X6h$&^m$Ru0NcNg zByb_6;Ijcb8Z@ZE8XP0TF7Uz!nt%CMUwtLmo*o{oMK(5t@SYt?LudDbZ0LpqQpt42 zhyh#B8}tL7jHk{Strpptt`-@+ZBIvYJPmo_^tjnMWt(sP)Gz&T|I+t%M<4%9r*SgQ zJhZAqbemSf*cnAo*{UNkn}3e=iL>Q(ljySri#K(VoR`EC#jv=>j;dxPEMjyyt|f~% z3wj0Sv=~0X;crr+=uJsd%{Y=NzYxieEOl*E%2(dY$TF zbouFjd6&aMe)3=5Z54h7X@^_Ks2?zR&Cf`5g_ zbewL4FAheM1#&XJ4aFTWJ_Dhx#U!xi8gE7*o<1akRV z6ksuo7>45TOuBD#NZxiamkV1^pItl3F|o4-GZ!L6g1QqP$AA1;*l1R|;8QY!Fs#S4 zV5e;27PT+UXv8= zq!8oLdRVCu6{bI*gC4@>_p1ziOJ|^plvmv+q9!Rg%W<1&YwL&nx3NGky0dR$TZPk0 zp3u@2E{R&2%c;n02pz_EtKMok)L!scbAjE%Dc*KG{KzNu%>`4kENX(U2yqjMrw4%% zM1^-T%73SDA5=~L3Pqh0Uzxi&V?8{;t2p2WnH2U|q2;2YYl*ku#TWHf%LI0e`2R_O zI@PDlC&^yaq8huSr3DoEc7YAeSsh=KGZDoU-VO%Q=rAetUMoY>gLoRgn2PM+H!z0Q zwCrHHfz%V>i0bac?wX?U6#&~){Jl!jxfv~ z%Fd@B(_%U)i2@F2W>OAmq7 zyDS$gg09c)N_+r!nR-0V>Ax7Ndw)Nlv>`sAUeib9E6AWRtn3q=>d8$vA z9N*QQ7n=zJr?znRDqJv}EcDqZkV#=DBR7{dGnE7Z4?MkE#>MZD5^{%FQ|d?7DAD)Y zY0hyTN{_$REWS}$Vd~F+{z%hZ(XWG>yN#Xk@9;{Oeu|H9>_q}Let$&{C{$z zC=G>utC8VwHzbkBFi>8b%UM@4O1${$#3zZxZYEKmdV97TBH)VEE+|Ptf2|x-7-)c> zkYD0^NF+TeXC0>P3mh^?<4JZQAuvIa1pEO8bi>>s?Xi`BCz6{mK>fl?-u;Zc2QVe7esW4rwL#q2S7*ZI-`y8m5?`qx0bbo_Siu&d} zsgr8qCserLC+_iudo9jN1)v8Q!ZbNw>bJdRwJ=hyq? z^^$FLJZIG?CRc?K4+2O_EPwsvcm!~4%;2>Tq2la2YQR5}DwS3h-$<<;4{;Mx0ShsT zbakp}s8G4})W|ucxrJ_(X^dGErpQj;dtwHmtS*}0LQ*qT6<1yJQGE*CthsOm0aySI%Bhk6Qik(! zBc-dfK@lW|@fVFbr`=P`<=dNSx~qFoD?7WYS&&IeeyS&F@-u0GOIU&E7ehQTEXwSA_1A1_u|A(5+8v# zSuy8x4c%n|`-@-aDDnRIXmTg*UTtsV#&J_mKt9}|FYYd*oY+Xnky#G6^sAf?P-g&h z#vATcs;4whe(Db&QioE1y=SMBb|f}Gy?zN!jooUP5r){YS$}!2<&1d{n=S+~ItK{r zH7q^?9MTmr$i?}%G1Jlrjw<(E(XnwDB?m@vIa9=pb?A;;eJC(sZBa< z>=yR?^Y&{K8-H}7e9&>%10tNzajej3`QV3HDKq5ofisD7c0$o{k1M#Hq5d7 zi4|>Hy%ZU3E4EcHkpwFZC5;7l->EAfb_|pA?uP3rJu{|o!tr&0qk1B?+I3T5t!=;c z(|#Ep$w6P4#qD&Y=Iw*kJ`~&Asvjy=vBoK%;ybtvLVrR#X6A8}NSfYQFR33uo#j0F z$#v9N9po*JDXw8S^`VV?L=FU0IA)coN(lByKoN_yVcg)`&XSdhWKg&F$+zSAb{y}x z-E#BeM~_xCT|?YvDWFpQG)Iyk*G-+f0mt7JGwx7aj+!^hI$8`&9|tFRRTG7EU!yoP z%A2<9aeq-RUP5d1+YTENxo;^s(r)V4>fXV(iO%52e@T|JPrzCk+ARK&+kFh1S?XLQ zZmZpHk2-Ak&0e-+Xl-@G0Z$}(QdY*->mr-I$JJ_BPA2&fjDxB62MtkU4A@r#Yl|XX zcA~|;r*%<7;3zMbC0K4987esxOH;4uR_*YKVt+#=&1}4NNM9sN{QKfb>694PlBg)E zp70PvY;-0P>-7R%4TmVC)!gX{rmks#=HvT)pUG1*RXqLJJT* zEPv`uKaISgEaJ*(+=b>#r8q;iLU8k63MhK^X1SuMK+M(T@I_Gnp0zn;hQ|4FbRgN+ zo?TEiKDUUh9ab-+yQ>eIk3Wt~5Sz*+tK!yNvj-=NH@)N$d4q668=9%p$@_+aIaj#_8S_e*tA zA#clDMCLU2JJe?7LERjFlj_F*n0q|yi+)dGJJ(@gLwW{WyX)Uv5?bx7n*$9M?lm4# zzV+3~zp5R(v5uZ%ug%9tnE-}doB<{U?Ht$M{*hx$acRXARuWU^yP-us@%iJhfPYJM z62On$!`$jb>jvH(n2xORJ58u{hZ5irxvd}`*Z6SK5sX1%15CTRW)kxYHF|+vIVKcU zI>$D}eimRC1@sM04vk1yRIu#9ywjn*@jZq9Kf}Jn3}eUL#NF2A^})C$#Gx^Jv zekNN`J_og%&@`WUF}m|yhJ)eA&3_W9MW1-?JJ+PmLNq$D;g;ZqEB zR)zp6KHv5`Xg3~!t`~hv6Mu1|fBp>n>y}D3u{=m(g&mb4XzD9?@!qRM8C*`r6yq;w z&0f+%go61X+ANP-*zN<$xLdmf0!;2t;!Pv}Mth7IcWW6TP>&4{5+yk#BN`N7$c1l6 z46PgLUGW#zYc?@=8#vLObafN=!GC>Bco-yYPjXjGYB}uX5BtaGulbcSiuMl3kSRZdv^*ob_HYI> z7vYpMI{zrhLJzA5Jm^C~=a2AGP*q|ycrq_&9_!`f0vk8C7qA8UhT1+hcYe)j8N{PU zYdyUe=;S@%t^aH4gI-anGa8>-bNR6+(p(lj0w(tt^;NSK6@TIBqeqzPI`9&#B3v?j zT2#%KY#?+o=nA~?JRRx71qjJ|#&eXzvq~lc9`Ew>c~P@dyzj6lCNLR%uSYv{gsjJj z<(QvUnCfe#Ufa5CGIDq}(uX03>bSLp`YeUy`ulZO)vq1_R0VAjyf`lG^LeIdMi7P+rB`Te1F#nlVd*Ul}ByeJ>~g;xb%Sy z_TkM;Ew7P>gF=dcKHo`g8f0u6CdZ0-|0wI-;UB;#dT=y&-9H22dJrJLE1fID}qs$-gZsRG7bNC4wYo@O}C_p}$X97HZ52cQQO;^la=4 zdGS(MT_ZC>eeMRynKX^?^*h&Ns?_yc?*;HI=WZxV{7bCl7bH$X;Q_+kPv0%7L!g>Q zLk=Pmj&d#*xZvuN7=6*lA!4&+CE(zG{na z{R(>Uz*+}uf;u55PywJA?6`bGw0Y(rp1C;d@UlR4|4p7z5LYV)cpEawzn}Tf0-s;6!R|w_;oSCpntmA zs6BX+_8Y+73gUW@ROmCq1mn&Ybj8xzZv^Re{nNAa*Xuy?ez*n57e{C7;NaqB@_{9{Z)E?pKX?(2Q!DVT2y<}Q zKM3J(f#CoGmIk9P^%Y7Gyb1niRDX4fg6$r+8WIlFPErns3wfxVaLY#=`Wn3V$)gs^ zt5hVnA$G{fChcrS^*T+sQLC}#S*hc%WA}n(Oj#YZl3hNWspgCE*j-POI3~$x!LiK| z15|udZ~~r@F2w!Q+e*4YV4o?sE_a;gxTx2(9M?fE-(Ac?1)Rr@?#`pmvwwr9b|XkC z#(YS}yJWtcRbVgx+aS4f2kl`?syM`I=x)zcT*1bN(SF7IzaH@ME_y(cG|offLo|$* zb5C^!9@H=rJUzv7tDY!q5Uo51`A?_?^NBFt{I`7l1!gLWp%xRBZfgJ<&hK72iGKGy z1H!IJLuzNRM15AcR+ zF9~w>F*7(7{h3w|3OwrWa0l7!(hMj0^*R`eyKYn+X?JCh%CB)nJ0f=%T5~EB^1A?- zvTE!ZGdqlD7xS%$5$b%7VN@_?7&S9Kidvw}C}Od26gBfRj3Pk!e4_}!T8^SU(MGHT zn=&712imCn9ktV%O@G7Zx74;V#C>2n@V{8rs*vgQ)UZ?WF4?AnuZcIVYNbMuVQ=h>ys z5YWjlu{^I#NJ?wB7Pr&OlRYD_TZsRyR&nMID^_BFVz}L50e=hoE`{&b_pO$`#=cuX zn$o84IuFd*&tNfwdq)(Ph+hxo(4Mg9f^T1^$KQh&5bgBj&AT`Kv%^zKG(S#H`Umy* z`SF|npE~g4re0`>$nr#neL=aNw>m|P1C7hwG)=;3V2|F-i^{&x(Tl$wHF_8tt+;8g z${7|>Tqa|jhkB&rN!WinIix7VLYj_x_p`X;Uc27Y+kh0pi;0d zHk`L=XQPACgG4yXLQ7NgksZN)chEoUqeBaZNMWB{UNFMWadhs}d~lt8nsyYEuv>q~ zhfnP)PwxO@v_Cx;bsY%m?KA^@LK+L_ujHiPLf#6f^ncrU(PgCQKh~r5MA3>10suLI z9XRrjm)c!{5_UcWWFpJi(f3clSJiCo(u#`x6VPmb^|gImI@$r(11~LQv7~hajCPA@ zzc9Ds10tbe;zf?0jvkFTAx@s?=yQe0z%7%9VM`3B#Vir9yvGRJyRji}!UDerFFfgd z%QoF!B!6hKenlFrW5Wz=W$^C=-=oaNd2)%(F$0XUs|>?8km$9|THlX#yM&#MVRt@X zH_9o-koc4>W9Z)v`!HsVe$;M_SgUf*sM!pyU&Wlf4(O&lxlB$<_)SZ!T|rUhAY)gP zAZ`#tJtm%ZbEiDRjI7M?d7fJzZXvvpmY1pMTawBP&VAH|_?t zbU;kLS=PwlD-J!lRU;~pH#5bq>A+qx1pqi$7t!P-|L07*c$zjqqrwP^&M>Ub731v7uFqRTXfkkDBBYV&)=~lT@dB84J%q0*NzrZ37 zKwv+p_RHc5SM{z;gOn0(c49*-!Mn_BgN%PDvP)5M8^C{xI5n>vC^uQTE6@cYJ_S~z z97|SLACnP6eP86Ujut-an9W8j%s?mz!I*}K*gN9F*E5)~-@dDXXY_Pjt^rQ81A=&( z$eHc3T)=p7#C3@dZ<(8sVBY4_T7H7awoZk5m`{222w>D7pFg>$FUn7NEu}|OB&dIY z3=6@+vdYv%wxag=*pdoRtK4yxS`CPCt85eD;^PuUBNgXQpg0zVe>CtMqbGFFDD2ro zT&;I?yb^o_VIV`JEhse+0gKc9i;Ih%yKw}c{5I+kmmPUkjBfq@>Q}!?T^mod4LpWy z*TlocLRwiYnj5ivQhCkL%$r{5?L2?(pvSF)5*pTL>TyEl6-f^giOe;)j^}voDIXca z{iJ3wUN15rIxbDzioOKfyg29*fD#{!Z2-$WQAkTbAH>mOc-eDznRJD6F+dkpv=Q?E z#bSDE-7K-Z{HM|x_kvAvh1a5ZM%6udcKH0{^bjW-)7LD%8Lk-DfQMahtIW9mEy%RZIq)>AU#<7cMP`pQ)V7U1}buq&V79{H@YTS5z(zcJeM=Y zS9BwK#S|QzrVrT7N%S$nju<>kn*fO}$<K)CmNBhN%@IVl}dLkYr+8U@8q=!=NKjgP-P(x)uy^YXo(o<`mCdF9R6o$46&3O+fi{JPNXyQuRN>E1!SLb^dE%7LwAy3}HeBFb4I_ z>B;%)`}8*{KWaw+aB2n1R;?v@eFfUpV98@f2TDl`4le7@CCtJZ?eF=TFrR1}pxil` zQ$OFas*VJf*f6E)%?wQ$H8qeoGZ>R+Msu$Bf!ueZI0>$V7@=UPR?Hj{w5-b+hX!3o zg9?d7fQ^5-kXiE<)OFz=3PguXYS$bWcxAZskuLizilMiE{uM|-q zRKHR$Y~BG~m86#uXg&^^vqsPH0udS{Q7~~P7jOScWk!~u1c z4XHM3kCFrlb<-bP(Y@A z=aqljP;+}e!DzpPCUy=R9_H0}0VPdGX$DDOdyoRTB)~Zb1FnHC;Y~3fXY!B0A|bEg zXo@VNJ%=Y#O;8__n~{({`x?>*E+~tmkuJIT}}j$&I~xcKGi1eTa~=M+_x_YM&h@zwbZ%`q6Js`>$R<{Dyzm ztOHo9r&W$I`4j=?w)Gkne+#5TX&t_9Xl)-{=VLZ2@Lr#8yWDLqQYm>a!Hc-ki-F!B zjYb_k3ea7Rw3)>$g2WH%w5F)W=#HJdLnxmJM7^c%;7Yc*B-6j@LDq~`F}8JWOrH3x zi=^5bN2p!n5@nM0UGaPN4@p`*w5Wfr#pT%Uz;(j{$tZ~7zw7H9M+Sy(=!78Y)@j`` zJ^w*&7x9+&y<=2qnG9T4U^4_wMbre)Fxb?|E2p@tkMv42r}=o|xh`v03~$3_Uc?vEU&Fl7p0JVKq|dAkSE! zS1W`3D*G0=Szp(F6wV}I-EV&(n#fff+ZE(RSRycKg-8$=xH)xO6vP&0fvcsef%b!( zZFBYZTTkER(9)h-%}WNf($F8sLe$vIbAZR_$~(h2dudqJ)melT0i-1F1WIgBteg(& z-dZ#m5c!h^q$I)jagtmM(D`&8f)+>M2uB!FZk_X2{ zvIp#=$6k$k1zzAnPn%dCCU+pWzCYOzC+%Udu-gMD3P()&-u})QiFDuP5TFUq3p+#1 zP(h3wPyb6byQW4|owY64LlL%S%}Z_6ofqSz{TJwa^*Poi#jgkPhU+Hbg25aFGmq3h zY;T+O!n%QmR#|I9m%M*xC7%6msWT$8ZBiQ<@aNSVwFfZ{>vde@qaWpBM45%dW`jRbnp%b!kp~|<;m?k(Rr|)>JkveD;~KP;)v&B^e4A@CTuwto<_0~ z6-JF+YmA>T35kEWkfy2cZfkw2n521sI+^U$`r8zkbiiJ$dIk-%TEKCBd8UER=O2@Lz+A;OB`OsKKTE3V z^)+f_fO{N;tdFaf1q!T+X^!`J?BcG+!%UV2JBtg3JT!NA$ty^!aj7n3YC)6QQb+}- zMPaGCIWh__+=X zV#!icIIn*@K*Ec1@2;7_MGg*&^PE?~ZErpHXkY0hyFKi`8ypGwb7bZA>MPA2?3xZ# zy*8jET1&HT7Z$FnVXds>#dSPea4SX6MFmjJ2P36ni2q2>6a+wC>K%z2K(1}8jsdjP z>_tk3`sP)}kVPJUBGzK`y0BIzbu-0>q@k#TyWM|rMrIH3^tLallvXS6E_lY}SM_46 zg7ecg{^pkep>_=2g21R!>mS4npwLjAPx2o?;>(Jx0S(*~(?%Q*M}yTc#EWn~fkWqX zQu`?z52_Y>OZH<~3@kJ(&e`!V)2{PuJS=kZT~SXr{alXJ^|N_kC)uEwRx+%y`!z}k zG5UWKZ!mU*$^oRWNS{^D^YI@SFh|+YL+IRmkTW@(=qA3RJ{Sz~spT`VK_;F=XEBS$ z7aamKkYkljvcC-ogJ4a%n7RXH?rXi|^=*%8Tdb8b(Uhx?a$X z(a}cmds!2Q^1eR+K%O_QmG-RKEJ)+Fr(u)fk#zJ7xgLZhOhiEvz&;hhSi+O!XcK=K zb37v%_%lpdF^Xl3e3Ap4T;wR(DCl{S*e{GfH8Qtb6LTqqEWW}kE<{1J=ozn`%)HTK zO+>iN?Z?n1nGChUHL;)f;_qn0(g5vogR1AB+*NF#+ur1-oKB*GY?Z6RVvL^VAtcUv zC_1t`xy(AF8<7LfRc3EKvJ)ycDxBhtRq31SH-Mdd zmY+{Hdtv!8?VFp(WZ}mXbm-fR&01c~hj?f)2tH!ssMWBfoD`;7wYf!qJ`Dhx8@>>5}EZAe?p2lC>(t7;liN*=_LBR^4!)C}pJ_se`ljFj0&84^`M z-wX&Wf>Vi2pRLzwsZW3PB4B-<>o0W4Y!lX5OLNwhLl z(=l69biXI{#kYh>zdgC@mY73jw8LJ)>^KAdqc=C;_CX2~O;MUQshukrl}{cer_-(1 zUQf30vBfDE*PUO`yh6TJQ@bDl08audW<&2{onJsEr^vSW1~Py8z=H+BqsOO@pj#_y z&pzByj6NODuBxZ+16o@SC&I7Vw33zt<<8qGa0$Nuy0sIE*BxjA4N1K2#oupsLb
heaJM_k}(J0Wimbf)AjD?K1yFl5*Z|(&#(&{IZ^VwweYM^eb2+IY>)@bSUjV}#hl@NjkmtG=$o+UYt~}Js`K(&T<%k-U+$*o z!1jOqZlzE)>8KCow|>XprCsc{(Y}3C?sI5(tZ@KSzLkvnr4o0#U2Y85prE{BTlE z0-H_GL)QDVaD#G(E;|=DzwPwS(XuY+D>8q{9LkS|$66v{8IyBpL=*2){%o*J%?(^D zQC`#rhGTLOH>M80i{3D+@xw7fTiz$ueO6s^r?BF@BM+@H`Vhwl-v+?bfIC3RK@xNt z`=mqIUC;o**xpbMC=Hs=hDwum$-!@nsRbC|+;SDkyC_X$Lf=y`a;d*G?>jSF&QGh;iD@4gwMA_Y{ev3a*tPuQ+Aic zwl)Jr6iLo~>JcQk-A@1X33G3vIv#(ft7*eJbF>bMb9!x{pXQ2=7NMFbYljA`X|!E< z*(*GxqK`4>3Fm-R$$*}LJsp)lf%O8eC}#Pjn_3N39ut1SLjy6^HXC7+OcNvP2Wspi~5ehD|< zvIX?q^*>pYRK%GEA47eWXGueiHW+^-Px!!8DGdyugYm@_-5S7k*=F>-H&-M+ccw8A z_O!jAbHw#@GU5B{WaDHbX^evZlXW8CH|JIAI*6@d{<oomz@TYeawGtQwkNvFiZ1 zQOu7-Z8(GeY%)mkM%{nVm9h9XlIv|hA5+lx&cRWaJJ!@cd6fgO z4qaY$V-VV1BKn4T$`XHe7Chq>ol9>C)m9()BrA#1h5dXf9;MWw`j_(XGIgmHc> zUU4L-TMLv$iNiozZL`lQ=KgZT6d%)@>ubEp6C~|U*8e`}_%6chO(w%373H%iK zP1qRTDHdb7@Isabdh1>-koc52DdElfAUrvSVdD7^zWm52(-EcVo`4F59fXx1LXTG?SzeQHEvRd=4a`Air$GC}BWdqX`C&Nq89Z9aw)8zuy+lwRasRKJ+#yB{jcNa%SrM%>hF5G`Xo=)45FE}7$XO%}#nDw+QCzSATn4gZnm!)0$|pa)$tEiC zTo=VyqN<>ijrBg)^u>cQh%wew&H>9v z%#6!)K9SGnVX`QFVV(!3wQ=SaGae(W7%;h<7Sexi8RBcE7cgf=@-fgJf3f=wz5SIS zB1ljrS&0-Lmh?(Z7e-W1eh5g7`PnCdE%A5o&|BZJH@~QhfS|DB?Pu@;r19)@=ZW(7om&Yt(A#Oh zTNQ1524|hx+>%7@x@wob{NEMq)W&!v_Z&8$U<>PkX`z_tAoZ)Efc6OllLy{PNI)OU zFy;Sl$1_supZsLu9Hdc&)JAUsPiTKPNeq87Oe&r%s0zBKaNPnG5zsp7MjVbB0X?%F zYEU8^g+z^0m_hEAf5ocIOqE%zN;aHu%7uoHk1@?ey#||;!ci_5#p**wnr95slBf{N^K~kw9{WS)SF-Z)b8judIUzmrSl-W3&j!}PM;iZs&na@x|D|dMM_((Itt8)sZc>^N6 zz`5QeV^usVlc&p(7N>6=o#7jlT7Kuml(5HX4RzCL4*b;RlK~kBxW9RC&`E!Z$<2Y% zt?c0QVbPzGGXWFnd{Qn^eF=m{koC0RQ#!-Ytw`-uW&<{8Vjre~N5;Riu1yF2QEP>p za|(8dTs=#)we;)7aEuwMIH!8vzW4W0g`a^Eyi^U2$aEqQ%cKTv$Fli8-}VKngo4?p zKchCyt*kmNL~d>w*TaR@ZMA>GpB=O{lu2zi`?Hj_+EhU6<#b%G*7)#%25p7 zgEsT0?z3@QpP%{|r9DVX8=XB(O~?W<@o)lRv5T2j6pFmc*}XsmMz($?><5T%={c(& zYFb0V%pC&Of26a(qdL;hN`BC;f{mk2Sqbw33SH!J>%iFOP?2)8TylRU5FGdrn7_5r zJtDjK5#JW@2b*Drqrq2;9CXFY*A66@Vf*=(E{i<(*6US5vo`_|U&b)Ohx+FlNb$Pf zeP3h)x6g-MqDiJu${GDZWW7|q@Y42c1Cch7@pZkIVhW0jneJMu4lLS2!G>+@Fzy+p z{6kRT^!Xh>R$n3Ro6mn+V4A9cNe_gtAeI)JqD4`pn*i2%$y#o^*87M?EwLvZdVaR& zXbJC$6`4B<^lH!+xnihR_E@?6ij_-|k*+#_#Glk6rflLy`5_K~jHTlIr1WUb>`~t9 z8Bk)g1?0?n7TIR9(8x}|wx75tblMW_zxvY}h(!@G2=99!<-32Qy}~hLT)x-!?1pE# zc$EMA?3frs=`vrSgA_(Mu9)BcaSZ!;{_~&8uK`cUFFDazhPHM7tE_Dpdze}2EKv(J zGg~;zpJl#OYN=%f(;9UJ(V3EiCwIrx?#8CH-jrNzws!uq$*iH%ZbE}Oj1vXt(N1lk z7JifmNu4tDJnMgi+E(>SR)xgG^VMXYBxO`Oc~Ur!5;co4D#3ossyjkiSD9>n;l*7x z3diWdVEJ^n;Nd_xt@Cy(Fvje78dU7f3$a~zj!@f)DvTkkhwVbQWvkUmq1rW++XPei zPn6$$eJsNlXLyQ@$2zIi%R|KD582N?+3^m{m8!z@5i-1WV3zyOaA*(thI)cq@IaR=@ zOQaMb@$t`c2~Vf1ZjHAHuTvVP9!KCT(!cD4ZNbC+h4kgE4R8RhrcWpu$=0qpkr;Sg zefQ;;3kH7%1w1R4EHgqNerSvh`UoENel7f=YgO2v3-#Fm|F_w@{zQ4yu~&J1XIwu) zg;R6exw`)zE+>BcJ94;pvTeoT>B}zwgEQOujg@T;M868JiXB-M#CPi-zFV;Ag?Bj? zZ1{aNLiIK0LotF^K8By0gw->j#d~HN7fl#}Yr}tFB50ZuyPBy&D_JLwt8UNwB@RPb zE!e4jUAFBmu)={Cbfv-h1h_5RDx^8*w%9q%Q+Ts^zNnigf@{46$|%k{k$n$q)c3rY$dL1) zM8kjQIW_62rd7leU{7r=&xdi6hEXg+OS?fG<9br6s|E5cL^z%z>sg)<<_Cm!n*E|m z9ScgkeCU9%>#e;0q8|Jo*g|9ajfn&>VaYOkwzs!Vbv6y z6|=T`%@!qW=W*MQsJ96kovwG=5k26B)F?qf;Lz@b90KgGrib9M7D2#Bct_m9pe!-& zM(CPL-e*Hx15#4vhqR^-9Z!=tP0(KhYY{2dVo*j(V0szm5B&@V{ECF;Ty!x_`hyi`^p z(n>z4uov}v2|vj;7Y>ri=SxlAU*ms5Fb+EoQ-pW~qPdiO3VbYHIfP4^rp}%f57!z;d9LcNhxo^bpB>$Q_{G`b2^d;dZhdfc^2KKdpC8h| zL(GAT!;^{1tk&+00yplbH;Q`bgd9lTfm<(a?}FEk^xItmoPG)SEvpN{dYLcjG7z(+ zAZCd-)ckQ&qRXR&eufJTLoD2sZ7r0OEya#`7J%an(Zg7PR4H5*@#n zt)=90&k&coSWlL&H>?3DfHb&FnUOoors8FAUsyU{-FDc`mSQ)1rr3W;7%}K#M2TpI zlVUO*4yM5cnr1MVjKc4gV(#dA`@3vrP z?ZAo~c%z>W4QP=RkqSvF}e%ffYi+g4N~TN=S`CpxA2GPxGMC|N;>Eww*VGRJSt z@*)*uVSSK2->-_v-J5?dSL+}7b@8!QVc9lo^raNH#VZ4v#R1J$21F0v9;3sYLX3ZB z(1FgmLSO!Sn-$TtTHa+&Aw3l1u5=>kU-<&=NImmS6A?B?20P~^yf|J_vhrhepw~ofgqe@pd!tZ@2X%u_)@4A%TiQ(iP#Lq*G>wfjBt8XJ&*-HL8uGLKJg)6^<72 z(JGsZ6IXN3-6;z^3!S8ybRVvvMXQLKELuoFvmK75IK@8#Cfbu-U3bE@4EVN;d-trn zF7q;_lz~^)k=#x){l1x(*9Y0i*6V|G``t>1*|7C14Mcx!sk(!8Q=grL){6Qwx-hU> zzXZ&RKGLF>WR*+xJgqo~XNCDIvms}&tK$9}g!TH4(o5nO*9uV*urs~;K!2uERgMCJ zt8VY~`%bJY4i(cy!=f3dY@7T05N~kQY4yxmpXnQicCS*@<2}A$ zZFj~6j?Ll{HGPl|^9kqWNYhj=_h8G*D=JPf1528Qt5C8%bTHlQXrf+2CR^$@c(A^! zMF&qRDD{J@4SfY=^Q8AFW>3yU}Ad%;Em**trR84OyQ zUZsD6P1j{zVC@GY45WY^o02dwueuueu;~MEk=`aP~OpM(S#wg zW^Az4=H1F)Ve2#Wo$&Kt$Ic!%BPG{h=B+INBXn@7neu^){(=AV9Bd4F+O{~i4RIt| zA}~HH&Y^GI!go>*19yijiIQa9;Y!+CZzX>bLBiD(hQ1o)6ZEx#TTljxX{0%C`8h5k zNrcN2g&*^Zqf_^&ST=%>G-&MwNc?=vA@0RSpQa{71nnriX!B7u9lKDuC;1jFN9dnp zjTaSeKy2(c!u76tNZ>otYPDD5!cVI*+>nDO-vPHVi>%6NF0lQxy`*Q(T9xh{~Av*c0&&jIdFfl*d+wFEL-mNgXx4TMZVRRir|9-#z>fJ@3xp*3cSrqB396$Uy!;EeG8Y-SE<_M4XHh1z*<@jknmK84>t-7XG3v*n> zOp2${XYD=MhJM-Tt?Dc4iq|zZs;enb;Y+Y84e%yzzwZ!T=%+DuYuB-kf z$Ost>&!KsBLz`6NT_@YohIxNBdUV}L9QQq$R{$nknpj8JUPHuaSv-V{TN15ePN~0N zBZAt?93^-=FwFfA>`@s=k3BfIJ)}R522QZqH3bv+We$TWCNr{p?dWp1hDD_=7{t&Y z?21hI;rjgE6Bw(v-M8jAnm|n_i%6}3&?{k^BgvljZoNYf{iQQQr6_*`!fA34;>nfu zBy{jxd4G}Du`F>vE3WtnI%lMrWTU*C zVkVm(b9!A*kv1q##?XZcvL>#?Ekt0QIo)&}Km79W7}Dp;CXBsH8RN#)!RZiIh zxFO#*de1+1BjD~6%_^l7Kc?d6S4fvjnEatQL-W9JzWcedp;40Q=Kj};pMb-bb@Lnl zIXQ;fymjPs($0Uls@wt0KXuS?z3NiAcFAncr}0s)>E!h0>dDN|hBZ)&8~YIwCdcy1 zT+?0>aGob22v^eC7Hnu&XB6C=ODHom3h+EyzivS*lIilZmR!YGDWyi&;8l4&CjAxJ zp1VAD)AIPy>Ekb8!!9vX>i!%9P9FGcviayVIm<>*6IXvH`3w|}&0bi3Tnq-oJoe=T zvPepk`yX$;{?-Gy_AkrpYBRwkgp_wtbrFk!;fJ1?6MdD60v1rG+`LC45E#Wo@*ZLt z0qWXo;%2z&IfeTqt{00$LI;;k;>u0?7~WLdH?8#HWVEWqC%KUgKr745==MGP7m01v zk~vncM!J7hUO^zTKrb^~v5-U&MNL(J+{MrApq^^4N|Sw`LbdMi%i~L0SHW69e&iL& zQk?RFAxn~AP;J#1taX_2Ze)~~y=e0~MDU0@Tqc@Lz8N=qLF(Mq;Q~(6yjO?l!OJpr2Kfr4po86e_Qq38dzpQ9jqM zhOB?76%)$G_#t>pmXpP_gg$DdtYLONnacCcCwdcHkzI>U&Ac3b%E#)pqsW;j*cF80 z9u9!l`z40Kc~a43X^N5uA(@xistB=CKuV(@$tfGa&R4*8pW)BgAa$h>16#@M%5MI~ zz6XS13T`1LI+U>-)A&S-VyjcoY#tRm0IGkXKZ8=Wz-h1ao=_ziWx@i(=C5auQapRJNk~+gP7)bPK6~9|(rhJn9*sXGr~nwQj}4 zI9=z%8bvq_gy7!H{Xdt98&Ck2>)rw?Bit+mpb_m**vtw8rbi#kp#mo-<#YDmNhE*h zpxX+Drgf;x5Mj1ng|}Ztce93;uOPbKUt#@_>0|j?xjVD3Osi-1O%9N63Q zl_K~~l!-A*qh&Xon_g1abwh7YE|BvQA2IzPfC07MOSbJLhMUszN%jN`2NQG=?gSkt zFN0S&x^KQ(2k5ixCbmcvmb}#qx}bk46SfuPmC4L-uqfnU?p@he#-c5wVQOpzvx(^^ z*}$|UzImBmAC5umfi8o`YeYB8!JFDZD5ND^nK9DBclQG#Di#WuahKFQCoqpL(J{+Ry!dZ`!&T%;?&I@8eZw3=R(-)GTmZ$Unh= z3{`$lpj#iM!YYum{U{M|!fAC=_*Ak~1qRtNSrz}l|E+J#!Ld$2wR z5(coq>QjRSzjxlM!J;1D@L(PO+|P$YU^WY@j@N4_5n{03WLN;|hUkBY6eVu=O))pg zT82;MTwY%l2QE5r>8Aa zw)2Ji{{j7f_l@H(9zkC0gOg)vS9QrK4&9OFMIINPw*_{TjVp~_itZJl6=wbr#1rHG zCEDiMzVf6%8xo(9q%VJhKtI|Uc|*E0J*~Z0KEj`6B)s{$`%bwcC`a79j=g6ArqS8( z{Defr&U*j;{V#aYKA;)REBQjd2h0m6Qy6$QLY%-RH38iwqdqCZ88^=+ldS)gDMBTW zPaZu6`Sn=fCi_%8x3r!-0&rVzCZA59Z1(i0RCi^^M_apZvH^cpiVmo!BUO|+`&)mmhg>p0v&sds+C_it?pg(kH{8eUyCIRzz~ zsKQam0?8EeJ{PzConDrXtSKqt_}iHO8Vzv|@`)HHvysRY&I<}KXa{N*ASnc(b$3*- z$Mm8L9b5-0-3@;$+E|8gL`2qL`1QPZRW7@j<+b_9+MLmd`=}i|8wCfVpbqba(Swtz z`&FJ@14>fU{Y1x-0sJn``55vO6|;C{V?hLn=~9c(YRvN`VEAqg%TImN(Jn~XA*@!< zNnzvI$<5EQ>4=nwedl;&d+pMa3UGnSv=wZ?t`hqw8$y56_k)j)x881S&D+YtuU~Ai zIgPf4y#G|J=H8Z-QDZ#;JZP_+}G~MOuA>!y_71*p$=M6Hq6g){aK%ab$qnG{B6$nL}ER9OXinBNqLZV1ZLOWM}m{l2SLN=s>>fr8tU59y} z)K&0`&*>B>`iiXz9jGB&7*Kk;xhH?p^_42;*?H?Fcg%@Ii13QNwm5pgb-iUXl}3L^ z-9_p+;5dZ=Vd~_7`ZXgZNSHG)kp;r~gcdxoQ$#-VWOln~o$3bbXrY850nQ8T&ycC+K7u)<;6PUV$@z*j1~)v)n&y>qM}(+Gzy9)IdN+-vC@i-FW9B)_1Q1i zQPXPW#oF#hUN0WW#GXB!=Pahn+;e{rl1W~H^X>#bu=DOY+40$O!RCu!UpPFy|M2AO z#xu?D*Zz{MP(f{WVyh4~x$oc%XMMJlXxE5GIr0%eV=J3q1YJhyFzfs6Xp&quBY7n* z_Y4_m_~kH{>ku^dlv1ZkI{X{1W2Q-Ax}Lw78zmp^Y_s#QjL$-G7xh18;~9S(xB;hu z(6{eiY1zn}1c9zXs)?W_pwM8J^i+*`M$(_mhpcsRD=qMNS=w)%uACOlOQ?hT0 z&j1>#k}Ft0>|31=u%lk`WJ*@(8PV#RuaHP9EXVi(AYELt|5JJOgrA=~Q|v}Q*o(4G$V!snI0FQMIO7?>048#@6tBf3 z`!OqqWB?Z$?#(gz9PYy|*tD0XDR;bO|6+EcAviV~X(L&^9>@ePonL-=ve<;W6&|DBtQM8 zI{ve7oyT*Hb59vb;LFglw=&tsCHT@@msJtW?%hoA!DP;1uzOQ&q6A+5R^f>4#9fwP z7{L2Mo>!P=c?u%qVxoTu{@k)j>5MIqg@1AV_R}jos9xl0asVy(jdVWXrXpwDH4+q0D-p!6r*h>p%Cqqk z=}g^k(gakooF$CNdYuIx5=N~->hl9_#@vXa8a|boNkbOoc?N&ghB`I4dId=$g<5Vz zhqpoNRq}T?<8pqk$l(0D9)WshD7^6im0K_aznGwH72;EqsJJe#w{Tp6Tr9_P3sOHL z*94fZbKu$e?_SVK5=g?{z#FD?9v9qod@?q<{! zJ5g9fA;BEF893v%FTb3|I%L(AmZOY?nu*>-kjBd9ycwT^)$J`bC<4bU(>)_ZsuvRT4HET4#1 z!jRo1AS8c4cEL{yI?%9-WueUBCzE+c0U;izZL_%s(rlGYfE+5{_}|RKli68&vrd}A0e6Bl@nbw5kH_QjcuYD8T)oc2 z`X4XKP==0Atw5$@(YCsLc3SfRX!-$+}ZE_X}$_#P86e2)b(45 zg3d-|qi%)?yxy>!W?H)%Fr_ahBjhX{d#`=DRVx<+c}$RV&Vh3>e{}9s{v4(RHVQVF zaNl$TH9`K)st*SpJk34_0Y9~@X4KfJ7gi}&xYrdLLrmb6YC?KwVNrrCc8~{U{ z`($-h!%qqxP}dHAWpnjft;D|g3p%KrC19E0P=)Mqckq(%m)EFFQQ{}Gn%?>3^CN%o z8@ld`Bmz;#ex-P?J|7aHz{2JcVkALmv-L=!W-h=)h5{LjrleRosxClk5W!K!B?}*q zbF1J*Q96@~EUZedDz#9TW=q4t%#e+EdRBP52u6-lSno)KFmcg3nDIRN((MF8@M-0$ z!l!LoDZ0&a7rCmH&vTF$({)>MJ!pS#1hsCs4&>B154`9S3Z6F{r7VJBsAO&l;yM_W zAlzgLXsC`xl;-LgRA+NZxHj+9*69)N8MRN1V0F0Hg6ogDNXD}{I5gyohMr*HdE|7~ zxno*nrIO0Hx}xj(8aGY1R$d3i&TE*3Aw?uClG0hTrlJ<+sumi79ER^yp16NDd~JvH zOKpUsy-#4quL0i<=|t%s`PI@+&HrSPVY*91UsrDhofu2#*^>vl(}J!Q|)?W(fM#j`#6yUAq)MlH(Z2#=I#nzTM>sH@ge4JdpA)yx#2DfC&Qi_RxzWW7{XOcRaBcQIjcqF zRbb9WhB3J!3yu%(xguX66;F}y_{9p8(IlBrs_x3))0Z->s7_jn= zIuF1h8hH+&X@HaP+c(5u_-#~@cxJY(4u>Gv3i#f^C#Ofp4DE_Q#A=#!XIX~S%n7(V8b zTwU?>Qoktp))6Hkn+h^Xa{u`A&yT-ZW zf1_R}q9GQ4ogVW2V=)X-XpuE<^l6Cb-{V^4%Ue=0wajinz(`whqm>LNR(?U1s!XvJ zWI5L#nr{igWi)~D<&zTA9GwZmKD;iK?2Aw)^KqqqsqaCxmZU{aUT%tS;XC^xd{L}h~Bt=ZUHn8cbx%l1X$H2I~WX4l};$2+9=OSzsbJGn|5L-2H#{0Qg!sD zuOlKP!L{7Vt;C71T#T95tTiXiS{eHvd?WkK)r9 z%~v+!wXKQn#8IRM(Px^RIn(wa^%w0^pk8Rl)2%nAL)@@I@@mL6K=NGSuf>%2Q8KD> zOI%~p;xTLnp<($Xr=CL*`9Y1H?8F#AQ+Hj*|#ZTi?^w28*A^BT>+zhm#1eh25tcU(LgG0a~AWwX&8^-Y(P!`j#+A(*6hI5 zwMbq8!ob=*k$_RIGD91ZiI25W;ULm~0UcqMSu}jz(U3a`^gKe*$k<4?`$p-aEY=xm zwIWBDL3rhn*O}qr3mG`!6{Sy#5x6k^!V@;a6%P9Wx;wjA(;bOO$YH*yEf}dLKMNLUmr+oK58v~okTB{O>29l!=ESxCpCxdowmKkUIv!Yy-E>*1{ic~POQHv5xX!sv@M>A$>}JGZW4{h6Sq84Cxn_X)1%~70?OkzG;bT`Pyq$#x_*P zaF_B=>0(>hr#)B1o-1NCMXZ>h!Rom_wt+sz2C3)z*#BA|dzAkq#<+_us%BNN&$YA| zEluWQthOfQ*VfvkqH1puh5oBr93%ISsd4d29NxXC-i)^Pa#naSUlTWf(b1~cw4ZBf z&$YDwtCr>|P2Qp4KdCN-7ZSnIEF6A*^oh<%P2y}zU)tT-P+@xO+0d8{wxb~(JlBX? z7+EKq>CwuPQCg6#qWVuT`|s6!utH@Q)O7tvM zOE|byj56XGjA)5qh$6^;`RNi4@*(R7dozzF>OmZ($ZTNv>%m(W`rJ0^L&!5 z>$31DALm&K6NPFIiIDwp0}&YZIpq_a;}|gf;n8VIg()Q^6#I#PxrPG81PQPcRPlJJ zlO(IV{0OQf8+RE*hj#e3x(p~1^yV%j9@^oyF2hy0S-x?Xf5qCjJ<5dQ%28%KVn_Mg z9Nk|w?ec5i`8zFT2+FWT?xW9 ztp*CjDh3YAHS_|k(5x3UW3&~`pk!>r4MgA=5};T(N;AO8t7wq;Z0YkBRD)%YZ>!Iu z8Z`D9(a;{Z_jwz-!7Yz7p}1rta2 z>inh<0~?jN=qMI__$ehsrBK|@7TQk@z%Nms;HMV}3L9ZS*pAUpqSUCHouR~yM24Y^ zV+O(;q;RQ!YINc?6fS$0M*3B^-%Ij!5@T7Rs4EU+t8t}TI97SEOx9{+2^-jb^Saj1 z;N+(gFC+&4hnsBFs$Id5k1uul5lyL(3ggkFDaCcuPC2#B#h*y>|yo7d#zwo)0SF zN~Dk{($kw?Q1z};dYkd)=5|cY!z0hx4%v)iBLdptfFUCtHdavAm)P zn9>}7NhD3vz$9Rb90-EZTh)fH`BPy{4h{IZGJPgf0}gQ8@x4}e zmKZ(&IIAo(US6}Rz`%4NCI<53t8<=TF?!&R?=|TLgjRFh2XwZ=xDQ_zFy`>mj4>#A zC~1YYw_+Lyz8`?93kUvaULx+xXx)wIQ@7`TZ^keWXAi%&UB1*YJCX>3aaj7bNXAt* zAsW~Go5-eU`h*iyfOKTBU7v0cU}Qb2L4}QI2KD|fiV2E7y%-IlR``8^m)0jDzd`_y z5X6&lS!HcP>XQe511XniMiEo>(xjk($ar9|c&W3Vd11}9N`ez(MB-`;;+w2k7?B}= z=BiB0s^ws9xN>cLzTleGa&DEYJQKmeAWO*&09fO!!4+>>@7m_j>BB-$3(lct1eX=p z-ZJ{nZ1fx2sLrX=8_uapPyIQ?NTDKG#Y<<9n?q3){gPkpIOIn=)}*Sbyta&5`Pj(c zLuK265Tz-Lv<}{PF?t4L?!#u}r?*XiU>RDM@>Fk=6}JAE%HKn0K{rTZ$dnhn6tB(5 zDG}3RsmT>xkEQauByD;~=5M60pdL+L-je%I*Z6E4za&R3$Q+#?*JO#dS&!5Yh*CE6 zaF*X-dFIearj@NM)i&f()SWXG=-Y}W^)%d_o>Y-ufW8J@zmehu^AY>n}e2PWbyPH zCr|J^EIs||(Zi#M4<3JceDv_tR?EgS+up*L<~wuqZ~hw#f}_QMd5lGGrV=-2CI6TAGS zC)}&F(!(HnBYbf`l2(&JjOvF?kmkoHmlQ~Yls?lqDSk`W){e!@Uk;h4 zeFZn9;p(8RQe(ACDpMl1Crh#Nn2m&n6NFB`q@&5O=q9g!xv(48t3fRg&6N0mN3BMa7{92bq+F{PnrkaYVfguc;EoZZw|eBZM4UPppUNk$L# zK)-!VHFnKN5l&jtX;)!aC&KE}>(*y)k|cUxSuc9Bnos*Y3cXgL=_Jhhvh(t+P_Y>- zqZG5$Be2bXqEi)?U09T$OK$dd@VKe->Z|6chs0!1bb_d^EinHiEpWsS$U3OR@a?O( zvTV>d)&Sd=1oHmFCE-v#gAj|Cwr{dyPtdE?D%E))d=x50o(s=UxC;#ZWp;O7LUi(e>a(s0QQ#fVlm${VVGZLo9NXo^LMkAH$Te}h=@8}N7vcOHi&C{CcXmZp?2-*Z{LXBQmC57BG|L%tu0U0+r(IUsq6P+)acY-JWSx z(txZHR5h?XuI&!WqNJVoiZ?Q+(08jwn* zzx~sHv(R33iIy7uN?is?J8MZidNL`d{LZ@KJSbSM&NA@sa&|d|Si(S>?OD8)!yV?L zW*k1wts+YjK8ZXx0$u>wZM~hu*NM#t0+~z*X{VJNALUO*rF-=(U&4xfA5d=e+#ZjBr}?o*55DA^xa>k>F2Z`XUll0L-?$|##+^29KDM@hD#U!R zmAto81BB!9^r@s%WR+%&f=N@N6TS497tVE+L=PmzJ2Cj=YsjfkCg7-K&`LT|tr^Kv zGjPch>M$eslZ8uKxTHltc?wBF7iQt>hUOo93K+tN?)A#-av5|zE2+A{gi0$af`Z@l z^@<)t9Gh_tp48Z_SwTr4<}Zo~UMm{&-DKNpHom&Z0QMzZGf6X$>3cZz=~JXMP{We< zAwE--C+DV33J+2ui6>7SiNR@qe)enb9$Y>r!$Oi#96IO@(*!;0NAt3_$e`FqLZp>O z?@J822YK-zKbwO8c`?Yx`vB?)x$Czs!0aWj*Fl{ZWtV!_144EIXrN3vnk>saB{-f? zJ(59TzVKnZ#^GA)H9!dCjuy=Io@@r zK4q+6o@MYm<6(g`3(oQ2=L3D_00d8&))0Y8Fk1{Vqf%Oj z3;;41o%3A>(#Jj85{y!R-#bsTbI7E-8KYUrcvV_8FCEKR4RW*&@qr_^!eRU=8e=wv zeNQoea*<3ps>DV1i<|N=y`~ViCjn>_fdF&MUq|4*JI;qxc1myYr`~wZmjil;bN$U4 zJHo(n)*_Jgl(U|CS;=)+WK5ECUpQ;0b+{h@*qUTi)4uN@VG1b^D(`Wz zr=}P)p#at^M=Ks|m)F_tJ);?r^9d~R8Bdau9H|h;{xYjHQRaeookFV~Oc-4A;E!mf zeu*P4anw`-@PHDCj<+~|k!R(6s*ER6TArnoXrWg%5txA+(^pqAzM@JH%e=uWl`0Ly zEu6YAsZTkzu1eT{IUy{9gq3M=LQe0$(o85vm%>2VOu5MA&a$6#jX_1T5ljeEc$OpA zW~kPb18M+V=~b`Ba;Ut~YY9PG5Kc%4k2r5Y8uMKGHoAu=ZxX1wUL*jZ=<5ck@}(>D zf%l?-)ZH;$WqF~Z=W=;5I>;~nLxEZ10G zYqH8mRc3>hn$rT6VPYtU8_@Ty^xXt6axE+1^m)}XA(#nhm2cLfH1 zJt0T9)}af3n&V0#0N=>r0rCtnk1Jry?`jDDkgBU<1A5MsS89Y?v`(5LM~8j$8+qvp zmfEsg>u68xmbI3S&whfgCU;How4l`5Ts1Y!ZF!Rc18EZWN9DcWMkQE!ysUIIcnp%` zogMyX>`6hAh-C>+W%uuoCIb(tmb%O;UUHRHBudwRQeY&_AdgC6mAEkLY4> zbdArm5;y7b6+Q!%74C1WSHVfm_)35lKGVHc`LA=J;b^v4Rp)Lgo$m73FgSK&kN*su$S|lW$&>jR z77(SGSfVw+q%uNlFiO7}8C>l>b^~*dCWHJpKEA&b?10d2P)Joner}3DA=Oub_-@&M z-VZbq0xr7J-Pn?j0NrI9%k5tC{4)eb>iA{!1k}$v1cSToEVO{PzmO(OBX-|od>$;| zmMxSt(kgBcD(yAGSt`=~{iVWQxh10=SzB4Km*h{1>4Nth5y(6+bpWZ@7C>8!ZUM_G z^ax7w(&CHiButoKYMM4uhA*vjJ6gtn>l>Hp(M4y$L06v}Vb%F+@-t}95)v@f#AMLU z7In=nb}&56b(#Wq5>38shIKAX{_^ zvPIgte@zXyE}m}?bG@cZaW3m|ttb)Iw#a_5444Ev90us$K;o7+WIV@u)`irkp}j@6 zb^a9&_IcQoFMdKZBQ~J2=1y6E&HCZ#@&~HEq+R>*1;QuMTyV9I@?q$$rO^ZpNk3mE z^zPMu)BG&=pTHKk3zPWePQTOX;qCXn&$0H!^0lygC=V>@TNp2O+M5Z!V;&onFOj`mLK|S-CfWnMM)kY#WpzWX?dbr2YLXd9->KX+ zY24TqsJ&NksP_qU`>U{cr~5b9!v%>owEjw^MWjMrSH?G3Z6KVyxv!v@7APeOs`A#z)v>L$wXRU zAnZkQ$sH^CU0{0ejsxyzlI5ImE@1Iq6!WS0rJ-8EUN?jSKY%BH7auWM>dVTc&nEM` zjpR-DOEDTGgX|KP5BO~x;PE(`fjt(NOzz)MqPQ&$#@QGS*!Gvh1ui-;O6NaQY1_Lb zqb^V%`Sl=trH>+mUrmc&Mgw|35fpm~8AphMyy4lQzDo*sR{WYx2c)DJIR<^pJ>;caa0`roJE8@_QXWw{3b;VX^%x{;xr(YthACdu^YZBS%#s5RiN9 zCh(G-5?e1ho?z7zcvL&8^l%8pWjJgNMT%w)kSBzcj`_@$YH0Jcz~JA4T-jU=pc5iY zA|DDXtucUqiV1t?D#4i<46BYxr;EYemz4@XE?u^N`k`@E}Tgw@B66d_*gc zVp{quXMOz{$(oEq>}VeXYJ0H_xF7R+Sw&aY&@BNrDBln^0v2UFJTkNDl>-a7`m&>_ zX1UYvCV&>V$5W%94CaKV%>R_MXIAS*m#84+Z$cl&C<=&wjZ=4aem;ka3pl%<&p@wW znKB)Jl|O?D!x|pIG#49uWdfuTvaTrws1J*JH&Lr+r}sgcm_c}Fhwp>X2ylcZ}CwNlt=U%S?IyMc5H7u|Qwl`Gqu zWjNQEq}gw94dT*J(kSJaki&c3^K2G3(^EmS);Leqo@&l~a)R3E{A z*6wL`gF$!j55lyUx8G?KG#CwsIli4fUf|_9+#oXz=Cte;!)A=Ql`tb5K_$__k0-D) z09%}(S@dk7udH7zUyNVw%DIXg&*O(UcaHDhPggf2is)$pI+fp0P|K6|<3Yw&RV`?c z)F({m;gXtFC7KyD606AWHz2qnDVBV6fsP{T2jSVWyF4 zrwJ*FGP}zQa=$1-!xc9o+%{;Zu`Ib%R?FxC;5Jwpjb?q;P1kLT6vfCEeEm^bj$0f? zw1}EsJV!eP@W!pu!G*MWK#yK{nxGgX@TE+=RZ3}U>rk01Rz+SHAKg1VIz8ck3^h4| z0&p^$|C}Y=!)!8H^j>=nEHA`hbnUZ*ew|;4oV=Ie4fVstB)c4)bJz%_%&K2qtNY)4T+->9P|v&N8N2sl1?-ir)Jkz+9%KM_a(<6wOxd9avZWRPtpW zLl@tE?_Ka$n9fKu$uoFxtdG@yXLOIS5g%Uao)oZun*$N9$es`D$Pm`yGY}&$DRn<` z254(J;;d{A!gZS5ALC747m``8qMbH0&UMMn%w}`OaFmY+$dz|a?wz{xg5>aHUa?(e zF;y=O)i1taL7_u9TGl_o2AxM<#}?_(X|IS{*S(TF$sy<31kbPW^JDgZB221}z0|M0 zeLNlILjbG?Z?3o;ICgEhK4`IU?&0X$(V$WWs?H)gd~Jr0?_E-Myj?I6!=SNV(mcHY z*%LN>miY`_s=*RbTZVgSC(x@ZuIU$$j%fM*4@%umt-+3qx(%8Xb?Hu}rUg&r5(Q>u z6H*9Z*D>pP5RV(5bhR*l)z&FsEk^QQfKB_II%UqBj1HE#alZ~=2H9((HXLplH#)>( zsvAkV1Xm1(876OWj9)+fFINuVo3ixjF#%?pVhxta>9_F`yhV5>H*dT3uwfv?c zanhTM-b`Q+jCdKz#ao317u$xYxDkHMT#lQrNGah?9kzfLKx$w3uu!akkb{jaTdR9vWE)ypbTv<7(h#V(5H_|2)R($VW zc>>ltMm0oZhiZ9$7`1&=E!PL2J8MHEOXYQELmOgtr6D2i<$vpzj2En z?4gZ0p8R{_CWNc?&Q25|(PeyM_-R6gYoT8K zVg0(L=sPJ|x!B%XlHwEyYOTdn{Vvz!*82$s3xOMj(3j-Dm-SSTVE)Y^>JydUsjmFZPbLxse+7 znSZhLh9QLz@@{ei%#_{%I!j%2MOYh`CQX$!-H=f!JD zwk*q%EZa&SxJv7b%_!z;%blj^dJv^vJLc^&&|uYXeEW~RaXI|xIR8
bv>7odk9 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 H0ssI2dT%x+ 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 e240a8c6fe629f25374e01619b080f777346c4c1..cb3e197830fadfd63a0ff1fd08550b64119f92dc 100644 GIT binary patch delta 994 zcmZ8fe^Aq97=ORthhHPaHAhYnoI0-{0@@j3=++Q|cKi<#tyzldTKJVv! zuS|xYt_$kj7s=~yoyt`HDo!{;5mE|-JVCI{0s_NFc{_FuCvwfJVjfP<+Olfy6+5oV zqvVk;`DtgSfa{9=z_+ETSb2QdxNyh!W+k6Ce&xA;^9%jNxlK#k;*ujI<^5Cf-80Fx z>O+IgJxWHUy|q&J#~8=Doc&R@)3EX(mN4l!mUy*jjI z;iqZ(3>+5jPBSZVq3;T>;j&u#r-gaLC=6>&T(z6|ANW05T*UrNQkg2oI95M_i2kz$* z-|d7Q5bzqop-zy}^KWDPC$s?9SRs}^_zv2wbQIRvfQvdStOaQm!4p=<1oKgX*Zp8k zEy2w;P{7{z2r@R1!R_M&-8M*}H#ef%O-CT-6x++xjGjR@koyD8Sv+}@jz(KM+qmV2 z|A^G~6Fh&4RayHPG1*y3KYoeAIhya6#KjUjtD<*=pwZ4!ja?)-YKIqKV1gjW0a8${ zpitp}6c~x1Oxq!PxytQet3(0{)e;acrvjX8s&Ora8=NfHSQ5ME2L%}vHflkDZYRWs zy||0|+f{tr%BHtg0yom{<+7upMgJVg*J+9$`Tk8c{M+}oy%cI(kP6`%3gtBrxqNYt qiPxu$_<8w;@ delta 142981 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�}E*FvJ?GRMVokT^~~v)EHy9z`uzt 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 z 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

bv> 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 a>2B$+@)a89zr4`@*MSHDfte5deEL6^PRK_9 diff --git a/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz b/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz index f6747e89184a5f30ce0a54af5ca7f9e13116d060..0ccfb7ef3648be3f3752e739dbb0498b55b2cca6 100644 GIT binary patch delta 652 zcmaEIm+R<6rVU9t{JUn~^$7o9q+iC!z>v<&Fu71ix_)Y~t^Z*Ifw{t({~tbC>e>D! zdBqhkSug2TURzdrNC>Rbnta1#QgV3T;iez&Z{#(KFf|>$`19W0^7A{D|5)l+h}xCx zx~sS5u|;P>;r^Lx!;2$wpP83;b4)5Jo85G>T!GO!lX3Ou?eg>X$j z&dKw;Ik4VD<~@7;70T4?YM{j*oQ($}2x{qyNo$KlsaGrglep9%O~ z;CJKqf#SJMOyXR#e!P0fw3WG3A;x*GcL4L|%R;>u672sjEKX}u;F)b8th69#$_1a+ zXw7*ldfOvpbGpx+)W52a33~r52>MPmZg+jgguGo8ijH!Q<$$vg~ z^&BQIqez+1tDBpzIkQ#Xy!(BTyfx=OzwoP8#j~!jQry5AzFB3~5}|aJXNF7dG$L>R z%)ULhe{QE)_pxJp7z4bSSwt8ZwrhkiZ3#n87ihbeWj+rrU-vsZQ@)&7{SYWH5bh7?Z^Gvp^2Bry;}iU#pp%m<^2>rrWP!GGcy{ zz%ac8#PCdKn7(oilMVAKAmhavpc<)6hUvO%nOvDCRWnR4UCU(6zOIIWA;djkdgWRs z+3Bf^nFM$lfB=|YfWV@bVfx3lOpZ)Ob<=Z~FiB7MUk9|1r=DSY%{nF*mB;lA4CRSM asTujD#i_*s-mGjOP2xZ(1!PTa0`UOhMhp-D delta 142599 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�}E*FvJ?GRMVokT^~~v)EHy9z`uztYyh+# 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 z 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
bv>7odk9 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 delta 142478 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%0DyE=}xjd$#LSMne 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 diff --git a/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION_Laser.miz b/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION_Laser.miz index cc6aabb56d6248d20df0a042af8d38650fb05a6a..bf65eaba39d058b0e5d0df08af4cd6e38841d5c0 100644 GIT binary patch delta 560 zcmezLjq~y<#tpVo{JUn~^$7o9q+iC!z>v<&Fxf{+x_)Y~t^Z*Ifw{t({~tbC>e>D! zdBqhkSug2TURzdrNC>Rbnta1#QgV3T;iez&Z{#(KFf|>$`19W0^7A{D|5)l+h}xCx zx~sS5u|;P>;r^Lx!;2$wpP83;b4)5Jo85G>T!GO!lX3Ou?eg>X$j z&dKw;Ik4VD<~@7;70T4?YM{j*oQ($}2x{qyNo$KlsaGrglep9%O~ z;CJKqf#SJMOyXR#e!P0fw3WG3A;x*GcL4L|%R;>u672sjEKX}u;F)b8th69#$_1a+ zXw7*ldfOvpbGpx+)W52a33~r52>MPmZg+jgguGo8ijH!Q<$$vg~ z^&BQIqez+1tDBpzIkQ#Xy!(BTyfx=OzwoP8#j~!jQry5AzFB3~5}|aJXNF7dG$L>R z%)ULhe{QE)_pxJp7z4bSSwt8Zwlh01?J`G?ndxULnM~!5{P=fG`_e_m$VEB|J{J*m zfHxx(1H&{YCMg~UAOJ=t5ZslXF5$$aJAGOOlfd*A7bXE-kSIhhT#jM-{3<3R=51yS k)2{#-Oro~a1Cp6!rmIvlX)*WuGfWSxW|C$z4g%=`0F^1~G5`Po delta 142516 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�}E*FvJ?GRMVokT^~~v)EHy9z`uztYyh+# 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 z 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
bv>7odk9 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 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 58e8da5fb81f9b17b00b3e1765c4159c994200c3..5672d4b778d3ccb8021471b994f44a75191bff63 100644 GIT binary patch delta 738 zcmZ8eeJs>r9Dh6yIp>_)IXUkaw-w3DO}aAdkhnvammN`Q5+=g$xM^!QXNIgYqVF7! zd;wQ9z@GFkLU zDbsDvWEC=?Y*@X!^hToUb>2Vk#N!a{sZyL@FB_Gx zfGU&GQQSguGdW3b3(O8JuZ$t%_a>CRqAOBwyG>*1vQ`)KtvCGE(|69(vC%UgW10u4 z?c)*qKjuo6>#|zG)t?`Qd)bjQdv6K33|f)vbZc7Jjq+HDL2`i*b$y~goJb1z{hYWh zV^QioEu0#oswcvW6I>eD?mcn#cgn{{Jv2_Q6{Rr)I}V&eLQ$~)>Vr>5g@(yX3hU01 zD!E42J0(SZ87{?!j$;?ca`!w#R`vz0THYWn;Y&N`;BX6s6s|}Mj4#n+1=Oj4u&qSt zM!LBwv+Wt=bK>n{HC;v1LB|Sa7k@Q5`kD+xiZmC9y3dLeokpTAcHIklDtpzd+5c4h z{BFj){IR^ur+j3j-#{oph71636&YFesB7Rg!u-F9upb$nwH(qNOrM@q8^kxcvBK5= zJ}x1nGq5@vt7;${&ykTUEF^G$Eo5Q`Q{;-$!~hFSQ6LiL0bF5MAdZQx5`d^1Tn-m!Q;|KsM?p4lM2QX7AOqj0A{y?~D&7X zcBCR6q%YtIh-{C#T+zk?zzQk~M#@EixAZnUVhI4r&D@l46yWW5;>X)SBUSJ-R{0;E zSXPqVVHSc{t)k+BO3ASTYAGr;WF|0fl8G}DAhGbb+s8ZS$N?;i2d*&FuU~h+e%<}< zH__nIj|bhPDH>0nJP~^b2S?lD=y>yZ=Y`nWf3f@h7QG%G3ruc^mU#OuE6-k%WRdtf z8boQ3$H_n($NeaO%Y**#xoEGheYpBz`{UEKwGTexoV}zI^u$>Jc{ar9*Kfb|_FFrH zPHzWo1SD5TtQ3%0!xs@^}zs2o+!S zlW+v6E-)D77fC9<>c!_5c_$gy3hyQ3f>pBt3t26~Bs~y-0@RW32Qd2|tXYA*R|k znVkI|b#gF_B{ub5lDrxXPje(dJXMO$B2GI%!^*f6cSSxPMhYbU+7Qb`U>S{KfGA68 zl#kMZU=)NzV2_Z|=6AxWzZP>v+=44!kezeOA~9GJ z+9)ZW6C5lGD%wAXNecCUj%7OPK`?1#AWj+wy?7FxW(aAQj3gOEyYPCX@N8qr&w4E( zfUu%}LLn5RNFZ4CK@X%Jz-tD4;k^f>JTXYX)cgHtkb`yigAjs6BGPEs3p$ZVdLb%< z^a4`lDdf~Fu^>xTHd$eoTI8kxK{3Eu#>uj8Y={PtX^@RUQB-!2x;GYAN%|@iXcL5$ zy@M2}`irItEst__IMQv`u?p zlE$0?8*SOHJuvnhN*hPLFoTRrILzw^XOsvjq{QXHsDBov+Q0D!(pWBjFmjzVW?G(P#Eg}dI^G6Af#)u#cqYxq< z&{G8<=bWnA(}GQv(eEzFeCk(KwooRk&SX5AQhTZ?R24X@f^^flEPUS$;xjYfMp0a2 zKoo!UkghSJ5f1P-?HYIGsCc3Q!p(>lS`970g$zN?T|#&)7OYhkK!nlR=-kJD0abJs zbY3-E*!3{#R_*`v#`~sWb$H!Ml&CG$Yqk)zaEN3&pYnHYKT;PRvrX?wVtFgNk;_@o zjhOYaAa!c(m&YBHUfH3{kU1D)h6V^xOj@2U-tsT-A4C9MZqr<5b&X}_HkIWR$-OFx z^j-nSAyx=|bx2YzZ@CVrG_G%dWi{;@4(Ax?LuaiImE3smkA^3Rf*CqE6{;(wq~AQ* ziq6x>(QJU-Z>wtQ{mI(LtIvSjg+GiHxiYcCAdG{-Y+{noGay<=3`RIGHa$-E_iSaVZ9|8X6){k`L4j}UEI`+F9h{kGXA^7VH>gh_#K^9oV-q1z zo>k@lWtrPb=CLOx3N%)Qtj(aF?OYSPz`C3$x2KE0XoX3k2D1!a>#2u^Pr1QZDLhepdY z8~t?n5W*;suJxhN9`lUBdoUtSVhPG}@{iCNCb2a)QSoGtJ5; zUCfsN+AvmHlKMl$qRIf4f!H0G8d6OuOs?ctQ3U;*tAt8_3s}uIAi{hePF+L4d8($` zTU$Vr%d;l+)y9G`L~PUr5t&7!wr8QXP0L~sLGgfg&YsN_!3snIJQZjsC07u z+v;e2ejTm5I=X9VWWv}ajOQtzEaO+x*B6fB{;(GvCL_p%=#UJacn(v+m!OewNYke& zCgYePKp#YZD-5Gf+y@7tNnb2t7GsVAb{DkiqL$(+A=@Dph5#NihJpyeUf3V?u$Q>D z`dbqcsG*@$Rwuh>7iL>i%q*TT{!_8)f6x-o=#7+8KaC#BK7UC%mEewY%xpER?xf(n zAZHLVrXB=!i!EQCjzCl0W~CT2zkY%#nzKKa?-Thxq4%l$PNjj?h*HWG4rgkI74rn4STRy3{61Fi z6Mmn6RLjN4U@q^=A|R-U1HZPZtceFYgU;hI!CzqPrv z{#ZXvervaW1Lv-!iShUQL7aoj6i6GlWwu305T~RYlHnPoS_VR|#y;>>)D$pHU`>#Q zIt5|c9)^cJC^2MxaW9~gWKG7>&cF$<948ZhlvpN{Nz<-dq{hO&?xpdWEAzUE3Obz? zR0lqcVB&3zEld=2F5p*&vHIBnyHoJs3vAoLkU@Vipn2cJ#^3{cd0kE4?0tQBWa}K? zJ!HV)8K1B>yjqOXi06NQyocRiof$xAvZ^hM)T; zSf#L0WRwFB*i(ZTM-?bp1k0OufJAU%I>azZ70yWdeEE?$W}a*63VF~2c&)z^<%=o2eKuE ziq9-ll2|wqyx)+PQh*;dl=g@O(sM|_yF%SoBnt2!EfPpt4^+-FECq+VfenS%LSeQd zjD)5GB{Ld?y%;GVSggnlttTI@8Y(Dxk&0ww5F`~8X9eFS6-uFXc8UIiV78ah@%i*$6cu$I0` z`}t9xVoi3^2pT_fRgOFuv1BZNLI|d)idCb7B^8@L1YBg4wkojI333?D07*#Qn;gfQ3IQN}! z+HGjfnC77nf>~Hkd6Ws&)p)Y@81I)#Oe3NvErYR_5m&`6<|9PIv=UQ)cqW7SWJ?B% z$d(LT*-R*vVa|yHs@iqiVVu0qdpMPyMLOgZY)&n^766Mb!BFiII(+g&jcZlVQBdPr zOotz;T#L)UsB5vxZs%H%_hDQM7`++SGK`DvRp&8xaTdd^=r9EzDEFygn&XcVOmT+K zMS#Pzlos@0{sVqY8ckz=K`PH+p|r^`r@1P~)-x%hiF5UN!gCJLeWrz4u#9msk~@H} zf&pUCR8X9^e1{m2fr52_9?+pV4Mc@O7YTrEHL;6vHHhB&lz*6ljp5uG)NQW^C|AK4 z=GkzrDM(@ISvoxB*xv)OAiH1LUHkITS<9Sw#Mncw9t%fqA57|hJicbR6-ZIHR(47x zDebk$q>dt{JzHB{g%-N4W_MJcIi)a5t3<8El$5DUcdJ@wUR_7?3ntR^0M6!zRAf<5 zHL4t@WQFBxwO4|2SBp#sa!mqKC3 zAP%AkwxOV+*m`MyXlYihRqnHd&murL4AqSOd=cryH^yHeosW+>|LRP7$AfAm^txNH-TIv!eRM60SBt^>LwF zz*7HJ)a%iXcW7br3!3?RRvoFz1s;SiFw_te$=sQZPzXSS=FJQ9iBFW|Pnm_9$XD}` zb!cWAN12C1N#hsW29>FziAWCN(b+_G4v9lps{*O4x!^cE4zgFsmE#X~L-*ng`zj5O z^cSRmK|fOn{mm*f4Qud)={ z7y`b)HijRc1O5v>Q3laK`hv#NJQUzLbm&kOO{tPrVeQH?8$;DsnG_XInCwnOanG`R zpGDnK5BdyAKkk?VYrKNr#||B>(?y~0)~Z^6F8uSxf_CHUDEtu=S4_BwdNISwMEGpl zk1tC-2bfd71n-RDWFK_0%-hirBA`8gb~RMZ*45CrOjdfU6a45g<9>B z5E(Le2_uMF1q=(Wlom^gwqa)~Yz=X;I{PrI=ooB6sen?qb*$N5Wt%OO1dFH&;wWE# z^CyfA3tcicX->X!)I=n^G=b_hHo#`1MuD8^XZMmTa24%W6htm$pK^4Wpbb^C=de92Ka*5#yuG8QQhg{_ZQI{a$)dCy>lS=L# z(5#WVto6!FFt+U{gWA$=adKtW%cz!r-49VUx2OXl0<_+Xx>W2^il|NL)$!Wq^xdfp zac6uD$NHpn2FpXuvPR)JKSK^dD>~RdL&mT$?&5fckpc4^LjXry>cs(l6Vaj6~9*%_YQXBseaRbo}VFPZ%;NPLE%A+ZN$oFDo zF~wf8a!Kb65u6)qQ(R9~4IOT7?HuTuFAzBkQbi-1LgUNLLrG#_VtOs7as4GXQb0)lnKt`NFaj?b()&w6rV#bA|$G}CBznTS>7 zbg zv}j|iOq$q9la}1+Dn66-1d_w@x-yLg}Jh5^Fi(<}%`EUzX7I}eP@s%EB1TaCNIvz+W2D1yNd~lPj3M%T|R}CBS zE4DG~xVnyO>@7Qg3ptHhG014Wz{4kVMkeERgX(r0spxVlvejjsLzOnwDn(A}iJSER ziCw)Qz-grw0hP%%&igs}hyFF~Fe5d$6H|S26F;$Q7vj*nMEzH{1cm4E`-wI-q30PXUqG}&3gKMGXp;z)o@cl-Sks4cdC_IRn%JY<;C)ujIAbc=*# z7&uTA#DgE;q6X(6P=^Ca&dE4(%W#oit{GCTMtG7+U7RHn+Bg;s=}qM$n~;4jqG*ka z=^aPFD#cyYpsX)=Q$@tfIgZKNl9f%DXEE`%D}7BAyuhM)l=00YFsa#jrIy`0u&k8t zgdRU&b?e1{cRntBG)lX$?+uw*EAQ^ON)ka?oP>g;z|Kk4EN5jj%lM>X=&om=nx?HL zD1nlquy!xKv|f2cvqEhmB^SA3*%^Cm^^jdAnSIGe-yD3uyM(bu_38qExeR}2dSDZe^{}-nB4_+VA~NM{W>D!fRj{Y z$6UKBrbmDPG8NcUynk>^?`R&!h#;lq>d7vWQ7@D?3%7hp5PB4}J1UPLGUy}stE31R zjKz4nat3G0&9SYraHScyk}(?DbrLXE3GhfK2u<4M`ODHsW)p$RAgIzLUh(i?;6~Qfx zZ4&_vYse~8HK$P*FtFdhF5p=<{cIk8v@U@68ldsf&_L}n{9NYdV+DLO8;HcSUZM2d z5KIpc;vAl^GBev=)fobl`5YYGy^7;iAAV=Kyl-NE&o9^fmxo;Q*qf-Y{b>VHVKk*P zpeCl=O`;TsJJu;IQ*BYhA-9KvCg?rGc1>NubUx-#e^-p*rgIigB`m>a6Cupv#1w6KAY3y1{jdQ;~z;W1#()c;KyK@1ydwdx-7E zDP_9jkQ(YZqlP|&BQmF1PRLk)_uz(wdu+rZQ6a5S{c#Hz4+3c0)tUYPOg?~%uGHy& z1;@)%BiM8tNT9T>mNNJe;(h zExU?w>s_XW&J)$$F-}$%^;T|Hy@oq=Ihl-{0W;S)Yc3pZR^+Z8GD5k3j?a2>z|Mm) zc)=NADu*0^8GK0m9{yP4Q65ajzbd1~cN|90!*eyBvL=8G+mmEmzMxrQ*LSEs6 z!lM-a5EDZftPaG0NsY6AvEurPMPvghn<}x(%=M!9@Rq4xDD)HK2wn)}o$u zYN?TT69PO-MU$+mT%X!({cCGLuC(ML*lBXGUK*Ek6~SJye>SPy1*i>iGdc zH#40*gXZ+U{Y5l?in2$)ZuNjZy1ToGhw{uSoG%^3fY5`6Xh+@xl}7lkuKfTYX#HR?e%W&S#KxBis3uo&LVkzQHZ*!T1C3k(#-?M5t6waN2D5P-AW(d^t9ys z@P9Ak{sPPE`$6jXF+6q=sSfzE!3ynrM#pu39neQD!1@*TdU~&Da7p(uA?A5RH*_M* zL@ECv0wWs+FvTr&@EOH_UEmw_z*xss`#(zCij`h??<1(hY*bZAwwG^x2^{z)DBL&d zpGj7LM}uOw`kAZrqUoHm9&X7Rv)1r__+1N%4ALx4;rtuytk}eERvTGyInq>ixr%Fl zaVr)aox`loB#nk_*!#cdvWu11_%mbdXO;@?GzWVBbDyHAZl-KaS^c2z`Flo%;{mDo5RJI~}1 zZTyBH9<-z{s?f)E@Mh}{6&^3`&p3fpkMDf8n1OV!zjfRjkBbt{$-DUbDefnK1_WZR z>Bn8>sN)6AY+%5J8?SLAZj8TyWR}S}LmBqLL0EtQ0)nUMC2A3pl#f&jvTKfV20_Rl zJ_V2XO~m!A&#HK5EqT*F=L9to*A|wARYetEON?>cl1qvtTnyb?T-MY)Z7s*R$CUsw zi;=9QITBV(yFv}9%i52BEfm#%kWvWHO+Jy2zcQYdS3l6N>M!K)WG~@{po1=*joumj zoB*&XUIgiRLLg7<2J{tVN)at=&GQt$uhex;M86oN&`{B7w4E*Wtp@gNL(JW%#0lTa zIApNQk!$tM34^(_<(U^_ur?|CsIx(ZLYOz?up4)yW(%(>Tk}_~t-*zVg4mkEtgea> zQq+*%tn5&-Hy@ut!}n^|wG2klX;UmOd-VUG1)?{?Tu<*NnMyBLd$};jaQr&Mi|P?N zt;$J|YAVZ!X<5G^iphsj2A@pOAMvQbfLX(7$uiA2VHeul6|ku+f#|7kOo-8aGYr|; zXoz{`d4W^_LPvgdn$kmm{B{p)ZJ^BVc^vxm1aEENvwUR8u9jR|cGI{h22_0zLtkXz z>YL`)mnjS_D<)n=8GCqO1Pe`V9@FaTTx7XXI%+9#b_{SJGN3ER)m~$cB^(lX26;NQ{?GrsvDhW2~g3 zzeu(KF$jqezRu$gMBnm0*D@D#1@j^tE`l^f28J>~t>u_$ZOlG=7>`VlF6Erw)_4N{ z5aKP`otdqUL@616g-L&W?T!$Y4G&9m+olKe&fWM3`nhZSBjnG*p^MufL!hP|68h&+ z#5g0)gM~WVbt*;;bG1cw2H7GR06BX3#XNFgxn(_*!#}zjdXD&;i;(i`2!T=&ljTR=u0m!;+Z)KLJoh6DkN`w zG?qx#Kq;fY+jZ&ZKLIX;I{_ZfIRP$2iOWo5 z1UGWTVI%Bji@OxmD+pUErx ze7tsR<{A)H;}C{34?*|bVWU(do4yDShc1qE@D9K}t}LEK= z4+5xvTi(>7wc=jpJ*6dPWNdpE2+B&%ecCm1ua(Ffak!%9)D}xIx3-wW{cCFueUWo7 zuC67=j%n1UyJ1Qz)x73VN~B9A_}qdy+Nfs@F+Cy z&K|Y!z_X~6xwV2MST%;G(GGqXfjue0E98`ac1rru+z-^E6uqg5#-w zYlTc-GstK^V=C_hH6OC4ooL7eiv`)>)}?bA1@PhRL>`=^2?E+q1YgL2Jw!ClfaS8z z1@4<-L5Ltwfb(}YgrE1NQ1M_mvTi9kN2Cp5N@7Jk1$4i3p+A8HB5+e{BWf>}gip6N zk2k;EJlgh;qdsg|!@D6!DcOn1^{dZ+&*rX4_{X1C2~G#-CiE0KmJNM*bzabi)E;&9 zt?!LARc3SY(V}P$CAQ3mX%&;wCuAUWsOYS4e7QB*_AAT{K zV?@#%KN_XgaFrHa;z&5yhLxDA)1=IR$r!oKkEURM{<;pQ@QrKpL*1U*T$DrSq~B;^ zao)%P22qUL%Ye7B?rn<>9YXHIbslO@u_A#NyJE4Z)$kpT96hTgz=lSD2_QceT!&iz zv~(@ipr=cP&r{G&?N3i@Ky8LN4O5t3+c9z&P+caBX~Q5ic@(5RizCz&fuzQ!DlqO+ zFJQWfA%>ztFEc8TjsHZu3+}Gg)Bv?UtNo(7u1rm(lym7XE!pX4s8gd92LB>VH?jnS zH~Pe~Aqq6_C4e%i$JBCvkZeY@H`Dr76Q%VbJzh03-mQnhH15#FVFI`8TyaZZ}K zMxn4;+tBz!yiHW$@r(UEb^JQuSJtQZEl@SRWKha7sLQd$RbD8YGzad;>e|&^*W1*K z{NL2iySmEf{w%nERdUbOa;xy&0VA~g*#QJg#b}I^Sk-(1kti21Rfo>2Y<7#>He<6sQu|ruPmB^nic}1Tl&S<>HpG*-yz63a(Nhe@0AXvFs?i|BdVqNwN z%%Rzr)a6irU=5J%qLIi+)SUu;z{P*+6JS}H&&j*|SLw4crK{6yRA(#KGtA%b!s}6# z#?YObL`^Ny6wWO}9$xuKCVn~zj`uRO<#ehLgz6xR4Uxc)DW2U8H>n=rqHIjTkBs*D z^BPpYTuCaQ%6ZgD<6++L7-sU&JAM(o-$!5Akd;G!q|M0e2J*>2@;6kGG@lAXkt0W4 z2+j>P%Mr(lOh4YBUe6NPRlb*JIJn@k1>$LKS?DCJy+0_J?7Q=1xIU}nUqV7dJLkw63?G2UHWT_b5-wtg1n2SZ+e zjCE5yvAN@OlD`?JejNIT2irv`tUV&wKX|#lfBMzV;kLLdkL}GD$2$l6r||Fi8+bde zVp+!Ww}05&+BPD@-I9|2a#qxfLJmjS1-2l~f{1@|tHw1?T87rpY6h#f5unGcG19oU48qm; z)sOInIpa~qvxv(s;v4m&BbZf0A=YZ#2-5{3uoKnfZqJju{a1_7K+W!dejTt_ zn)bt%rhUJqnGsIfcMK=-;F51c!WsKaedOW_%5lf2vY){2@u>~3@*E}k@Kz-`lox9z;@dRH21yvCw=T_A z1RRrbG>6G+)Okww(XC2b1cVBsIKLmYzsDZG>fNfYI=jPs(u+qSFHAC zmHx_TmLB_Z7T?4=zH(Eq7Od)&vg*vQJ z_eGT;?bjlRJnvsQ2{cQh_17ZNl;P1Vf!@DIffnh;PM7L~dz8v<0_R};;XShco4q4# zZk+~x=3j`uVMri<1ZcV8F@zpac%`KY=YwI~L~RXeTx_RMnErS6(6yEwJ3Y9|0I{@} zR;$(OuIaPd*uQy?>|Mvw#`LXwWa>lFjoJ%J|B^y8U{lxMc+K)N!HTYNxd)b6-K_{; zT;kcr4-Hb(^E^}6(L^CbEl-GZUKepeT_|v{EYj(*E_B&{Q>XJY74f&na}$Ce0^k>g z&iCfYS?}%F2Y^yT^a!_~kKp$e6wNDbkE&#Vd?XtmCImfB1+AuPA3gWV)@)-?JwfaR zL`HoM5@ac|Wr?@ud(j53z7iLf{&(fh>{mk_Zwxgmu*>ZYi+*)m9~_G8YboCAL*?CO z5XB+Zst}ZaJ6}2prc^8BW@pH)&XBKlhIB5T3+4AX2skk*N}zNc!oo%X&s4IN*|ERP zd$S6Ba$&qYK>#qtZM%)XXSZqML1}0}?{KZR9N6Dg0U&3A%3?KK06dM)* z#Nc1TojlV}vUMeE6l`OU@Gac-u@|yKGt-V7kR98 zM>3K_5fWF>aq{S)unArwN_W>ZysIlLC)&eVYDCZ|x3T;z9Cj<>qeM z?zYj7dQV9grcCU%zZ&}6ct8wyh1cZOVgTKl{uLcC=xLaPma~ft&4@P4i4GM-fK2_UnSOm zAo>5SMo+AnogC}6G;BhCRlOtyYG~Ko97V(DkA5)ESyhlfz2?eR+YDWSsi2LmY3=6J z+Dfcg9YEJ;P-~jrI?!wiE1Q%zljcU{EQO&v_yKBH9pD-oR3cvv&T`+Po;s z5^QW=o?bIgC-6FLZ1Y~)n2&U7`aCgz3I2R-OJtopE!1I3ahm5c)-u_C5GU4)>q{lH z*%*mLGyZW#zu!iT*IJ(Mho@d*LN2JJBI%jMXT$aZBOR^CvGhbFTKV?;C2P6*?GZiQ<{Qo<*8Mu{qs$$D-x8^O z(XC7JH=C;$MT8ten9I^%P%lB)9B1@n9@n)ze!CM7;8Ibm-$vv%2O*}|8|3cQkrEEv zmLHsLG_KbtVyF9x-2}ASI5aR+!8GD-F@?5b!}(W&*1$PU?SXT-M(x*=q$s~iuIZqb zP1{|Z!Q?TlQkFYuQ6`J2K1dvY!X(MTOz<#V(bk+8A#6~sFn4QGl9(v3CB|tr4a%}% z|JK0NgBwBzJh-NIP^BdDni1Kln{S>=u1MKTI7V#{+|Ble?EN_(ur@)wdIAXh5NUP6 zm+i*|WmaRQA44qJ>ptQX1&{9zL=E&Kio*qyjM&7Gc8@9*A!K#@mFkZq@)DEnjSNe=ks(B|k#!By)8+TW#k%TK&%LralR6v#+x`kB z^dr=gaW9b~#4T!1Uv&qGtxMd1xuuf~y(G?WsWtzsBV8Z!_w`Zm52e2qzdP{6KhWH5 zx!#d8U$%-7xg7%BqMpKkzhqfvrbXP96k8D6+ilDz{Nrmbu&v#Z(CuyV9%~H$=GZ-7 zmNXo}Fk<^WS)A$FL9$rloA>ur2l(fGrtCp@Q~y0M2#dl#=bnk8egcI&Q~A?jRKpXS zE90G*LK%cUkK=IY9*T3B-P!2w$?)(G&1>_OdngwE{d%9oegk5E_d)B1-r&bu{Z7@> z4bc9^_je;I36dMR6HP(y)msvhLSgrJE1B-2Y_TXv0h=0yvbV|+^fPr z(hE&LkYHRcf5nP_MX$ZlFC0^;=Ot$tpk)hKnJo3p$)FftZD844Dut&T3L?f#C5n@H zopzb);qx4rI^cMtiYFxJxj8+q6b{KTmu4Q_w5d%PmY^j_HTn`+v$VLJC)cPxhQMC} z0(NJ?Vkr{kSC;S>0#;v8f+iYN=#7#ha8Pe6h*j;bce!AHMdLDa&ljU#o$8D##F}xT z7qrBRwa_ja&3L}_K0#ZZ_$7sA`vYQpPYV%R-~24*UtfDxlKZNq)p~>LS$gX!>tJ_0 z9(}a?&S(0UI?N42dPDW!nPh$$U&ZVAEf60*`C_+j?_aow@SbI#WD1BXCsU_FtdQ`- z`BLA%h)DH+&N4!i6W0yN-r^RW5BhMjQ=q))IY`;q`*PE~oIXMrALiHii4cW1*3$H# z$BFKaiZJ3Uq&QvNA|=y)Q#Sz_p|mRKHFNB8rBqcMBkZ4duavtvTjstLkn{`I9{O$i zi+23T?B;->+ht+*cR^Uk+VvDF6}#?DVT|>cT^6=~#uZ;b&>m{vt%;Q3UOLxBP5S3c zy=;Qtw$uJ~TeZ*9qQsDQyqF#9(*gb;ap=b+t@nkY(gc}z3>m8n{sJYmA|X$Q#h+c! zNJ2(4pNvLg*6SfkMj3$TZ>JXE#tNLr zugeU7ugff^=X$oBYn#_&`x%?$9M8$!4Cpqw9NQf-@AXl!uMFVd6+;zfoEXb>zgx_2m`r<$dbwnf>1$m0q z0?$1@Sw$uT!*OnY5$d2#0Hz#I!uj@p`#f4Sl&VX4%qcj6d5PdVv=Wq|YVM>;s_!lo ze5;6pzNZ1P>TxCdYr)`P#@kN^oS}KXpxWJcL-yrbtL!aQiAq4Q8`k~~ph%PI%8=`h zZKE58?Iak@es#k&mr9eIHQO8Me@&B0(yOy-I~^eui0?cvqbABcT$W;^gEY{8r_WOX zp8wu-Un~15YqKk5P%M2M__)o4GUBT4rwwJdM*K=89c`JDopYyRVASV6e9RZO$nb4l zhcJ|JnEwjeDksJpg+p;YK}ukNQ0~}&ISjHS1Z#dwR|Jh>e{W00co|K_gem=gM*_ik z&L?z2uec&Zq?$~mOx1(}z8G+SdoS{9K^1wc=lY4yJ;X4wb#g1QFx{*k$#C-{F0Jrr z?u@`p{S<^_9J>iQpbL+V7bbDWmvu|PjV90GLCAGHoOkei)K|%zuA>-}<+9bo*5P|@ z%GPzS44&h5-xw@ciy=lFEI$5KM#|4WKdAFA1KvK~U)@WHDW_1Q`#9)-Q~b_Ep`K(3 zzHM~%>hM*rLq4@P!M8v!GL)9~6({L}9}B^Echz*B6vYrB75(SczWU(zN0@cPd6fFN z`Uj~)hlk_cK#2WPor8gaKYYh0 zD)j}-#R^X%+}7t|@mm0++sH+dW5H1kvCjNSOOh9#ba5s3 ze8C|4MAz#s%PHrjxtKyo@ zwJ3PA0w%I9e9Iw!iYxrM!ElSKq(;zi*4HnQ0r{@C(XLf3u>!dW5X=|2=a1xg|S#a(8CgW5X z6ge#mUpT3KG`L9>lQP?Mo@*-aNdoSZTFI7q7dkt&vUtURTqWro{l8H~t6XYd^kqi?ngS+GiVAH9U-phgfNw`b4T6M)Q*`peADVCbtRjOSp6}P>qCZ=~1 zYN2-5luC_%ByZ?1lKC&mb)im7bC^{uY|~rVTwm!qn^zax0*exevKLayf)_dh1QM?A zDl;&^EQJ=ioc|QsC*+{iXL_OY#5CD?Ru)0G!(|c8lytI37C5mM&X1udvsoIdd{O#F z$dai|!rM~dfi8i53TfBW5aM>Qd8dXzy7Fpa=EInO%htVf*{W$zoA=$IIu>uT^=B~N z5*EK@dbE8X?bxg3Dj`~9u!a%IJo`ns&|C*@w9G8YFsN$qs74Ubg!yHE04BbWl`IW%axATqM`(gqjSsP*&M5=g<_d04jJWc%cb^ zU)9@x$RHPbn+@Mtd9Bn3sVs&6`oKik7^`qXvILQGMHlYa<9haCD4xOiflTOd0oR|I z;it@bf@Xjd)iN2j8`)VBnX!#3<2k}O{eU!Na$P=U?eEwn=a<63hw`{A&;@fMf1aj# zKI42G#SqE@e`Ke!?mR5>AxQWi@8xd<_oPREiy45|(pUV9pI(rU<@U3RI*QNF?44snDi+YaVx$EhDIaczKp z+Tra?Lw>HY&_Wy1U?!vSrvob+ctIcX4sGy2F!3t47`TK~ znV;7{g|6>DFqyZpc?SKUV^@kAGGVHJ#~c6~Kii|k0i_X%zUn(H`-5PHUz$!yJ@#w} z#KW>n=5^bDGbO1b3rbyhUVTw_R2(0Vo;4%JS!c)nCCdY!c1@rwMFV z$+g9XV!Cb74>z`2pSn%+EKHj}7?lRHmUbPXBj&@H_RFIN^wKb}7{)Gx!MxQ-`{&$& z;owi&a{4MmVgNpZ%qUD_6^`eBqEv*%KX_J^iOW3#!uaY0e}H~;EJQ%3ubjOxrS1j?Sa}LT4Ojen=0>TFM#lof9XHeS zfOy<_IT2-uykLMIhTW#7n6GUe$ zA5pxm=)ah#P8AWm%E=$sw$=|w2{C{ zejv!5{qfOgvi-wVV!J!>Y<>2CTAPSk<8}O^qW*e@fWjF-8(B zGzQ>qiIF~sV+u$Kz$MDc;bFb&rvp;Mk73p>PC8)G)uAI2XaPBsQI z?c@C@X)^kB_i%5on*0PFf9R>EZ6A-uA6FB1KiQ=xeyZumyL(^kKH2~5qiV*^?kJ*s zwEyI=J_jr92Y4oE^2PCPlzFf}9s}zi#*@+Uq$zVZF39BY@Y5f*4?mk6A3kZ68>k*0 zMdIuqPd<*c`o+Nr9>E;#KLH^l{e1S({%5-^;ul9vxgUQq**W~`f3rw0Pe$MD9{&J8 z;lE#ewm)eAc(ObCa(4v)6!zc%J}Fn)$l(OaO5!!<)~WDd^fe~kKq@x6Y+<^l-{DZ! zrPC;WDeJ{t%fw7bCfI_m8Ya!fL*g zv(obwe|RgI8f%_(wq}bKDcm2rM2Z%NF_`6=CjzMb!Tbs>KK2yz8Yue2@|d5bvEeD0K+8__GCNp z`MHOV{EU{Bisro<^?VNs?xtL(&*gjExjahUe@b&!Z=7oCO{x@!-wjr|J=aP80Qy=( zTix`-lL)SOz60k?JcXu0nKanHs}i%ls+TS1*Q$WMrVH9eVv^HBWs80g0vzBr63%lf zS{C5C-G-lVhg>*o%18iCtJSA+Kd9u1`2%RCYNk(?XR5&BU6`e`OP%9{y`JF$H}3L8 zf95t7r+A+w%3mS9gDfkE-kf%f6CvJhIZ(X>i>7H;UVmVBBq4C|ON#S_Gn4|iw9WKs zvYeaXahzFD-W+_Q1NeoyuvZ$U3*63}yUnrbsoUPn>SEcvL_;t3MJP7H&aPn;!(gfh zphmIuLIBdG*3L2KgVis3Dqw#SLZetyE$?+?D|5_zc zPLBb+32?gc=-<0pbQN!CV-Op5#HwOR$xA}tp1Kv@7w!EMb@ zXBU*FT4vSQ4F*V0qXO`Sf4*&~0KXm> z;hfC7=n6&c_NK zz@>#At1!SX97m+M{KL2wMlEVc83`4nbr`Ee2?iiUd20N z7u0Jku3<7Zx5okhf1Dm;^3Uur>cX_iT|12SKrO7e&A+(f{zXCB9c!+8W83+D|? zp514i!Frgu8iJ46&?OE2b_R1@!(Us2yDKWt_i?wXuV>b-u4m{!Et6Kyw9Z*|33vd? z)Sc(KcH9sJ3opG&_fBi>#6`1XJHh*twsz6s%%Jh}9@b(NX9dduF?q8QWOToT+W@`BqM z48!aYbab>|3@yy=0_aWI4;TQq#6pm?tic|lLIkR?baW1qMRLYcZP3a$t{q4u2KHB8 zabd%A*YC7nfBwYylS&=p!S<_kMkmbuJsR>_B+p1C2H7333e{Gv4Z78;*MG;HT8@#! zVr|-D*|j?^QitNimw!yzRWA#3czXs$pPpVTNEVeIUI0=j|3`QgE0#c+}emXNw+4ZSGadLRw=c(p45xfgWP`QMKfE< zkb+BNLL4l4$ZCY^ilQESAb$-RS-fY~$YF+aG=Sq~WT{eN$7| zDjtR4amOmX)}1@ou!HR&NVm>5q|&L&4H23>&9P6NRkyYA-FeZ>2tWk)W%Ls`Y$$nF>TN{b|$#?+{N z0AN?LAMwMywGuZb2-4>kX{&dPp ze>N+lHHp(LW(&ovL~b%u#&5!R*Tir_lG;cvmBkBL)kbw80LONcg^%#Wg=*j!&a(X4 zQg+DFtl02(f%DoWUW!KZ;7o5D;Wk`3H%dEiX~S*I z!sU}DPqE*4mL|000h~868G3c9f6F`BN>?TiWH1eexnUitpQDsXs zS!d@aa+~>cTCf~Ff5_3qQ^yAt z)awtOa=&kCtDc^3uYXq85ZFeS;qv;G40?3~bkl<6tL;?%_``B_*$>-2IH|h!4}X$v zS+VN72baCFe{fLJbJWB9+0jT~a_v(nw=y_G^^y7iFrAU%n9pF@;Gr#y`2F4Ni-c;h zF3wzSTMW}=SsvogwJR0(e|179Gv8eWT^Givn0HCDSJ|SzU%Z1UHqLwuQ3$lQ1~DJl zHj(?^%P>)*daJ}7X_A}02({53Ir~rUR_#BXmd}n3$NPBGVDs|XQC5(vCM&Yw4a;Xu z_Ia=SRB8oUdl}7A>AZ|)5mqmwIk5I+Gz)o)Wi*ExFQZw7+-Vuje-gRFGMXdNyo}ad zlkqZ|%WYmpb1)CTjCP@uVwpEAqP3K*buUareAt<8>*AcJ-EpstW!HW6#>o_~-uTRT z^`_Bv)U4zzLKmTBWUjs@`RIG#bgj^p>~giyYa)tvj;v*Ts-%OaAITo$qL zP0J#}j>3;RhJ$s;!+SXC2IH*b8n%fY;c%;{Y#`8|w*JN5VJB(ir4< zur-1_FDwUnmc*BOx>XnK+5E;}&jNG}_AGpDuoq@JeLa?Fe;n}fcRa?8NW??jT9Eb& zvsRcSC~xz|)MKp;qP1=Qsn&)fp`9RG7JzpK#~4#CdOiIwb|J4l1a1?+VnTG z)aMU>1&CS^hQF>tyKY4L4bkMlr=CW0Bk(Zot)Q(PY_+z7KiBJ`NbGU{PVL}t=W5q% z2iDuxQ|Vx7e_QRAR<*NaUZ&-8rkiT+&Ze@Hn%C+k-MKxGos0~3X(oRkdw}d7KF=na zS$m}quUA*Qs^88MX>^{M$B0j|D-68z#EWuX7Q? zEPT(#)MRfSf{vH@X)>i%WdNQ-*p0{Og4A9>O<;<0f2+rmk|7nO4UfP0?5oi?amObK zNjD_&I;@CB4k)hSb4|Bb-rDZWt%{Qsv{(3uj~SxZU)umyR{#Bk?oVV$9pNHr}X#q_2j zsmGL_Db8=JdDX!=U1<*pW1L=tH!__;~)R)ZbFYF8JYTruL93feVswp&* zX|xCr)-7soT}d)eKRsz)N!kvkIv-i^hLxmRe@nXWm84pM)?P`nR64IDS%lRqNe--i zCCNh8t|akOYiw--(tYT>(j+dRh_T;it`>Ki$*6q3NTu4*;Iqh)bE0jf9P zg{y#LU2>Lx>lbP`JzF?gASrSrY?z3MD)G(0zhL9{c}B6}1~Gop@w$}$ zRZoGND+lQUKiRK@`}TU584w1fzImLj2?_VviFC6as2wDi9C%bn*%{J{0vpX_Pelx6JAv=f5ZaQSL1(}U7P@4hrFXPN<-IV-`q>eU_Livzi>v! z(mGM*@pm(QOEM?8)g*T>PLlkmP~3y;DsC6##1u|D@B{?dW0ID9Nxa*~JX_|}K&aVj zA`H3H&UMVPOtMLyEDDSxP$qU)eZ`q9hXbH_4Lw7JCa!(9Fe#=?nM=!`e;{$jUO&xG zvV5VX)T<4BZ?yeGqp`zS*Op*n8X|d~B2w|o^b}#DfE+0>%V#<#FiI*j3mrHC)zb@o zaczu8kn2OWkm0whWG~J2h^C~3#xa>S`{nNTrm@!LqD<#1xwrsn?Pc>&`)P5mXDwVP zsBwztPcXbl_iI?p$Ju-qe~OIXb;@9`dXZfLzjlf?BDbExoHj# z6xG8i>y+mSRJ=7Df6}$DFr8FYhQ0!Hn5%O>{#v4~;QKu73`XU**}^+xOsa~>^$rve z^3k`4@W$-%XlMV6af|Cb%umvCJI$wov!}GXDUGDD(G6X%mh$9&e`je%G-WDfs!(+@ zHF84-hqd4{z0ae8Oqhee+M2|%K3(d0=zLv@j{_Du$)P1fi(mYt^P&1I3tmrJO`igY z*byDufcYRTifrLRQXY0dI>*8}Vms%4a?PH<3(HA{+Kw3?n2<{j&Mv6K$t+)XG+nuD zJvilhcy#T1;>hT%bw_iXxHI zJk>A*a7})sP(1?Vfi;P9!HqOs&=q^!)K7pJ6$uCy{m!i`e~@x_aRw6!wQ(+Gfqtq{ zkPiiBndUhTj& zjUgy&`(8uPfBFJ;jX&?FXcOx8TD*Yi9BaHlZHpG3a|^ap(;O3fgxGt^`HQK}%OsU> zG;76e4%Gzt^DOrc@I;>{S82B7o#`ukgs*4@b~c)F{OP-Dk)aS2XydqzM$s1+N!!>F zfKIZIA|*&lkeufU&M;AW(MA!1(yE+On`qyWq&o5bf6vS$v{E*}A!(l~rRFbC0RQxI z)l~Lt5c{2!iQFN@v6gg^`r>kq6JDOgc5ObQ5xptDd+msZ6KY_E;|y#iz0d{CYyOff zN*>W&UaQ36N`Yjj!3E@AB1L37Zt5@^kByeIw*tCX#J~h|LtYgt9pJm57p+2HrlF1RezAL?>PhptRLG%fU-pvpuU+SD* zf7q3F0N%ZnW-xguGYE9iy>_Hd)~Ht2&3dNbbmUN09;fmSrTcLz$2UGs54VF@S~FHP63J9WPyftN3<+%bVRFR{?8Vr@sO4U@Q1V{3x?tx?rr=_`vq;E zhphT5=LB!==fmPhXRADXe70(}Qe&;ee@pA}*(%Sm?rfFKb4Q{au{Fop>R+O9ckkhB#`E{Ldzx{{S*LsOpBY z-y5`X6I4pbvD^O2KiE6g<~C~JU(uu=aN%Oo2k$9NXaZy?1d>2MFihtfU)lrPf0wyC zw*;pDoqg!FmgKv0oIb$75TCSKtyZhmuC$Uo=rE+n&vbMFQc;itifn!mU6w#21Bwzr z{i0ymoiZKyQ+0U>io-63pBbY&&=y1b(xYzgZ;bIk5VZ$+g+DUTHaU_t+rL)IS#Wt7R$ipSV|@WZAIj zwZ_oHX_42)<0h0p;|M~wasP4F+cU<1s9rr_M5pTI{c;IlPw{{c)Ea+=@|jD9!?*B%si7_wen-^2%+i}l$}>l2W(mqf^~?I< z`UpeCa@tmxmSl74Imj5dB&S3`G~ZAHFy?0zPEZWM;yYU6+#}BZe~v;@n;8&)CgB7} z9tZ{zbDT;3Pf!>+=!Q;^?ax%#-ZSVuo{U(U4^cX3!Eypa50`S?BsZ@Gm;?DuLxzGW zYoW|A83k4=TKxT<%R#vJGR`ATG!9nr4#NXWk4bLiUV5m%}S zxru%sw7i1@&%vlqhrv&!TS9=6df z+>xj;^YAAIawq)K=#JL9ta?o@b1$iX$;mcQT-yUlj{$sEAz>2Gk=ikMqa@4G8;6Mr z2Tl7NXu5_}e;Bs}4F!r9TD#W`f|0|O=-~h$>{5v`=uMN6?#LHxp}VSjc8LL(y%A&! zk5irPpMHO;zBxX@17dH0o7b9L( z$fvi}*JV4S6{!n-K8C{#L19)+!BJZr?7C=*u{yeNf8k>K$h8Si9tAOoYw`?7Uem2-Oufn*8)1$=IAh- zn&p3$f3tiFYl8W_EnBpJ4c&ZUP)VVE9|pu>D=1`W8l`JZVKH^b;0t9c7Yeh92QlRMZq){bxommX-Zg%O=z6MA($3kS7k1X ziZIR41(0;GodMTmhbfLSB@$FgZ$~K*W{?Z|`5eL|v{uriKQ1Jq;pbEMf8*#h9Xd%j ze}<`%P>w1i^{bc;%oe@ZM~AXx#~?q#aTlJMMVs4!gWT&FC*hs}|i5)TmE) z>T1MUPg7IUz%kJk1m_OCj#qi9VGBnpe@x4~Sv3<=R_1y!b9yJUgDG3?dzh zJwG@sKuSS4uY}r)O9ZpcbBJwHCtf{7z2zDdl@7sLlB&2!g@w&K=!hc}EjNHLU&>Y> zPD`@n#*oboWhvlx2slH z@M&8*L5&033SScq5Le&jjVdlKpoi%~2a+pytCBrMNx~(HW;mWX84pHH-SE2!#{oNO zq}=Z{jC46iM|eHVWwal4d^}buQO>2`M*$CM`1N5Zv<%`ZxwXe>?*X-NQ3j zW%T#7*wID}7#9LM+a7)lw3H1~1BOawI^Z{B5&Kr|K>IYo!%!kOZ_f_8q)PR-cI9gt z?(*up2fOE0RZq$}Y0m1xRz@0Z!sJ+5wubRrZ5V4yOqjrzFi{l^nZN;wL|Ow$FnLB? zS(>EXI5w8R)-er#9?yUK7msG%@f8YXGe)DZJc0sFSEnKnN!uTRBx-p@+UMoJifS|Be=AY z0Tp-H7;y^&3nmQ=%p77jsErs7U^cv&i`3RNInAku*$2@Yq-v0!=`cEn z%}h6T?P#yb=-r-8M(a)>OT}*DSY`Yc02=hkhqh!Cb7JlkfB2H~Xy<7@62_alKzNYs znemJA!|U>knH%5bT%R3nj5uyglKjh*hg=r1bX!I!mG|~Cb!QJjnca@z*S{9N7i-sA z){>Nzjg8i7D_$m2vb!`*9 z^un*aKQC&mf8{)fFQu=CQ-`4btD5d4oxj(b`$q)L`swoX8~~f`n%vvGCb!+J-fmWJ zmm=TErO2hnPX234l1t5tEKM#!Y?mlg8>5m>+oj5Zdz|8-oB`(FK3~Is3((^Aa^~Co zb*gl0B5h5it%zhZLf2`6ojzq&Erjf|+GK_d)e<9FRrZ)qF0nus!Ei$=zj&5MpFl(u2< ziWXlea2xKf>%9`!%hp}Foo=2bt$3@obM-l~>fE&Xm5edG&ayM|LGFWFBKj)#rDDDy zA$IIZeSEQ@uk|c8z_P7 z+LjQ~U|NaquyRJ&8a@>#vco;a%;dfzKyDddYWg}TICwt8TL`{f5X9P6hY_)CGuDhU{3n=W+5V_NuQy3 zw@^r-gp}Kg>0_UI8?uj18Z2d6(gr@JY96ynJJ{wCNYFwPvj=IBN<$y(n-%VR9jgKrZ}tz4PEX%R!yFB6q&W|7q~Vqo zf0J=)(!9qV&cDQ7uW6CscBnDxVhV!tqUi1v9LX0@KbE2Q#Lo*=;d^NOexvqmp>#K@ z@n$otO)KxAIw;!Q-4wQhwqtBrT>x;Arh@yB>`VWd;>|juT*)XRFq!N3ENp9E zg*OgHBlGXT|WlYOh zZFJ7(kvM$L&mw)A`E9-_qoBKDf6r>*)`eCBr@yUMgUb))PaGt$V6AID0OV0=%eKbI z>orE=y%$O^f``56i}dEK8~t1^UzKVN9!><`yR7x1&aa0L@AAqM@0j8~=weQjt5f#Z zJ<5c?!7qhFF zu-xWIk_Gjt=V<*2)+LAjTu$?=qTY4y8lm}yp3}qq(_IrhV68qKSCOB$bWqgL#d3I* zj8X`iX}k>=^1^N2%<5t6K5OQb57rSJ_PQg&)XI>sg94e!3)c3xe~jO8$xLZHn&lvG zbJ!adF)aJomPR*4O*904H!uWzNh{}gZ#>uGqH$dKkGV$h=@m9UUrgH#+x{RUPu96P z)niU(c+fxAWG&>L7K~FJ(Tj1wxTajo?2m<Q`vD+8^P$fDP#WPZfE>|xR0Bc$s8sV)J&y+U;efYcPe`-Z|i z`7{{8h`aeXj1~UNl}0q07EPm{k=Uh+#EaUNyiK!#e*<97fA2H$q8^j^50MT{fHntf+M z4P1S2@V5J`*1U$HDw+|~Z|MefyWIpLDR!*hfTBt$pFF946fO?Z!O`93d45?;(B&O+ zj&|5#PeQJGe>vmyr%%Dxt$KF1x+hp@xTX^7jW4B*j^-5X6Pj!xRHwZrmN#5Fi6B#V zEv?m0ZCy)iaXW`Bn?S{pM)HqddhO;FTTHFVT_)$fPpX1_Joa*vCraANY(~jL8_s(I zEHA%6Gw6>+)3U;7(q&kSB&*9CFmb0-{7ai;&IxDee<8-;F#mdu_oCiOt+zc(wmnO> zJxjJdOE%~%+4jk+?UPsU@~!+gVd{6U-x~X1_!+;OcmwMOs1X-BhFnpRP1Fd~d)xQ0 zZumW{h#!^xzaGnCv3qmt@*8;?;GKFbE9&QNE~w@PAJW3Kt-rVR_qP7t*5CV|`g>ci zV-sG-fA$`hVII};lVI2KS-PL)8stm826`giRO*>9&fPu}mUt#C?($sk5iw@@_7O3g z_&V%-Vd;x$3`}C&B*H1`@&3b8(##ii2_>gj)DMjsAs|p!y(rnEoKeiDhyl!>f(kMr zq0Q|#bT^Hs38^)se!9uu>!os$-CauGbfhvNf4#9#<<%XoZxM=g_?z#%Ga_w`-s6Ii z?&FM2_a9@uu?|#+!Z)U_;@EEPC}F`j!NGxV9jF=|KHjbKNnYPx9`=WiPyRE59@?^o z&_Jn(#6aq%#RX8lR#`FUzRAE&3y#{%3599Vit`EVAoV?-&>gU_J+#nyXyL!Lu=bi) zf77<-E(T~?jM2Z|_T7yh#4uI%JdzQ%L`7x<2l=j^$$-qXSGWGWhKzaB8$;JQun~2= zHgTBa2B%dUXT5q>rNsZ;gptZ_8)?v>BplCk#1m|I*Y^tRoxMMPlQ`dLw^usn@dZ-U2 zsZ+$Qj9ZkUq^rM7B>&jm6LMwKaLVkyU{<)E-&D1&4{Jy?$p1JxpoP%nMYk@me{A?P zguG@p4uF-v+QgJER$#a_JPOZha6j-NH@Y8-_tSIg5#BZAvU(g>ZhVU2>xO8!)x@t* z=5<}ZC?+%qmve`PwNk%DnavF40>$qqHPq+p-MKmG3LhNS!LO;$K+ZUo|r<3 z5d}LThTQZV5)gEaaYjdIHh=v{f5LD*Vdz}V_@P4T1~Q)fv|@KdxYd&QA_+fe zEc=Sm%;jSGsz6b3T1=AS;3^o2+Jp!&lbaqY)AXoD^Iqn4p^rZUg|&8HKtDLfBSORX zwldc<=IR*?`8l7tw&VTj6}4p0NgwVBUCwqwb)ivTQu=y~C*#pD_eMBQe>BoBrqhg< z2AF^CE?620KVTS2yL{AXrgitll*3H8Ux=I`0dN2)a%7! z^tftpQ>NFsOq@M|N?fBIeV15d8m-yqyG+l zsRX);0$oXB>*`W-Kqc zgP{oF*!c~Nq~jMw9Rf*i%8ZbgF8eLwBoW~HI5Q*$ic085PL}F4e|)QXedYCk&|3Fi zr`EdnTC~>R5-6XxeUux3Ju&0)>;04CovrTMwC?-cPv&k3m15WtTaEdqG^W;?R!s^g zJ8pKbWIkz_uZw9o1#TZMqcSmkf;lt zKK$Wap&+|DQ1EDv0%D>H0=|0cQI-Aks%>L)>!{-Kq6YYkze}Ek@U^<^!(pxZ9e8c_3 zP_7QhHEytA3uUn=Z}jMTS-rR|i=;TL0`;Wt0tF|&_N6gY2bL#U@I)NKsW)Y{LGiJLNjve4O~ z4Rd!-eF#_Ve}8NysHlnH(ux0+$Kb?MCzMWmDuV2K42z$`@=J6)ish*iX|`}#$yPRA zL?$t_+ZeG;b7JV47FsF}Of*Wu%Ki|I;mTO_gNg!cCs{|>sj`wm=10;1Ntqyn6~Fg9 zC}kQqPAdC3ylc1gH2SO8t+bcw*Yt8K>+q09(&f5cf7J?YD^E{xo0iNa)~T4yv%^Yj ziD^5lG(96pY{E&51G&xY!@qJ^2{#W#{&pWNTm9i)YS1?Fv?as${zsY2z_CU-JNRzh z&QdN950?)O4nWAQU?l8VEJN6ieqvVc8Fm@YIRQIr?~efsI0Pd>SSZ<($35od1X-KG31CgJ|Q zJAmfyXP?}If0sc1B9PsW?(cm(zWeFkz5Dm~KE3zZ63{%K>Fziv&)e^dt0(Yu1MWvX z`RLwq2hk{Ca_)UP{?z_MIAsgj)nj1Z5|tphf4|VDmrFpw+IjZ0I>SPdE@7)ZKo_8t z)yo2%g+%{a3=&d8d6cCD#d0FTXv;#k>&!3`!F?#J-U`brUgXyT(#rPAmBN=kOzOL2 zu?e`8=@xB!Uo(z1z2UM{{{g!LYfBUl3@(wMw7GZ|kXg(De+rQKPF008bBHC*`Wi?b ze;xRC%qT=+J!QF~wYOPoiLsolaPpKm_&>~QK%I?R@808oos9w!W+yLBWu7W(Nj zu+_6cgYADE>oGix%rLMuQCoJsL}Mnff3xF*&e0X**@B~V?%x;a5cY0(f@A2)otQ=lH*kOM%m4H z!)O9M2)md_Bk`?b;g}a_nfxR_9Uo;>6}EiQPyh<~EEqaYPKzPyl{%m1&7dd?f9=eC zT|6u2&P8DcQ#=hXZE=qR6DYcuZ_XPNJP;rYm5tgB3%x9mA*LY1U&*TxL0XJa z=vaoie==;ZSZ#~PjX7xR1ctMre^$9P5iO<@j%`1^%wOUV^Cj374u;JGvt9^p+xhd6 zwc9Wg&P%AB@%y)Sn7Z;JEbf*{Ld-$Z=gs0N>}P^Wdso?)*psCtCGnU0{|O2%bIWSJ z2R(* zzOF?z{`Khem;Fbos&Q0CYa?cf>L^9jM=AX(JpSqI=;7)bSsq<|^v$)o?>=>%>>uo( ztg4B`*;Ry}gw1{Sf2juHR@DMxY#6~#eMgwhX6%Q?*B%A z$72ybe-;kDWs%L6q)MdlD3pEUebQKz4ep*@;%efkK>{7QBV`BUn;7AKk1}CLjUg?w zDZs%J%9sRv0r{+)+3)Y+84d_!6yN$(p(yiH)%c%oHBsR|f2lx|aT%~I3YR%fX4U{% zrFc4^SX*=e@i6ZKB5~?M^tclZ37&?LAuw;W?>ZI`k7;tX>xU0>wzY)y@w}RnpHSBN z)Ozz(pTz;L&`#>9F~<~~93SE{xA=51G=`Wm>`mUyjXHJ(xY$v%UxM_4-ZS5P36V%T zeO_Kdf-7y9e@#kNcvCKqHmZ6o@$M?*3;4%|_k&GFM%xM6vv=NPuk??8i}j-HAqW3? zQ?%U75ne#SKgUpFTu#Q&@@y#;4!C3T`0?TXPscw#`R@49f$}0*pi&_!1MB5Nrs^Q0 zf9)uh1MB`V2kfqDnZB~-`DD%DkEp`oTVQk%6n&6Nf4UTcUXZ^L<->mFR{exM#GFCS z4_kpBu41^Rt&;hdy<^*MoCZGgz(0ugfdovrzbuqPXtQj9ZF`z5w>_LaZsN9vG!C{? zD4g=`%taTEB_~dsZkG$!jWimKW=1n3SsGQ1%*kNN& zBct=|f4F_6`w4E27RmqCB_JB)%S$jV(9QpbMHrT&z)W zMg&a$bbT*og%gK8&XZTtu-uo?piu*Sp4_+Hu>5^czP?(PL&yJ*PX_ljkNCa(dk*=> zhuKLI6Tp9E?l8*_GnHJ$cqYcKtDv_$iCd=Df4KE*s&M=vIsFi`Y0%%tD^oAvpYap; zH4aTKAF6kF^umHs7-g zll*>AKL3*@-f@348h$%?aWHs1INZN4M@N(I{&%;=1MKHjU4Gujbkh@#+50j!ub9RE zf5j!{ZD-iv+y24eK38K&Mf%3WT_ri6M}ULmS+cy!@5#x1tNZy6&$mX7-*=R0c>j<* z|0hkvFMdF0_o9Dz@M199?;merKA!0N3f}oVdm2BUQ}%7X-T;RPCyBCRy~wg(#1UuR z2%kHo!=2bb-`#yyB$fLTaGt&KGv}l4f8uMtyrcWU>$!X%fKX7kmI!`ugij2n6Wepq zqSw!Zy$*g)Cd)Db(Pn(|oe(5gT0Jv9Pkyt*b)!7Y%7hLm@?mm=b2v}SG@jvE*0fL) z;3u9fDBT^Cz!6CTJsFI~{gd(F;Egs@QKWe>eHU;p(*2O9A?JAh(H((bk@=-*e=_?c z>{L3l7YbdOn=w4iUBw;($y2OhI4bb2eR#@FVBRU!^R&P>f>i93)Qk)T=W@R%tOrw) zq!EtHT2?6dPmXm&`i6PS^u+?(6i>rCqPVi>Gzz<6g>*n!^#(~=I8^Vy(bN+QYnuE{ zHyLK8iNH+L?PrhG4jbz@$3 zY7^$U`O{B5N?*(O_2|zz~Zj#CdruZoq!L>Nd^b2L8A0f6ai5=n{+j z-OtaLmkA8Cy&Tq~YDj!8i}-4zx$f&qp6}W}@`Z{Wk)}#UJ(3rXQ}`CdN~Ly;@%8B= zufFRSf2Q86*ym<~Bm)$5x6=uc7xA3})=rqOlep~o)Bscj7l#N!96^zI1`F{|BO5AFCtiFQ z3VW;ret(mgC*Vuzhj+6vGmgDF;$9e6N@qL?S9}Q{M$7tR5J2Wxe+F1nihjykw(vXn z5-o9Q&X^q57;_2A0=Ri=i!dXHP<@~VojwVpPOM3%J^>FBr#c54%MUeD$6j;JiOP?> z&p^~u%>o4Ez_O|@bR*5RA08k{kt6UO^*&ubb8{+B(396)SOjnl_xdEDm}Vo65E;g0 zGxOVc%x#V!`7xc#e{8yRN#bcg}Y(E2o$n}E((C6 zylpOP(%xOuO$n@0+yf4y9&n5~V0B1gxzCw0$5 z8QYdjoyigd`=Bx~;!zGrvW3IOBV7NNKU95l4e_DRL6pV@!!JuAr}_lWo4aT&_%K2w zz=_UD@=lk2@L&ySZ%uQc2wLO+0`1tAX~nnAxinq^i8(xg4=+iXT@yWH!jk4@m|Vow za2W_?HZ>;LfA%vxAd29B*_lThHZxPmOdv3@7O}}pv5!6L8^b%c7PDB~Xi~%4ES-Y| zX?%V38Y zPbSHNhwEltWh$nU78xV<0-SD!R!8PiX{?LnwNW;4ae;(j5aQU$L*Q1@;kib!;{N~S zaezZ(vOeJD+)Xf=p!qoB@WJW?P-S8ZCWGt6Mg#>K($6xrXqQQ4*mm$6J*6iAx8oE} zYmh9Gf7lQ(3rr14)<)S~SiPTkqicsG&8N=fkCtIcGxRy=fi~xWS)vL`Dz`l(DXEz8N(yMf>+e2#(bF^6+R0fb4}D8amdt z^{A*QK)v^B)m{~_f}qPjSaNQlFwTG|?w+n`78`9QF-4qH^CJgV7u z{eL?gWHh=ST@ws9(lgy91*IL;u{>i9#EUw%5Mj(8|I$W+7~u3nT53j$+kGAhgx4#@ z2A+xibg%B_-u4?xGK`9wiO^5~DOe&-!sT<9J4-%CPBzvR+etlfJu zAN_{jN2w;)Rf=fQ~xV%TET6pA8^c$CvergF)ZJd_4T-C|rY!))#PG3ht>6yvnD;(Fjjj z(J`B*%7H(S@zK%OFZ8FIM!Es((SNZ=&hTXX#N+C-r+v7o(;t2VM0)%={Bn3WU=p7l zH`P9QHar;eS$`P}LeN z+eKD6Cxg&61U6B#l3)U(=nHROE*gsKEym}ip;?x0Kr=wMp;?24DPWpqaTCpaNzX3{ z!@03|8d5ZZgszh(Js+KZ>tYB^(TIO^h)M@`4z z<2yWjcAAb}Td(%22K~7P{(lJ}T~`jg_G#0d;VV=bU^RZga9g`#kxiY3UgrD`hri2A zpk`(SfsE!{MXpLN)2o8@m;+QhzC;xqRRLiF*dS{}0}Q&{mvtx2!h*ZlI9P4Z@&I4g zV0!NQtzumdE4nZ;UE8cC>V3RLm|zriG(SkylN!oaRNnIdTx@hdFy;x|T6| z1rhbvOuJpDuiU6hN`L)zeuhVI=SI!u$^-=88;QV~sRguzKbuo2NU%a^?Y(<#)bhU7 z&VFp(ssifSyMelWiOftVoo3xKNWHH%ru-)0Q1l78pn)Cf6WDgW(VtI;2ihqzNU#1q zMf{dv%)32@JFG|>t5O>+srnulJH1>3_Nr(S7%qBA+T%vFv43vWF>F=A*sp2@(qUc2 ziOO>6FlFWQI+^TWTfntd??wc-QT(dg{vyrGi#z#kiqUuR4cB8PfC^r!;%`UY*XTC0 z>NZZfwGT#+yLo>K;2f!_Cfxhod@AiWFux)`Yi4f1Sb?b1EPrJk>IMStv=k%#Fa;a< z(8?mFC)m4XIe)bhMT6HOS)}*`oaL}wwXuA(!I<{`LE^oIZ))L^oF?4K2i`$9sy2N; zkBk3pdMlkkR{cY4I+Mz3we~o}T1$aj=$lxI`xf`DXEn0rL5wzXFg!8UJNfVYmEl%utEL-i-G7?p#*dR57>oOs_N@&!GUXxc zHu8_L-*tOvLrMG>%{B`87S^oyDq`@$<{oiJ6T_FZ@c+ff-T`bFk?6>)CX7tN99g^lP zh8wkmzyI5k%~WU8$^MWgr6%faY7ZYO|6h69C=XtodbYTQR9^+%VL@+0b?{oq1`6|U zQ-;w+R&KEUxuwldWcqf6$2G{$c5?hLPJEE{ZGUFsL(cbYDaw=Ke|eHWNgrU2KN&uN z-UY*oT^o%4SQqlCXn z;;ZCAB}~F-Az>KRdLh}1u-v&f?2IYaq>7ORFTwTFsksFw@>yUTJTY9oT2}w>zcve-QNWb!^v_Ux#Fhf`40RilLsb5Hphn&LE&v6)y8t#cwE;#cxYh z!KRJvxH#0JSz&x?8mRSEMhb$#q|$KdTBT|1$S;?Sv5M0|hxiI$z%+cv6?+0M1j00l zA|z)Fx5y<)@4QomaqJB>CdGoLf@(IsgJ#R?+m6WBkI19mCWs*q$+x5&;6Yr*?tk)U z*kar3pMtm2B&Mnhz{^mzyY`vt|_NOtV(>wMEPQ7Daveg95W9oP=V6HpkY^roWi zZHep2Td$int6YBLu0>*<2Cg#i=2_|YW%c>4tP-pc%xD^}KcIGV68S;1xs^S`A)=N~(7=K1rA_SxqdB$T%WDXr_QAzy3kTQET7dB>q#>!w~ z9IT*hB-F`qTwZXtAzP$#DeP2%a^Q;tb$Lr%07leMatMngsx{{L>NOy^pXc%XoL;8V z`GgCo(9e-wq_b(O1QgJOfO~QvN|f_xEKQZY=1;hF0M|B zhq~D1Vhz(MC0*}?rC;Mf6h?`S++?juxFtkorDXB?!s5Z>?_Zb#+pj5Q*g&!zg zr_`foUj!AJ%bS%M>KheV*MIHQ6;YQrE1_y-E&h#qHCmn`z$$FblH@l!h-Ul5mwAx} z_b(>#^z-d4*hfr z%^)7Q2AYzBVhP59J<+I&_|gom{4JdTZA;qXO-+6u^3ROXJ|I+Z6YYy>OfDl{2@GX; zdSHNlTh{h$E;&?!{cna4<&N|m1pFmsl^_7bKqQi&0{lJ`WG2vVWb|4!o9Q!zKD~X1*1o zTB6@(hVn8!viP5iC)p%JyFYnRiDf7Y-KUqtxdJD@R`>1>{LkWI9y^lE9|S)=Z^!9T zhhUW8V-bx_FW6TqQxxn*BupmNZ|7$>@43+@hsc7y1uYv(S+sT{lO_koRJSUHJ(^nVHFgyf}D&M!}G41u3M(yL^4%^xt*qH2DHh4)PMtqeNTp#@k}GqQIi zzp8n{uxxn1f|DCW3|~nKMljq<^?lt}m=`U0fQ26C{$bWJJ!`Of)T+@;NuN>~!&b17 zyBA~Jo~837skmtUjAokr#L*3b=?lFz;0LHaOq)Q}z<)LetP-v{aLwas3JVwJ|E-a>Qte`G{pZd5zWcta zQtiTWGk=nec3`o=MjNp3&wAI51q|y4;;Zd(`)KeVGok+v`R*a)JL-Qk#AheGXiru* z26_@K7~@Hh=J0Nk#j_Ok+3iq@MUuo5%Co+2Fzi}fy&|3RXH;8BqqhLB#?GZ2m7CeJ zmVyj9m{nVtN;QQ~N;L*gSlJjoVP)HGOg$x9J%1?BHiB}d?9WzgkeiuO3-%<2mlHvS zHzsAg(qfygg`;(wT6Tz?02@|rWJ$UnVgpL4ZS6prIn--sQ*Jdq|B1U%FOM%R_z~Qh zTI*6*D)^n<=!TB8ar;DqwcJ55;4L;$4CprZQFg%W4)|;=)j^ z1Al_eR!XZwhktVT@G8Xu?VSDwlG`La(0^WUJ-4*>MzS_tR4cXVsu~5nNsQ4Zz=#{| zr88uk+03oX{MJ780bOUnalT_tCg}sNu;?!1RKMU!d0*LavXP|!yx&!y|5-^4d&3Zs z(q0p4^^=k_v{AeILBenPUwkvTAq;zW`G3ot4GI#WQdE%N@_4aGa$QtrI)4q0iBA7g zJC)Iejp7j^B&6ysHCiqfSzan|ITgtM@v!I_kii_VO%gtH#P!7@nWXS;Cj#=}r<7ck zM1iM^Ef#)rjZLWrF-%Kx3-vUf$LCDG9FYxDVeR)qm09 zK*6Q!XWtyCLpb7pqDKA0{&@J~09zMEv`1gyE0+r1h8&y>4)+J6H&o{m@*6qnYc7G} zoF#bz<1SEny1lpFvi-i_1C1bH3q?NaBAar&^-lONsso)@2^@X%b>3EVdRx1O}5Hi%sd^-c>pUc)F)!L2#0wZGXtqXcy3s4 z=1SEDg5t4B?V*a?bh?ie{z1jHHuMS_PbM>!40BjdVqbV(7w)#$mO7dX^?SeffiX>G zT>R47Dvj`9Y&_!ym}p9~HNJ{d@@=ff7s+g)uCpa@9Tz0H+@Ur_Pk)Jntc1WQLacZ% z6K8D!D&))y_XpCQlElb8)jfHl1cTvgE1G-jH(-<;bt*o=<5wP(|>;P!= z_>&_AWQgH)XORI$U`SWLCR_;hfl-pJMP&g#p%X(5n^41#LZIRfzfX?X>j`%}GkakhJS`%WS6JVlWld7V01+GgD;etSY?r=cy?xPm1;g+jq+qU|1G|5Mr?59 z1lNFTaCsW%zf=i)nq5^Cn=Fm`Hko{&j*&o6s5mvbo~FrJI%g+L8cq`~A&h1ZY-P9O zY@EmQ0^@e)d4ELwQ^h)>iPIdPC`&Yf4chp) zzyHG5NcFZdRF3uhAWKj^h*?sU?3JVqrM&Nf1ovMIWIASxx57WIBqEvh%YTJl4%oqicc&b`6uW~ z11lS_Jb%e%(<*iNTa1)#7p$cL^$HxvSwVywdKl4yO5HSq-FdQyT<)yyS(<}=!m)G7 zYML>zv=R9eczl2V=y*JUF0q^#P*$fYu7xm`NGI8X-one~v+EU@`{j?YNMZaMsiTMl z2W=2!_eWR_zBuV044;jfEYnebnwI-%KAAa;RDX6$j!^$52!IJkTNveXnyl}?U!tM# zs1WE36^-4Pkls}~149czQ3HQ!RNs^2Y?;iew#}9}cR5dDyj`UrVEqNw@9Hp9wEL8x zAR7>qgY_-KiHQ%N!kRLh+pvtod==}^FUQu_cAj3dVO`nRI77zzJwCN7ev;fJneNQ= z#D5ciE#43B121Z?kC!T)s#S6R0Sy{ZGGE6T+{HFH!>HzDkm7<7i7@Yjt_Y00C{NU4 zs1IweP2;9(M~>MJNTFSk%!@29y6Xa~rr1bRMp4Lj{r!;(Kw#44@ma~s)EIYO3SHK#+t?D-?S& z8?Q20tAUOg)E}zT7(31J!{s`p-<@m_TbhO(s@y(2nI)wRPA;;nNK|YF5e`ja`hRs- zHe!s$th{546&}Re0PBwAkI7}MnU31A1g2wfY6+wDVOJf~t^`j_-*Cyb@g&L1I2CZb zUB~kS83XmREO#d8G`Wbc(rlTN@d=yX?`WHL+MjUn<=mX8PzVZ0X}uNmN2SIU4Ah=x zRa8_UQ9yB?$GAg5fQ_J)+hrFNH3Fu_P2hE=Or&a z7S}2^Z6yiDLi1SIB&XQQg!`)&?@t*~b5LZuBF0mHuFQ;1?EiuC6MCacZGW}^;V;KC z*oBzLrfwtzG))N23!*>G}u8lB2fT44l>1mHa+wjTaCaO zPcFWTug!w)ILXm5W57#Q3fA!ydr4fHVILWW9gz;SedD8?FX!IqWvj zG<*TM9+Z+w`YBr$uA6;Q`$SQ%&wX3GJ$5f2Z%r7SH21gxbF%P}?)882omx@2lN z&7bS6$C+J681s~PdNQZrpTF(eEsq;EAkT_Kej;n4wz^}wXp+*f*th);=ZMLA_Cl5U zGEwOn21$CIB)3EI#DAwT)WtCls~LR(4*5>_53{ln`5cM`+D&^h(xi1b3zHDW^J@cY zK3XR^Xzr9;xY(wmPx2UeM0`>~e0W=Av+K(&U%*EnUe<9>1qEspmhBh8>VKCTKnoZ4Z1@~PX`+uM>l=aO+>LGZRlxlV& z@9d~PI!e{VME(luKhI1Mp#!4&Yaz*0QYgQsiZfCMojejng^x~j#-dIIUANVF!72ms z=z_o?lLfmPSKf1Fd#=9uESWl~A5-aZ1%HcjpEBh^BKtu)bPl4oIn&Kg$@5---%dAs z9@ps{hs7mtGk;e3;%7KjCT8PKYRw+g5_ivibElrD$`gWXK&c^JbyTUsD^*st`|~N@ zsiGs2PEHP(r6q;p4)PGa!P6*+yNxKqQ&Zx(jU@OiLybXq;Or{KIC8CxEcp1EQD*t>h0WwRt^ z6wMU+oE{c^tmsIi=<_lp1BREfYUaAoS=}w*@Uty5FrS?Mup{BSRr!gkbuxSh6`a%8 z3H>!Y3x6Pm>!X@%|06hID9UL#WrOeMtmTlOyzM(+2l+mr?9Qc++@hZez?}Y zZNTTb@URKz|CdP2ZJsvMttMJM+Lt0)T%io%OZe{*u}-FD7QTWw+v$qL%+wjjA(WYS zKaY!xjzY%eIK{^)`j-moTK;L*!PJadmh*w-Hh(IjCwcWK(w(iH&Ebw_&tV=OgzTP% z-KN-D%tuS1bnK?so0OuFoRzX}6P}ABU>GXij`_wH?+a9W>WTdn9^tMyZ0*f;Krx?^ zYDH>vkuFvV1$e(rQ@L6&)lTUmshKX%rB?M|Yx5W$a31`G0lpd8PSgbMP7Y85$ClhC$itV_OKi7O!s?AV7I^*MoV+QA zMby*Uz{sL~X^Kdtwp$@ANsg43Y!)&S?n2h4RswXeyn}Jp?RWM6dntT9si39ovv`st zuf^;@Q!TJh-KlLpa+}LYONtKhzjV{C2Ye`q&;tbYM{!`Dau(07fyE|1tDl*V5KctZj+mZmwTSabAYtp$?5v4=K5@al zB~zg?glm`DjDw9sdcwk~km0>=BvmG=g5GSVKx$z*2y=yv;h^o9ia&`+q%%FYb{vt)-1@Gt^4o%?dOHNLn- zQ(x+$x~1^FSfVfvwOB9PcGBStPh$^%qpvPrsyMW*E2J14A<}ts3Zj;~G}J(B%}~kn zUHaeK@BbvCfX4k8>G+F)M=xIActN&3sai};{_@q7Y26PNz7O1hwRk@6ihq;F@Yq}L zE9#bQZBUt~=jRY_#e@U?$E^vj6XKTmQW2=H4FoDlLFh26{2JO`IrNs%xDicIRmK3i zv@KHK0qPK4u9Y)hWZ?{x3G$4 zqt8?tPG|Mt*UoDEiZEuU&X}F`F=nR+V<_2I47sD>YU=8`in=&C0G=~a!7FwbW2&tt91yIOO^v>ZS zGVJ&;w!~CC)t7)WI)BZc)C2d<#X;2cQ#9`e=kN-5;cvw{be!;ktp2+Kr&q)yYO{l-@ zb|+N2Tv~g)ZO8(gudE5d`?Mk2uc2l#Fm9f)ZSyoMXX7erLw}S{drb9rT~kwgr-Y1J zQ8y##w_KA0ExT8e%W}OiS4gO3c|E7kqC7C#@~-pbhQ92_NITS*!weYev;R!K_O}Vx z?qP|tl(~0j6!85M9HQ%ElYUM$qGf?OEVk@x?dB6)Tj@oqiM20lRKH5~KlIWitgR)n zp5K2NQ$MS^NuT65vm5hs24u^txjs?%PWp(!Zr>qdihr&S-0~AIVy!=-5b9vh``EDl z`%qj9_nPA>Epb~k#8gJU=QZue%?7WKG|`hUDEgT#b&uj#YXv~Od{?Q%+5%i4dni~% zcPlJ@UR3b42i&Qylk`zJ@Hxp7Xy?UP#=I@#7nDdD4vj|MQUp*VLz70=i;oQ@`BJ;L zS(}&ne1Ag1a-HFuz%@y{f*F^0_UZT-UlXHGRs?VdiPsIb%R3Z&pUMQ%zMN3$ll2oS zebR|g*O0v?N~KRaQYwAYg;Lxs&;5%ZN0N)@fjPHMD)d%NouLN@=UZE@7L3h3Dx5rN zWXxU0FPI_a}l{DYAqk(ze7vKqexQ62%qJPWsGarkB6bG2@mEzDH3rViLf)Z^K zHpw(qFco3rwcgKC^3A6!x@4)QiS;$p=$jt*hs5kpPZkYt}g;?BamF>c(4F}#$|GuWw!_5hG(#d7#g4u!wi=Z z1M1w75)3KyQ^>cKaZ?`W`LCOS#yt=wA#4*yv6V_fos?+<-BJ#JP|KkM!RH+Y*6Tr+ z8v{2{y@Npq%(-t3abo|>;*6ObG0_f=1Ah-BR32JZm2j?nIf=D#G`S2~hye#G5NNF6 zVNx0BRb^AQFhNQ{1)YDLmW-OlMeaLbQBd4~QKA2({9O}{BSeq)snHIdf<~K_{G@lP zpyaqA9U-J3qrP035`a)RQKDEfnK2{m=tyuL*`|Z*6e-=b%%-WR9&iwSI~21q`hUU( z!8+rJ5Uj4_Px{%~Cb_|vs4^A1Aj+G`gXcGmdvhZ7WX6oTP1pse=mYc0$ZV0>17E|2 z<#lUn@oo35$`L@L^P>Ov77f$L2=$vSn;`vhk#m{kYGFVrwDXerNh%<7RB`;)g=N2X zPHdy_&Nkzu(I=e!JpE;R&Q^W56f|+kAtIuyn-r?B zKnJS!!-Lw|^P-%J3(} zE$%eeum-V>@x0BTIl^D9tk@qNIxouZ2UWY|4_4P6jP{}7+JQh@XJ`BG9R*s}<_}!K zk#8f=t3ipr4_}tJnqU;!8%@~Qh+rxcMUF{r20kdYGC1Yj;pTGgBcspYca6&xxgiiX z^EyIti>7I`dQYcpMH*7oGNyR4T^nP9vZYpv_#XPB{Hb0xu(FN2&!9L zP(*A!VL=;QUt3&I1g67+np)6K%nibVVq)K5oprti@Vy_+wX_19RV3>XBpKUW7$ccW z#6u)=n?4LFB1FYenA-H8<*8QItPN&mcFFS@y8ITq|Bp{j;D6|}AqaHXex-FN1Eb@j z=`<^E3tm03G+I4JPE2r$L_xV^7fG|cyaqUB4sGTWi~}(R5FGi(M~=Keg;+h#GEg(V zm$A9mOU3x6Im&AQ^`n+F!A&2yvoAlFEiA z6F!YCrhn~B4>(kRvdeT2Gjvi1te1&CWQA2z@Ho1EyIYZzN9#EVRQz?SmfDHo@Nu4F(9E9`4Mj{r00j5^BMH?y*W{H4(t!VYc^Wy%vd;uSqHT6a*wR`TszaivD3s}Oen1OZ~! z@q{n#q@Q7^2ZFIU(u03YuH-@meBi`Y;yuU=aDXb?$WK*FCRi@UKe-s@vG3Ro?<{|B z6I0nOtAG>_vovFwJ@2{Y%9lwfYsAH127ikef(%=P=CgPq%Cg0Hev6mmJTCVX%TxE3 zp^Ve?Qk1dKQk1Dsh%&Ex;^ipM6~x6dS%x*oD#p1C@DF}+zjejlP zI_030nwMB4ROC*fNCZGF;)qY&qx?I?8!6qEDcsc7ceAo(?n2P|_Q%)WpZFQptK4As z+Ct%`S+jO7ipBJ4vQWt7OXLw_J4zBhd~hD0~5pO9+(Wm*W^^txbMt`EpuA>+ucOF!G; zuF!JAFKk~Zg|#`spXrhjz3jqoOL zA*SAOFuH#6NQOsbgQohy>0+_=+@=|Ja_v~3lyArBoc1$m<$~hMP%Nehr7=2Pu`%0% z?OvPbRvmqfK%qc*h^a$2B+T;UZ(i1>x*9IyM>KK{)DED@JxSSW#f{I!n)dmocbt()4mLH zUU>e6Eu0aFqaH}=n>4zp(EIkV3A_0lrZg>gz+%Z`>Gg^QRf@ z=XmfVHAuGo_cU|ODt{9L?ooPGu|7nE40XwL6!+SCs7ca$koHfAIVhCFvr8p+gEMX8&}{hOO&tvo`2 zf38Bp7S$|4DSD3Z1^d(4+4hyiv|NeAXIyu!RJJhxTteGM6@RT=VnA+RybHxcjh`Cd z=i6**>5oT?RGgTy3kx^bdX3QMP$)UwKioeZu?jkcX@XPt&xQeq9~TDw0AvkQw|CJ9 zfOEWRW}i4{8jwPsb<-%z2%e7y<&dYO#DO}?K=ocaSY_Q}iR*Jk0FX~A=zCew-72p? zCgXX~DiyD{O@C0Q>4m+|uF@$mrmL*_;|6nlhkiO}UaFqwKj!>T?d_U|7mCcEyxOHE zPbMSzU;t{gafTji3v0IyzEPXbgEHfkPFm8NV#a=)uV&fU4Cpxc<>X}?r>`V04}%?4 zURkD2pifmg`LRr_S=y8guW@waOa<8llFMK|4-VRPJ%7UOQ_FC8qxbq8SVZwg&j9*y1`qVfgK~dC~X+zo-J300oBMzMQ;<3pMWg zP=An@Q>slA1USgz+KMmklj;{82F+teUCP1>+KPlwcS&P2!HmX{!FvW_4WpA^6sfG09iVsYzX@zN|gpw zxAPFkvTrTJ_KzGE7|nHvaf8L~HN*{4W-SqJ5PwiC zz)i%k@-Qnerul7EOzjdfk>d->gi6|-ovxKQj7F3Z#>7zRDtw6qREo#Q8H7zqoPl^_ z1|Ns?sVLa+s=Pf`PBc;uOW6`%4Y)bxTllOTnVe0n+uxb+ExSLy&Y;?)%JHc@-WvgE zZJKbMx)(X=#YF+_rTHm5HzT2|r=070RyDpYvii z#RsT2oM_+a<8!Tx5w1hWc0)%Q^fVD4j4)K!Ifn?7g-Uw!WCrW9+*w5o(-B)=&;y?e zUnBnv$;FIbLf({dDuhwPJme%Oi*^`cIWqwGz`2^)jdPVy4g(;x?Tof^n19nlZtsR@ zlBH9sGr{dNKm&UC-EN2a7a3NJmrWA>El$e0SgGaH0DnR5urk|LkiQ1;r-7P^cl+$k zR&fk(N}1@!lRXshUE;s{=9V=y_K=D+2B~LRQX-K=fy3?V@uz1Fyrgigy7OJ#J^$Jb zd+H8d;%x|Ui}t7nR_MU?Eq}gAFFxWL*&JQwpqSzvLG3Lq@po${QjRQ=D#t6-;^MA+ z_sPjeU%q$p&^IJWk+#Ivr?_eg{^NAcUN+nNIidl{H>bD7c>aAcX-Fe=M&6^-6*(2X zDW1U5D(8iiS_R_AYs$z@|)kMEm$V+pvV9QXFttg`J~Z}7ZL2m zx1C>0J$c2P+o&{C^8{9l#T2TdjqG5YU7>HI$CKe=5c4{S`AQ(3Y@2f%@+ClHii|X~ z+htfN5c4<)Pt-cwiwW>_hK?50_SBbXUMY2!0p3A{klf_%k$>PR=Cway-RikoSWY(2GxE0KmJ-A^4}S4gt-7LJgi(~n!HQ@gNa$lto!%+3 zbcgj%KML&_zt}4W8rOjLcjm{9>MJ zax+X#??akqXn%T~T+)Gp604{ENpIUyV2I-ML)1tar5sr@5-M1HFcj=bMS@qWHd@0;@wd}|kU)n+$dvHjq`sIB>XTXjqwla{dq405N#u8o%W zkF(^)fS+RECqsz$h024}v|m~@Gc@+`mGx+~r8Q2>3V)iK!rIiK*gkmJYI0dT4~7;C z?TZt&HpCT*U>f=(sby{|Ul<26fnr;=aw9yZayu*`ntaA-r$s}+tvnI;n17a5?nP)d zMpY-Y=yH}`1&jnmWreYHUC_F!s2Op9I$qciYho^)*t9*H>5_$ldjbJ6;lJjR;;yQp zjsKsV9DhGN|L(J+gB|T#r(I`+0fbyoo`%TQXa18IpN?@a(|UZ3T%&OFJG5~ zZ#fUWgG6L|zC4bb`r*OJJo3QaLd`Eiw@y9{0`TUfAx@W>w z!Tg0ei*r=0(BS^vpbe1t%`Fys{ZLHRbmAam{wVQY&X+rI`A<7xW?cR`XUvx7{*c)V z^D1<2o1!|vZe1%<&Bjb0pXkHg%SLClXiKKN!%)#xVcjmH^h7rt2OaKAwKpRM77|hQIb$M*M+17OL~c{n1W|YO z44^M?KF4HL#lJ-J&n!ug>mb0GOl}sbfOuHc0fCZDhNs>4`-t)O+iFScMXZNWL#`mJ3^ngw9}zQb1}%4qOgmfXMaO-7lxqhD)9I@vQKBFPH9?y|&r=!t> z8VYfUjj4)Zeh94Q(^(2y&gM7b88 zX-1bDUDn}AoXYB0%dus_7Fp-lU%q_8wqhlJhL&o4!yKw7n2D#;bPnVS%n2f3HS ze)+@&k?byrci=kV6gTs9Z0x}`I1Pv z{QjZ#`z-sO9+{wMyHUV`jz4~YAJ5mx?Mm>|w%okc$XDZmXMgN`WPTVmWxJ8^!#8d! z*S^pXvvHMvVfLD(@kA~hSV7G%BQ@udnsaHHM!KU4U7ZSvE(?PZ2QkPcJ_Y1hn&W&z zW9cVIsnS~Y?E0*jO)oO^RXK&l5fYx>K2GRJWY=6*)or=^ z(o2sYKTfiX685;ad6HeuUV6W{$!^o{v+||K)2o+Gvl0MYT)%XNArZfOSX7X4J3;-K zTvs>ao|@q=JS?|(-QA>_Md~4}BkQ*%)9hzcKXCQ>+JC#8!ECO^8ieXBR3cQmiypyp zBZAjZ9+=ToC|Jzv6h6?$f5VD6Jl;0?$o{uIE~&xAN)Am*a_|1pmj-V|!LaTM@pyvg zmHI*?`QtmlM4O)%J{ zPMD2-U~+(X|ow;@Emxc!VCWrVyfgj@koycIkV@(~RqmEY{5_ z-H1{cbpw66EO0TOS2k4hw3?I71R`C*i{?B-7_g^H5*g))8U>GXqg-dn*E?r+?rAd_ zS9hCGdZ_e3y&>C@Qv#I5*RJ}i0l_3sUK!CJ(0^ScGmjLQbAdS&Fi*A2GGtK_@v9>) zrpJe(3#w~1D)^7?ark0{lJ08w-*=_H%0qy9{Wy2M7|?qFt!iEYJtO(^SpK|Le|t&& zSpK}ZP1_zt<`b>0!X+t65(o>RFoI^h-r_C|@Xy=fGL7eeNP01a8U%p*G{8S^^#riZ z0DtC;!90e+yam7<06+~3fH9Z@20Z~-47^l_k3X1fX3x?NQ<#8zL`Aj8BSHUb--(82 zRnapu$&Q?zEjc!`CuV)lwz?c^Rr*$}L6i3*UVQN)*00$l7<`aaSd9|3wXthbQL@&wpAB z5I!SJn)`ehQCV50(|kNX?Dn>pR_K63pzVKhT>276lWSC;1e&tFqaG^fJr6ND zEclp%O(z~@Sm3!JhCjflU?!mKWq%hi?wI5zN9b^FnqT;e?-M;i)R8;iv!^D8BN%?1 zP9Tdg*hCjm*=F2paUh_NGSq>yl2s{d{*RB(&W^oL2ig!6=ycPyN;-OKgC1j@d}_+s z#YH9#OYDe)(DZIJPMcwgRV4lPc>3=aQ#uTD9U<`noE3|kyd9a;wX1zBn}30u3y17A z?oq~brXG{u!EVk5z@7lR=vZ8t+y$V(2SQnjEa7Bx5;aKv(u=ZlP<8r9T6f_Yc43thx@&q=Dq z!wtLOW_!)ipJuRAAJcG!L>L0;#FO92x6+sBPKomq6qKif;jRr~-G8hWiwn*~a^b-P z9)@j5wCOdq1bkNHJO22SlhgD4hv&NnZNARlKl${dL-X+Hv!hdUw*PSd{P?RQ1YLS6 zpS<(I(ZRVnJ$m=(^yuNi(b;omaD%Swgu%feArTlRq0<*uGK<~5Y-uiQA1^Lh?GEYz z<~iHGg+6)s&dL7i;eXlj;gL<*cnIC58wC9L=;&Q6`U-uV9>4cKer?m&JNpM8!p9DM zynA{=Fki(-)R?0Dz;KhBn9lv<45WdiQFH)zS|iEl({xheBpPPD10s8c`}u3|#!}Dz z?&EASE9o+mK5+#qpC9vNM+t@>eZzmvNcMztdn|iBK;nVd8Gl6U?!b{k?+*wTuj(E= z=(OTbV!$kVgMR8lgklcFx zg^_vT1SaB?Uw>larQqd9XysF&&DI+qpMSRf;Qf>H zEr#j{@Cr1)>${6jHC6_Gy8rPf4d^@TgC3&3y*}U()PG-%08&7$zd(0$o`t8Q(ALd3 zxZNl@p{=Lxz8lu{TUIHjPj1DKm%AvD(eYqumo0lW zRH%DL^~dmdK9zOdJ_Sc{@1w=<=*Xm^cPdm&7f=r4x8*;h))|+@|9Z5m9^Lr2snLyo zT6ALtWzkiMt^$9%vkqMacvls=3hX;*PzO&2;;1=p?xZsND9m3MV1eg;K_#S-D==tQ z2#Y6n^>_wqk* zr&4{)nYw?8c7+9lZ zSU6a|ID+>Ql@=;s1D*`}nx?5vMy?ov` z{7jNqHDzJZT5%K2jLOn{O(!nEPV}1Xhc)Vpie{!MyA?tV9q1=sW4fk6t*FZi^!(ysz$Rk1%kH zQb+W=F@O6;_W}TolArkaEl?KLbPLpYyw@S-vDNIr_@5*%TA%97Q81Z@>;3lmeH4GA z!?O6n#))Ovk~hRuqKL&J>k$P+VW4Vz!`@BIhT6oXM_9}ebJN3%GS+P$W|Ld|igMH& zv#1qAeDf5JDd_PcqEHn@lh#eylEF%VLhmB}T9Q-=FB2HJTyV=sWdoc1D$mFz(`A;9 z-MjeCvGXj#O<7``5MlJ0E>|#CFjeFhK}j$Co4dKpateZqpnYajirp#@)NBy1Utg z#qL$GMWPxsMt|GdQO&4!uogGrAP966Ax>if!jHK4xM56(Cw!LBV4hVbY64dwsG&K> zT3H47y{5bM@I!?wASfxVU`c;3Hx)oS3JFAuA%-BOrkL>Nkn1D$wIx3>!GL?$sND;mP+K_Bc__;>f&de3^;@Y#P>TJ=Qt0_$lET#`T z=&>Hs;yBYP4Z<*4H;2tY?yld5mp%3U#(;Opflmlc_g&}sH!go_q5>gg3M>0nx*~~s zjzQ#Eg*NseDozot)>fg3UKne5cc2MYZ}UJ)$4Wqo?nj#3h?v(cBL)^!u8h^{8p~lP z`mD?wgwimEth!VpE~#`%u&~r~CKd^9YB4d2(S|r;mg`veq5L=2i>dtJi)CRNny7c~;-*;oj#6<9T#H zb#Bh+Qb)VmN7Wdj+o*C@D15CLm<}{Jfhf$ofqgu@e6oMPclyEc9p7G8d)v}9K98^y z_yEb|#|`Sqi9$Ex1Ja4yYyt?g>Hp-@{@K~y2XIw?I6`&z-GUlfEQ@*m6JSi;VZ*ji zrJ5Ns_9^qzLQbLBvgLHzQsbYVok`@MIRn$|`hcawkkAF6Ob2jh{cu8D_J{X#Qk~S? z>+$a%{VRXV031lqXer|7V=Cu=L4Kj}{({E9=>+r5WUI8^$}(0>LI^h85$Ll6R>AY- zmMW;uWgHGTU4N^KM*PmnXgmdqm}6)2!F*A`!tjk(B{r6KbQU3|XiLEpn&S0};=8Q0|H?lW}vW^3&u))|J z*>-rzeYWpu@>QpR@DsG^_csAk5C@E~`q2|PEMx-oSv}vtGh^1$7>oa6iytib)|o{! zbl-odjzFypehbM!+Wgm?o&#ALskXQx<9if(GB7F>)XJ)s9UeF$hA>oc>vmRZ6(JWs zk$!e0M}%I+u=&v~cU8B{*KV0Jl5n7dfvtam)5Qw&ZyeyLw!@PZm1y0F6(GtsD2>-N z`$wN$G86pEMNcgVT)op}=>@IHJ)UR`m;1+`e!6#b5XF=oPo8$e7Ifo!$KIOi@;raH zl8o!?S~`RbfNn(xALTG1+G4lN*Ba5CbVwHkV{?~GOzEK@Kijf|$izjMMArTk9L9el z*VGgj4)$ABp_tw=P&y^Af$7IP9X%sA{k3T+Y_ph zvT(=ZRc{xl1%grvVo;k)MlqtyHc&%&Gj_@&-oL=7s1)50wKm8YVC_;3^lUWQ8_m=X zH6ku|A39J<>GyYbYvF8@@si}LUbTOztjYpjRj?|hALGIr-yvL|I}O=WqzYkkCZ@~V zCYi{;%nxBI{@EziY^#d#U*mM)>>OTQ?#G=j;NpIC^@KqpP8Uw51)as=0vUW?o*kaU zt+l=PKIyk|!Vq=Jz$EaS_m^MhuPoUsL&>#*!ZsNHG%e;a?+V{7D0zvm#h-uLn_Ko# z#yD3#QxuCD`B&hQ_StpJO+p+p?*Bl*sy!euz)Bwo+WUbx1K{>;#u)&U!OyXow+4On zoBzM@jX#t2H@@*V>}vF+pNX!2(yt_|S8DWC)uVo0dPC3p8ClxHes12zANF&rH}!?inWi**#OW>e+qZ3QTIz5AbcWet=&&554d_ zgG+F7c{k5FTixgbbyLkH?uzM&-s0S6uNplQWw=&*VX5>-BaNI6*x~WBldU zQJflofW~>Mq`QWw3d&|Zr^*8~DN9zXejCPl)o;UWpGV(@X`-lX*nWR`+r{7w-iG;N ziF1ZVQTakCBm#{YXTeC-kYwa=*I+)z@fjYaK*8W3MM?+3=OoMHDVGzKo3hZ{J3O`F zG{oPKT_=_no?w;Xm6j)_%!4mIfgoAp86p}j?o0#p>Mpu)6X5EVn}w)cx+yf;fmO+^ zlkJ8!OSzp)FXqCA@*RJ2@i{wN(BjLku|WUX`u`FBos`IeO08V}ftIaY0AfK>e+brg z5vW)_DX3XM1yx@OGJaOdW~oR0`E^I zz3KX})TNP%WQN~hb!)6gZOzpSQt6iZ73pie*SDE6E`c()Lh*lbzlZ9THW0}99?wVx zD82F0DymP9kAaa9dAS)B*|jK7g_1THX0sel>e=lwi>}dbQ`CoaUOAuAVL3o7M#T-F zDn?K<)ViE5W`JVI9D%$4h6nBdYv4B;PgiLe=$>*}U8;BPyt|I`xx|7qw84m@B`XxT z9nC@W|DF$F9W{UL!cYgk4Ddl^HyFQMmffzqX`cVbrHYX}svcE3Afbzsd<|(H@N`i4 z())o$;CK3`(^)Qq(oHXeA?TjkNsj~45XJIaONC%8K67BX)&Cp6byzFfB9|@7cSbzUxE9tqoicM-O^@e7oK*#G5o5x=axox+7Fr@@3S1?hixBGYSY_qZd4Oc~>4Yy7~Jd_wr+ z_V|044|(nFZ=S1}FuZ;=`W{`(;|>|Fv?A@x=2ITy@Ix(}>8A0S`Cvcq_KWXBNG9|= zEJfw}FAnWYZYMJtf9<9(h5!8(>T{Pa4)RJm{V^2^_k zr{4|6FTZRRsyv>N%D4xxFC^P1^%}Q6f1S>L^jFGs#D*(Y>|I<#N=L?x3P#9lT$Wu5 z2L`3UteWM+@^O_bKLQpHfJZBLHz@BbrpAAi$kmV$hYf>Y2BR@9s~l#T71>w_bGSc# z9gKg}{4Vl&*FCfs!yxAcug64$ly~@;G$8I-15~OOBQzjlFmqvq$4hC4R3nu6gNdy} z*YU9T(+46^UhnVikajd5n9-cRJn17%n2mPDuo$W@aiF&ad;rf^e<0olE_B^lEAZ^ ze49B-67q;6^nv?KBqy?{!MS z=jfaiLuQRXjcW^7J;}GAJTY0>pwPObe%AutfKhohy#*C0(8>VaKR!9{pE~$o@|)4s zIEEV8dUQaM%^h?BCa8caLsekt#3TlFe)`$|`DdqnX}oWz7RFF5O@KIIj>dnqFEpUp zV0vwy`F@v=r<3okJ2!dBUv%x|=uwWpVc|RHpL24ZGo8`!bE}Kn8T|N-Ooft57bGPb zNKCQobC>Km(4P5p=hrxDmcy_XP4&Dz>pB+!$8_ni7*3n`g zeeamGu3YJgl{?4>Lsg8Ej%WL`K~YzjVA4w4zi4pM;)2z=3Mpb=^2RIU$*+&AWb8gw zZICNfufX+54!4E^Tsl{9={SRzcB{onQD-~MWSzaoFY%%fq^jdtd|H1R&0-3pS;h|J zytrdQz3sw-0m}?cEMf5xT|0ucO>d8cMUGLRC6J015`jwK*b@gP|gv3+67Aa<&yT=p3Qc(W7wdAEOYKk zRl%MHs;oVsg22sC6|R30(+_fVifH*xDp0Ywjr@h2=UPJMJ0)DzaK8M`G;1;8L8!^& zv<-<0BO`j{B1g=Zrdg_82%wgjl~B9k%@cu8y<6393|rT84As8x0&eL3i#IXo!}u+% z7^Ss@R$Z0~)SSA&E2_@a?JK*)yG)ULP`ZmbtEBe)0x@|u(}REFg-zU$L>p}WrgxQ0 zTO;8@fhwt94YwOP`Vg2j$u__>qHV$2%XXA6TDs#+t(9*s6Q{S9+?8AND>vdr$W4kb zP3 zr^c5&3Cvi3;Ol=Dg=0S22tC}ZL3Zo?>WAKZ~*|g zG%_y?u1A0Qc^m{rR%$Cr5(;2vEW~`uO z>tee7yQ}%*cyq*!gRdG2Whhk>q@b#+7qIFLy^@G@1C|Cup<8C1mZ&$P0x3Ro2X>BJ zIpjjg^W^N5Wh04~<)j40>Vy;?hn=qFMfsPLMM89N%JeNowJ$0<-Y&?K5FcX@jOac& z_v?RVkVHUN$UdkX>@4@Rk6pS@~Wnrae7JHNTN;l9EY;r_ZA{O z1HNm@saAgQaIO5Hs+B8SH@dEEU~q$}wuE7c^`WlHZf(Vu7$-9hX2;VKU3PFm%L|!r ztd6k^}2Y}j3*z>aHzT2eKp1+leITbTM3f!d+|hm zzrvR*2;EiU|E@R&Tm&gS8usDV1Y4ZM1IN?+J{j5wJyoZr9)v zeB1H9fyFECEMr5(__i#cS|-gn0w{kIPDITUnRLjTI4@KbpmZiEps^7i`=#+T!%?fH zn_()e>h?5MtLjF$DzsuV9C5AK7)zyAq&ZwkVe#Y0ylCr0(sy^Q`}Zxp`cwhI`#)Ra z4=h5gy1W;YZH2rYlBzyvi!I(8Yv3#OOA2j=2ZTxKpu=I5U-}_LBlTLVK+J#IOvi{7 zq~iM_ZdN(wy$=gdZksIl`8#-fvXZ;}74*|;Dy&4@3lRo)Ee+W5_e6rol-Py#)G)1U zY99nuA5Mvu2PBG~O`K^7mXy;qhL)*9 ze(KPA@vD?gh8C~bU9Z^fru!dc>Jn=GSR?S*D5H$ZK}NYWyb{Z8estN$B7ngCt{Gu6 zZd{4gL&br~lif&2FZdfuv%AO11-699P=NJ*xCY#IWJ|k^VzED^)rx;WBLI$V_%~>s z=mPtt+qSA@1ij_Rs2-T%71{V`l-=H-Qtn>uzvWp5l}q1K)d5B~xN9Rorw#1SY@9SQ z0BoeR>C9-F2OHMW^T$Kmcf&7Oa9a zC?y53vDaWyOL!GLB!`a(BZxe1m6sP3{-Dda=x!${%7{9*_HY&}vx%w``<5avs z#z8By`IOy{U7>$-fEk>WqFZhoy>N1c(mFOA9L#cb&oQ4(F<4Kp=f+7&CzU#wI|*yQ zh9wvei>tZ6mBA!HV4e^rs zEa>BQbc?>D=asteuJE2^Rp+H%!EV_*M9$ybJLx^6F13HA^#olwwO&kgf_91{u0#eC zasT1?$J35+HO;<9*nNog55!B~dOsvkOX%4;`HrZi$F=EwlYlqtwTlyR1WS?NTx_iw zM@XEMoO4W+%a&e4Ys~nx=md0i@tpxVH5EXRX}SeP#8(A&Y)kA_~ah^2=A#}GBdMA;AI z^p_xX&8v7`W&_v=Oop=vx3jmzJINgrVQO2TNW8T@FPFkN0;V!Dp&T;{a06{p0sA!S z2y3}10xLNcopJ`(>(H%8XIrYWKzvcJi`RBlt?+-nfYA>rSY0(d;?%pq3dF5MMT<}_ z@|9U8%ES6Er-Gs>Y)MKEi)ohPbkC$`6LdU3AMveupniHApbTVQp)F^20*Q+CEYT-j zE8SsxVTSi6;i3P*XP@*>y(ni6po{KDvR8YrzWSQ{mu=T?^0ri$qy}Gpnbge7>{YC! zG%0`W@u@_lDo}_D8(oj%Yp7S~|2P{^A)&sd{=|7QO^5b+y=wKzsV$VUESM2hOe!`j z6Z96TBov(Z_@si!YAhC1YHhh7vrqbQV`3nkPIOYQ-={9v`{eNRKJ+^;I?5f-spLfG zF?Bza)v)Jvd)lt2c!_(j9d8!i_dO3VFMxl!Q}W}@p4$AAfnaKo=<25MqmhYU@sU|O zvDnZ&;d{h;2Dm)Yx7AOkqFk5kC@g3(JO$UOPcy(D=6naI5l<J3s4lq#wF2sxSQPq@ z9s%Jsb(elqW{LQ~e`64$Jio=)s;(Z8%Ql!Vo?^c} z#TqQ89x4uW$9y)QQD-0ohd}}i^KqViH=0uv1gc{v{|y~A;xJtH+L1u{Pr37`MoREs zD4(76VOX0uN~8ID^;|stO*iAS!c-jnJ*0yE4*}T8X*`SFu*QG$*pq5SuJwv)<*B%tF2+M#nxK#O2?p#b2D2qUdQ}Zk zqM>7x=xV}JJoR;`PaLT37CX_YY<@dI>0CIH8=~kui6MC>dv$x8TWyEY)54ywz39{2 zOe(JoC(6@oNszc6dLN|UhlmhGs8-SxvQ#4qpH9k>hPW5WjE)N#5`cg7`@v|kLvNv3 z>-+*LbI7fU(^c&gpb9?IWOr8p>MIl%N+&68zWwbAG@+MciwT^o0w$YUkI0AuXrK}; zoX!X;%PY01CKl+0S_zu=HKbn0a!H4K4*i2jwL9XCO{vvII#dwaiaZ@aX zKp+YHHGIMet>vA?lnmR~KeW(y5^7Sy;NVpc#1L(7cU6OXS?4UrV3ol4 z?J9Njy04Dt6M{0tn@&Z}uLNlBF9m;GxXNd!hIRBQxg+aRY$OIr z!AZ$aIKv3UfR*~r;t2jnvjt2O=kELHRnPKQYpygYDxff7#j z;E3J|kIw;UP6+o*0$fC^ptjkjz3vnYkLZjbJH<8)U@7}7OKqcSD<2hFr92o~KQXK< zh8#IBCL4b}d#BaBvLGcC05Q!P4gMR_$t4Kf;}F*8sSB`g%6R&*yq$k>sqWM%r^*H}>L zGaB0NTPa;!R0bW08f~x_x*n0?$Uw$)vF||8dMke`bK`l9%Is_3QC?dc>Wak57Sm{D zh#{%26H+)yRZ+VNrM9d)ORcwroi=zL2MG^E=LW8F0`a*Ktm#Zw-n9|qxK=KX74U#f z5E4?d&@}qL@Mw@A@vB6YM!Q~E_$rJd#4llJa?CxL3WXv#@0@@v2TkT`{CL77`ki9R z@vnd3i`RmWnjfRW?Ai{D_zJ{>ecS>`->1hsGde_V`vFs_N8SfYaQJlxfu(99E18~5HsAawrs zH1B9Szvs4rCcCGGMPk>!;Tsuv27gaBMl&Nr2nlQqj_G!9CI&xuSl+fbI^JNTgB!7q z%@LR!f;DP!a9)DJfneI+h~rlak~czw13{I&feC3VWZg=_R5Y_Ss1fF&owhVI2-AOx zP;KoDL=!VJC?nCzAX2Ekp$kg{rNO%4t&@3F=3h}4v@V*QWU z9slHod8Txaj9e#s>uR1V83dNqN+QW1pQQqENkUkzrCJ1=cM9TeEOS_>WzSSL3IuM` zt$|*=pJs%oOKA#&Z#pf-vonF5ZtRtNj0P!l?1+d zvy#w0Qp1vITPef-L%|gDlH|Y{nDr8^&ko-5mypI~_kFD)n=K-RnD{DkU|jyWb@X`I zVok|Rp!J^AsTO?oGj(K*C%B@EJjqU2a?c=(t@mtR;)2hThgQ>RFn!%K9uxM~?5=K`_!<$MPQfJ+k6R)WydFD0n8=rbD-uT>W z`S&-?y@t3NVc^-#762d5;p>ZiL|`5jZrRMOE@UAs^u!K6?rg>3jN?r= zU7nS(Uk22f@%^2FjQXORT{&~E%Z3a6gALM5Cfx@-TWNblJNIPH! zd?-}UdHy_}6N((cIuy|m`zG2oEY)Sxplerq!cgMWfZKlr49tJ4ZB=#WNv`xA=T~;D zUB!8@(caw~s=n=--=>eF{h94Dkmeb$R4dp<12o1s(hWlxoUqKaZ``_C{*N~z|6$9S zU@h3yjkb|rrNtY2LX_Gncw_rrKFhQkIy2)2IGq2y042S24uGO~jwU}CVXc@Lelg8+Z(u1~!ngX9r zm0wPEG_Sk5Ios7!gDzJwODJqBeVeho#h2)86^KnE?<;G?Dw#Kzo~htRF$vX1IeLlA z+1gbRDdWT9aB?+X40A5qu{h-Ebr^O^hV`>8TWNpX^MAEoi-(Z9WY^S(XD55-;H32Q znRTttEm7|FyOfq~N6WFJcvVdKj;|?9FlnXnFD@m>M9?APP~TYln0h;`D)4`KMSqS%AI>bYDBRZrx&N;~4_ zn^hLj;K=O=<;vSykS+^5g^Z^^$=qjx4o1a%0EU5N!{4ZvYt#f~?V#OVkFLvA5>llM z$}|aX0}&D?4SZ%3ku%H`DUVA<2g!zk4rYI2TfQmG*kD2Sc0jmoc51^TO?T+iBj~Am zN;6Pe)UDb`m8-^`41h?clKIMbmAsSmh+|gn?5rD)XJ@Bn+{&GuCXp+5b{fX6+}UXq zy;8tc1Po>%@%cgrLct>K;!##b!<2>!)=C;yMb*^a@99&2$WQr!|Eg&Z6Ck&3#G!u_ z(>W~|2Nq0C z>rYuxK1{FT>Llz|=`$%wDuzG9uF^JpePopfj8C+xn`%3%G`S^4DFU>y4wFf+veP)X zdbEV4M90^tY*jK)-|5Obh9^v|QRsik^zGJS4zTh~h1FQa8Jq>bh&C+yHfhQ*|KZ=w zhHtuO;U%ITm++^BfK6 zl8-|j392<>VR_cD82W2r1bodyZH3#%|3}{X_eS2jk9b+Z(Ly9CEsj=&F4uZ{lJYbN zr@=_PluEtaU=gy0ZVp0YsF#Wp)#%#57^N^NEq1Sr>NgWIP1BVDG7v*q&C4c2lQ0=v zommzzlB#_O{BOg8!AqqzL+O9~ZGytI{e7ZR8*OP*LgKGE1xK}%Y)n%4$SR1jL#d5o z?EKSYgzl?vMoMa9?QBX)jDb<7MC8826*~4s#v$9ttuGsH-pW34fsUrDEz)qs9p4$$ z`(HW{{;D;Uy2mwM6gOmpyUUoaD!M{P9Aas}s}0l#9hCQB{@vnxx+s4LtF2->DYk2^ z6DGplZ`sTEhuml7TimQk#kq2X2}E{BH92yt>j=@|ZON_lBY$NeXgunx*YiH{3#{fX zS)Q8J9U0mL$6N&L>fm42d(ugMuGd%cnx4M>g!0`|$x)X}v3Bo@r4)}{Fm<_n!<4U3 zSjfyf*kL1_fHHaME6IP(ng~+q8YVw$Q#p5Dji2W8L9A9u1GdR2m^$z3T7d89peuHy zapL!cicjy_T3eygd`w({z8ZDM%?8 zsIA(a$Guu!F+Z`RMx;G)`}2^tBDmfQtWJOS*LsBozs^p%j}8I01EJ z=#jHM#g=mo(ScOxh1sxb$sVCXhNj}*W*Q4!pS^!YzL;Fn0#+Al*ziJ++g^B- z`6V^r0YW7wkVnrCn9|@1%;Yimt6zzRhkrGOpRK1s%bbK#n>$$D)+=?CH5~`xl?0Ax zoLZmXiGLHhClZxaIoZSQ8)gmL7gi6H%JFdCPzAqac;YHJo|NSXJi<-DR8SF8TH}~sum@vP&-)V z`mmI_`@$moieU!%*eF%Ke1T3Cll>ztP6TQp?xP5-qmd4Bc?cqrq+vxAmTw=z36o@$ z61{fS>`yoJB-5O*PYDD06i+B~XTF%5$zV4;u~RxxU&gM%-OUMdGwvl&X>X0s^8*jk~8LN!f>`PpUA63EpoKRZp%!P zWfmRwG@+BD0UEM|uiIQr{QR5fA@=v^i~Wf?;_jqG$dl(xOkrQ*pW;fKBAyi2^NfCxA91EeH%fIRu6$l|S#R1K zkE35%kVEh)lihl>`(?x0ad%q}vwH?KmEb}^W5m>-Ux;2bt7P3uDzK|(+2VRqaLljN zmWDV(lqc?A%n)}kSAc!+or?+RTl`C0OY(o9XEkVf#y`-x_*ar|g#vz>P2Ji&64yiZ zCu`kW{nz7wD_gm*UKkHBWMi*KMxyeH&xPolQp0A`A)QtGGg&oINEQR)3Tf=SW|?gP`n@d3SO@l|36Hp5 zkULKj+16v{><#3q)=dkCs&2G%KJN9^(7-{|ByCzq7gL)J(o+H#8?d?+5I|{k5pVoWWgS z{_U_;b*J9NWmAELPC6WThwCF05#yr;H8|3TulbRM084Y_-`-EdT4|JV$%8A3&DS{p>eCbq*R0Jl^P-4VB>%zeQr zyEmA4lR>KAXga`dca{QFt`c_J&SBPtyL|wjl7zfXb(I#_+vQxP9riYHsB}Bp!^xy9 zD53RO;~{KCmKshpL68ZOYUF=p9Qb8-Et?P0>vAe4kR;vof`e}jFi{112jTvm8Wjs- zRYeQD38o_Twv8nPrx`p#rwy#SX1DI3mM#WcZVT?+-MI34j0{yZ8!dYGOcpY;pGGQ6 zY6wigPSJee?KuTA&6Q6?&!@FVgiDKigq7kugrx-i!9V9F%ZOGf-r#==shlC5+4BWU zUf>FrWj&r?gnN$Acuwv40rF@!2%ju3bOPd7=mW$NaseV>O-ebwS7+C0kF#-eMD>VQEdDG%AkTWU#0vQvcFOY5N;0r8&LvD3PRXikz zkWvCKkZ-BD3u;DQ*o77CMO|3JdV?;o1QT=dAn$5z3KYTjbK-wQ@UhW5ybuwzoCFJq z4Dll^#J8al(zDXkYOP9@fs0>FLM;L;xyV`st6xiHB!o}Mcknybl|;?(vmZVo6hCxA zXyLF4p-aRJr>JlViI()s+Lm}4BH?USxMVh4?E!3^Arf$>5}7 zok24AUUwTKv#76pjF4Gpgbe!9-37>?J?}L>CdJVnqho)%N5?dDSY{zZ3H0t^M>8~u zjp66y2$@B0#*1_DFp=LrGA6;BsI(px8uuZlinV=O*mFp3+-a(;_{(<{N(DEezr{tE zS-iv7<_!M?ry$PNIK(>RrO+C87%r9I6pz7Ds|c0~_A22}DI%>SQVNaQJx~g@N{N$7 zaH$qiQfhzKQTdc&+4vYKRI+=BRJ$;#$^xB?^B5zwOpFv(4O1O7PO%)ua*;>X%VV303D9fCu2yE-74=ylj16*@eK~dcetFdFORx)%H==g-hWrF!_OoKCPl9!j$E)3Eq1Xd}uKi>u7r$8D4=VO>25d zbDnivXpXAf7iPX|D~YxfBzi67K}S}!@|1N2R&2bFB!yL^dC5Zws%XF@9OBQGBZ?nN z;o*OBB+Z^!bHb9b6DZS(`|b zrB)?hun7@$HI<2yItP-VfcuCc!E#p;KH`4~3RQM;&`3&sCq#+J*-)&`WAPzEv!BLZ z7#)HPor6O(*p*9@I1ZDL5EarOCuES+P>>XREQ-)cihYa-dDsyl>__pK5MI>XSyTwCHIJ?G%kY9iM zaUmkuiwyBd>xm5E5)!}1!OR?6Ao}?Lb0IAXF`zn0!IzV$RD`*yGAmyo=2eQ1Fc(@l z$UvxJe7SH4yj;?Jbh*%AUZWXhkgd`aA_{~r=h||k3WTF`T!9!Ky{@C_S%tTmY9z1K z2b?16kp?kO(BycuL4!XyOn$^c%qxEsS)vX?zTuLRBM*d|H)^^^A5eB3e_+#4W7)BBB4NOic!IE7WmDM$xqC)b>`&R7Mq>77I?B>L53#6o|nYpgM5 zfh=;DQ45LA@ff+VipYg%KNF5#VB%Wh7s$9vL@oCSu#<3jb#*)6tVrTFm#TR*tKfDN+m<^>3lV(B0# zfy+@wFGzq=TZ9P^|D6O1a7lmga{ARf!k^l9(~0n>m0(A+mQZEVu>)9{^0f~fplr+I zmPyQ}BbPVF=^hk>S#7uSQv#4#_%xK62?A!`G$ivn+a%1>9~sZX7YaX0pxSSj!B zDHTQa^fjKhK&1}lHMeqKuDrGHxHqyoEzthK!r`I$45t&U4EyQ|6n}7Xbf`h` z*Mp((YEb;~-hqFDxeK30y0=5GTl2-?>jN%i0e+o(Vp{>;4!jiN9YA{26ll8T7i_v5 z2b~tp=ya|%qo>Nb>&o{b>Oxy5M%@&V2vRrPxS8ZC=p&Vdwg{ze>LvlAY=k9Zlx@99 z5rS0LrRrS=AqL^eLXLygg+-vrlIR1Ig-CN^%_@VULuh|StUHXktvQ8R7oM)5bt9F% zu(K-|CEm7l7QSw;P^Hwc>v7-E^f-FG!9#>gJBdz@0@%e>bV3lq-smvQ7GUq2-p;aL2o#7%{$5Wbf8=C%R*!t~1j~#2-s`2nyH;r{M86n`cL#ql1*YL&+IgtS=s4&@ zg1&evM_qH(;Fp@%CH&F{z=$ULY*b58W0QZT*}>_3yKK0e3~$DTJvQQX0!;+yY_vKp zqCY;`_U8&8-!fyKnWIu*`3eUy8qO)(Zo7ZXlBS54#lfU>ocHlTc8yGS+F6b+Z^k%l zbJgyH;vxj!l`g{qE3ET&P(PD`vv=Vg9QA+u zaN>2_+y2bao75!coj~R8c$MqdNvAqasqG!Vws)enO(HIe(d!G`9-d5L$$}Hb-slz0 z_lx1ST}DvGG5EPS+?zFbDr-u;IBI@r8WvS5 zrwndp7cc;PGsbt@hXyyDjO}Uxt51Jy>fsWEq+tnFOXFmys_`&$J?`{!@&*RDF_bGm zW6a--2UEi=KV!@%u%lbh+wF}RLguA3XVv)R=t z!E=<+>(?;+mK9H*NIA2e6vHqR5Dd$Y7o%AbW+IYdJDLuzUPt(dW*NU4-$Z}dkRoUi zv|Q6$y#k)bw?d}Iw-P4xRzDTEn;zz4nkekKjp+T=-pLVK4*%ZDLs>Nca~SYoMNJgU zXP&tcY604JT8j{DiEdYZgYAdg9o4&&fR*n&az#4{>?kUQ?JkOl<->{~eFchG`$@r4 zo0&0T8P;G?55dM}Q%8g+Nv?m1)dtn(jFrPa(O43*wJ$5%mm#Z<4&`8!EZ#>7G+Qxx zuSdwA%zewm`sX~pqCpf6;ou~RtslHnx6ow)JYI2@K!7zJH0y2LIAWF7W`gVhe zh9Ic)T@st^vglp-|5k0k)G}=+9Iw)z>uAciBTdmAsW#GGWbrU={w6C7#La|m7gVb79R1EqSla`TM;3m0W40cj^9a zk@Hr2uxL;n4@*)XJyiQ(|IZrB+-Lc##sYrgGtGUbm*lg%_GOTv#$*_nsr$bbMe%BBW7b_xy zWcn>k`ZV0hBi)=#si-B&dJ}-RICV+xe4Hp6#Zc8*i}2o+DSLam!cWX zV!P@_nLBAmIaBnb*?ngPDR(ywDQl97u-xdZAmr_)9%K~dWSO(_&Oz2j!O6wmU$D~! z7?+;ir`pa;5>J!(x1FcbVmBL(rUkcs_VPwvKK+5!-^;~XC^ZFs= zY1a>pUW59W&F_suB{G)WzTY(aFkp>Nt!*=EnVWX7dV{H4Z=T~wW3MVMrJi^x{U9oe zRb5d{v9MNEl``~gMop2XE2=1x)vBJl4Z$P|vaU#NkmM^J-0I%(wz`Gn?5v1Ep`&up zD{42q>eXehT!aOGcZ7v(cJ@F=e=kP3f_pJSen@*U?zTyTDTif?7z~E|u5^ASEZ@kbJiFC$8~84*ZOQ=ua=2%} zNt;xGO)im#HNNf5DFPK>_4l^9cGNZ(zv^OK-2PyEelxZxvY~Y{M!8AQVl&=tLAwhg z-A=4%^xLF@_!R;z;<=~!tVtx!QVmKo?0Z(Y2Al=dSM~}sXz#F+DL^cgL97YeLGP1j zm9(AxlI>)F?=|I}`+4V>cL)FYu>Xk{(rpz}yPh_&qtmzpMGKG70~&$UWM4hT?5-115oZsxFSo8!4JP^gn(P5!OEXJf$)nM^`I!h5$525O)O-@vVrMjFdR&q znCwS?T%&x)qw_a6*KsM= z0;@`9;j*%GI}_m@NZ9h>Ye3$>;s%ojGmKfC!|)9+_NK5OrWhEk91Z56acRymMT3ze zdkAlhX@lys8G|t(K|$0dXZjI-qRdOE5{Mk5EnFzYw58MY>F63)d3{)U<*28;1jXx= zv~n6xU}JE|+o$`dFKATF=@pQTmL|x5b_0!mFl0~&-+&^u$Mn@ILFy8|aPZeT9}Ym9YpfCzFDT-M_|X|LElDvv1uEgkxirJ=`fC zbF1REBC*G;o3Y}>0D_u+n_%tp7f9r)fB^c=lo;G)Ftn|_q7Y2`LwvS+Va5u7SHzRE zmnNSBoreq-r*!raokyNvB)m!4p%mOP=cIrv3n|v3!XK?AX~+C=FJTORv6fh$$mhR= zKl0sL%J8CqHa-^V{>N*H?G)mzg(v*wT4pp~xRuurUjD;1VLBRe=;7t)YE**a%5fnG zYy@545PBTz8G1QkBt=8bzXkh$qYt>jjp9nwxp4BRq&6uH61lKRk}f>mRm+U3?4-Mc z>u;OTo&&iY&q;O{KyhTvB|pw$8y&NDU^+Tb>0@h z-INn$UJ-UH9;C{B#>I3xnd0b6c3=x!-jwj6OY@l_^oeQlnmi)Zm2Ihidr0j6^&#-H zqpJg$Z{x*lME&GI33lwn*DjxjsJ*bIRB@R|>fn-OfoEu`> zz=coGkHo}BT15JN05_?B>0mgTWS5Y;pY0Ruo5E4cvKo6&h~xdwvu{57u%X?DTczJJ zL}RHNe8fum;j6>1pZ&m9@{VbN?>Kb`pU9%@rOB{=ba=S;?4XvZ$bgRkGB9|VdVD9B zlJd%mCk4(2DGy|Ey$P$!m;Vmz#zOFt87V0r2zI0dMY9SbJ-#h}$fhr`!>Yz%D5-G1 z99ueH`NEBsljnAtc64y`S@x{pec-Yvu!9)UB<38au8_fWu_U3oQK6qbHPOv5bio*4 z_m`~iW4v&{j1f2O=>YSs2-{ZZBegiJ;gmqqCGZaCuC&X#hjG?M+=;&F4|kvqrRQJ& zx1FoJI73Lxj5h;+ZfCcm7S7q84)rrCC@D@!_*NGD<6l%W%;f<^1TU*0f&{)vfLgqM zYhvxzH5ZR6LCN%YtWZ^^T<-zf;9M4NykY*HNZF2EUnw{1dz)I*0o?bH9ellakYT-? z?43Sgw=6+ZHSqM4rXAtS7JT;&3?_jq5}X?nw8K7!t&@U(9F{MttW#*WLXlJ^J1O1@ z=8ICf=A-1wcHx3$+UryKzU8>WB0A0@;=>%O2%f-r7fqO>AaW#C$sVV$s45NJN(>WZ1&CtLOyI|+N?f$u?XSkA{ zOy3OXMkyA5Auge_n?&_SVK4C)ZfCVO|GA!9H1<|%XZoGItV&aSK;3kls`iw;Zs}ZG zQ&L3XyjHX3S#A#JPEUGyR~G-)oh{Eum?DAA)Gmabr}ou0%*Ese*6~-9DQJaLA_45Sp*8nzgI@ddr8ybQJ;SC{Xg zC3yOp8jyb)bI?>z$IrJb^Gx~`TYhrsDlcl%F>jw%E;t)sN&s>#BjmV%{qEU(1tLTf zWf^6gTF0~N4c2jEh^C>$_p+T&mefDn?UZYO1tlY2x6=P*?^v4~sbQaw8UDi(xVeOG zm-cvkD3qb}3S=nlOr?dV~zR%<))CMiAOj>lzfNtR_KEMMyeqb+RPkj(1W_2bWt-!koA6QL$7JLMPGINdZ2M zZcj4mE+g=(cGU!>^J#y7|A(i02Rr*GU&Hco6OPbqK7Kp(4NfuRkBngcnU^NwY16bh zzmuAXAJb`0Yqy*v)Wd~s2vKO+2Ub*n>H@uw@K)9L#$YG&tNZDBR1v4&QR-IGy3-Nf z^Vj8Ywzx+f4piki?QY{?@IoN%@^SCj#<Q?%~~`-JWw!c-0!c4yzh}Qd5?6 zP2M)C%er38>lL$7RZ%CcGg_@wNwV<3W>IV1Z-q2WQpqD!P4fHr(ga~KHMEOCHnlHwpu%z^=y z)mrRjX^kZ(ITM7+%&L4V8&PW1 z%b)=g1J1`~%1#vpY#t8YHJQ!biBQh&elXCu(+gC$3Zs} zQznyh*urs7$)@6UZgYBA(j^DR?4;+PiOsbOG83Sm5g0*B5`!yKoBC%2CVPz4v?5|k zQJInVVMe_{<|)R?HO%yXd&wrDE@ULOk}r3T4xm9_N&08WEuP^j@W|N>ULj3!e=vvm z=xFEUsK48PLU);Stlc0n-NA%tTtL{Ly^?+tx(3m*XUKLBKR-HwyDg7S`aAo3PlyTx zzjMWK*iAu<&3lT?i^~q)K-4P_7i-G|m1EsoYl%?=40RP&tw~%Qrh|#h~`kGS0vt2$Ab15*3kJ3T!1Q zzp?v12U^w`?h?&^e1!I5=g+xJao zSC?C_mfo%?ZiB-+nfS@5cuwY@{@K^#4e8Oy>+HGK$LDzKb}!^sG?tR>Xf5Se31*os704!^ZnZg<|Z zKR?S%v~f<;-!4j2r)~vqidtm2s_S?gosQRQSGVV{Byc2zbwnElcSF^JuM<(sFo&f5 zGZAS}T$@OLGA3|{9fODl!}?s%P)MJ^V{0*NIDT)5AgBd@f}aFUai?SU!f{a&uh(cnH!4bR zk=f!F*izH6eOl{J&Zm))s{k1jxe8!Wk*fd~7r6?6_ZYbv*9-16!1YB$>p~H&i*FoD zcd?zNX>I>%Z23_<;=pbYPdPx*Mkgkv4Oc~C;d2Nw)b#uwAq>3T_#MGdQC8hx4Ss|wL15DW=GnYSah-SPX z!tt71)g`%UM6WK(okI?}T^%{uCS4&-<8ECsRpJx?S4`G0YYB@U=s541oE8liby$tq z91VbB-@F4MB=e0!G^xAc5I|SRB!EV517k6Nu0v!rU43-wDr*;xS6x{##C3*o69Vp5&D@GC2hm!Q-Ix;X z=f!H+n)zaF=Xc`h68_ERq8_UIT$&0U1tLGthPcbHZSNXo3@?$(0>vy%@a&YkU+g-6 zvGs)t-JV7IB^!;;3S2kfrPt^YxWr&3%2!h?zIv|dJY}X;p4z|cuu^d8on?1<{*g17 z#4s0O`j@b}z*)@Mj*9wW$R!UmYEshMmp}43??|b}U=W#>dotBJ!~i&2w)Ne(Be{+y zqD3r?#<0a*X?HC=SVncQ}W~_q+EMfz+okJ=sFmy;}aZ4xIi<&B=uxeYyT*+^RV-r_o zuDC4q=_{^7*i2A*S!cmSMSz8Z*QdYo=+o zHD}cnc9%{*uslaOTR7p}b8J%`WYN*UNo)~OV4lWF)}d{>@Si!a(d(qXgQc^$#ukg# zGKb9k1`bqb(KZ*pEhVD?afP;13Wv(kgW`lDu&R0gpIy`0noO-S+tJD zs}ogWdV*hLPJX+XoGxfyx%g5^#(^NdcM~o8NJ}Wyt1;%+Hw(LZC6-io=>hs~jL;8J zO&<=q8DM~U7lxJ|JyC=ng%{qa|CcxFyYZd+qmsLFNAWn>#sBeer(IIu_W74MrDnOMj&nG1J}gg) zUFc*#bxZTz6Zg{CB!M_=t~tFTIbxZ4JmiNhFpBD3PBICdjg2k(w?pYNjE+Bn`&UY5 z($aaj@i;pJA;ZUiMRs;s6qBwk^^G^*+1TjyOabH1M&p+F?`%LDb-Co%-vLsV7DBY6 z1%wP8WD35R9iplwz+hR{+3I8&LfPL`sPEAAA^6VZX(Ia+Uoxc^!BFa))AIQ-^N0|T zYxQ&(GGnf-40BR{$xJ;Umh9(K$WiZ|37uzfZNiw|;Atv<^CB;gH4(Oubqry2dy3mF z1X$#xPMtgHrb}F&m3$XXL4OscbPLQDEcdRuTHbaIP>+FU!_fq?p_uH~$!MCxXSave z?Avemi}Uik@9_#WhaL~l_*YS8Lzr6P%=7E@hgWFO9)7a^@U!)Y#~=s-%udT+z@#eP zfC#=Tn(|kFK0zKvMOJ{6y2KOMpI_I2f<7dqkX4Q4p|w5ydkdf0LIk8J8ZjC(*SfkY zuG7!x7D0C*)Y!iA)=4`@H{+8L{o=oj9++Gnm2R&k!#aaeF;t?RoU23!)zI|>uS%*W zro&eyL5LyarDYZdR`Uj!5`n2^vTYk1EY~f!^$%5lTle%uhx+9^HW73c$zU{wpSqvA zZ{lU#@;a`zb}()a$esWR-wUKn^I}kf!XU+bY-ii_`XWB!gzcZ!x)eVLT0%a+(-W{+ z#w;)c`XRBvyYgMKrd! z)pL}8VdNb~IkClX%X#6o4im}^e8kp|(Ury%jZ^!jX%OuoA>HGcj`?U$MhQI@T{@w+ zp{JA`gC3B^0)%|hXir8-!-wAf`NHNUG@|QiO@-6CMy3sQOMUv2dUV02-O;&$^>rFU zk`iCAFQ=nZ7>#Hq$R`*JvRg7swzac|eVP-0YdSbG$)FenGJ}}!UbgxTJsopHk6g^A zWkm*2C*cb1(Ie+FZvirUEy&4-w{*O}LBW>RD9?8y*=-aBg+g>efC2xuse7%#_f6kP z-2Q9e!h`SCv>{ZL;4xK(h}};1T>cPQKB{1-XuW0Zxu`)(a0d8hGozlUEG1pZ4pv=% z@-=^wrKbZy9_DfoEQbO+xt!t6VY71(C*IB$A`)8<)AF{lBa6CFyb5plYbb+zLY$eptS(X3EhfQ zCPR7=epr7(+4@-bhNEf0m(S2m%#>OFgj+!Qv_gdCTZgH45`Z?#V0PT#921IvI+em_ zm3KHf1@P&F=UE?3puK;Edy?X2G4Sr;{^1eAJ|NVOkM{NsbP-4Wk3Zf! zvT!h?KR<_AC6%~aTo#k;;|Z*wr3`q+9uq2V;JxP>FEIp<@?o9aBp+79zJ#;CwW_@t zL+;B9=sIPQYJKCkksSOcJvAQne6$JBBEKyo0Uydv-Hy?$Jp!vv*P5ft}L>-NXBb+GH8~=P&ttsew zbovw62%&$4-I$AbIw^jC84b}Ua8bN69-u)vg^J4^w&oIU>(-kVl&ZR;1x0^uf|n;1 zrXJXw*UW!{Ygx$4C-wmx+jn`%huU;{fq4TqZNdoomG_~B`~W_iml9G>FHm@6AEzQm zRg5jWa{&n*UOAg)At`JT8vXBe`-nVCS_E}nl%r|&CeOfFN8hcN}*F){*FvZ1E@ebwe=b1_~iQJR@W(b zRQTvjam7m!NEfaoYg>Z?6lgS2QJ1UxN_yaWb^XnAd_DMob=<8>(Pc!OD!xn`(|$OH z81@p$;oG`}bSrC*>1#qJ0aDnhiaI_JQ)N-mu32tr;`zWSn;56UDgOcMkj=JNUHXu= zKF&EC@5Aelhxu>a9?`%;Gyzh0owU_2chF39d$q#tsvX8VUx7zCi#gd$Oi5<7Uqh_o z7BPf<1mn+t?|Gug*a@_+2#SPwy7T1$b`pORZtah*utRO8mWxPU>wD`h6bpoG=ZTJb zu|i3kdOHOEheKL|Ik@XVJ07eyX;M~!h098HUf!7%S7fN4vTCvTOj|h>A_xSK*n^pWP07b$hzdGsY0&GM6_PQs> z<_2bYvK2M8!F;V7Ruu$Hseq!PUm=u4?b_3*Sdu=cA$k3hxQFz!fssGX<|q+EkU3Xk zqj*6@@lXIOnvsbRwznyQr%Dlp7I07&Y}K3cpcvOQ2LEVo@k^anTc=&#dZAF|V4hs| z)U9QIeM#dPrT=u^>&O8~Vn9SPo!qcSvcj0ZwT2n@nn99^G=zRo7*X#0G8kRr@uRF$ zQNkarOj`z}Td#NuxA~_Y1t7k+%vr5!($m2wP)QTT2@uk2rrDjTwwL+PYKO8}oLg^S z_;-#)Ly(p>jZk9ykpcI2CeD*_=8>r%N)F+F9+A)*g?*93BH=QBT9m50VZl%F?S(J$ z(>J>YuZfY-_Jy0chVv*!afO-T8gaYUNE!PTGIS_py(_< zi{e$LT8H)wHEDL+12BW_b6bAVp)sFdBK8qX^B3TnBb}M9Ut!(u`#^>prC&IOtXkE7 zsF-f)#GMuQaOwv@p5@varCq{Uc|ow)@(E4zN+=aWF;=AlUJcOonI}k;VyO97)A}=; zz9qZT?7>zSTkRR~EfS>89QnxwbTfP|py=f$APX5>6${-F&NA4aqu z#oSha0Mm8?3tp}JuR40;c=6?{Ii^Q{RK5M=9Xy%$UUl%l-b2mFL3;n~PR`x?XnAsq z-+T4Roqxx*pJDOPBCoFgI1aR|KU%!|XnpAS_g?q=>G!1f_g?pZLhpUG=lzy@uRiY; z-EsYc?kZZewf0$wA2M0m3ANc<#@)n4w{kkEvM?Qs(kY&j{Enr-tTW!t1gt54SGHc5 z3n7o!yP`|v8hhL1fuM{IZB(D^oP2(4H>VGHFMK1#kNv})CwsJiOrM`0R0)r(dW2=60?uM$+qOq(8v-tj_Nx%nRUf9wj0NJKD43Q6WYqhaDn6*UYt-C{6sJO zTTXH7>IO7sf`R8HEK_(nk@Sgw1X8#fzz*7=9{2!-HpO1sQK6_%{#n~PVNX%a1`VbW zxyFu61a-45W3cL;G(lFG+@wOT9t$FL5kkIX*QDlni{2_RyCjKe=UI9gTu?zjI>-kT z@tf`sXnPV=IOsV=1aZVkL70vST#~n}{bGRBD|f9fK@6F7MOp;u=1y;aV^To}@;q+x zVSn6)nS6K`ynH@J+R_RfE+xBXiZiVKC3+UhZKUV3S}-=zR*zeO5E>i9 zGH>(lXY0kVT?o^E-%c2VNJ6cE8>?Sl!H&v3yv?h=9#!1Y$g8)hb4Zyx-xY?fmVbRivz;YhJw$_D^=!yMpQl~dw_p*T`=SmbnnG@4hzypA4K(NsgE!U1X+ z_RCEuoO8ZT_{$FXw#vG~rm?(@55P_Vp$Rz_90k~_N$n5MvR9g1!0-|X&@96T-#|Nt zrW%cFG9*6)9%gtpIQ@x_HxOME_5laq`U;%i8)Zln?Fv<`zUTuw0>lboT2`A=kAF`@ z$Y7+C$Xzr!iJu0DEQ68jr83CgHp|8pBpV3P|9t4+g z$mnn&mt|JO_9Gx=sbLTjAhszlvwrz>Fqs~n5lDZ3d;}xXjha@ZH8b?ogkW%Z4g^rW zy^+-PUAvXUS=-9T#6q0u;z$#ddpsJp^LH%Z(*RCI+LKW}0U=aq93#k~EC}s_epdXF zw*WU43t%ui%QU{mHX;x(D9XC=H6*ZR0lh3qasBbmXrf?8n8JY4C7TEw3SPx~Ulrz< z+c~m-W&PZzEGG{7mXj1C8lA1h8UQszs+*r@`m9cYLFC2gG8yJT>hz}+O9HhLYUWr+ z9f;3#3@6343s&ZXUM2^EoqAD^O-T6=%E**tS5^;ZQtDun5>58D6jbw#E=K9-L`R}!VO;{y}A;E?k53^@Cqs!r!PrDUoDXj6J z&rF77+j1e^mS*?(BZL zjPwydBz!amPSOnB7X+R9pVj@3jt&o&(tRS(O8jdJi2uK;`#54OBmG?0t`8|7!2=DCHTkLzf6+Ib;=TZnY8G$QeJLqKVuGx#84U|0(qCP+W*4}67a`Jg7{bz_g<_=L6gCYow`=w$u;V>Ck1(Vd#bza_K*s{>w^*b55D zZ{~gwi$Ze=gA6&|Rmd6)Hm4AOu?86hDAW1H=iJbM`fTiG$bZ+xg+qMcJHvMSzE@jzboYP%&{Z8CUW%QSv6PICs!<0cgOJzpq zKwa-M4pVmaF}K51ZrNFLlg+zuN}Gmw;g*iYzyfyQWyxqyHtbo&TX2m>$~PAc3%7F{ zhXk=#I$`aA!#Ul6KU}cMEvYKV7~0!Q)n0+8_fGu0z*_5dsO#gUny<#c3k=Ql?M8cc zs}A4Vrwcf(*7cP?H_n}Z$R4dW&cyXZ5L8bS43*4*Xz*9EblGE&eZWaf#`Fs#;I&TX-%NjNe31 z$f=#H7+X7~#xY~_@Wf$+OS#vAM(CS+)zN-jOy5zMM0O`<@qd6E^nCuMzTq1Yq z*6RWSgW!MF^{B~lK^Lu_+xL;^mR`=p%X4*vP(DWAp~NhP&*})By&UCG7sU$LE?#Yqk7Z-ko|D5UG29v#ebj}r zqz{}(!E;W;JdFV=z*sK$%4Q#0k$6L45Kr2xRKDDjne)7V`26a_jW>rKt8XHi23gsZ zpl6;~6mZ?R-kvBXll*jgd5Zz;!n+pUc0-y=9lZ(bX!Ide8e8HB+7qc!=UKy)+V2H% z*O+-3vQ`rZ?`cta-OMLWtSBqH#(^FuRQ#Ce1jJTcbvbWBLu2wr@)$1sUf)ce)LxC^ zt)}?<;uPI~Q=R)z6%r=<#|TTDgQ-rut`pjN;$oP7e8Q->}K|M_81kl)>ESH zgJpZnvynQk9qwysvQ5w99`W=2_wd&OZ_PU{a=fsef>ikS ze|r?@CZ}$Hb6zS@Vj-?gYNUW>Yy#k2nW?&e+8zdfG$SAU`L=UvpSeU6!wS|(ZDx5f zxXynV19{FKJX?Rf`S^!Z4TZPd*U&d5=Qm6i{jAb&Rr+m}eg#7@W;yq3R1g&}UQI}) zR%6OSP_#vobCJ{TC1q@I>Yvs0u6p|~8w`ha73?M+`<-g3@-z`IV`;aYR~f^VZ0ObY zuHuS+?2l{3ELS!s*V-idQt5yZsjiew-1Q1W@ByK++rZKlSa9cWzVz;7Al@VNe3FFy)OXMbsJLJEdh@ahW~ z15KX14=h3;A}_t#M{ew+J#vIdKLvZmbn2qcK-fma>Y6R{;7&+}A&LO7+ziugr; z7q>MtSV8`o!C~5IP7jI687j+5K^-0HWGSW4Z*2uIxx~r&Ev<1-#|lgsS^yB}ZE;i0 zp>E0?i6fNld8HD<<6d%HM<=!|FM!rg8Z*RFvU6z*ayU0hUbos6l9fG?|7Ru`qK084 z3nO@-u=eHG8HfN>p{Qr%3@E1!ZZHCWF8SyZr%Ah@lam6kq~adm?A(lk^EI2!DYi4) zt_;bTABdJTSuh2K9K%fQP0fu|lKW3g0@w!s`&nAiL>FnSD4UANtv4=6LFiK&ic`1+k}0dSWk;+LQJm!Eb&l^=;m_02HEEE4dL=3F zB$K6d0F$)GP|LuALkk@I#`YSQVMFX+AL-*jsVv%m-vNh{v3N z4j}8AJ90{+%Hy}ySOR$5^G0VQ^BN;PW!Y(#0r$}Q%V0HwY+DX_ys0p7tIsQJ4^oRW z`-WpDWorYyvh(F=>@dL{Vl!CTgaO*sRLbOpdo8urqTAdbY&>`81d0-Wv%HnyW$1JV z$gjot72bN_765^A=C3$`g1AC*@szJXnZRD^2pwmOs-fMYrIBs%XuHs&$+fg@_kpk-Udoo#9H0x$GZ5qb3X|dv*>!IsKTbA`_ z?fCkaIIkKP4$P>u&$0ZP%|VAA;H3S9&ki-8t#w9e z2aVsi>BtG2ATH9cpO+CJkp=)YQZ%4>k-vG~O98QfzqtYrQfU8z!8I1tY%7@eXpy zk?>=OU(SjiEwS>1_gLoTYFPn!FkQl>gqfe4QAfF`e@!o*}F`dTgDSH_y88;M{AS zwA1M|J~__(4LRrR3}aBJ^Ntd@ERpm_#e^dkbPduK@s|338Iql|cEc5#Pkdu2ku8qk zppvv283uM#h#VAf>a4gB^~9{uBV~-_4NpSr}Aa%-+@_1UQHZCJGHWzcSw88kwR)!8K z04E$Y8=iAI?9U))FdLtf+MZ2+g0jF3x?fl6%`P&3_ny&eXZ#+q;4--0pFytR)1)6B z+p0R6MTC`gj(8*KWYT-@p9&l6-#t}h9eaDNU|U(V=yq{9WKbk7`T+c=a!+Sj2-EgmyB+^*u>QJ#%Iv6rk-H3*TIAk0IH zF1zXIQ(ZS9$ZV3mJgZ6FB^izCggC9h(t$MN_&y-AtLhuX{OZNaT&y6P`IK96h12H@nBz9h8g9)vQCHt|8qQubQ~W7#fd`O?$2B0%SMbD<4nOhzC;qQs;hk=tu;%2 zG;Mr-kzHiI@36QRE3Z_e3SvQimoR0R8rn`^nC;ROo{v9NvQm-%!!=x$5Nb-~pBEg8lBZ{oNCP_`UU_se}Jv zdkmK5fLo-W=5giCO-lNzKPJ*eSlr+YuB2wu!KF>Hgk0X>brYT4;)}1k8OP)^%9~-G zYW;iM^bcT&9@z}VD?SByREvF2+K&a{UeQ?wr3BfY$ZD1|Q#T24B z`h-3kO564_tV~5nJpa;n!LK<9U>%#CZOYquEdivJ zj6_d`O^$dWYSxmlE`b4P!X$bGnlqQNJ<6-)8c);*!d-&JUvfO6uRe3WU52yWSZ0V! zbz~qLn!U>9@aO0xxGqsnXkCJ~XLHTxc72g-SzYK`*jy#oGC3h}Crlo|V@V#k9;O

C;UQmr@50yE;#l@@2RKiy9?9EBk-oV*GqXUIk6y@&K ziX7a<4I1JHBo)1(y|j+4J7RV zJcxXM;}E-XAJiOVm_~y18e}mC(hMDuajX$am@owqL6t1ijNYL*FLoER833))@=i5M zEJjBnST`nS@$jWgNm8qXGYlhiP+9lBKQqnqwA)_&U=9_wp56D2-5Z&ply( zcC!!r#JCNmAeWIRnPjh^L0pNMNN30^GrCb`167#gZO_0U_d7MGDYsEz1&Ov!HAIQ;5M^uds4t*TR6U93>d^C$hdaQu^I! zq4!EdACDSn=QM&_TY8@|tSr5MjvZ|gNFLb7`u_U*ekoz%b12Ql3b5}OgRJeCK+@Sh z9KUz$WoWbDh1)Z5a;Ey9f(R_co~pMoTY4X}r8YA1zNDf4FEjWAhcA4pq>;tNR%mx( zpwP!J1Resk|L{`sd@$=Wp7jT2b&?;@+s*F)TYws4UwxYsC-y^LBX@{@Ia4Ua381gy z>x`-$?nXDc45j};mM0u%g`fqmD{!Z`90aIuGL3&mmf~(*FUR=2eY=CmAiT($F3x*R z;UPJD8)izd4fL?&Nmk4~#Sja*=dD7I(%s73clG#nossH>8O|^dmoWzs3wvK}lAK1< z?N>2Rw+=Z?+FWgjh|jryRMqy-!17QotoxC}YRQk;9BK>>*^n!e)Y%;l8yFn+@57Nd zA+qFY_mfZ5D#1`Bt^jT<)c-cFOa0rpLG3SWOxU!>1d@^x$j!4SBvxCWiMHPU;Kl6@ zD(jn`;!T!%Dld7m-Lt+ifRq1EObNxp>bZI$Tv?N)p>iQ^u+G|lG62jk&^3E{ys5h_ zPu6RNI6|h&It!E!_Fs?c8`j*6&g&9yxmg#*7LY)X@3VZCg^cmt1cvyuKlp_r2_rA_ z0SL!0o#9~f){JSTNMWOTt?JNAS{-`Hm95vO3MI+y>q2aqz7B0DN$#OKlq9#W55<>h zR%NhI(*~JsLR|BI8~h=junYqx!8CbT<&#gW`7Na4D}`Z8YgI{dvuf2kqeyHV)V|)? zNnQ%5Uhk}^dbN5e{DwVI62#`EHOr-g&z_QAvrw>!oY zd594}WCK{V=^aSKgM?vPtB$yjiO7;xE^}4wQQRoKcS5v(&MNLNTG9OCAnFw<`9VeV zizyguqpGG9@N`NBduMKx6tdr*S7iykHG*aUKOHZ zVTx&VIm)GfnQZ!NI-ZVl7`QN)jx%cBD?s7Aj%(7<&kSLX$Ul`Q#Tkt$NYJl+9!apnI)*V(=3t9Imi{UK0G4Sl?0>R#r>9F z%WZ%n#3)cYo6IMyt=!%=$(1)tO#cVFy-)V{xLPfLQ#arBFC)NPw75cDUiXaKZd=W6>%F?2`58CWAbT1x3AJYxQ5&H#X9ly zzoDN=vUEpXL65u~w4e%guVTi1Or_0cZ!Ic?%Kr;0g?=`m(h#N9t%pP>H$_XEG{$y- zWqdb(mmJ^C?!v+HMAzz6af=ws>>AVX5^Rr!tnOkBrVsP}1fZTzGK$3Fl}WL{m)Y#J zTk*l@;*OLy&KbTY?)q{R6c&|Ck3T`}WWeyVq1oPBdQTUUW_YW+c%vKJ=6M+Xa_9InEwZ-85o88zg^~k*gg@?-~W35!51gspCd;p?8U+cd*Qn> z_7wV+W-~0Log}@7fx{L&ldRqeUUJt|;%xSK>r|f(>v^K_X4$--Zf+}BGv6%h4=*`d zj*0ctrT-^m3=pZF4N4J4oM~!V<~kS#M|7FBH^M3~sA93G7Z>6b6|xv~l(S-$;<7q_ znoFD)SctZ%VVR^{&w`v4My?%iFdTWo*Hk~p{!_p<<{8wuc-iK8PqCiw6MjmO!Y6Q3L?9#x?WI39)rZexN2m2o-e{p@F6*CZ-Gb`cwK8P2X0)F{>G|7Hbtb0Bl z{IYd%POOV>^-nSj0f0H29C52kl7N@7b~Bc<B=HVfN$R8XdQC8ai62dRClXX#~Q&J#|aIWcW+!D=J_!BC_hb;g(J)( zt4;K4Y-YnNGUZ;sp}jg6m33a0d9&ZYj=5;Ic`F~qNTilVf3A;6!ldF8i%^Td!E*Ol%_3{i&I^yFVy7{j8#;{v z8I{FPV>sJCjbVT{6-aBh*X$$)P*^e~RUA;WI6E#RmXA0 zXP2T<#HWV~_!A^xZ)%Fnfmx$?W`tyaqTHzj!#jv&M(r+1ISpf&1kS1he?d$(<8}Juu^Djmt`iBbTQO`75w|_yg)UzXXuD<*4LsPZ!zGjCVE!0!|{g@ z0PM5lJqRd#bofp5=AmDZ<-i{3=d=8hdUHJf14=`?%fv#|g2V;4K%7v1VG3vdF}#oO zja_4muK`D`B{<`#g$hnM7;vlog;kYOaz{e1;(7BE>IAHjj*hr zHAOGl5>ql&R}FbKG z2ND+rKSgVvgrUX?77nBhpOw!|@{3DFsWhinbZu2pPbvO+IEx}0hO_X7rk5lB1F>qT zcSYLT|Mc)ndjIBoe~6Az$tA&t^*%iOgv1;EpXDZ@@4O#C#Rzdsq#q_x!qBx;z&XBb zYLl%z=5Cns{2?{i4XPy$Pvsq;mV4U=dy8rCe~ZKcY-unF|8J#j@L*Q=nPj)>?`zw- ztFNj~QhD9Gm$!AlBnc7bFX@VWBl7g6I;eh;gU4@z+wGJQS+L0o|NV7H?pbAZB`B;S#Px&y4x1r(;2C@2OXoDKK^ zBS}tHV;h!Ne?3A)<+Q}p9j!bx#fkh0@2t_|-0$~`>}k*jfR`~7N7lIh#DpZ-4-*8( zqm%Sms6(aW-ou04PZ$Q684f==Ji-s&^gk9_=1HbfCSu5ZWQ|$4@Reu()6n0wj2h;>kCk5lCv` z_|wCWod#Z%+6Y*>^}#2*M^3qyq}*uIpJ6#HhJUDn(w&i-TA0cTgL&HvonQ}to5C_~ z7gS>xe_UFj@$u#?on3ni7O~7aAVlsqO zxa(`*t4kAlRBhBBWGsGC_4*Um7UhmU?Uo=(e`@yx@-$j-O9<`s3zP^neJD@+u98LXHEe{G5Sgp!smydg_am=*YPYZZThfq9=9Fiuxq zYCHTP08Cg~@@EwDz5Nw>=T`)&@o#iN8q#7s^l5>GnRJ*_xB_to|N0wIaYFl9fSYaH zjdCIKONVQkLYk@|?3+59PJBGKoANtN1sR0*CT({W;$*jI+fwFjfS;(H3NkQLe}46o zeBPggtIKthwpZ=5Y&OWIL{GZzvz@n+>azq+-^zij_PIqP(()fqk=p9YFM8;PX;3W5 z)(Bmy8PFuXqfAQ<04F2PU^YIrcjHY#1%(aO#^AJ34}%M)ReDE+6~R}nCCRODfZV9LrkXsEGlyXffm z4ltKMsZ`MnNOD*!$+UlF9RVoM{zf46Q%LO#Of`{zN;<2V>~AZnvLJDSRXgps(%RlU zL6CZYzO^O4mlk3rP&7s}f75bJPTmo1Up>z58S6**U>u^5C-zI0+bMaI~n# z8})E^qNeXGq@uif2gZaKGD7)a@0dj zVfiRbWa0$I6O-%7yuaijI`VA@7b7z~QC5)x4P;0Cfu6_*fA$7^s6M$|Z3c~a5E>f0 zt#Gb17Hi@@5k-x~?AYCiNxvgPyGDUH&#;5qx!B-wod_?41+N6*e8G`nSU%8eTDX6IkE&-qs68}%P7#+qMsn}hjKnTrKVBcvRK z$km1VHskb?f4$QLumN*spK0P+(6+bN@o!Bin&)nGb=z9?s4q`5*F+F4-td0=^y2*I zU&NiW&8~&Fv}V#+DG^b|(YP1U;&1)(#N~cjOd@A`75b??8;Eb1n-GLLjNns{QY`oO zn9THJ;ESh|<+KIJ|F`l_f(ASf|M3i~!>BiZDlSgjf0+GDs|(0*Lm#5K#(+b#-9qHst)r(j;hvQ5BELltYixQ>{7Srm-( zKK)ZY=Z`tW%k2z-M=P`S?;nqv07JvMfbvj_!+M8Ty*Lhj>(zvVU+ewE`f9V{er5#AzJ08_qJ5@MVk!V=^PY;hPQ9L5`%{>PB2o{ym!?N;a z3kRNe;qlR9{Wo29jt__`yrb$i7>csqb|T$Qe=H)tx0M{z`guEkdATp)jsV^ER9SW) zC8u0vMs$t+H*7aUUp0j4-v#xQMeQS_8OW|}d~#13(mA*afG!jQ-UU8F|5J8+)M%Yv zq7Ip#^Qv7XCACTuVgJP|q(^fH&QeY80~9-r8l#pdgL&Mn+<^3Xxe$y2LhqBVQ%d70 zfA4AxXbgk*X?;af6XGu1iJM;xGeV83b9Pd&W1(#B79i;S|Clzefj01B#9a~xe@^6eQ^z!+>l}~i;~MCLuDaYMfzVW5H-(U5 ziZ^W@Q^%^*0WP1j+fht$o^Dq$eM}i^Q^qYRrZ`h~q?kS?lC_ECb`(>bs9RP{AJfL# zv~f#{DbCdGE2fX>V{Q7lEyWb4YI((!j>?mVhaVn(x{p=e*aUpa2tR+#CianFe@c3k zpJk9xWL-XP<}>KxJR6Kh;{lBn3h65ss72N+J))7vSh37c%MKiBwCxAKr$c17BCd(lky>qO}pq|WCl70n^(_J zrG23oN#y(2y3uC0vE}l%zJ;t|e_aVQeVSvArfizT?6M(=@59; zgwtu`@f^#E32_8)>4c7thZ#nKz$u&#O)b23Kgg0cn8iFlN zMk&aF7QB?upK+Xw$)r!5jvgAvkH+WpmBH=4U;V7)d= zjx5j~sdlTB(hW{pH!!e`;xC3*cjG;!R#el#rcGB|FNr>GkRM78RWS|{)g&n@Lt#ql z6kaX;p|DDV0;7bGmnKiI#dQZ;i@gzoF&)#^n#-pbSu?(Bf5sQh1+Ii2f~cA>{T~0g z|0V3>e%#yN-6M}6W`SRgq83^>nNQf?kVSx9W?`I`6V?=h@oB&N&5~~ZXJ$I zKsfd%MtY9TMpa_8Velv-1m3y*WTY>@FiTFTGxnx_$|Bl>`v8|EnsewVphzHWwO{!b zLVwQSJWvUgEpphlKcd%o4h$&#`~{z9xB!TA=-26Zf6lMnrfDieOPZdRV(k1G5Lf65 z>ZdBF(1`T&pTP4=iBmi;%qd8jVcVPg5DLKHUD{`fPpdSgBtD!}U~(rFg|5S;y@8X!cXraz)z2r|HjJymQntFA``aNe|al!0AM25(EhJu3lhh`Gd_D;3dOAD z&cfs8n1&4%DAG17jlJW~c26FBxPJt%8nX^a&`O;!>GDu?B6S|j`o*J2r5YugMJ`{K zu|juQd1AG>r|GX&5!YUDj28Md{!!w8rKLxIZ zf5nD;=|>vlk@Xh0pplh)WN0#{EeIB_~(M$@luxjY8c@+R?n{Vx#v0UDECF zC{_`7!@!J33b=FS!yoducWwsBQhBc6fA^yQPPbpeziFz?p}g(1 zCo?iUjvd2e*tSfDU=}O^^-D^GR4>V{RlTHCT=gPbY0-*mUJ6wGdD#kj3(LbPmW4uc zb(Kex4EJhnS0c^FPXv<6lSSJ{ajE6Essd~VCVjJOlHr%%oVV5nR$7@GTxnNZe>c}z z0?n@J+P6|9=x<;@MRR^Zv@?B2GIp@^f zV-a*U&~f4TWITcu110W@={D6teVw}xFYILKzm;Bq9Q zq+s~8Ov}M=nTR-)QneCM3fkE7e*u|TzYkSl6oE&#nM>_67oTH&Fv+qx{&>HS8IW9i zkQLjjF0)xRND=K29)&$mo7*$2foc1`tPzVkUu@L2iZmvT+JPw+>}=KA6rpnwT{`=^ zww0#LlFQoqyUL{Ea*>IdIs%6N%Vv`7MQ@dAGOZul!;${)AfAVJlt5QD3 zR&Ns2Sa_wq^5Z36gN*adov!+L0AYy&j~(pq$YF!c=7WZ23pi1I% z{SSS=LyqAww)Rj)P_;m#{v*BhBX2j;A70`(68K=P`jANRfs2TM$6j3fdCcT#ZM5j;6p zFSNQ7+%Z+AtRy6Ze?a9+!1juN*gMwdHj?7!P{n`PQ=lS)vgE;0;KCG&?OY6row95K z1S++WR`wEEYqU~w;>!P>eoSvqYi6aDogB}=C98S#^z`)f^z`)fxOsTWy^;Y#){u_! zMra7ta8BZ(2J<*Zeb=KBqCAL4jK<`FA4~u^JW8d(LICoSe;cmK0(4Uy#V6LH$I z8@mj#m(&5kPC?OHRKckp>#SV-=)l!eZIyqEdTP8rI7=N;TwU&^O<;*D2@rRaA4EB( zmqb=mUy_m%O-GIoGtQ?{MLbXNKNOUn21CzLOy#AKe_oQI+QM#BKsa}CDP;{jiY5x@ zZUaiZXff%5SEQ8WpOu^i<^i9TqL0oW9U!xD5jTZ#6Yv%SNviI!f`XO@V!2P^N#FL`AE6$r zxVi_t+O?4EctmYEc#bZv_tn;88Pw;YRV=m!@iw`?Re9WiCV!0&s{8f^wdI(u2rQ;~ zH=z0(x*bQkA1;!ePH!8UVJ0@HJfvYA1<-eie+j+locNra;}rg;6+$^GWGJQBgOGK& zgS*tdTXsF!X|e*WU8GL)tMX$Wu2X@&MT-#@fwhSKweOc1HdmtwR>E#`J^Bo*N|G{` z1#)kdvu1?!(LBGZIV)-8DckCfIcw=q_g4of5n}okX;3oFlN;<8Ba- zf7P}faDQ)9GH|;wppp1bQ89|~opphF5V?qt@G1dyb~Vkg7n!_PMs2et*iJ7sT%t&+ zEBFx{IYqTkQ_$g{*YsY$Jo!`HtT)Q9C*>03ORHs%U4`0N_Y^kuSlcAHh?N@hOkw_R zwCQnn%%;bX(Tc~o=Og@HOq*?b2X!CWf2=`P({~MS=WC3%wuX2jS*k}S{hWK|ff$8-69?W3>)<&cA5Aj-o^ear82m#V8UQYh4+%_Os%jhSt~4H)wr&~Hf?Z%%p@TAD6Kr4$4r>vQ zYO#Xm-U{SsR0M)VX-(qj?#91*f1x$of@H6G!(hE+ZMB^?dj97(CYo)k)6E<8^L*5( zo^$rm)M)33WE=B}Z%=7s3sL)t8s=Kt#aP9`%+~F>I$N8?%m||q<2HscAj~?Wg`yTQ zg6$Y0wHplAS=rxjJ2pXe7^>T2ftdyaOM+UFTYxymLgIw!=KQwUZnmm%fBD;6)dH5d zyB)0+#%e~3Sc_$^Im+Y9r!B)@|p&No+CPFs1=Vq2S? z0`uG3$^hoN7aHnf)-G*N4PH@GowbI>X>ePUonRb;hZr>@Zm zj22f{_`c%2_*l%BDKPT0f5lu>M%3p%C7HZupU6HtO|40X0jh5nro{cSAic?c!&%J^ z*$$?sM{){V8txJ@ZLLPxDyZ3UNs$gV$24;f0C6-i$1Qh`MAACiNUIQCxL;o%8E{_S zCiox2wS1z9A*)bUBezg){JPU=2^4PTBW|?IK z+({0If=zD*zLy&1xDM!I?0ecPogbPO#u)4wL_TN4K?|An_FHb(zDxu{;*aF4q(OYZ z`}^QYq$c}f@D|d)$V|w*=IqW8=q~Lz%R)QXKsS5y5l!E2weznscgFiM9sO^HSG=|8 z7UBKsXfQZBIhF?_f3NUrR{3el!EkjUSILgQSZH$)r+e%UECt6HeD@Q)PiGf{-+srD zg>R~!i?6_6)Tf&&$>&3sPJJzELPyN<3t)(RW|j;n>+rvUpCAn`nBzpAK|W~mtUukP z0GpfsY>;t=+?Yj6=-@9|4$$g?CFz_3B0Qf0PS3I`zmKAnf0JRxfqCq{E1Ggws^p#f zFok%%5Da7{|L_N{GOvpF%%bSBX!9j$^uqyRYY926ACd{4GF|Ju9i{{%g!i*gGt(yG zg8ST2k2OxO9loG(HY+aR#yrKI)I7PeVRLQG0jQngF%@J!haO)>a?gsZ{0Q%)!99`{ zsQZ9yL6{0be+K9K`-g)8-hsrQ&-+I&4{=BJ1b^{6l4NwJk0>tVVicIQ540CocpJdB?Ry82P{8^Mh@+EJNI8TlcMH}l}yFwj@rc{=T zlK|u@o6(W;ARm^~5&l5pb)LiCcdqH3G&v%TaXiZ@O50V&*LwJ-m4e146@#AVGfW>| zmSvSAe^Dfk&J^eX0;>YTTmrTn@s=b>V_#LMtm&%~(3NE|OFP3UKjN4A|3PRVs`52X;24xr3Yci}U3>YyT*Ps-^9E&)yS9A;Pw30LJ)%AG8QDXvy1oF=fJ zbMcOpj`E%|_a6ptyr|qFW0A$YVSYWYdE+pJe|=wuA&Dxx4DV|d2`=9`?w_5|9pC-^ z*Z41pv>C*spSi%Xvl%d6h0$YEqyO9GXHj7U4f=-vAJ9b4q2Y1HQa?ZyE&#I$ zsI??nX0-HF%o9%&SB;Pyf%utL7#4hvkD2C`9|;~*lWdlpE{dw?CBOfe%`RcQi6Os% zaWv@P693@`9O{F70!uU?9}dD1&K_VOf5*55aQ|X5kr8k-M^Z1S68Ny>q)?&Ok99^2 z8n_1=NQx_@L&u70h=@H83~e+P(@{Rphd>9Tbs>v8vauV6w1K${NuZ;Q z(=_-!_4n7<^rvijT^5l1^Se{?6gJ%ph$EJR5O5rfoChGHOmRs8FNZmxj=nr-f9#vf z(-b6!WtfvUIf^K{MP6VBLSi!BQ)!zRjbDh*uICGWg#$9n*+r4105yS4tb|d6W@e1} zWpVWtT-K|g0uCQ8hD$8Tqs%-y$=#zLAM*SHgZ8A zN!ALHr+fvOg=jIWXI?(ND1c*Ue=J`J+xKvR5E!U}CnCzps6#aBoE1Ro4)8Rq2G=}^ z-Nao6GD*b_g7jOgp!eK?+esY}aNCLZ}mzu%H+JNS+-0Bft1q;Hv-of2_JLdW3j| z5VZ~h7?c;;bh5a>!NF%4?l>+q|E;u9A@F&mshg;oX++n>Ph~l(bvT%5V4I(iNi6Aq zEQ^sDDkDJ|F6J}HH2Hl!y+IB`6f@w13jR#ntqs5q)aRuU;I!+Vm6Th7s|iQ&Y?1h;T`0Z6uv!3^w)9!m4lU=$$G*nFhjuvxCa+2Rggb$2#X3S;TN1)W4gM~f08Wj2E|UY4O!4GxN$lO8eyy0X4{E`O|_mv1NgSqF8n3!lIjXd ziK`pKECjD8vRqayt>IN9H7W~S8@(9#Yc&#%SeDhNgA-ttt|~g=hzsB}1^1kex{Qej z&Vvr$ri=_1Wq*})O}<$f7^>KMc9I7@2r#OPRN|aAcI%;Kf508<(Gz*11J!d;)#ZO|)G9YQd2gBP9Bmxm64;>I;1JeFvx#F7JlclS z?AuLD7#`1?Od?))cgz4r-OXG8Yc1NQtQV>3H_0OnROKq$ZehRt0{2#XEt7$_j_v8RXAHN@s^hhRWWNnu732G{-UkVH=@shf4irs^|MG_vk?Db1wv2tOHce z4l(1&yYQNj6P{Folb#GuHr$+96GtUS?IfvcM8PS(jKObPJGJsWaR4Iwc5o6yOS z$>wt_$pyZ>X0MdVGW8Bt=u^%B=y05DJ>(vOe|hMy+&Leh9Ysnde+JqVot|4iZhFn- zF3|CyRoQPo+JaP${-!S(P3Jf2YO$RaN!wkeT(To|xkdDxyUd3lK=U?ti)j6ltF&k} ziiSqL7r8HDMUu3izB89cpen5bBu;U0f3_qEsvuJO(x35c zf80nBWb)C{HyPJeTsRlc!RY9~H=`U?xLh1fF{g6q)h`5K7Kl!`E>Rn%WF_drEZ9j` zT%(+eN=0YOnn{WNpFa2=;()V^pAOB6K zaWc+4w5mgNn^wZu8AVXpsv|L*e~$Huv*mS@=(7cjH+7Mmm&6mru(-yKs%9iCVstsK zC5tx;dIjdR7(T$^Z&IS@O-WMCIFc#95Xp`#b!}A2SKiCz45J2#Dl1W7OWF6i_A2#Z z^04=Zhl_U;*XnaP_7dUz0JNR+7Y`r5_{octvxhu#;&1Z!- z^nspMq5$qVXratyT5~C`f1{_I$euEA3Mn$crl9tDWt8n`dBcPQuOrh~%ng=VD~;t~ zbq5e1IqSrk&vJ1Ay;@A>1=JL9m49Wxf)LMnrKjg0>m$vY}_7^ zT{U=@%9q@ODEMAie|uiM|Mc+qo1^2y!_z^}Ns;vA_}NMS^k8swaG1V4e17H@ErpKa zdvH~L$a!BHc0Q~zU>omQIY(>K({LT+U6$6MjZs7I-AZVCA8xvISiu}7*~v3r(g3`c z?DV2Vo@_4i)Gw0UY($61CL9vl=^lFM?em%o4L6s1(yG)`e<@`#WHK_l1aaI#^qV;+ z*>QuU5aZE$Sg8>erazy99>V7Ls|xcZeu|O}nvu|Qs zh0{x((9#tyiCUV=smN>y9maR7-fB72Uhr3Qf!)I?-gZ3v$S3v91yiytYJ#r_aTAHB z2Z0epg?BN^f2VLCR89U0MV%90nY%b+Jv_jxIN%1E6!uu5<)Wf%iMQaz7xh-l1a^%0 z|4D#4)u+rS$zIf=8oQ&V1r+&qfep=B9bc0(5yceV4hGTaFe&t2D?`(RcpAQ#itOMw zFoxE&>|nWp)Dz)|>h8ntnxgUK$KVF_Gf?H2S{cwVf17c4+>kMEe8`vSnjx;%jBpi> zFw7px&Zi&KVmdBC-F1wj*1u#=4>Bt-;L1U!zD(`9~JiS`R#qW?3a)($`>POZn z(f8VE&T$?}kH6L|zEN3W>d$}vNYh=>uY;Srjh*rD@Jg3|BiL@bSF8OV$UxRY)7?(| ze{!QJ4TXKHk>PMRB$3E4P+ptMSywVjy!h(GCyB*wCQ+Yyd$t=Q;EL5QC`m$ptsGMr zXn>!PU*da6Bt0o-9j5II95P7bNp>M2FhP+7`~e1Z!`vb5v6X-)ne&dy&@CjTw?+hx zz6sCgm~34@y~-&tMA4p4O6Lfs{(U)JeoELWL;9JVD&GaigzRd7)&j&dq0q-O*>*{2n(jMTaQNSEOR!jXH zOA)IY8fKNHT0M`9IhFcieC$g}{(Jfu*X%d`MyJW?#k=8_CpV`G}*dcAa^GnxwWmoH`@ z${rteh$|R7l#C@Ao3DLy`Q~i?v79isBv+RD;qoDo$WGsTVg{kCE}Gv$QZrQ*S6%Z_eG1*Ixo`vlSO5;nsgeIu zhVyYFrK_|-5hRB37mYcm-BZlv+nZ^+t9wu@JG-h`kV#5@swZjkGiiWJSb^vlLp)s} z`Zh3#z9yHW=1@8pdgx_Rf3gAy^Z0Lmav|2)gyW+I6sBr!BNR|t!SA{v0hyWi;>1o8 zAAvVnG3Rp)-DLv%i(ls`@&5Q|awqLxZExeoaZ^t~KHQ-%?k=O8*ht8cSq``KtDFx| zX8?1?8}3!Ar!-G~>JJ}Mhf;sNXQz{PBsM?2ehE&E-D;Q-hS;%Le|fLvjCl~7E(9?; z2MFsmEItAp(iJht#re22bVCRRO7Ya@nE6sQPwJu#Y z%(4856>VC*6d7$RwpA~Y1S<_CjRkk#sVg6L43qQjhU+OkGp2CD@pXWsdLp*kbyH!j zZNK%?eiMP`CHVx8wPC z9PhZ@a`WRyk5)8YL)>O5pi=!bN0K1dO`W>|$KMq*?oeEgnm5WiS`17d2Pb${6NPnO zqc}6lo3`t5e^D-8LTmKf4jU4=Zz(y_ZtBRcpltKDvoI&AmNUbbUsZFR%}Pb7I#R>s%sBAdO()oNHyCixJIgQ@lh4N+qZ*jEE< ziy~ciqQ$`{Ws{k|R`Ms@xRNjW!!i*?iiI zA$654Ymcl;2vLk;@QBc_aspgowL)bfnQ_rbIa^EvYB1lZaX;1Tv1*1~z35^ErXRjS z3lKdlf9gy>jl7^N;>u~wIEp!?q=8^x1@U+?rHDE7}T4&4m zOLb8pZ_8Um<}~*^)Mn*D-5h?C>c;<=dpzrleotXL*I{5odIns(>)%`wTJ5Zx0}U1K zH6BvF_0`G0svWzrj-Fz#&BsTX0ES$g0VW0Q9M|6dkz-78X~h&)5>w~9p+!FN`QxyF ze@k@|z>nR--0DQ@2HqW*j;!%JO{jH;65tTItsoxP_;At@j6q@pOuM>f67vf+dVyUz zCKOdV$2P@&7GM_z^bJl9jYwEju1!@k4}W5?aZ-PYyx!MG*Fp)q^3 z3?saLCRpqjDp2cPf+A)f5h}P z0?5zaD3C2QLf&`vwV*l)od-8J$2Kq_dab^F-#qc67~$oJ+12+mJ8;}vPLIfLj;|_I zxC$N~pM%t$tH}fppROQ!1IHDwhz=AY9*j4S9~tN4AhIFbCGFbMMBh-m63zTu#Om z<1c8j|~qJB{?J`8Wdp2 zg>OgHZgbPNQMfBV%(Jf8?UAljf^WBUL55x_f-V}i|t8hf4B4FM~^TJ zNmqcV$Mer1{0RmeNxFfc<*XeEdNy64dNj$$;<_P}ndRuvpJD((6PQiV>1nHovqnFo z7EP$Ld(DJJhaRiVQ#EMTz|ta=rEEwW{K`9n zujGKMbjJ=GIMJPSbrbi&e|=1N7$j{^a#u`hIqc;R`^V?6`IRz?_72F9DL;d>JR`gI za0W9M;gmBv|0u{p532|~=tDv0kML4ZRbn)FGB0Qz>*eDD8#lKXum$^u+CDaSe$8na z#G^-RJ-rv`}+c ztjCGvn4eXc>T9K5+q!Hra(FhsTy)mpq`~$=Q3b!d1nCo+SK!G0!joZ25RS#qA@@ znGe-fS^*k>l=@ncfrk}s(-;oxk-tYYrIk&3D?5$bzCf3Jf7b|;V?OAWM{V6b<@tcP z^nnfb;mu4fuaSp?LW+Ps-$`v6WNaHI$BKFXDC^zfAHXPja5Q+`KLg=>3f{=iirM^9 zBI%w?$?{5Ryhw77MO3?i)4M>yu@F<1p_$TrCWLIXLez#A|5SP&;JHV+1R=l?WYmgM z6%hX-o0kCjfBj<4{?U~?!1}JJ(~X)b(5M1@J8AZYWFqORVGnVubMkKMiuAe z;KZHiz!2c$hj7v8>+~rf#v6dhXC@(Jv=|;PB!#Bgu%hC)a6eK9E>S9E1#Krs2-ypD zEpJ}1e}+Utav$~0V2@%5p18^euwxVkZ01NkFA^@KWlXw*Qo zYKw3E3VQIsS_f-_Iw2=e0iYP{xO_vjdFCLVxj5_avOsnJO`cH@S1Sj28#2kipZV`& zlDy)USzxW1v#wm%RKo^DhJVbuq!9 zf4bSIJ$RD#8^GQQ;(Cx&=rh9vp=2;xCO`;M`!Ec;NoWTfhD(ZWdF23coB|MEAXud zb8y%{2;pym;Q#`b2BR+Z6-p4i3I1nPe|3t2?H;!p5)RZ(QVxd;d8nLl%SRmg8oc+( zqZZ1mR3x_{cF4#k?QBN%I!(AytFh%-spGF>_kv|iSsk^KT|S(t=8N&zT~CrYCdp{Q zvCRn#WPjvU#?O?oT zJsBg)=JGs}DMNlYfCa?C)cH$$`?!5inpoNH^kiUC-Y$^`c=|Xn>jYdn7jwvEMkhPo z@*JKg=!g*mtIIWAe=waT=KlhGsq1tb?kvUuAIPvm-W_3@7>ZIv9$(Zd4s~?B6k;Bb1D<^ zy8xK7YU~*^JB()+^R0&w>U@r2R4`^3H8VbnTA-wbPnSf5Ydu)V49ieRtEQpjDgv2Dhy(7E_zD4U{&v}9(8({cJg-bhN^7?kx6{j$JtMGNi2totapn#yR$_o+xZPm^e+&CAh40q)t(LyV zzFR<=(x&e^56s!mU@?PxM--QcUk~Nbp0MbGZ(pa!--8zr?eyf$yEpx_!&6B#KTc2j z2le;)@tgjiI`HGBUTBEO@1_? zJn4MPHr-w%e`vCPMH;MQ!whU?@b3iQqs+#6a*53`1B|k(48u2&=(WvS-;Z^>gq@9H zcRpV?$|=T>_>?VU=-&mhRX0*5fBhCN5v?z=+*sltJ1Q0$@%XiR z!nm@!XqnB57K)d0K>{ED@=@~ZU~hEGiNt3qbi4vbKjghVU0#*5Jj$D&f7V1JD@n&U z?gq7VKuo?_*2v&14n4S4BPx(LJ4Z>`&L0QD3k&IF9)OyBdUmM#u{Ic5Y*-O(76{&< z));T)e?uDxKY<2%d~D|s?<70hx)L>`ZdH2007*c$zuH$JcN*ihXmAd85oj)d{-UmjcXGMl6Qy7x1ZNodwfN4kWZ35&D z4rImjvVZV_@=F&yne*)xcgDAwIF75e4M^gMFh29W(dwpc4U?Bm^|b}SCjXWXeED+B z9G}lbgm|&EZqr(i(#cnkPLgEo9STSZWjH)AmJ&#TMP-R2d(bNBR=HDoz%EtHB@h+A zz#*}^mJUV0Zz07 zf_R$9neDP%z<6=Qb%_pdnVXSd-saO$E|}B8rEm(aYE%4Ne>c<%r&@<=XmWY z9~r{^q-HT*FESuHE=}Buz69I6IOr095+96h0Lwg4NJ~H;#L;4S*>iW9bcJ#;Ko?cC z5%T}VVtQ-cEU~=&r_vesf=zLS*P?hv)jfE2`26Jb5GNbc*DSsnt{B&Vhh1>3(0}5% zT0<1q6f;?S&R5ARGm{sU;>9v;l%r4}Jy`p947T`FW*$ZcDsqv|eSI=Fx+Yl>(XBu{ zmovpzbR&Aj6datU57^B~^fAGXwWIX$4p-CpuEEVJjvuoA50znudKTD5)>BtPxr7)u z%N}XovaE%$>)Na$jp8-E#x3C*QdX~Q*+GI;Jz0On|EbUtd>GPQP@!LcgIDwSyv%+f6P z8a|ijLpcNaX4YyBXPM#q{7}IKPRZc^*jfaOBj7d&hyg+l>774h#${Nw%DE)Nv+&F% zC^E#mplAWlK>#onRfug2_{r2c*xexB@e=m>#EowgNT15wl&RfzR(jg3aJDL`IvZ&Y zkTBY`meD}VfFsu^GjW7rTTlSO})w%#kNFHfv zGnrJQ`aHBslRuRUqz|e?amakdSMO zk7%QET``l}R~4?ysu1-r0~qJWM`t%pK>2h$3bL3|^*_TapMT1A{%c_tlG4BoVL}El z2KCM9$@%O1^fxI#YDWNYY6Z(yttEMV1=`hM$zw(bN=XY2F6+-F%)%M%@A;ZApJ*GP z+&P(3Ki{#cjs%w2Fs16v3{4p|HIO$m7?Wp4bFTM++;^fl39f_~pSWgM2Aai*dBfm(8buI&5efZwz?j-^f&ac2EJmG4`ZOO z6j2{kzfv!3-T_^eq?ZwBJ`S0)M$hpA5gH^>FmWaqZ~sbVMwX!EED%;8*>QoVd~1j~ zt7EH>_5)N?=5%)2o48hihC*m0pUOh#X|Lc|%vy@PcYkREY9Ru4QDANp zIOh=!sWxkmk^~8L(@=6VQW{|-k*g}QehZ)Bj4_Wz0ww2w>m}P!lHG?p6sumCOi^_c zn6~18CUPapV1IKrEVBuToDem#%$v7$0b&PV3g}?;UBiGGv7nlC>PHh)f#GgOY-+Ml zK&E}?m4Dh$b9+9)XupIeb`BdJ=GAxsB~3?Z21#FgkOH|Rz&Qs4u7NJ$O)(y4@{hnG zA+Okjhmwsfk)%_aB5@p9(``Oj@;uVN_+suKom|k z2Q?O>t*(@z*2Qzl1P7uV@=J3?A-6ED-H+|Lg<~`6tD& zyryksKE24$8mGam=W}2=8drkJjlFwz`0n?8h>){K3?+eTpB*N@??3$d(Qi-tuUT=BUY~Be+-)vWDS0o!i@4H@ zf!-gDMjbs0&|QtRnZ+!E#1HDUrl`i~j-9+iD4z&Ky`}EpO18Kp)4%FL){Is$wsmbx zp7^Ybq}m!ss9oa{Ws>z>@q6|UNm@O$sDG`+<=F1Pb;AP5D2U;|>+2jx28M6wgdpkG zY27kC|3PjS@s{_!V^nFG3|v=WGXzaV)CABl*wnyU&`O6Zr?{(+^hz_Q`FP^FE^Alh z-RmZqLC=!Nxn0zEMjosSDgE^2CTyiSdpz$lf+$Y}42J{sF0y6H-sEnF47@;#T13Ww#1Eo<) zy4^BrOB9D+v%$9Rb{vqe#5@O16=Op~^JLv7o2QeDrVgqMJv7d-;2{Q*gOq4tHB#sx z&sd;WD}($h`xdxaU)O#V&Lm*nZ+{`0$W|OtEH-e z_Jf>lbM^LHPv7Ox(wzS`)Y!~(fXC>{JHt48X;{_OS%ee;q$KYIN^DT9 zoDS;VS~M6C`I82uB*T{5~VQbl>F=pb5_l zJ44J+L5v(v|4TKyrbbkqwJq2~5w>Q{OKsGh7vrS;7wCKSIo2k{uLtpl>n7oX!5joL zkJLVFZ=3bPx`BpPS!+X=ynkmUp8amAGa|EXQX3iY=hYjv2Qd!oc^vVjR7$^%{|F`X zpX?oLb0anE^D)DJ*eNhgAYIz>?oftuSD-*SrtR?6+HVMW&3 zn{3h^Z=M&gEz7bj%d#xl3>flU4Iz4*Y^ZC4mb$; zzKuhGbIe?w3jqNux8$+`{*?dR&xzz{u(qx`PqHEE%-ExGG%3%0DyE=}xjd$#LSMne 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 W0000004UG`laa6+2F}s~0002?tU)gT 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 488a834fc0e82c006c8ae69292108e160123172f..a74ce1608cc8493fcdf0c0c9cb07a691ef8c1d0d 100644 GIT binary patch delta 540 zcmcb$Oknpd_6@V-g?7!p>kz-Q|FP7u z5Vb4WbysiAV~fs&!u>PXh8IWVJ~J=x=9pAcHoNI$xdOxaT#>b{D>!sG)rD3&6?k+{ z3gMc5oRjBwb6~xR%zO6w#}9vmyxi%NGUK4~wb0-j`e(0prLQ^X`{&cGj>E5;W_m|` zJ`?b}!0*QI1I2Tjn8dke{do0|X)AN7LX7iV?*Qh_mxX#SB-sC5Se(|Rz%$!GSZP7f zlnXws(VFvA^tMOH=5(Jssee^z$EuEyeP88_8jDv|{@HfQZ0&@r5{?O;TMO$CTd>A$ zC~w}Ct=Y;Vf7bPE(QgB{Cx5(GK6KnK5Pg4*(ZBy68QdD5)K{{*3x#^~U9tE47*qcy zlmC3~>N!kaMv*e1S2s6bb7rf&dH4Gwd27yne&JWGif3J4rMQ7Le6z}|B|_;c&kUE^ zX++-snSFb1|J+Wq?qkRHFa~%tvxqP-v?sVTZBKA#W<14@7DLku1X)Z)kNo&|P5aVC z#>hoF3O*O1^z>bVEV@iqil7)2nf_Oh#fe!)nPIw<5Q`D>%`=SC%Rvl_%Z$_42mz&5 cTw$F4QHaHrS>ZY3bW33tX}0Sxfr)?t0CrF6qW}N^ delta 142483 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�}E*FvJ?GRMVokT^~~v)EHy9z`uztYyh+# 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 z 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%0DyE=}xjd$#LSMne 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 diff --git a/Moose Test Missions/Moose_Test_FAC/Moose_Test_FAC.lua b/Moose Test Missions/Moose_Test_FAC/Moose_Test_FAC.lua index 8e51ca4db..06a36cd72 100644 --- a/Moose Test Missions/Moose_Test_FAC/Moose_Test_FAC.lua +++ b/Moose Test Missions/Moose_Test_FAC/Moose_Test_FAC.lua @@ -3,6 +3,7 @@ local FACGroup = GROUP:FindByName( "FAC Group" ) local FACDetection = DETECTION_UNITGROUPS:New( FACGroup, 1000, 250 ) -local FACClientSet = SET_CLIENT:New():FilterCoalitions( "blue" ):FilterStart() +local SeadClientSet = SET_CLIENT:New():FilterCoalitions( "blue" ):FilterStart() +local DestroyClientSet = SET_CLIENT:New():FilterCoalitions( "blue" ):FilterStart() -local FACReporting = FAC_REPORTING:New( FACClientSet, FACDetection ) \ No newline at end of file +local FACReporting = FAC_REPORTING:New( FACClientSet, FACDetection ) diff --git a/Moose Test Missions/Moose_Test_FAC/Moose_Test_FAC.miz b/Moose Test Missions/Moose_Test_FAC/Moose_Test_FAC.miz index b43b091cf39f98b1a677f6797bc2d90ac913a606..142214b84779d081786ac87e100caeccdeb7cb31 100644 GIT binary patch delta 580 zcmcb(mV47frVYjZ^}A-@^$7o9q+iC!z>v<&z#zuJz>s5Tkf-nB>gE{g6Qb{%pI@A+ zms6TJHQ3hwuz|o_Va@*!pDguk|B}4oikGaH^eV3{D?KCxR%uPXVKON>yzg++kM}q7 z8bz3zj$ZtEZ*TeeoyvbKbu2{fN_O4VTl3hWGof(*%(dag5xLLI%j>&2CY6-UZaP`6 zz;HfSWNqsT4joQ)q18?W9^I2dxTYWH!z9BQJ>EQ{4Vgj@%upW+$JV*u30}`J!IO-T&fV`Jl8vbdGlqV z-U|u#e-{>~H7W4SHV{@?5H#gNy-#bj<~$X>?Gds$-RDl~Usc+%sv~6IS2?4`;#HM@ zww*FtJK?H?V}j?_!owDAzUggSm<*@0T?2|5O=OsEd<`f%ar*Q#dzoaWFS*PlFx~6|lK?L;Jum>%1`u$r QVwk?+8k02J`ZXXf0By7R-v9sr delta 142504 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
bv>7odk9 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 delta 142490 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�}E*FvJ?GRMVokT^~~v)EHy9z`uztYyh+# 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 z zX(ADvTC&L%V8&ryCLC&03s^0Y;p@wM%F8!9X~m%S&@#@zAPAA`CK45qS_*6>DZjD% zJ_lOX8153ye|&`YV&~7fOmW{zv6VYMW-f2>WMQ!Y9#3OYdN^%dn1D%P8q)f9u~(N{ zua@4fC~k^~Dft|LHELTh^b1v$WwkJ-DI9Ckt}9;*AYuh0XfMcXR!q@s6G;h4XI%Rw z$eH-bsCZ81pZ?j`;|=N2$m{I6*2&KCr$01{-a0RDf1W|aTmlhnkA8qCJ90spC^p@9 zWVYeA6qYPwbL7soebWj8{-+}_8Y-}yhQrASwyY)8*ASUwN!W@+SPs9nSZ;UTvp+w} zOtf)M)88&iRHtqQZi-rDxT@=T8=a2VYgf1DuOx6Jgmpw41$RT$g0B-%%rJ+f{WB41 zP+Xfxe>8UfN*tO_*P&*Tr2^F4i~y2|-D0ZzaFm#i&2aN{@L4!E!v&Z_ScjdpiQtc0E`ARI!_j*dBsO->QD;b)6}PALTi`=6dmN1|adl?RfDzkp zf9bgeQyqhd2E+PX&`?O9z+-DMY&d>zi6E#2e}bO`O>w7V_QG*d60g^2K{qN&Z;{#J z7T8kLv3*+WPtK>2k*fe16S)dtQIV?v7ZqJhL ze;vx1^%QZ}_UPTJhPK+GA+5vBwxo(7{>0RviY2B1;#nc4^8-xTAv2dhZ-{2RAj0vQ zT-7DHX+*Cs%bi0Gxm_JO*(O~fP2+A|F;(Ie09Q=bFlz~m9_Tplnw%C57j;;T*c=Uj zVc)z1AtdvSLo}(o;SfMq$RvP9Zv$g7f38DhG+ljk>MCm&j#ph-F~og1o^F0wCc-XC z@fY8G)&x@+!TKkSaM$NE+7*K|B0G{XQZYa)?w(O4#}fkXR?XasECXQ?dQd6 z*qZrbZRdC5=o0?T=As^|`&^m|9R(sk(1y6nux;-eWehKo%L2tLP4MiLyI<@&f3fw2 z3f-PX`Xw8U&k9^O;HB5-5xB%)CCXP*EWUcK={#koRi4_v?66XB>78YFdH#_zn8Yv_ zVfvS_y1-e?*^Y|(VaO#9Gip-O+m}D`IqyiR#$XVcmU}YQI>Z1tTDJAwxFflaCZa_w zjmEWn!1#wyP_9x1jok|zwsZn@e`RSAUZuEMK*gUcq6%j^$l4vi0ZV0)W1Kz7h)st_ zxrGA3>ELqRKWE55%TpQ`n6$G9OOFQ)4J!hXp9+K16q3lv{;H#xBrgUP6OW^qd=*o&Gfq_ApR#azj6g<}&}WUja@ z_2ptpc^(Z6YoW)2CCSQce;AgapuD}nP18Nh$nyEHWFe;S!Fwxwl!zf z6n2+RKCnDTIa@g4-E(YH9c0nbz)5ToQDC0NN!Foly6~SluhHwIzJsN+xW*QX)-s38 z{00tGXVEqnzAYuA0da-4QwoWQ6CDsJ6$Ptub&#zLk1B@HeuRy_e*w_8zFD-6#j6ul zVS0jJV@`g%n4B(XUb*;ENydR7zIPKX`bbMC)vGb)*Eb8hpn4%`rBIl_d4{lL3STwP zT2LarfZ92}2=(oDdT|FnEFT$v8XE!rK$9SSqxZ1vq#mb*0o6TRWu}chRWUc-(Ft!> z)kxuZM`}4|N@Yj9e`b*$AVz=T1bX2FdfuHtFFZg|>!KGPpe2@6cj*E8Zj8_mQB5BX zxfx)9c^8J39zD*`eHFf5#m{*QER&GxZ!9*g*JS=W?1eAsPS#%w`;xvJ&-W%Ju@mhV z&ZKyw`NEm>4?C0Y+!$iHX}vo0t>Fu=)SX(z#l2GBjbr>$f6<2Vgbvos`lFJ&a!2tv*~S0yaHm~T;P&~KIHhK}rH*qraXu_hie2br zKXps<-4plH*d&2CY_2)IA~|B2c|7EYEij7eT~0CyosEqx`nN;rGK`Ktf%{iVXVTJn zxbZkU10lo5e?@k7Srn75E%l8z-`Uvc^-KZd&qm{x`0s2$8+Ezl*WUqBmKH*^qXmQv z9b^i=m>r_3CBR@=*4gT08A93LRH*OJ^&$Aq7r{{KoYV68G4qHJkZbjH z7&2q7tqgNgf5}WeAeQXsQ^-;8oe7<1aBaev-r#8}fAb849uo|SwTO+kMZrF09-7A*I!x?0|L4N#APXT#A1vZ0vl*U4y_!)LdL*6iDF z_lxuLyYKM|G>0A!&-hnSW`2w^@mqz&>nuW{_wN)hsPiY0?ba!U%;d)-hc?c zE1L3Ge?CDTMnzVDl)A(d*q>k5fPy|Gq>xpO<)O7b{Cf+Z*+K-QC>k*uGuOJhDz4Md z=oUeDA=KEu^43W^M>pe>5&h!7j2@U=9+hsdCBr&{Q884aot&#g2i4H^1g}b}CZ@wz zB|(TGOSZMMhkcq8e``88GRdGA1Tuq|?_Re04Lu!mLyug{re#G2 zQ77RF?a?FWGH(Ggdo9SxhqrXRzd^y4)+o<+BH3*e1%*O%L4X1OwyArq!S_wyN!$jBo52V}dM=AcLarESLF3zJwTt$qaa5&p7M{j^7^UL8xnUclhc$BgYj!}*_ z_5_;;_=Rs}JL}s}JL}f2$AU#MY;wJ7tXSP-1;vLOD1V2Kxj>U?#nY(|<4p zC~0ogYuo!y5fjl|ztHZ^(Z`3$?&Y8?^OC1(yfES%1e1Rl#lDn0n4q-)$_d?yQzk=t z5q?;ILfQIQ_lBcs!I#g_P0W;8{)AgV`LsfW#=IXO(w2 zIR)_Pgy&fwO`yGhg?o~c?q`P|QEO1`j?H}^Rl*P793Jdp;>#~RAeo?|YV*|e*$-QIhY_Ef-&&!;r`(f!ag9>kB|2D4s;Pm{f|H1JF;*v zqdz}~StXUYTU-{C?BfZnprs6W#vT(YZs5J=8ZR*fkMd!i+$0}X#J+^HzqP8p8AI;N z3+Os^g1=%yMe^`y=iuWS&9`D`9!|htP$vp&Dohfx_)@hHeLIFIf4qaO_Y7L=;GqXk8OZi1I56{a58 zoY%~Mf@@jG%O~~$9NTw!$%oo>dVzTZHf_QP`IYyfhWr3No0k$&PcKk-V;`p?M^%h1 zyK?~v9bP$`W+5qT5gPsPb^C}sOIieVU6i9~^(N22SV!XgfBJe-3{LUxs0utY#Gd5W zFalr>U`nA=TK^2!rM!!%QGzQrV)2*H65|sl%Y-z|L zrW#baN~Ge0QnyJ%>^TiLnU}bWhgGLZfKo!f zfd_KE?aXriL|_A+HHSC#ZGnzQ=g^Zr$>9NoDGmaVzP_%}YxWD;H0&g>)-xkLhbdCIM2|sfs#25L0DQ(5_i-Y2x|7DVrFl!YTg&>yXX1S6%v$wm!}| z8}GyGkB9kh-5$}vLNozVc%8J>FL%&PbbGbJ?W!HdJ70lEIg2^jOiW2;wO>Q5;ubN4 zeFWprfA4vs$k++AuLz2Sc)IiD0d^996K?H~uCPOGrk0CHUh8}7EffocZ0CuNda*)D zn|eD0{)ac(e{O#xQ6p6MsbCi;Tmzf)<_xq6*6=vWaLOd5U!KaSUdk3Py_SAwCj|d){Ej* zrdo&g3^i$X+XFCz?Q>gx(V;P)Un2GqO!F7unj@W=u3ur@?)yN78>L@3g{)fDf2f#l z>BOBC_i*Y5K%V8=8l_#rSb0IP*zyTY^GYZcLorsR0$vT!^_eF~lwzp)SJV14o4zHx z((J)j7hCNa@huXh&K&v41$E5gRL$<#%%)MC-GGFk>*vLw%4Xy|WB#EH6dy*k9>v^N zfB@5W0t;TP`>#5B<9PAqt2w4ee^kBw=9|e^<6%m=Lt&z{$4c&d|sbHje5$H<@+CG`1VZc|NqE+7sH!$8dq<8D5-F7W_mn{98_O z>*@wHW`cp|B`i~TIg#{qu)GK$bEE=#ve`8WX2l6~_@?n46 zhM9bL7rcBvM%vN}94;lhXNoheGliFR1>$e_wI&+8t4$%<-jc$~FX)1A) z|9mr=00~u!r9r%he`y?};}lp3V6!VGsD{c4d1qM8xS}!`-Oi*k9?~)#%i>L%>h)HN zG0gCf2!70PS=+Df5VX7n(cHqgWOiT#vpU>_^{O_{7UH+Ql?L5i-S?iftU3h&{S!5} zrfh}EXD3Sl8aeT^%?By*Nqz+<%cd592bbi*+(~E4No>oB={yeIa3UuX z<4XwIg2mII?1pK{w4)JMBt=m%y!HI8K-staFeQ2x%59|Qvsy4V(N>RJfe;!S!!mF4 z?q}=8uw4k#f8S0RgGfTHfE%k{UcrvaJ-p4Uz8+QF(a5W}sdGq~JKq(Ct>t3`cP?#t z9p`!Mu(hRnb&Kq{0De81~Ce zD4cV?PWa0X__oTr!ltpjjSs+10ig*w790iGs!8n+&$3sVT)^-W2+%CU2j4(DhNc>g zYceE11RiF1HaPu>k2erq6!rlJ-}(xi-y3B}6YUCBt-k03Is(KBVOmz3Q;&a7M962| ziH-zHe@m2ag-5_bxBgIeV-R2iTfMhCpP4jyX9F*%q2N5smq;dRp)i{x`5@vHDGY(> zHV8Azq*2_E(WKY5QvEUFHR+@@C}{4b**z+uT2UUPb{PSp{-LkQ@1N02Kpq5_aLDLz zAeUuU#P%Z~WvO8h5+JrIFSCC6bTFA7o)JiYe|!WZ(v6x{q%|}2)P!Jgcn$EcKelY2ZGw)1x^;L`w3McR{5J^>+AXdENRp)3gPf__%~lD7ai z6$@Z6JIge_#x^1lFeu8p@iio{W&yn{Npb!0&S;`wN0`EZ(j}V+9132=dtVjinAFf}MI%k4;GV5X#7uWLH)XW>c0#&{Y!u4It=rrA^6x<3;`NxO7q( zzb8FSM5~~X(&>tzn~h|JLFW3~SNZR?e@$2=h#|p-8V|E)H>1npmruJDXDO`lpwCkL zBooto8lpg~VzElH+}$E~I_I{|7|32Mf_glX4?aBHIeK#3f3inw zeF;hrk@ceP?|pP4MKxmXPax`}tb&{ku`Qtb41b{BA$k>n?+Aa}ZI5-Zx=m<9e^?My zD&jCo>lUmPt=n-aa)vQQQCic^<051ak!zpSgx_BJNT8kg*A@`}+J991AMWgax{UM@ zKO}rK22Rop-4_I%`k&SPkB$xxmePG9&`SJk3yA-}s{1%%EF=A0Ab7O1-&wLg-ipXL zHkYF#D&m|*SKpjbMr>FnR{WHBe_;3KGXKcT+`Bba3nZDRp*0uR@6Xh^jA<=-%T(Za z_mjORpYQJ-$)U4!fdULUwHOTVP9^xq*}qJZ$aTsRdzrN8vr=AeYCmHRio{pB@Js5) z6l)8JAzmC&+}e|m;eAyD;Oy#Rs&i+NuK>=OQ$XTu8@pj#0y3wu7u)2=e@U(rWPml$#3R< z5Q{={34;td-c`sN3^u0_f3XG`1t`<`#pP|YpD+=(w*(yMY$jb)>&W7KhYnSy0&)cE zo|lf@WLHP1m3LF)yCbCb=xa7vqoc;S|g#lQk~;AP2ZPd4mX#anQVN6I%B4GXt(8;1n3 zS2|(sfWtZ6fInQY$t|fW$Qat&OVwV1r}s|$yue!Pb*Ss(rJAqCzY7e_^zBA_cB>BG z+NTRRt=9FGKR3>uf5;xKHqONLL=aR@6AYEig}`Gy3;P&c7t9jGOhr~k&sI|tq;_lJ z%@Id3ptWssL~hgOYpvUSt$mxX{qNfRLEA=0_w%A{Ub(L0Jg3~v+xShx-CQtq^8d1% zw`y?ocrV<`3Asg+ueEOSwf0T^|Lf%~n;eJ#7cKrTZ*hs~f2vwf?OS**6^!3RP{^sB ztK=+^53 z0)yax)%B>!aX}ZYp4<14=$2m2#LIJagit<4-=V}ThR^B<+dCNcLo54&%mP3XQ8|3e zg&J%oE=}0$|^b}-8H4{SU@bv2UoiyETN5oCj}cPVg#!gTJgHuB^LR2p022-*{=QRi91l-lnFao3o6 z8M0Or2k&W7dELw>POK;^yT*YYCsh2H=mf-8Ty;5bLPKNnM)DXg{9fNoozz~9;;p9m z`{ESce^Z_NP!$p;`^N}NoP()Oysgyr+i$Jbj!HSbf)_tvknCpmcJ>$*wboOj?t^7} z%(Ia?t{v`cX|hev;~w$z{rB+K0_8G5W>{Q0(XYM;486T=GDNo{6%F}Tiu z7z26E9z0ury!rTtQw@c;+}F@ICFeIx7X7T!Z&mtjm3{?7F=jdUYg7;wFJ4VZrB-9g zLQu3tl5>&M?j>bxaO$7c^sajQFB=SpbrtL;9{ZhYsq!=tFJo!9omUydm2BwM_O9ZJ zf9#KI#Vl7gC)e5}`cmnD5vi_}P2BYgL+}BivfIGY6IWaH1bx@^JBiq@8Q z-Ile8Y`4x_)!%>MZz}lQrd;w5; z^%5FBe}gOXtWJgBvMMi%U&r=Dj-_@z80VM#vhcY6S}#8eN@ss*Z9)o$Sn%o#7z0h7 zybmlwAR;fl+DC5eqdjtjNIwO8#dPYT&Oq2k#Oj(Y^WaWNQ0w#lxI#Fk$BOtxe;2nk zGgv|XnZaS&X-*G`$r&okOFSQUU&~I%8FuBCZ`7Nz+P{#^P7+L@j=xuRR&7p3} z9El^8?RljV!sA|YTt_FiEiZu9P8u`BQnGVt3vxI&NnW?w6_S-bk^g5V7@~$@Bnu;W zps@Dk*BOWaRH3M6-CiG+8hOg&f07?M=;%RFeBoOaj;j|NB{5(L@(%tSFm`$gMXnNabv&&WGM!o+V!w zH}rszRXou;5O~#`U_t0p8j4f61(GSNv}H%E5mB7v<#mqlR^iXn(KTt1e|jY;@FbI^ zbON%s?^aFmH`@rCohj7u&DFDfV)LHd@MC=Ztd_|ejjb_5N?-yZ@Dxg`_vsQ&Y+nwO zXR}OX7G_!6x@({R>M;ujEdT9#0+81F$r7VkH}y_7nO$LOP;!fnCgqd_gEbT52{{Gc zBAP=zZlUN7++fsr7h7rge@)e6Dh))2bMQl=pjZ`|vS~gs8Q5EK=*$OXG>FHXe-0q) znmckzqsrsA)mQ>}-1A0fBl8*~J!RQxmI3$B`paN7gKS$4dAzAGaI4QNY!6b4Gy8^P zCuM5`y|VM=XzVb-9bz+B*@OYw)l|ylgnKQu)}q_oA8b5#=LCupf3v)m;AQA^2gt9* z_!ZuI;1&RZa^|l%fr7X~a`BX}K$*Z^>IfZYi>jgBqNR~-@o2lyqU2~<2FY~}y=;05 zaycDy5oF+NpJe@VC=e4T3HF^E3_R?MMO&8jXYKg< zmpHE)7Y@v*w9m2pn&YO@qbZrc1O;89C`QxE9JanVNXi3KCR%JB|z$&v75 zhhNT$9xbu*g!fqH5vTcj3Y1@IE7vOHiC!KjF5eD95 z;`|XjA=jzpe;a$XYKv$GA8i@8G zH9k4c{0%wh>e>K}mJ%rsMhK>3Nb`lOy5SF)EVf^`eU- zrd!jK5_VBCs!neqw)P+rR;94)lv8m>u`4KI*pJJ}Q{P<}f)?3J~)vzw$B@L(ue zAF^yqvMkGT1s}oIqj=6qmZx|Cy8^-Ymmqb@kn(t1sWvVnGd34CG-OfA^lzYG?c&vEVYe-k(9P;M1fZ9^0xq znni?_b&hx=>15J-@1F`A>)$<9V;y^YtzcVOwCHwj#c=Ey>XDYoNY5+??W$GqUZ8M? zLsCIN(DPWBa#m0^NhCBWNa)9-&lqCXr?H=ZvHyj0Bx??3bv9ytB}FLkO{BtE zrK3(cT@-MhtwI;`{0!tLeqI`7OjDE{e~4KcpYbZXZ9xm#{(#O~f0NT-XiLn#WVY=K z2Z*9*R&l(gvpb>Z{?GGPAQ;bCnY5Cluywz*i>}FUVq+4 zaOZtM*35N<`a8)mCujtYyNZD9PYuEcpK>_`i4I_-x;}v5Qv_b+O>r2`rI+0be~O{? zck{a``i8m1mRXKfHGfrR%%k087dtLxsJ48jz&Y9ZBpYGjwr)-Gljj%Xk!<-VLox-r znYY2gM21}>&+iFoeC3D3cIGz66e-_&dkEPh4P~%skzd!ZV!D0-a=bF3#xROqQIbu`MxqAVfr8AKGFs38!a5pEg3rp zl+0G7HR|<87)4XMKHW^2ysvvXX-MRa))SsNDI7hytdMI-Dr%D{ukz?5f23_$ZaTm~ z)$w3oSB4qozOqh;1OIb8h;$qu0>z0!+wRX><;zBl8RJaBIle>^ud1tkA+0q_el%@- zevw^dzVEQO7b~w+qY7d{ewQ$1m>SwnVB@l#zRGiE3w^96v;Ex@fB3!iqN#)bVS5ag z=73wIpXPDp%}q-Bsy`;uMOfV646dYR)4`=pv4mXS;B^z7-QtU{x*5mhGs>G`oofAi z-1HA%h#uJt?}|5#G85Pu?qZ#gJ-}~e|MzTgG0)nTUb@belj0Wy7`!Re;8k6LPeCyj zv=FOHfcp!POOp64f2JUMhFIS}>g|6J@-3$fxuGOSERNId`2cfqeY31A(c2E?CDaRNJNZ7wi;8lq74O+m{$yD_u#w2^K0yUsVv z$*1{z8ighO()QESJfDDHZg7Yi(66FiJ$!H^hJEQYf#M7)f9Ji4+-=I+c`X5?m5fAB zg-wolA!^o=ur7fCXu>3V1e!CKu|3MGM2EJsGth&;DldfORo=vkbg5C`9MFvwQt8u8510z?l*+WO z#j`Zj&3W&G_8RP4&$H4WWLTZN9Jf-Hwzx{>ay1@g{79dv&3f&tAH~Jzz2i zn$S<$#%k5{tCVXR85De`J~TCjJr+OcjW{x(FU+7}1WD zUe`CXSJ-HGDkz35uGCQ5z;3E>I^*1gNv?;_gp>_Vnvi=3y^~r(#zHjL*-wGeFX zWX&*y+yn0mxsi{iuxe73sGY1reK2v0XM_icL|7%!1P+o_!a3E|T!a-Z7dgmVE|d>t z!;8T1f06yO0^o|#Rf&}-M}l;NC=Zo6zs1F?%2dKu@a)Y=)ZW0^L8AkOR}|&$)#S>v z0T6(+G()6pZV(;NLh(7(w!Fm7eMKHs*N-@cA@6*{{Hr&0d~28kRcaS(>A`L6@ce;m zVvM*6al&wDR(ViqmOq$W;syPrC2Z}<5#eYpe~R2spqj>_2+InGYm5|vklp zR}~Kfd5`X2UeS)jP)BRU%Uyymgn4U zkR&d445tX}24qPXaMKw(VSsOPiFSv8e=?Dq|1p1BT6r;vZWg5w&5~?JJ>B4w-Ge=d zq7=~%q(DeNFas4hmmmmIf-6hU#gt#+RB7+VwSpRBu42+bp3mS%-@k|DqI~;mfN8kF zy6ub#kw^W~;+ce6Uu7J^8KVLJiic@)Pm-mr_?lxDh4?zt0{8M2TPTfCa?d?se|EDE z`^2~nr68A)Cz)igpg~-TnMh~ID>J%LW&>52<89BtAon{prz;?t#wyu7t|k{Uv5cdL zwJcBxU{;uPsnaXSaZvPNgh!fLxzDOvIyla))wbl(H*SXc%U~@jBKoC5D7>u*Nhi2J z(JtaNz-pwpc}4;&Uj?#R{}6=P;Dy^WaB`;lpMnT1#Gb0RFV_$un6DRgVUL$vie>qbq#0j9U;_Hm6 z9qvXqxeTTML6#>RXN8~zuPbn;w;TkhZ!(R4Mwa4kT`$M@ynVZa$RNDPnl8?JP2nLq zdmCm-unqLE(7^IgF0A{J!)nQo*&J#N4%v_^lGNE94jUL8_V2@yHzBg* zY4?*))GEPHB(4B%EY$xtu1o#fxIyhNY)sg+#srd*63ET7CnQ!|pNY2K{@}&!4l3)L zp5jfGdMYn@vfZ=3F@Tf*PfQ8L!s@wtAzWFLrJ-^mZm`bUe=-2fFVHo6dc3K-El<{K zg*ZZ{%Q_2`5B6V=>KoSFjLz#4Z@F0)#TJl2kMFa5mW7P*-2{gCv_JTTA_*fe^8pCQ zFP-6F^VW=MrAT3;dadfvOIjUz$(60wrwS#>?dw8pnZ6EfC`s<2I+P^0uMfqSX;x*h zP}2sPZ9-i0e;fQEp0Er9Cc!j$Sml#XtobdZ;wyz=OKVk0a~*if6glIFIv(3;vni3DfvM~^NT4M zYon^B6!3IP27702loYbxo>yfFy)}Z(ug*s95CJ#l1&SKo`995H zY^r+ROW#w0xXvgnQ8gxyiz={}zhA5tE^$JJN-bgyO;31M7iyw+-YxG~u3itciC&sl(@=mC*82$pq!eI7}$!#ajBQRZNaKbHPDZbo|i#e)ZM!4qmN_U*B-BR)JL)RhFI-NpTuU(0QP zBE%?AI-ATVtgYPMHp!JYOHBU zNwRcDT|tk$9JHVcb+2N^eN3gzW^XMjh06a6DusSFpwbYf)vbp_CpSe)n>5CDfMt9) zf0rEJ&F;d%@>630`v7RN`#*ckltET8@eJ z)206>V+;_fo()P7Mx1GCS>`$z21j(6wKu{lFsNd&s23OF6cw@6-KTdZ!jEr!Pitj$Np2mHs%@BxOmy-c~7yP?-PDf@|a9e$kS7U zm_kAGAKq^IvdS;x3jl@Y02_p4*Db#nv(+ z&Wy*>e%f-D<5{_aez_epbWMDrf4xV?;}4G8cBHJd#w|%s(A&C{Nh3V)u=*107n5Rq zhOaZ_Gx4nU5c@1IOei=vmCqD8r`<`|Q2gPw=Tyn7GSI=127)@xXGo|WTZr<^Gv@M$Ie+H~ zo7hq2oQR(BK*Wr=SF9{jR( zaZap@Z}m?y3ju&RoE&khN|Jz=v34_-v*hb_t+^ZL8a57GmxImCy4bAYWW(LOen*>i zoJ3Z4wP|ReTG{GN6@Bitnb*a@N7+_^F|Dv?F*W#nmg5SaCVTjBGTwO#vVXg%#*Mru zt86Z5!s*H)NPutN<7gdnx^bVQ$5eN#RL2^@8pjC@mv?VmALjWm`6xe4lZ7M9BdbmH zYiwr2D>CI?zoET47nOBhmU*+^zmB`HzlP}?d_tvq4wyw zC89voM-z0x7X|>22fZsBvl+xvp730B$kgjK&-w-uO96l9reBpPmSaUCuf(U zQpBf+3-}WxU~g)Q%z;^>cxHrTf1=!}1j9RsWk&5TNjVK;m;}zM1AjqGHsf{-u_mk) z+2opAt+-VtiLg>=Y?oywl5{cDfEE1v>%2fUwP)yvaMstN9d9w+lKZ&<^!e zKHFLR(~>t|;HNX>K@%8}`uSOs6~&cTDMY;j)tw`J*eLEGZs5oxTpqV>bUw;ZSZPF%|GJkAMI_+g)zu?G?t z1wTb=o`j*s3KkBe4WE_IP4bINMX5BWR&;GuQBNuUc{qzA8iup*hNhPz{sXaUsCPx$ z+W++MOM3t2dw+e73IA`UZSY`L_nBn3>hEjYx~s3M zPEvW@yO+0hza$9}<}c}rd?WJor8=-3#=QaJuh!wM(SLr?!}?W08b26k`4p62Y=ZGF zizth;yk$fU%X>%oVV^t#Nb&#^DV-#bvckNBpPco7&S$7GY|V3&*~E{(!ojQi6qV6- z(+U(|bbb%3j}J<58Zv!813_GX_+YoAB6EPknIzwlgSrE(&;=BxmnbL(Ae;^O0V7FH zR%08MSARW1Mdh@_(;clmG{uSh3Gb}Ym>CW~IXuD--s9tY%&hV7WZP`}>|AjMC%g~xNj^)D&{lt9cyBkE zfvN+V5J7o(w7-8Ka9&yn=iv;j6)vQoFacpPN`LtBv%q?JA*}Z&7nuv{6uwKWzWT6t z;y`+3A*8P!jpqu~Z)yGKsBm!#Zi(w|{DEQWumg3_Ilnp&933WIsu3!PvOf1AQGZWmNz z7k?rek_VwSH_IoV3a)8C?H8NeC{u-Nm*V`^f}~kA)o#O7*IO-VQ{`wdyU5R_34FV2 zEDmUJkSEJH?E~^tcT-VW!yF6p%Cc^63R(#GMfT^&`pGo=jhL4BG)=%~>0&a3RJiMF z->XX#dQ@%HA7m_kQuX>1))wWCKJAtuNq=hh1oAXma7zg7^b3>-G<_&f`>^d!z?yJ@ z;`L(2u~MN=vkPk9n#LS} z@=J$nnnIeYAncnun@)T@x0~`iO$8Z*_a<$372;&KXxmceZGfMsoeDBAQ-6N-lYHKv zgsaPSleSmwvurlVrbJJ=?z5e@lIpVrPT$IbtM<7?BhvC8Pm$W{$}f88hG|eN$<_#6 zsu|EEy`xM^4ge=3&R{k^wRhu9K?Q{k)yCkoQ4fO)rd4`JgcZS8ttH8=aDd#t2D6YM zdNB$Kt**u^O_;?tAl%T}YJa&WX>ne#NT_l2L~HH)5&0~fi&GSPAWsnK;x;&GS(-8i z_BUC}VPDsldGC&r3QCeU?-Uhh^TJRrZVb6-f->2oA52t2(ih{r7ODo0h=*V&Y8eFA zw;>eP!Wv%z^%j`IYckR8$x5X&8g!9wXL_CFRYxsr{-V^RpT9VFK!2Nbl_5tu%bBXX zDl4``A7w>0ujTWNrIl5`-$=Dgp&|-Zuiqm}Bo~RS#D%MQXz8(-q-dzIY`f^__YN?Z zK&e#G3`lZVE6KEfW*q@2&;CXr^;1ag3rsbUe@Z&5ne1;Xsj?t(f>k^1x6<0)JVB6p zfWEaQzn2zbB~Ua*Gk?=^O-|ksZC^dk?iuSzLkkNR9@#m;WAfm$3pfcFXK=Kr#vAo; zccP~Jf~R1_6J^tLe*TiuWGJUuHmtUyh~nKsiMKn#VOI9Ijur`H-)KWAm#WT1g9e=2+P(IPVAac}0O=0;c zOl0B&#uJn4$-KYhAv*GH2p1zWJW*DW0u5wG{ehmy2Y>bke5gLTTx|x8cn}&IyRC4p zG!|>(J`qKY#q8MKh)KUALgWTWq@<8$99{l4VB`F4Ek@TxCtWIlNjwXJ3bll0%s3@U zA#Wif$rXvP zYqlbllXza5m;PTfDQ301oX)fU{80+NCi$%Gn;KQc7kpcy%6|@QCELKy>8nY{BLU1~ z+@kx-$wcjJWu|}2W>&#$w!v2(P<%w>TiT?M7#V{0wtu4D&?Z~Oq-86&JXu^nCxRM` z?_Qql)C~F7;weLrf?G?#^1+4uR^~iTd0UR3v=vVVO^yrn#bzcyslz$G*-nm!9H8Cm z2w%CD7%8Z!2rdDj5fcATx8%(b;tOm-MGLm6t4NDrea4z!b(@3vP??JbN+YBkg~-)~ z`ZnYAl7GF^1h4^fW}j)|TF|z)*YR&nD4OSPbamTW^{6jTGuK2AE#B~c`}E@c=U>E~ zv(2uBx3p%`SSb-v#?iPJ(c*9Y^2FtSSxh2ldKLPqJsXH`n41uUI*i~`kWwu7_L$7{ zW8jOYljXDp$p5$UPl5(K5C8EDtHY=_e=06c+kcq-OsfmXbh-^_N3V2x@aPSX-2so< zXE^CV1T*q>mrw9~A~&l+w!}5d(%UWyN}_N`KBr(_#IjAmO+yuHy||8;d|4EX^FIAk zJ?D=(#LMjrfk!K|_3s~#ngBz?xq$Lei^F<{SG_n6e(TkQtyoAt1_n@+(D*8!{gT+> zrhg-otn{qQ(EnK+4{0(&lH5EJm+=2>B#feK63~_1{w7Z``jD%?zB`Y0R^iTD&gDdj zWkLRbUfW5BPJihfqNN>3+&doCT02!ZR*`5}`%e##D^WZm_02s7`3M%3(ZjOxWeW$M zcj58TWBoT>c8(8-D!ilWHW-Ss-gYA0PJb*SzPFVe)B1TketEes;f?^^_EcGRASI_< zWkz(3{WokkLtiz7>fZ(Rltt|$qZ!DqZG3W18qztq3V<#Y0^S8aLjO~CeAH;2UZM_} zpYy6+B_*{=6Jh_wE2Kwr2hLJW?gJD%jT)ntD1&+2tlWU~dASgb0YdMSu2V|mDSz*3 z3}_64_i24aQWN4X+=-iC3^PKFs&jTyuw$WZEKP$F2c1K~H#aPE;-UqAFOpa+;@EjO zMMu??=1HfM3v3FLSZ!=wx*(6@$CR-?WstY^9nuC(WP~~r^Uumug0A9^iDZ2uK{xt4 zq!FCP>lPsB{QsCXu7Ni2V#Hk%2Y*iFbyLSQq3axv>EjycgRZ*VC4taXUN?o1Vv09y z9#hAv)B!G^v)fTjah`5hF?~!KYg5K8DW*76cchp;CX%&@0@pBxGlvLr)qh{l#a@ihld{?e!7oU-Pij(wXs>CLcR4+mSn7Jh{7?Me{TV3bc^n+RE z+?bX^KB@l6q}qk)ys~7g?s%U-DI{8(nm{ri#1=3V=#%mxj7_`fU}Oe52AfyUP^EpL z7)j*&*SgVWx3T5&w!Vd|VSil-G<}+5j;3sy#O$&mh_Jp!tedpl&sLW!a|`k;8Yk)( ztW$fH9|G{xkZnp{Rk0ma zOI)QwMZGySry??f5*vXJLf=2??SH_;(d85h;i6I~ii=6{gAjJBfg`C^#!ha<<0r+= z44!vVwvsz0gcOi7(LT@ISq@SzpBe9jGCBZq9mhDMi9u0VaFit$KM2G|Ov$0{Oa)09 zW*kayq=Ty{fmB6@^M8u0%;30J!K^P1dM7A`!?`~m?e6U!9skIgIu?sG8WegyQj!pt zgq1QXE?qXXQEJ(lr z{h_c*f&!z2ke4P;uf=r-TZ_FBf-xP_)|$(w7g;mDYJbKT%>}N6AA+cwF#R6?xc?>W z<9^)R-`yjRAZCGIjiMG>IGIn_-;hOsU1njNmJ`+#g7Im>U~l(im%k+%0=D+);oRvR9tPh%QWN;gSK+ zWx9PoW`Aqz26Q>WDEg>NY-F=ByxuWvUtBDGXuRV=nYf1YKR&E`RO+YyI zCq{aX%|=yXv|;clA_U&K{bZyszc5Qqs5ADae##=+gZluNC7N^SD4<9nY_(tc7D9i{ z;5<+Xlr3`Dwm+iRcn%CG{QL!TmSXJu84y?K3hJjS zr_hM>^Pj-;ONmoFFU%=OnPJJ+*{ zMa0k;brpAXbi);p9Y3HwGNAb7S1T}&a=w3UO_vr&e(?%6jVMWHH=Hb{?8-gmFfR)g z&3_HI-}Ql7Tum}VEkicz0#JsICm;?Eb3JHrA-KZC$*S+gtH+UxZBt}-Be{{Ch!hAL zU{sOl?!zn9itRRxuG*^ISO_e=TB+>iHWwSml+kQ|(PVER00Y|t4X>%P&z91SQq|`& z6g9X%p2AP>BEV0NmH)=d|CUkyeIgUK)qi;_ZvbE-*UA(Na>o5h1SKa|$I18l(~UyiO4`x9=VGJx0$tMW@F-Rh zcf-JpM+&%e<-;HHw|8y^$x?Z);D7g`|4z4G!oO*%%5>a|1uDx?vQ9`VHKDxiv?nt% zJdPd1W7xJ#hF}&f0rg8tgj6rdu2sFHR9y8UTWQgXYF-Ld{dw66dJD_LDVBvoa&?tQ zlMMH2ZC4`A$4>;3%9BOgM{%j;x2ghc1}1&8Ym(uY-<-GB23A^`8(e8uTYop#SpvDsqaB zv`ovvaG8iWlv1@4Q3~4F^M3)ESicWdU=)Ezx0y@rGZ&v@eK5(gIsSORj~S3$dyo~| zt1h!yHAoTd5FUj+Pn+8_tbu9!zN`_8I$vzmwu&?+joN`J7VK=*+7zL45nVd_y0(?3 z%#zF6`n$@c;&QSQkZKumR@rczE2?G4y<(FHZBx5fR7?7&P~v70uYdAq0IO0y##V0< z)L3|>z4GHFUxSSE&7H3LcmQFE0*@W+@5o_;&E|uKW(zx(r^kVb$}I#-=1m|3RRe$J zSD(+zySB?I1iQ&+y$2tE@mbK1(7wx!^7O&((ZfT0)l!@Wm0PCP83braT)0EmeuGjh zq%3e=R7K!y*)8EEb$=`fIr!f97w5Rbox{&;xOG7v*cpC!NbjzsMpTjD#_IP|3;hp$ zzeA4UF}C(lMo_gtqy8hk^&@XL(;r^qI2Bx~?D}_hQOp6B%^u|wczzC1+6QA&HY2s< z%{1ggdpHFzm)YiYG9+r2N4MY?dk5NK63pbmFH9HzwA6x)dtv&XlN)-e zK{A6eqi%27+_>kYMPdxJL_VpC-`Jz>oIvubq#yUb3kOR~XN)8Q1b0$!+YvlDS1+`> z6WlRXrmQ3+gMUEfOThMuf7mcX`^`Jh7%f zRKspAZGVxFA>N{&IBQ%#`7`XNW`zBuyte%`&&KHw?PqgoM&b_r?2ouM1`DgY^&7hk zv6s{Vz)nHYT2#TQ9_y@J{OG{dQ*D)hi+XCjJ~&GqQe0i`rA=UoD+v&HlOIGmrk6xk zQ(uyj5=}>r4>QiEQbjyZ@IMrko(4nDQB38fk$+y2q1wW3R6sa)aVcdDJc=d?=WYW^ zyl64$fmfuIU^&e7jxE7f=bOf{% z(Mt70_~|?1q_=kLQ0ADBRQP981%7})n|JNIP_-M{OIex0%=T^imG;CK<1ArSn!(Mf z#eaLud|u8-z3e)u_o9!^9~~gGaS=C#aTD+s0!gawu!4e?2V%KT;z{53+8?1FtGK!c zyxO&p?07_NIe3mPuJ_f}V;R)vp;aul2Jtqzzg2nMfF^&9532k22DRmwt_Uoqc{iZ? z8@e4wxgRc)olb8Xnqek3s63=$9R<*LiGK;b=$!bRoZ}S!rWHatDr6|7*n^ODxP!aY zy<2uY*=e!@tX-r|^Q-b>97J;>h{n#N-c}%f4xA&f*W+#wkAKy+ z9dLhdR5Eb8F`$w7Pf;<7@tt*ndJwsYkMJr1b#^t)uos!URz_{JCD=|cHC&=dsVn#q z963d`PgBt0px5+XzdZR<+^jdsuP5aa<4db$k6ne@S@#q+^;p{^xQLY+@=Rg=ZnWuf zcFd;7kkN|AxaTAMUQC;9dIxnM*?+7THS8HGz5g4SLF9Hc^faF^wJP@%FVKp2zGM;L zwv&wa@Qyz9(7$Da=iYs7;I9d6mLo2yYYltWA54Lf!EZ=i85y$I7-(5*Y-{PgxW>44 zZ-WVJjRlM`-DClCwy$!E#Mo#8V}|&5GJ)yz`X0<+|JFvM^W)EAHfq>yhku-YR{po! zjDmju*IJE&p8nU`jWptmH5JS9)=LT}yinH@DKm#+IY}5kREjxKoKYEJG84T85)l-i zMCpp-?w)Z=*%#j5&n6_>i(t=%JR-uD3U=wU$3l3`$k7}`k z=H3eAXjBA(L}^Xp=P8V+&FHi5liw+r?PL!OYg}xjI{$#moq!5#u(7Fd)o2qlKatF@o(F zBDEU~*IC)$Z#yE`^l*lxC}aew*STh#)VxVs&# z6~<~ti&@cbV?+Z&H*up_XuhNk&D-8LiTEu|XWI+&xFo-WA^XGHtC!*(#{naY>O5Hpet`4*+pAF~==;jzrQr+DNMqUASLg9~p37-X{1T z!?k>(i6N^{RwK7iZv48_X$cf=<|A&i$sKPSZ@gpm#`8B-MSrDn0K;9C;ft;W)!a!A zh=NUT2ELaX<+u*$V(fd`E1e&j7RDIt8ALv3#6b(0_4ZqC*S<^yLgJ6)tfWDF!2A2) zNu(zGV(=EyzsO9;yyooA5a=%LILksi*FZOW^ASzoZng8TGIz%NF&+JHhF83`=oaDq z>S!=HIysgHBY&^(YF7Da%E54TAy>(czgTE<5T|?W4lD)77<~5=yiaErgWrC~k%e!n zo{O)*U(~0YD#_k&L;xQFuK8GG(Msm-JtNaM>q`^Is6{!1w zY(ba`L4OA4`}>E30p5YcpU?Y8FAs4?^#p(MJCyM2DRm#as-0K0!j5}t#t;L%B){gQ z`#b>#zcJfDS8exIKF?4CZF8=MX^k-fn}h-fOjUVMGw>(}7Iq>4Lv@v-G&zLJZo+b; z$P^!PR}&`{NP$Kv@;;w`%JHRH?zPhc;2#oZDt{BKJ|w`1UBhQ?YaN-oK{@8NTAcJV zF%3`!b^^re7>Z2lLkx3vFrQ@0d{#9e!u(m3K=LJTk2p_`5Jem7T)RRYho)4Pi<1E4 zDx1-f^B^CV(-Hna;&q%mB^867=QB(nUY2E* zBY#mOj?NV500OH5!dwEj9PySUNn>ACsI2L$63~@pF-tqcDL>+vIjSaqD~l-rQjy=> zv`)!&Z4adok`AEEQFq}pcIu!amru&+1ug+i^c-eb3JF)`Q_7tzg(i3X{nz*} zh_o5Rqo29Jv9lR4UWL(PQ=|Xe(-hW4m)ix^c>!OUo;|=mQXgqpIUCtyon*dfpIkG z-xB}f2OR2yd;&`}ARi9G5zZc9Ab-cW1#tgjGLaE*G)Gb|s1o?Fvrx z8%T;Pq(lZr%4=@hUF*w-z=()F4-9QI7SmBa&xb$AGhO~jX3`wA)jMFsu zJ@xn3*z~7td0iHe{PVk0^AtAS3y33@gAi~WjGPA`qD*l~0WXI+ppL#gXn*XR%hMDj zhh>p-cxCt7>!?u&#vbSeuV=v%h^Sdr2sX7O{|1bgJx!o`DJnS z6YNoo>JIQUs|MFRiQU9q z1~N&-4ubSstf2SYf!j$P5pdgz9jw<@<{T8GtHp=Q48+c54jR}3_VPrAXE`Vez(a=< z2r4^uLRE$rp=ad^}|45!3{3E~kSm3Jv`+uyuE_#G`g%Gt4 z0vMDR*>tkFz`?<18SXePH2n&RXd(ma-|UB|Qu1 zN{W^YjRdPndW_Z_bA!@hr|m2FmsuEj)d6^4mXpZLII8xge1F&M@lDIAG3by*w7D1=TZ0>mcOc9)lxa_x*HC(E!k|5HGhq~wpj~XWHDO$9 zci|VDS!24o(0`IF?gqt9vJF|#F1T?z2^wLm*k;>_giW=cLIe1=)-L=d?UL#WN{Oo* z!z=`^D6(8uEUn>HBsD4vTpPU@_-i#1j#!q}r-KtTV7iE8ybWOfl85pYAdUlcrJqR$Wi&WyAHg@ZwWq-gO>(LW=q65`)QPt_WgFbn_ zN@TowftF2Yn8w@5G6=3p@(K*m{crTqMKrAuWA)+pYcj1x$Iw{WS4Pl`VPIKj?Zqy- zjRtru!Lx*F=~3DmE(w}|vP6hkicyXVig5IsJyYFuM=RcIF0&Va{3%0>oCq*1+mCy$ zCz_)@=6|u)5~e`X%o2>DotrorWz;G+IeBlH>l|$y-xAoM+u#t^N3)4z5j@(4)9l+# zOc)-|n@l2JcX!MHM%~R^0BbGUrmPpK>Nm+F4OHbS+iqdM`~vq@do7cMg+q&`xjYBj zVxT(CA$;?bgvihC(h%~BeuVdJ%}u__xjJGa^naV+XgvJyzTdV_A&JHo- z$-QCH>|Ruh_gzT+QK#4G>}*;&c;gL#>Ak=vB|O_9jrXjSAnaV>Q2_lB}@tM$vqo#Pz@n4`Y(3;2f`57FuiQBwpdCd@C4UCm6rG-1KW=)>T0o_6-nD&rChQjb-6|KoV(12A3*aqcZ+EKlB=|6HHwBt zy%)JJVnvd)pT0AfN1!UL0whjxaeuZX392Ac`qHPjc1l@xGqr}rer1P!YtTHS6ri< zi%Laj%j6^|Q=54JQxMCm98G~iNLx5{F154J$0+hj5iS+ZgtxJJe|`IeF4HixDi9&; zF{qqFB`!HFu*ar!oy4&-ysC6dQ-2T6oK?d#BhF8&oEPQ((aE$M@Iq_E@wQ5`<2BQ^ zBKDZIO|9$pK4;~#$s+H@RuL}X6h$&^m$Ru0NcNg zByb_6;Ijcb8Z@ZE8XP0TF7Uz!nt%CMUwtLmo*o{oMK(5t@SYt?LudDbZ0LpqQpt42 zhyh#B8}tL7jHk{Strpptt`-@+ZBIvYJPmo_^tjnMWt(sP)Gz&T|I+t%M<4%9r*SgQ zJhZAqbemSf*cnAo*{UNkn}3e=iL>Q(ljySri#K(VoR`EC#jv=>j;dxPEMjyyt|f~% z3wj0Sv=~0X;crr+=uJsd%{Y=NzYxieEOl*E%2(dY$TF zbouFjd6&aMe)3=5Z54h7X@^_Ks2?zR&Cf`5g_ zbewL4FAheM1#&XJ4aFTWJ_Dhx#U!xi8gE7*o<1akRV z6ksuo7>45TOuBD#NZxiamkV1^pItl3F|o4-GZ!L6g1QqP$AA1;*l1R|;8QY!Fs#S4 zV5e;27PT+UXv8= zq!8oLdRVCu6{bI*gC4@>_p1ziOJ|^plvmv+q9!Rg%W<1&YwL&nx3NGky0dR$TZPk0 zp3u@2E{R&2%c;n02pz_EtKMok)L!scbAjE%Dc*KG{KzNu%>`4kENX(U2yqjMrw4%% zM1^-T%73SDA5=~L3Pqh0Uzxi&V?8{;t2p2WnH2U|q2;2YYl*ku#TWHf%LI0e`2R_O zI@PDlC&^yaq8huSr3DoEc7YAeSsh=KGZDoU-VO%Q=rAetUMoY>gLoRgn2PM+H!z0Q zwCrHHfz%V>i0bac?wX?U6#&~){Jl!jxfv~ z%Fd@B(_%U)i2@F2W>OAmq7 zyDS$gg09c)N_+r!nR-0V>Ax7Ndw)Nlv>`sAUeib9E6AWRtn3q=>d8$vA z9N*QQ7n=zJr?znRDqJv}EcDqZkV#=DBR7{dGnE7Z4?MkE#>MZD5^{%FQ|d?7DAD)Y zY0hyTN{_$REWS}$Vd~F+{z%hZ(XWG>yN#Xk@9;{Oeu|H9>_q}Let$&{C{$z zC=G>utC8VwHzbkBFi>8b%UM@4O1${$#3zZxZYEKmdV97TBH)VEE+|Ptf2|x-7-)c> zkYD0^NF+TeXC0>P3mh^?<4JZQAuvIa1pEO8bi>>s?Xi`BCz6{mK>fl?-u;Zc2QVe7esW4rwL#q2S7*ZI-`y8m5?`qx0bbo_Siu&d} zsgr8qCserLC+_iudo9jN1)v8Q!ZbNw>bJdRwJ=hyq? z^^$FLJZIG?CRc?K4+2O_EPwsvcm!~4%;2>Tq2la2YQR5}DwS3h-$<<;4{;Mx0ShsT zbakp}s8G4})W|ucxrJ_(X^dGErpQj;dtwHmtS*}0LQ*qT6<1yJQGE*CthsOm0aySI%Bhk6Qik(! zBc-dfK@lW|@fVFbr`=P`<=dNSx~qFoD?7WYS&&IeeyS&F@-u0GOIU&E7ehQTEXwSA_1A1_u|A(5+8v# zSuy8x4c%n|`-@-aDDnRIXmTg*UTtsV#&J_mKt9}|FYYd*oY+Xnky#G6^sAf?P-g&h z#vATcs;4whe(Db&QioE1y=SMBb|f}Gy?zN!jooUP5r){YS$}!2<&1d{n=S+~ItK{r zH7q^?9MTmr$i?}%G1Jlrjw<(E(XnwDB?m@vIa9=pb?A;;eJC(sZBa< z>=yR?^Y&{K8-H}7e9&>%10tNzajej3`QV3HDKq5ofisD7c0$o{k1M#Hq5d7 zi4|>Hy%ZU3E4EcHkpwFZC5;7l->EAfb_|pA?uP3rJu{|o!tr&0qk1B?+I3T5t!=;c z(|#Ep$w6P4#qD&Y=Iw*kJ`~&Asvjy=vBoK%;ybtvLVrR#X6A8}NSfYQFR33uo#j0F z$#v9N9po*JDXw8S^`VV?L=FU0IA)coN(lByKoN_yVcg)`&XSdhWKg&F$+zSAb{y}x z-E#BeM~_xCT|?YvDWFpQG)Iyk*G-+f0mt7JGwx7aj+!^hI$8`&9|tFRRTG7EU!yoP z%A2<9aeq-RUP5d1+YTENxo;^s(r)V4>fXV(iO%52e@T|JPrzCk+ARK&+kFh1S?XLQ zZmZpHk2-Ak&0e-+Xl-@G0Z$}(QdY*->mr-I$JJ_BPA2&fjDxB62MtkU4A@r#Yl|XX zcA~|;r*%<7;3zMbC0K4987esxOH;4uR_*YKVt+#=&1}4NNM9sN{QKfb>694PlBg)E zp70PvY;-0P>-7R%4TmVC)!gX{rmks#=HvT)pUG1*RXqLJJT* zEPv`uKaISgEaJ*(+=b>#r8q;iLU8k63MhK^X1SuMK+M(T@I_Gnp0zn;hQ|4FbRgN+ zo?TEiKDUUh9ab-+yQ>eIk3Wt~5Sz*+tK!yNvj-=NH@)N$d4q668=9%p$@_+aIaj#_8S_e*tA zA#clDMCLU2JJe?7LERjFlj_F*n0q|yi+)dGJJ(@gLwW{WyX)Uv5?bx7n*$9M?lm4# zzV+3~zp5R(v5uZ%ug%9tnE-}doB<{U?Ht$M{*hx$acRXARuWU^yP-us@%iJhfPYJM z62On$!`$jb>jvH(n2xORJ58u{hZ5irxvd}`*Z6SK5sX1%15CTRW)kxYHF|+vIVKcU zI>$D}eimRC1@sM04vk1yRIu#9ywjn*@jZq9Kf}Jn3}eUL#NF2A^})C$#Gx^Jv zekNN`J_og%&@`WUF}m|yhJ)eA&3_W9MW1-?JJ+PmLNq$D;g;ZqEB zR)zp6KHv5`Xg3~!t`~hv6Mu1|fBp>n>y}D3u{=m(g&mb4XzD9?@!qRM8C*`r6yq;w z&0f+%go61X+ANP-*zN<$xLdmf0!;2t;!Pv}Mth7IcWW6TP>&4{5+yk#BN`N7$c1l6 z46PgLUGW#zYc?@=8#vLObafN=!GC>Bco-yYPjXjGYB}uX5BtaGulbcSiuMl3kSRZdv^*ob_HYI> z7vYpMI{zrhLJzA5Jm^C~=a2AGP*q|ycrq_&9_!`f0vk8C7qA8UhT1+hcYe)j8N{PU zYdyUe=;S@%t^aH4gI-anGa8>-bNR6+(p(lj0w(tt^;NSK6@TIBqeqzPI`9&#B3v?j zT2#%KY#?+o=nA~?JRRx71qjJ|#&eXzvq~lc9`Ew>c~P@dyzj6lCNLR%uSYv{gsjJj z<(QvUnCfe#Ufa5CGIDq}(uX03>bSLp`YeUy`ulZO)vq1_R0VAjyf`lG^LeIdMi7P+rB`Te1F#nlVd*Ul}ByeJ>~g;xb%Sy z_TkM;Ew7P>gF=dcKHo`g8f0u6CdZ0-|0wI-;UB;#dT=y&-9H22dJrJLE1fID}qs$-gZsRG7bNC4wYo@O}C_p}$X97HZ52cQQO;^la=4 zdGS(MT_ZC>eeMRynKX^?^*h&Ns?_yc?*;HI=WZxV{7bCl7bH$X;Q_+kPv0%7L!g>Q zLk=Pmj&d#*xZvuN7=6*lA!4&+CE(zG{na z{R(>Uz*+}uf;u55PywJA?6`bGw0Y(rp1C;d@UlR4|4p7z5LYV)cpEawzn}Tf0-s;6!R|w_;oSCpntmA zs6BX+_8Y+73gUW@ROmCq1mn&Ybj8xzZv^Re{nNAa*Xuy?ez*n57e{C7;NaqB@_{9{Z)E?pKX?(2Q!DVT2y<}Q zKM3J(f#CoGmIk9P^%Y7Gyb1niRDX4fg6$r+8WIlFPErns3wfxVaLY#=`Wn3V$)gs^ zt5hVnA$G{fChcrS^*T+sQLC}#S*hc%WA}n(Oj#YZl3hNWspgCE*j-POI3~$x!LiK| z15|udZ~~r@F2w!Q+e*4YV4o?sE_a;gxTx2(9M?fE-(Ac?1)Rr@?#`pmvwwr9b|XkC z#(YS}yJWtcRbVgx+aS4f2kl`?syM`I=x)zcT*1bN(SF7IzaH@ME_y(cG|offLo|$* zb5C^!9@H=rJUzv7tDY!q5Uo51`A?_?^NBFt{I`7l1!gLWp%xRBZfgJ<&hK72iGKGy z1H!IJLuzNRM15AcR+ zF9~w>F*7(7{h3w|3OwrWa0l7!(hMj0^*R`eyKYn+X?JCh%CB)nJ0f=%T5~EB^1A?- zvTE!ZGdqlD7xS%$5$b%7VN@_?7&S9Kidvw}C}Od26gBfRj3Pk!e4_}!T8^SU(MGHT zn=&712imCn9ktV%O@G7Zx74;V#C>2n@V{8rs*vgQ)UZ?WF4?AnuZcIVYNbMuVQ=h>ys z5YWjlu{^I#NJ?wB7Pr&OlRYD_TZsRyR&nMID^_BFVz}L50e=hoE`{&b_pO$`#=cuX zn$o84IuFd*&tNfwdq)(Ph+hxo(4Mg9f^T1^$KQh&5bgBj&AT`Kv%^zKG(S#H`Umy* z`SF|npE~g4re0`>$nr#neL=aNw>m|P1C7hwG)=;3V2|F-i^{&x(Tl$wHF_8tt+;8g z${7|>Tqa|jhkB&rN!WinIix7VLYj_x_p`X;Uc27Y+kh0pi;0d zHk`L=XQPACgG4yXLQ7NgksZN)chEoUqeBaZNMWB{UNFMWadhs}d~lt8nsyYEuv>q~ zhfnP)PwxO@v_Cx;bsY%m?KA^@LK+L_ujHiPLf#6f^ncrU(PgCQKh~r5MA3>10suLI z9XRrjm)c!{5_UcWWFpJi(f3clSJiCo(u#`x6VPmb^|gImI@$r(11~LQv7~hajCPA@ zzc9Ds10tbe;zf?0jvkFTAx@s?=yQe0z%7%9VM`3B#Vir9yvGRJyRji}!UDerFFfgd z%QoF!B!6hKenlFrW5Wz=W$^C=-=oaNd2)%(F$0XUs|>?8km$9|THlX#yM&#MVRt@X zH_9o-koc4>W9Z)v`!HsVe$;M_SgUf*sM!pyU&Wlf4(O&lxlB$<_)SZ!T|rUhAY)gP zAZ`#tJtm%ZbEiDRjI7M?d7fJzZXvvpmY1pMTawBP&VAH|_?t zbU;kLS=PwlD-J!lRU;~pH#5bq>A+qx1pqi$7t!P-|L07*c$zjqqrwP^&M>Ub731v7uFqRTXfkkDBBYV&)=~lT@dB84J%q0*NzrZ37 zKwv+p_RHc5SM{z;gOn0(c49*-!Mn_BgN%PDvP)5M8^C{xI5n>vC^uQTE6@cYJ_S~z z97|SLACnP6eP86Ujut-an9W8j%s?mz!I*}K*gN9F*E5)~-@dDXXY_Pjt^rQ81A=&( z$eHc3T)=p7#C3@dZ<(8sVBY4_T7H7awoZk5m`{222w>D7pFg>$FUn7NEu}|OB&dIY z3=6@+vdYv%wxag=*pdoRtK4yxS`CPCt85eD;^PuUBNgXQpg0zVe>CtMqbGFFDD2ro zT&;I?yb^o_VIV`JEhse+0gKc9i;Ih%yKw}c{5I+kmmPUkjBfq@>Q}!?T^mod4LpWy z*TlocLRwiYnj5ivQhCkL%$r{5?L2?(pvSF)5*pTL>TyEl6-f^giOe;)j^}voDIXca z{iJ3wUN15rIxbDzioOKfyg29*fD#{!Z2-$WQAkTbAH>mOc-eDznRJD6F+dkpv=Q?E z#bSDE-7K-Z{HM|x_kvAvh1a5ZM%6udcKH0{^bjW-)7LD%8Lk-DfQMahtIW9mEy%RZIq)>AU#<7cMP`pQ)V7U1}buq&V79{H@YTS5z(zcJeM=Y zS9BwK#S|QzrVrT7N%S$nju<>kn*fO}$<K)CmNBhN%@IVl}dLkYr+8U@8q=!=NKjgP-P(x)uy^YXo(o<`mCdF9R6o$46&3O+fi{JPNXyQuRN>E1!SLb^dE%7LwAy3}HeBFb4I_ z>B;%)`}8*{KWaw+aB2n1R;?v@eFfUpV98@f2TDl`4le7@CCtJZ?eF=TFrR1}pxil` zQ$OFas*VJf*f6E)%?wQ$H8qeoGZ>R+Msu$Bf!ueZI0>$V7@=UPR?Hj{w5-b+hX!3o zg9?d7fQ^5-kXiE<)OFz=3PguXYS$bWcxAZskuLizilMiE{uM|-q zRKHR$Y~BG~m86#uXg&^^vqsPH0udS{Q7~~P7jOScWk!~u1c z4XHM3kCFrlb<-bP(Y@A z=aqljP;+}e!DzpPCUy=R9_H0}0VPdGX$DDOdyoRTB)~Zb1FnHC;Y~3fXY!B0A|bEg zXo@VNJ%=Y#O;8__n~{({`x?>*E+~tmkuJIT}}j$&I~xcKGi1eTa~=M+_x_YM&h@zwbZ%`q6Js`>$R<{Dyzm ztOHo9r&W$I`4j=?w)Gkne+#5TX&t_9Xl)-{=VLZ2@Lr#8yWDLqQYm>a!Hc-ki-F!B zjYb_k3ea7Rw3)>$g2WH%w5F)W=#HJdLnxmJM7^c%;7Yc*B-6j@LDq~`F}8JWOrH3x zi=^5bN2p!n5@nM0UGaPN4@p`*w5Wfr#pT%Uz;(j{$tZ~7zw7H9M+Sy(=!78Y)@j`` zJ^w*&7x9+&y<=2qnG9T4U^4_wMbre)Fxb?|E2p@tkMv42r}=o|xh`v03~$3_Uc?vEU&Fl7p0JVKq|dAkSE! zS1W`3D*G0=Szp(F6wV}I-EV&(n#fff+ZE(RSRycKg-8$=xH)xO6vP&0fvcsef%b!( zZFBYZTTkER(9)h-%}WNf($F8sLe$vIbAZR_$~(h2dudqJ)melT0i-1F1WIgBteg(& z-dZ#m5c!h^q$I)jagtmM(D`&8f)+>M2uB!FZk_X2{ zvIp#=$6k$k1zzAnPn%dCCU+pWzCYOzC+%Udu-gMD3P()&-u})QiFDuP5TFUq3p+#1 zP(h3wPyb6byQW4|owY64LlL%S%}Z_6ofqSz{TJwa^*Poi#jgkPhU+Hbg25aFGmq3h zY;T+O!n%QmR#|I9m%M*xC7%6msWT$8ZBiQ<@aNSVwFfZ{>vde@qaWpBM45%dW`jRbnp%b!kp~|<;m?k(Rr|)>JkveD;~KP;)v&B^e4A@CTuwto<_0~ z6-JF+YmA>T35kEWkfy2cZfkw2n521sI+^U$`r8zkbiiJ$dIk-%TEKCBd8UER=O2@Lz+A;OB`OsKKTE3V z^)+f_fO{N;tdFaf1q!T+X^!`J?BcG+!%UV2JBtg3JT!NA$ty^!aj7n3YC)6QQb+}- zMPaGCIWh__+=X zV#!icIIn*@K*Ec1@2;7_MGg*&^PE?~ZErpHXkY0hyFKi`8ypGwb7bZA>MPA2?3xZ# zy*8jET1&HT7Z$FnVXds>#dSPea4SX6MFmjJ2P36ni2q2>6a+wC>K%z2K(1}8jsdjP z>_tk3`sP)}kVPJUBGzK`y0BIzbu-0>q@k#TyWM|rMrIH3^tLallvXS6E_lY}SM_46 zg7ecg{^pkep>_=2g21R!>mS4npwLjAPx2o?;>(Jx0S(*~(?%Q*M}yTc#EWn~fkWqX zQu`?z52_Y>OZH<~3@kJ(&e`!V)2{PuJS=kZT~SXr{alXJ^|N_kC)uEwRx+%y`!z}k zG5UWKZ!mU*$^oRWNS{^D^YI@SFh|+YL+IRmkTW@(=qA3RJ{Sz~spT`VK_;F=XEBS$ z7aamKkYkljvcC-ogJ4a%n7RXH?rXi|^=*%8Tdb8b(Uhx?a$X z(a}cmds!2Q^1eR+K%O_QmG-RKEJ)+Fr(u)fk#zJ7xgLZhOhiEvz&;hhSi+O!XcK=K zb37v%_%lpdF^Xl3e3Ap4T;wR(DCl{S*e{GfH8Qtb6LTqqEWW}kE<{1J=ozn`%)HTK zO+>iN?Z?n1nGChUHL;)f;_qn0(g5vogR1AB+*NF#+ur1-oKB*GY?Z6RVvL^VAtcUv zC_1t`xy(AF8<7LfRc3EKvJ)ycDxBhtRq31SH-Mdd zmY+{Hdtv!8?VFp(WZ}mXbm-fR&01c~hj?f)2tH!ssMWBfoD`;7wYf!qJ`Dhx8@>>5}EZAe?p2lC>(t7;liN*=_LBR^4!)C}pJ_se`ljFj0&84^`M z-wX&Wf>Vi2pRLzwsZW3PB4B-<>o0W4Y!lX5OLNwhLl z(=l69biXI{#kYh>zdgC@mY73jw8LJ)>^KAdqc=C;_CX2~O;MUQshukrl}{cer_-(1 zUQf30vBfDE*PUO`yh6TJQ@bDl08audW<&2{onJsEr^vSW1~Py8z=H+BqsOO@pj#_y z&pzByj6NODuBxZ+16o@SC&I7Vw33zt<<8qGa0$Nuy0sIE*BxjA4N1K2#oupsLb
heaJM_k}(J0Wimbf)AjD?K1yFl5*Z|(&#(&{IZ^VwweYM^eb2+IY>)@bSUjV}#hl@NjkmtG=$o+UYt~}Js`K(&T<%k-U+$*o z!1jOqZlzE)>8KCow|>XprCsc{(Y}3C?sI5(tZ@KSzLkvnr4o0#U2Y85prE{BTlE z0-H_GL)QDVaD#G(E;|=DzwPwS(XuY+D>8q{9LkS|$66v{8IyBpL=*2){%o*J%?(^D zQC`#rhGTLOH>M80i{3D+@xw7fTiz$ueO6s^r?BF@BM+@H`Vhwl-v+?bfIC3RK@xNt z`=mqIUC;o**xpbMC=Hs=hDwum$-!@nsRbC|+;SDkyC_X$Lf=y`a;d*G?>jSF&QGh;iD@4gwMA_Y{ev3a*tPuQ+Aic zwl)Jr6iLo~>JcQk-A@1X33G3vIv#(ft7*eJbF>bMb9!x{pXQ2=7NMFbYljA`X|!E< z*(*GxqK`4>3Fm-R$$*}LJsp)lf%O8eC}#Pjn_3N39ut1SLjy6^HXC7+OcNvP2Wspi~5ehD|< zvIX?q^*>pYRK%GEA47eWXGueiHW+^-Px!!8DGdyugYm@_-5S7k*=F>-H&-M+ccw8A z_O!jAbHw#@GU5B{WaDHbX^evZlXW8CH|JIAI*6@d{<oomz@TYeawGtQwkNvFiZ1 zQOu7-Z8(GeY%)mkM%{nVm9h9XlIv|hA5+lx&cRWaJJ!@cd6fgO z4qaY$V-VV1BKn4T$`XHe7Chq>ol9>C)m9()BrA#1h5dXf9;MWw`j_(XGIgmHc> zUU4L-TMLv$iNiozZL`lQ=KgZT6d%)@>ubEp6C~|U*8e`}_%6chO(w%373H%iK zP1qRTDHdb7@Isabdh1>-koc52DdElfAUrvSVdD7^zWm52(-EcVo`4F59fXx1LXTG?SzeQHEvRd=4a`Air$GC}BWdqX`C&Nq89Z9aw)8zuy+lwRasRKJ+#yB{jcNa%SrM%>hF5G`Xo=)45FE}7$XO%}#nDw+QCzSATn4gZnm!)0$|pa)$tEiC zTo=VyqN<>ijrBg)^u>cQh%wew&H>9v z%#6!)K9SGnVX`QFVV(!3wQ=SaGae(W7%;h<7Sexi8RBcE7cgf=@-fgJf3f=wz5SIS zB1ljrS&0-Lmh?(Z7e-W1eh5g7`PnCdE%A5o&|BZJH@~QhfS|DB?Pu@;r19)@=ZW(7om&Yt(A#Oh zTNQ1524|hx+>%7@x@wob{NEMq)W&!v_Z&8$U<>PkX`z_tAoZ)Efc6OllLy{PNI)OU zFy;Sl$1_supZsLu9Hdc&)JAUsPiTKPNeq87Oe&r%s0zBKaNPnG5zsp7MjVbB0X?%F zYEU8^g+z^0m_hEAf5ocIOqE%zN;aHu%7uoHk1@?ey#||;!ci_5#p**wnr95slBf{N^K~kw9{WS)SF-Z)b8judIUzmrSl-W3&j!}PM;iZs&na@x|D|dMM_((Itt8)sZc>^N6 zz`5QeV^usVlc&p(7N>6=o#7jlT7Kuml(5HX4RzCL4*b;RlK~kBxW9RC&`E!Z$<2Y% zt?c0QVbPzGGXWFnd{Qn^eF=m{koC0RQ#!-Ytw`-uW&<{8Vjre~N5;Riu1yF2QEP>p za|(8dTs=#)we;)7aEuwMIH!8vzW4W0g`a^Eyi^U2$aEqQ%cKTv$Fli8-}VKngo4?p zKchCyt*kmNL~d>w*TaR@ZMA>GpB=O{lu2zi`?Hj_+EhU6<#b%G*7)#%25p7 zgEsT0?z3@QpP%{|r9DVX8=XB(O~?W<@o)lRv5T2j6pFmc*}XsmMz($?><5T%={c(& zYFb0V%pC&Of26a(qdL;hN`BC;f{mk2Sqbw33SH!J>%iFOP?2)8TylRU5FGdrn7_5r zJtDjK5#JW@2b*Drqrq2;9CXFY*A66@Vf*=(E{i<(*6US5vo`_|U&b)Ohx+FlNb$Pf zeP3h)x6g-MqDiJu${GDZWW7|q@Y42c1Cch7@pZkIVhW0jneJMu4lLS2!G>+@Fzy+p z{6kRT^!Xh>R$n3Ro6mn+V4A9cNe_gtAeI)JqD4`pn*i2%$y#o^*87M?EwLvZdVaR& zXbJC$6`4B<^lH!+xnihR_E@?6ij_-|k*+#_#Glk6rflLy`5_K~jHTlIr1WUb>`~t9 z8Bk)g1?0?n7TIR9(8x}|wx75tblMW_zxvY}h(!@G2=99!<-32Qy}~hLT)x-!?1pE# zc$EMA?3frs=`vrSgA_(Mu9)BcaSZ!;{_~&8uK`cUFFDazhPHM7tE_Dpdze}2EKv(J zGg~;zpJl#OYN=%f(;9UJ(V3EiCwIrx?#8CH-jrNzws!uq$*iH%ZbE}Oj1vXt(N1lk z7JifmNu4tDJnMgi+E(>SR)xgG^VMXYBxO`Oc~Ur!5;co4D#3ossyjkiSD9>n;l*7x z3diWdVEJ^n;Nd_xt@Cy(Fvje78dU7f3$a~zj!@f)DvTkkhwVbQWvkUmq1rW++XPei zPn6$$eJsNlXLyQ@$2zIi%R|KD582N?+3^m{m8!z@5i-1WV3zyOaA*(thI)cq@IaR=@ zOQaMb@$t`c2~Vf1ZjHAHuTvVP9!KCT(!cD4ZNbC+h4kgE4R8RhrcWpu$=0qpkr;Sg zefQ;;3kH7%1w1R4EHgqNerSvh`UoENel7f=YgO2v3-#Fm|F_w@{zQ4yu~&J1XIwu) zg;R6exw`)zE+>BcJ94;pvTeoT>B}zwgEQOujg@T;M868JiXB-M#CPi-zFV;Ag?Bj? zZ1{aNLiIK0LotF^K8By0gw->j#d~HN7fl#}Yr}tFB50ZuyPBy&D_JLwt8UNwB@RPb zE!e4jUAFBmu)={Cbfv-h1h_5RDx^8*w%9q%Q+Ts^zNnigf@{46$|%k{k$n$q)c3rY$dL1) zM8kjQIW_62rd7leU{7r=&xdi6hEXg+OS?fG<9br6s|E5cL^z%z>sg)<<_Cm!n*E|m z9ScgkeCU9%>#e;0q8|Jo*g|9ajfn&>VaYOkwzs!Vbv6y z6|=T`%@!qW=W*MQsJ96kovwG=5k26B)F?qf;Lz@b90KgGrib9M7D2#Bct_m9pe!-& zM(CPL-e*Hx15#4vhqR^-9Z!=tP0(KhYY{2dVo*j(V0szm5B&@V{ECF;Ty!x_`hyi`^p z(n>z4uov}v2|vj;7Y>ri=SxlAU*ms5Fb+EoQ-pW~qPdiO3VbYHIfP4^rp}%f57!z;d9LcNhxo^bpB>$Q_{G`b2^d;dZhdfc^2KKdpC8h| zL(GAT!;^{1tk&+00yplbH;Q`bgd9lTfm<(a?}FEk^xItmoPG)SEvpN{dYLcjG7z(+ zAZCd-)ckQ&qRXR&eufJTLoD2sZ7r0OEya#`7J%an(Zg7PR4H5*@#n zt)=90&k&coSWlL&H>?3DfHb&FnUOoors8FAUsyU{-FDc`mSQ)1rr3W;7%}K#M2TpI zlVUO*4yM5cnr1MVjKc4gV(#dA`@3vrP z?ZAo~c%z>W4QP=RkqSvF}e%ffYi+g4N~TN=S`CpxA2GPxGMC|N;>Eww*VGRJSt z@*)*uVSSK2->-_v-J5?dSL+}7b@8!QVc9lo^raNH#VZ4v#R1J$21F0v9;3sYLX3ZB z(1FgmLSO!Sn-$TtTHa+&Aw3l1u5=>kU-<&=NImmS6A?B?20P~^yf|J_vhrhepw~ofgqe@pd!tZ@2X%u_)@4A%TiQ(iP#Lq*G>wfjBt8XJ&*-HL8uGLKJg)6^<72 z(JGsZ6IXN3-6;z^3!S8ybRVvvMXQLKELuoFvmK75IK@8#Cfbu-U3bE@4EVN;d-trn zF7q;_lz~^)k=#x){l1x(*9Y0i*6V|G``t>1*|7C14Mcx!sk(!8Q=grL){6Qwx-hU> zzXZ&RKGLF>WR*+xJgqo~XNCDIvms}&tK$9}g!TH4(o5nO*9uV*urs~;K!2uERgMCJ zt8VY~`%bJY4i(cy!=f3dY@7T05N~kQY4yxmpXnQicCS*@<2}A$ zZFj~6j?Ll{HGPl|^9kqWNYhj=_h8G*D=JPf1528Qt5C8%bTHlQXrf+2CR^$@c(A^! zMF&qRDD{J@4SfY=^Q8AFW>3yU}Ad%;Em**trR84OyQ zUZsD6P1j{zVC@GY45WY^o02dwueuueu;~MEk=`aP~OpM(S#wg zW^Az4=H1F)Ve2#Wo$&Kt$Ic!%BPG{h=B+INBXn@7neu^){(=AV9Bd4F+O{~i4RIt| zA}~HH&Y^GI!go>*19yijiIQa9;Y!+CZzX>bLBiD(hQ1o)6ZEx#TTljxX{0%C`8h5k zNrcN2g&*^Zqf_^&ST=%>G-&MwNc?=vA@0RSpQa{71nnriX!B7u9lKDuC;1jFN9dnp zjTaSeKy2(c!u76tNZ>otYPDD5!cVI*+>nDO-vPHVi>%6NF0lQxy`*Q(T9xh{~Av*c0&&jIdFfl*d+wFEL-mNgXx4TMZVRRir|9-#z>fJ@3xp*3cSrqB396$Uy!;EeG8Y-SE<_M4XHh1z*<@jknmK84>t-7XG3v*n> zOp2${XYD=MhJM-Tt?Dc4iq|zZs;enb;Y+Y84e%yzzwZ!T=%+DuYuB-kf z$Ost>&!KsBLz`6NT_@YohIxNBdUV}L9QQq$R{$nknpj8JUPHuaSv-V{TN15ePN~0N zBZAt?93^-=FwFfA>`@s=k3BfIJ)}R522QZqH3bv+We$TWCNr{p?dWp1hDD_=7{t&Y z?21hI;rjgE6Bw(v-M8jAnm|n_i%6}3&?{k^BgvljZoNYf{iQQQr6_*`!fA34;>nfu zBy{jxd4G}Du`F>vE3WtnI%lMrWTU*C zVkVm(b9!A*kv1q##?XZcvL>#?Ekt0QIo)&}Km79W7}Dp;CXBsH8RN#)!RZiIh zxFO#*de1+1BjD~6%_^l7Kc?d6S4fvjnEatQL-W9JzWcedp;40Q=Kj};pMb-bb@Lnl zIXQ;fymjPs($0Uls@wt0KXuS?z3NiAcFAncr}0s)>E!h0>dDN|hBZ)&8~YIwCdcy1 zT+?0>aGob22v^eC7Hnu&XB6C=ODHom3h+EyzivS*lIilZmR!YGDWyi&;8l4&CjAxJ zp1VAD)AIPy>Ekb8!!9vX>i!%9P9FGcviayVIm<>*6IXvH`3w|}&0bi3Tnq-oJoe=T zvPepk`yX$;{?-Gy_AkrpYBRwkgp_wtbrFk!;fJ1?6MdD60v1rG+`LC45E#Wo@*ZLt z0qWXo;%2z&IfeTqt{00$LI;;k;>u0?7~WLdH?8#HWVEWqC%KUgKr745==MGP7m01v zk~vncM!J7hUO^zTKrb^~v5-U&MNL(J+{MrApq^^4N|Sw`LbdMi%i~L0SHW69e&iL& zQk?RFAxn~AP;J#1taX_2Ze)~~y=e0~MDU0@Tqc@Lz8N=qLF(Mq;Q~(6yjO?l!OJpr2Kfr4po86e_Qq38dzpQ9jqM zhOB?76%)$G_#t>pmXpP_gg$DdtYLONnacCcCwdcHkzI>U&Ac3b%E#)pqsW;j*cF80 z9u9!l`z40Kc~a43X^N5uA(@xistB=CKuV(@$tfGa&R4*8pW)BgAa$h>16#@M%5MI~ zz6XS13T`1LI+U>-)A&S-VyjcoY#tRm0IGkXKZ8=Wz-h1ao=_ziWx@i(=C5auQapRJNk~+gP7)bPK6~9|(rhJn9*sXGr~nwQj}4 zI9=z%8bvq_gy7!H{Xdt98&Ck2>)rw?Bit+mpb_m**vtw8rbi#kp#mo-<#YDmNhE*h zpxX+Drgf;x5Mj1ng|}Ztce93;uOPbKUt#@_>0|j?xjVD3Osi-1O%9N63Q zl_K~~l!-A*qh&Xon_g1abwh7YE|BvQA2IzPfC07MOSbJLhMUszN%jN`2NQG=?gSkt zFN0S&x^KQ(2k5ixCbmcvmb}#qx}bk46SfuPmC4L-uqfnU?p@he#-c5wVQOpzvx(^^ z*}$|UzImBmAC5umfi8o`YeYB8!JFDZD5ND^nK9DBclQG#Di#WuahKFQCoqpL(J{+Ry!dZ`!&T%;?&I@8eZw3=R(-)GTmZ$Unh= z3{`$lpj#iM!YYum{U{M|!fAC=_*Ak~1qRtNSrz}l|E+J#!Ld$2wR z5(coq>QjRSzjxlM!J;1D@L(PO+|P$YU^WY@j@N4_5n{03WLN;|hUkBY6eVu=O))pg zT82;MTwY%l2QE5r>8Aa zw)2Ji{{j7f_l@H(9zkC0gOg)vS9QrK4&9OFMIINPw*_{TjVp~_itZJl6=wbr#1rHG zCEDiMzVf6%8xo(9q%VJhKtI|Uc|*E0J*~Z0KEj`6B)s{$`%bwcC`a79j=g6ArqS8( z{Defr&U*j;{V#aYKA;)REBQjd2h0m6Qy6$QLY%-RH38iwqdqCZ88^=+ldS)gDMBTW zPaZu6`Sn=fCi_%8x3r!-0&rVzCZA59Z1(i0RCi^^M_apZvH^cpiVmo!BUO|+`&)mmhg>p0v&sds+C_it?pg(kH{8eUyCIRzz~ zsKQam0?8EeJ{PzConDrXtSKqt_}iHO8Vzv|@`)HHvysRY&I<}KXa{N*ASnc(b$3*- z$Mm8L9b5-0-3@;$+E|8gL`2qL`1QPZRW7@j<+b_9+MLmd`=}i|8wCfVpbqba(Swtz z`&FJ@14>fU{Y1x-0sJn``55vO6|;C{V?hLn=~9c(YRvN`VEAqg%TImN(Jn~XA*@!< zNnzvI$<5EQ>4=nwedl;&d+pMa3UGnSv=wZ?t`hqw8$y56_k)j)x881S&D+YtuU~Ai zIgPf4y#G|J=H8Z-QDZ#;JZP_+}G~MOuA>!y_71*p$=M6Hq6g){aK%ab$qnG{B6$nL}ER9OXinBNqLZV1ZLOWM}m{l2SLN=s>>fr8tU59y} z)K&0`&*>B>`iiXz9jGB&7*Kk;xhH?p^_42;*?H?Fcg%@Ii13QNwm5pgb-iUXl}3L^ z-9_p+;5dZ=Vd~_7`ZXgZNSHG)kp;r~gcdxoQ$#-VWOln~o$3bbXrY850nQ8T&ycC+K7u)<;6PUV$@z*j1~)v)n&y>qM}(+Gzy9)IdN+-vC@i-FW9B)_1Q1i zQPXPW#oF#hUN0WW#GXB!=Pahn+;e{rl1W~H^X>#bu=DOY+40$O!RCu!UpPFy|M2AO z#xu?D*Zz{MP(f{WVyh4~x$oc%XMMJlXxE5GIr0%eV=J3q1YJhyFzfs6Xp&quBY7n* z_Y4_m_~kH{>ku^dlv1ZkI{X{1W2Q-Ax}Lw78zmp^Y_s#QjL$-G7xh18;~9S(xB;hu z(6{eiY1zn}1c9zXs)?W_pwM8J^i+*`M$(_mhpcsRD=qMNS=w)%uACOlOQ?hT0 z&j1>#k}Ft0>|31=u%lk`WJ*@(8PV#RuaHP9EXVi(AYELt|5JJOgrA=~Q|v}Q*o(4G$V!snI0FQMIO7?>048#@6tBf3 z`!OqqWB?Z$?#(gz9PYy|*tD0XDR;bO|6+EcAviV~X(L&^9>@ePonL-=ve<;W6&|DBtQM8 zI{ve7oyT*Hb59vb;LFglw=&tsCHT@@msJtW?%hoA!DP;1uzOQ&q6A+5R^f>4#9fwP z7{L2Mo>!P=c?u%qVxoTu{@k)j>5MIqg@1AV_R}jos9xl0asVy(jdVWXrXpwDH4+q0D-p!6r*h>p%Cqqk z=}g^k(gakooF$CNdYuIx5=N~->hl9_#@vXa8a|boNkbOoc?N&ghB`I4dId=$g<5Vz zhqpoNRq}T?<8pqk$l(0D9)WshD7^6im0K_aznGwH72;EqsJJe#w{Tp6Tr9_P3sOHL z*94fZbKu$e?_SVK5=g?{z#FD?9v9qod@?q<{! zJ5g9fA;BEF893v%FTb3|I%L(AmZOY?nu*>-kjBd9ycwT^)$J`bC<4bU(>)_ZsuvRT4HET4#1 z!jRo1AS8c4cEL{yI?%9-WueUBCzE+c0U;izZL_%s(rlGYfE+5{_}|RKli68&vrd}A0e6Bl@nbw5kH_QjcuYD8T)oc2 z`X4XKP==0Atw5$@(YCsLc3SfRX!-$+}ZE_X}$_#P86e2)b(45 zg3d-|qi%)?yxy>!W?H)%Fr_ahBjhX{d#`=DRVx<+c}$RV&Vh3>e{}9s{v4(RHVQVF zaNl$TH9`K)st*SpJk34_0Y9~@X4KfJ7gi}&xYrdLLrmb6YC?KwVNrrCc8~{U{ z`($-h!%qqxP}dHAWpnjft;D|g3p%KrC19E0P=)Mqckq(%m)EFFQQ{}Gn%?>3^CN%o z8@ld`Bmz;#ex-P?J|7aHz{2JcVkALmv-L=!W-h=)h5{LjrleRosxClk5W!K!B?}*q zbF1J*Q96@~EUZedDz#9TW=q4t%#e+EdRBP52u6-lSno)KFmcg3nDIRN((MF8@M-0$ z!l!LoDZ0&a7rCmH&vTF$({)>MJ!pS#1hsCs4&>B154`9S3Z6F{r7VJBsAO&l;yM_W zAlzgLXsC`xl;-LgRA+NZxHj+9*69)N8MRN1V0F0Hg6ogDNXD}{I5gyohMr*HdE|7~ zxno*nrIO0Hx}xj(8aGY1R$d3i&TE*3Aw?uClG0hTrlJ<+sumi79ER^yp16NDd~JvH zOKpUsy-#4quL0i<=|t%s`PI@+&HrSPVY*91UsrDhofu2#*^>vl(}J!Q|)?W(fM#j`#6yUAq)MlH(Z2#=I#nzTM>sH@ge4JdpA)yx#2DfC&Qi_RxzWW7{XOcRaBcQIjcqF zRbb9WhB3J!3yu%(xguX66;F}y_{9p8(IlBrs_x3))0Z->s7_jn= zIuF1h8hH+&X@HaP+c(5u_-#~@cxJY(4u>Gv3i#f^C#Ofp4DE_Q#A=#!XIX~S%n7(V8b zTwU?>Qoktp))6Hkn+h^Xa{u`A&yT-ZW zf1_R}q9GQ4ogVW2V=)X-XpuE<^l6Cb-{V^4%Ue=0wajinz(`whqm>LNR(?U1s!XvJ zWI5L#nr{igWi)~D<&zTA9GwZmKD;iK?2Aw)^KqqqsqaCxmZU{aUT%tS;XC^xd{L}h~Bt=ZUHn8cbx%l1X$H2I~WX4l};$2+9=OSzsbJGn|5L-2H#{0Qg!sD zuOlKP!L{7Vt;C71T#T95tTiXiS{eHvd?WkK)r9 z%~v+!wXKQn#8IRM(Px^RIn(wa^%w0^pk8Rl)2%nAL)@@I@@mL6K=NGSuf>%2Q8KD> zOI%~p;xTLnp<($Xr=CL*`9Y1H?8F#AQ+Hj*|#ZTi?^w28*A^BT>+zhm#1eh25tcU(LgG0a~AWwX&8^-Y(P!`j#+A(*6hI5 zwMbq8!ob=*k$_RIGD91ZiI25W;ULm~0UcqMSu}jz(U3a`^gKe*$k<4?`$p-aEY=xm zwIWBDL3rhn*O}qr3mG`!6{Sy#5x6k^!V@;a6%P9Wx;wjA(;bOO$YH*yEf}dLKMNLUmr+oK58v~okTB{O>29l!=ESxCpCxdowmKkUIv!Yy-E>*1{ic~POQHv5xX!sv@M>A$>}JGZW4{h6Sq84Cxn_X)1%~70?OkzG;bT`Pyq$#x_*P zaF_B=>0(>hr#)B1o-1NCMXZ>h!Rom_wt+sz2C3)z*#BA|dzAkq#<+_us%BNN&$YA| zEluWQthOfQ*VfvkqH1puh5oBr93%ISsd4d29NxXC-i)^Pa#naSUlTWf(b1~cw4ZBf z&$YDwtCr>|P2Qp4KdCN-7ZSnIEF6A*^oh<%P2y}zU)tT-P+@xO+0d8{wxb~(JlBX? z7+EKq>CwuPQCg6#qWVuT`|s6!utH@Q)O7tvM zOE|byj56XGjA)5qh$6^;`RNi4@*(R7dozzF>OmZ($ZTNv>%m(W`rJ0^L&!5 z>$31DALm&K6NPFIiIDwp0}&YZIpq_a;}|gf;n8VIg()Q^6#I#PxrPG81PQPcRPlJJ zlO(IV{0OQf8+RE*hj#e3x(p~1^yV%j9@^oyF2hy0S-x?Xf5qCjJ<5dQ%28%KVn_Mg z9Nk|w?ec5i`8zFT2+FWT?xW9 ztp*CjDh3YAHS_|k(5x3UW3&~`pk!>r4MgA=5};T(N;AO8t7wq;Z0YkBRD)%YZ>!Iu z8Z`D9(a;{Z_jwz-!7Yz7p}1rta2 z>inh<0~?jN=qMI__$ehsrBK|@7TQk@z%Nms;HMV}3L9ZS*pAUpqSUCHouR~yM24Y^ zV+O(;q;RQ!YINc?6fS$0M*3B^-%Ij!5@T7Rs4EU+t8t}TI97SEOx9{+2^-jb^Saj1 z;N+(gFC+&4hnsBFs$Id5k1uul5lyL(3ggkFDaCcuPC2#B#h*y>|yo7d#zwo)0SF zN~Dk{($kw?Q1z};dYkd)=5|cY!z0hx4%v)iBLdptfFUCtHdavAm)P zn9>}7NhD3vz$9Rb90-EZTh)fH`BPy{4h{IZGJPgf0}gQ8@x4}e zmKZ(&IIAo(US6}Rz`%4NCI<53t8<=TF?!&R?=|TLgjRFh2XwZ=xDQ_zFy`>mj4>#A zC~1YYw_+Lyz8`?93kUvaULx+xXx)wIQ@7`TZ^keWXAi%&UB1*YJCX>3aaj7bNXAt* zAsW~Go5-eU`h*iyfOKTBU7v0cU}Qb2L4}QI2KD|fiV2E7y%-IlR``8^m)0jDzd`_y z5X6&lS!HcP>XQe511XniMiEo>(xjk($ar9|c&W3Vd11}9N`ez(MB-`;;+w2k7?B}= z=BiB0s^ws9xN>cLzTleGa&DEYJQKmeAWO*&09fO!!4+>>@7m_j>BB-$3(lct1eX=p z-ZJ{nZ1fx2sLrX=8_uapPyIQ?NTDKG#Y<<9n?q3){gPkpIOIn=)}*Sbyta&5`Pj(c zLuK265Tz-Lv<}{PF?t4L?!#u}r?*XiU>RDM@>Fk=6}JAE%HKn0K{rTZ$dnhn6tB(5 zDG}3RsmT>xkEQauByD;~=5M60pdL+L-je%I*Z6E4za&R3$Q+#?*JO#dS&!5Yh*CE6 zaF*X-dFIearj@NM)i&f()SWXG=-Y}W^)%d_o>Y-ufW8J@zmehu^AY>n}e2PWbyPH zCr|J^EIs||(Zi#M4<3JceDv_tR?EgS+up*L<~wuqZ~hw#f}_QMd5lGGrV=-2CI6TAGS zC)}&F(!(HnBYbf`l2(&JjOvF?kmkoHmlQ~Yls?lqDSk`W){e!@Uk;h4 zeFZn9;p(8RQe(ACDpMl1Crh#Nn2m&n6NFB`q@&5O=q9g!xv(48t3fRg&6N0mN3BMa7{92bq+F{PnrkaYVfguc;EoZZw|eBZM4UPppUNk$L# zK)-!VHFnKN5l&jtX;)!aC&KE}>(*y)k|cUxSuc9Bnos*Y3cXgL=_Jhhvh(t+P_Y>- zqZG5$Be2bXqEi)?U09T$OK$dd@VKe->Z|6chs0!1bb_d^EinHiEpWsS$U3OR@a?O( zvTV>d)&Sd=1oHmFCE-v#gAj|Cwr{dyPtdE?D%E))d=x50o(s=UxC;#ZWp;O7LUi(e>a(s0QQ#fVlm${VVGZLo9NXo^LMkAH$Te}h=@8}N7vcOHi&C{CcXmZp?2-*Z{LXBQmC57BG|L%tu0U0+r(IUsq6P+)acY-JWSx z(txZHR5h?XuI&!WqNJVoiZ?Q+(08jwn* zzx~sHv(R33iIy7uN?is?J8MZidNL`d{LZ@KJSbSM&NA@sa&|d|Si(S>?OD8)!yV?L zW*k1wts+YjK8ZXx0$u>wZM~hu*NM#t0+~z*X{VJNALUO*rF-=(U&4xfA5d=e+#ZjBr}?o*55DA^xa>k>F2Z`XUll0L-?$|##+^29KDM@hD#U!R zmAto81BB!9^r@s%WR+%&f=N@N6TS497tVE+L=PmzJ2Cj=YsjfkCg7-K&`LT|tr^Kv zGjPch>M$eslZ8uKxTHltc?wBF7iQt>hUOo93K+tN?)A#-av5|zE2+A{gi0$af`Z@l z^@<)t9Gh_tp48Z_SwTr4<}Zo~UMm{&-DKNpHom&Z0QMzZGf6X$>3cZz=~JXMP{We< zAwE--C+DV33J+2ui6>7SiNR@qe)enb9$Y>r!$Oi#96IO@(*!;0NAt3_$e`FqLZp>O z?@J822YK-zKbwO8c`?Yx`vB?)x$Czs!0aWj*Fl{ZWtV!_144EIXrN3vnk>saB{-f? zJ(59TzVKnZ#^GA)H9!dCjuy=Io@@r zK4q+6o@MYm<6(g`3(oQ2=L3D_00d8&))0Y8Fk1{Vqf%Oj z3;;41o%3A>(#Jj85{y!R-#bsTbI7E-8KYUrcvV_8FCEKR4RW*&@qr_^!eRU=8e=wv zeNQoea*<3ps>DV1i<|N=y`~ViCjn>_fdF&MUq|4*JI;qxc1myYr`~wZmjil;bN$U4 zJHo(n)*_Jgl(U|CS;=)+WK5ECUpQ;0b+{h@*qUTi)4uN@VG1b^D(`Wz zr=}P)p#at^M=Ks|m)F_tJ);?r^9d~R8Bdau9H|h;{xYjHQRaeookFV~Oc-4A;E!mf zeu*P4anw`-@PHDCj<+~|k!R(6s*ER6TArnoXrWg%5txA+(^pqAzM@JH%e=uWl`0Ly zEu6YAsZTkzu1eT{IUy{9gq3M=LQe0$(o85vm%>2VOu5MA&a$6#jX_1T5ljeEc$OpA zW~kPb18M+V=~b`Ba;Ut~YY9PG5Kc%4k2r5Y8uMKGHoAu=ZxX1wUL*jZ=<5ck@}(>D zf%l?-)ZH;$WqF~Z=W=;5I>;~nLxEZ10G zYqH8mRc3>hn$rT6VPYtU8_@Ty^xXt6axE+1^m)}XA(#nhm2cLfH1 zJt0T9)}af3n&V0#0N=>r0rCtnk1Jry?`jDDkgBU<1A5MsS89Y?v`(5LM~8j$8+qvp zmfEsg>u68xmbI3S&whfgCU;How4l`5Ts1Y!ZF!Rc18EZWN9DcWMkQE!ysUIIcnp%` zogMyX>`6hAh-C>+W%uuoCIb(tmb%O;UUHRHBudwRQeY&_AdgC6mAEkLY4> zbdArm5;y7b6+Q!%74C1WSHVfm_)35lKGVHc`LA=J;b^v4Rp)Lgo$m73FgSK&kN*su$S|lW$&>jR z77(SGSfVw+q%uNlFiO7}8C>l>b^~*dCWHJpKEA&b?10d2P)Joner}3DA=Oub_-@&M z-VZbq0xr7J-Pn?j0NrI9%k5tC{4)eb>iA{!1k}$v1cSToEVO{PzmO(OBX-|od>$;| zmMxSt(kgBcD(yAGSt`=~{iVWQxh10=SzB4Km*h{1>4Nth5y(6+bpWZ@7C>8!ZUM_G z^ax7w(&CHiButoKYMM4uhA*vjJ6gtn>l>Hp(M4y$L06v}Vb%F+@-t}95)v@f#AMLU z7In=nb}&56b(#Wq5>38shIKAX{_^ zvPIgte@zXyE}m}?bG@cZaW3m|ttb)Iw#a_5444Ev90us$K;o7+WIV@u)`irkp}j@6 zb^a9&_IcQoFMdKZBQ~J2=1y6E&HCZ#@&~HEq+R>*1;QuMTyV9I@?q$$rO^ZpNk3mE z^zPMu)BG&=pTHKk3zPWePQTOX;qCXn&$0H!^0lygC=V>@TNp2O+M5Z!V;&onFOj`mLK|S-CfWnMM)kY#WpzWX?dbr2YLXd9->KX+ zY24TqsJ&NksP_qU`>U{cr~5b9!v%>owEjw^MWjMrSH?G3Z6KVyxv!v@7APeOs`A#z)v>L$wXRU zAnZkQ$sH^CU0{0ejsxyzlI5ImE@1Iq6!WS0rJ-8EUN?jSKY%BH7auWM>dVTc&nEM` zjpR-DOEDTGgX|KP5BO~x;PE(`fjt(NOzz)MqPQ&$#@QGS*!Gvh1ui-;O6NaQY1_Lb zqb^V%`Sl=trH>+mUrmc&Mgw|35fpm~8AphMyy4lQzDo*sR{WYx2c)DJIR<^pJ>;caa0`roJE8@_QXWw{3b;VX^%x{;xr(YthACdu^YZBS%#s5RiN9 zCh(G-5?e1ho?z7zcvL&8^l%8pWjJgNMT%w)kSBzcj`_@$YH0Jcz~JA4T-jU=pc5iY zA|DDXtucUqiV1t?D#4i<46BYxr;EYemz4@XE?u^N`k`@E}Tgw@B66d_*gc zVp{quXMOz{$(oEq>}VeXYJ0H_xF7R+Sw&aY&@BNrDBln^0v2UFJTkNDl>-a7`m&>_ zX1UYvCV&>V$5W%94CaKV%>R_MXIAS*m#84+Z$cl&C<=&wjZ=4aem;ka3pl%<&p@wW znKB)Jl|O?D!x|pIG#49uWdfuTvaTrws1J*JH&Lr+r}sgcm_c}Fhwp>X2ylcZ}CwNlt=U%S?IyMc5H7u|Qwl`Gqu zWjNQEq}gw94dT*J(kSJaki&c3^K2G3(^EmS);Leqo@&l~a)R3E{A z*6wL`gF$!j55lyUx8G?KG#CwsIli4fUf|_9+#oXz=Cte;!)A=Ql`tb5K_$__k0-D) z09%}(S@dk7udH7zUyNVw%DIXg&*O(UcaHDhPggf2is)$pI+fp0P|K6|<3Yw&RV`?c z)F({m;gXtFC7KyD606AWHz2qnDVBV6fsP{T2jSVWyF4 zrwJ*FGP}zQa=$1-!xc9o+%{;Zu`Ib%R?FxC;5Jwpjb?q;P1kLT6vfCEeEm^bj$0f? zw1}EsJV!eP@W!pu!G*MWK#yK{nxGgX@TE+=RZ3}U>rk01Rz+SHAKg1VIz8ck3^h4| z0&p^$|C}Y=!)!8H^j>=nEHA`hbnUZ*ew|;4oV=Ie4fVstB)c4)bJz%_%&K2qtNY)4T+->9P|v&N8N2sl1?-ir)Jkz+9%KM_a(<6wOxd9avZWRPtpW zLl@tE?_Ka$n9fKu$uoFxtdG@yXLOIS5g%Uao)oZun*$N9$es`D$Pm`yGY}&$DRn<` z254(J;;d{A!gZS5ALC747m``8qMbH0&UMMn%w}`OaFmY+$dz|a?wz{xg5>aHUa?(e zF;y=O)i1taL7_u9TGl_o2AxM<#}?_(X|IS{*S(TF$sy<31kbPW^JDgZB221}z0|M0 zeLNlILjbG?Z?3o;ICgEhK4`IU?&0X$(V$WWs?H)gd~Jr0?_E-Myj?I6!=SNV(mcHY z*%LN>miY`_s=*RbTZVgSC(x@ZuIU$$j%fM*4@%umt-+3qx(%8Xb?Hu}rUg&r5(Q>u z6H*9Z*D>pP5RV(5bhR*l)z&FsEk^QQfKB_II%UqBj1HE#alZ~=2H9((HXLplH#)>( zsvAkV1Xm1(876OWj9)+fFINuVo3ixjF#%?pVhxta>9_F`yhV5>H*dT3uwfv?c zanhTM-b`Q+jCdKz#ao317u$xYxDkHMT#lQrNGah?9kzfLKx$w3uu!akkb{jaTdR9vWE)ypbTv<7(h#V(5H_|2)R($VW zc>>ltMm0oZhiZ9$7`1&=E!PL2J8MHEOXYQELmOgtr6D2i<$vpzj2En z?4gZ0p8R{_CWNc?&Q25|(PeyM_-R6gYoT8K zVg0(L=sPJ|x!B%XlHwEyYOTdn{Vvz!*82$s3xOMj(3j-Dm-SSTVE)Y^>JydUsjmFZPbLxse+7 znSZhLh9QLz@@{ei%#_{%I!j%2MOYh`CQX$!-H=f!JD zwk*q%EZa&SxJv7b%_!z;%blj^dJv^vJLc^&&|uYXeEW~RaXI|xIR8
bv>7odk9 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 IZ2|xQ0H-)M^8f$< 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 4a4ded91516a0c8d06ea5f25f4cb926e65578b62..f03fa34932144d27b66a0adeae2081e3cc5dea95 100644 GIT binary patch delta 563 zcmdlng=^*s#tp~B1$WK9>kDv6n|{2%k=H1~)O7UX&wG2z&+kliF3{R@#-PdR_0QL80Wd(0nD2(3-w+|u>ZTTIIT&6XSRW` z(t@BV7kpZyHRq}5ZI6)6={|Q-|EkiCRUIMwzRDRj7O$%Ov+b1G+6h-B9P1N2w-z3@ zV2#^Q-n=VYvz0~utn1mL-v(|^{&=r^=(t}X`u-ZDfB!!+xHUehuVi-@3ial@V(gwj=> z87{Tch`jwX`}W-axt(U+$Byk`4De=VWSPFYgGp-pVtb}#9{gx=G(Dn&$yD^nkAK&+ zFI{AeT%@Dma}i2UU(~^*%akTLeW5**()7b wI+>i9U-&RgKi|pZs-hpqz)+r8l$w!WTAW%O;LXa$00cZh=mJa<`x8Js02MXyJOBUy delta 142499 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 mdU9gLV3mY4(`a{@ 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 delta 142485 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%0DyE=}xjd$#LSMne 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�}E*FvJ?GRMVokT^~~v)EHy9z`uztYyh+# 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 z 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 VsRFZgRwyh3_AlM4{-oYoQN5>Bz!+)or!mm?l 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 R3;+xOL<0Z--i87I001+kIRpRz diff --git a/Moose Test Missions/Moose_Test_SET_AIRBASE/Moose_Test_SET_AIRBASE.miz b/Moose Test Missions/Moose_Test_SET_AIRBASE/Moose_Test_SET_AIRBASE.miz index 2a060d33f1ef7c9be204492fbb875c38398b6ef3..22164de70083114922d9b7ad03822340a58587df 100644 GIT binary patch delta 556 zcmX?copWV3v<&z#zuJz>s5Tkf-nB>gE{g6Qb{%pI@A+ zms6TJHQ3hwuz|o_Va@*!pDguk|B}4oikGaH^eV3{D?KCxR%uPXVKON>yzg++kM}q7 z8bz3zj$ZtEZ*TeeoyvbKbu2{fN_O4VTl3hWGof(*%(dag5xLLI%j>&2CY6-UZaP`6 zz;HfSWNqsT4joQ)q18?W9^I2dxTYWH!z9BQJ>EQ{4Vgj@%upW+$JV*u30}`J!IO-T&fV`Jl8vbdGlqV z-U|u#e-{>~H7W4SHV{@?5H#gNy-#bj<~$X>?Gds$-RDl~Usc+%sv~6IS2?4`;#HM@ zww*FtJK?H?V}j?_!owD;ZPg3m=LJ-r}{Ntd};l41ISET$mlP$`D#U$dBum~X2wOxMZ=GOTnN qrpIS9xvFfkXJ9B#EK1GDFD*_j4)A7W14cgsHxRM`(?YKkhz9^rV(nZ2 delta 142496 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%0DyE=}xjd$# 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
bv>7odk9 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 JkF94wJOJz8{96D3 delta 142474 zcmV(&K;gfdpaZ$=3$W%N5;>X)SBUSJ-R{0;E zSXPqVVHSc{t)k+BO3ASTYAGr;WF|0fl8G}DAhGbb+s8ZS$N?;i2d*&FuU~h+e%<}< zH__nIj|bhPDH>0nJP~^b2S?lD=y>yZ=Y`nWf3f@h7QG%G3ruc^mU#OuE6-k%WRdtf z8boQ3$H_n($NeaO%Y**#xoEGheYpBz`{UEKwGTexoV}zI^u$>Jc{ar9*Kfb|_FFrH zPHzWo1SD5TtQ3%0!xs@^}zs2o+!S zlW+v6E-)D77fC9<>c!_5c_$gy3hyQ3f>pBt3t26~Bs~y-0@RW32Qd2|tXYA*R|k znVkI|b#gF_B{ub5lDrxXPje(dJXMO$B2GI%!^*f6cSSxPMhYbU+7Qb`U>S{KfGA68 zl#kMZU=)NzV2_Z|=6AxWzZP>v+=44!kezeOA~9GJ z+9)ZW6C5lGD%wAXNecCUj%7OPK`?1#AWj+wy?7FxW(aAQj3gOEyYPCX@N8qr&w4E( zfUu%}LLn5RNFZ4CK@X%Jz-tD4;k^f>JTXYX)cgHtkb`yigAjs6BGPEs3p$ZVdLb%< z^a4`lDdf~Fu^>xTHd$eoTI8kxK{3Eu#>uj8Y={PtX^@RUQB-!2x;GYAN%|@iXcL5$ zy@M2}`irItEst__IMQv`u?p zlE$0?8*SOHJuvnhN*hPLFoTRrILzw^XOsvjq{QXHsDBov+Q0D!(pWBjFmjzVW?G(P#Eg}dI^G6Af#)u#cqYxq< z&{G8<=bWnA(}GQv(eEzFeCk(KwooRk&SX5AQhTZ?R24X@f^^flEPUS$;xjYfMp0a2 zKoo!UkghSJ5f1P-?HYIGsCc3Q!p(>lS`970g$zN?T|#&)7OYhkK!nlR=-kJD0abJs zbY3-E*!3{#R_*`v#`~sWb$H!Ml&CG$Yqk)zaEN3&pYnHYKT;PRvrX?wVtFgNk;_@o zjhOYaAa!c(m&YBHUfH3{kU1D)h6V^xOj@2U-tsT-A4C9MZqr<5b&X}_HkIWR$-OFx z^j-nSAyx=|bx2YzZ@CVrG_G%dWi{;@4(Ax?LuaiImE3smkA^3Rf*CqE6{;(wq~AQ* ziq6x>(QJU-Z>wtQ{mI(LtIvSjg+GiHxiYcCAdG{-Y+{noGay<=3`RIGHa$-E_iSaVZ9|8X6){k`L4j}UEI`+F9h{kGXA^7VH>gh_#K^9oV-q1z zo>k@lWtrPb=CLOx3N%)Qtj(aF?OYSPz`C3$x2KE0XoX3k2D1!a>#2u^Pr1QZDLhepdY z8~t?n5W*;suJxhN9`lUBdoUtSVhPG}@{iCNCb2a)QSoGtJ5; zUCfsN+AvmHlKMl$qRIf4f!H0G8d6OuOs?ctQ3U;*tAt8_3s}uIAi{hePF+L4d8($` zTU$Vr%d;l+)y9G`L~PUr5t&7!wr8QXP0L~sLGgfg&YsN_!3snIJQZjsC07u z+v;e2ejTm5I=X9VWWv}ajOQtzEaO+x*B6fB{;(GvCL_p%=#UJacn(v+m!OewNYke& zCgYePKp#YZD-5Gf+y@7tNnb2t7GsVAb{DkiqL$(+A=@Dph5#NihJpyeUf3V?u$Q>D z`dbqcsG*@$Rwuh>7iL>i%q*TT{!_8)f6x-o=#7+8KaC#BK7UC%mEewY%xpER?xf(n zAZHLVrXB=!i!EQCjzCl0W~CT2zkY%#nzKKa?-Thxq4%l$PNjj?h*HWG4rgkI74rn4STRy3{61Fi z6Mmn6RLjN4U@q^=A|R-U1HZPZtceFYgU;hI!CzqPrv z{#ZXvervaW1Lv-!iShUQL7aoj6i6GlWwu305T~RYlHnPoS_VR|#y;>>)D$pHU`>#Q zIt5|c9)^cJC^2MxaW9~gWKG7>&cF$<948ZhlvpN{Nz<-dq{hO&?xpdWEAzUE3Obz? zR0lqcVB&3zEld=2F5p*&vHIBnyHoJs3vAoLkU@Vipn2cJ#^3{cd0kE4?0tQBWa}K? zJ!HV)8K1B>yjqOXi06NQyocRiof$xAvZ^hM)T; zSf#L0WRwFB*i(ZTM-?bp1k0OufJAU%I>azZ70yWdeEE?$W}a*63VF~2c&)z^<%=o2eKuE ziq9-ll2|wqyx)+PQh*;dl=g@O(sM|_yF%SoBnt2!EfPpt4^+-FECq+VfenS%LSeQd zjD)5GB{Ld?y%;GVSggnlttTI@8Y(Dxk&0ww5F`~8X9eFS6-uFXc8UIiV78ah@%i*$6cu$I0` z`}t9xVoi3^2pT_fRgOFuv1BZNLI|d)idCb7B^8@L1YBg4wkojI333?D07*#Qn;gfQ3IQN}! z+HGjfnC77nf>~Hkd6Ws&)p)Y@81I)#Oe3NvErYR_5m&`6<|9PIv=UQ)cqW7SWJ?B% z$d(LT*-R*vVa|yHs@iqiVVu0qdpMPyMLOgZY)&n^766Mb!BFiII(+g&jcZlVQBdPr zOotz;T#L)UsB5vxZs%H%_hDQM7`++SGK`DvRp&8xaTdd^=r9EzDEFygn&XcVOmT+K zMS#Pzlos@0{sVqY8ckz=K`PH+p|r^`r@1P~)-x%hiF5UN!gCJLeWrz4u#9msk~@H} zf&pUCR8X9^e1{m2fr52_9?+pV4Mc@O7YTrEHL;6vHHhB&lz*6ljp5uG)NQW^C|AK4 z=GkzrDM(@ISvoxB*xv)OAiH1LUHkITS<9Sw#Mncw9t%fqA57|hJicbR6-ZIHR(47x zDebk$q>dt{JzHB{g%-N4W_MJcIi)a5t3<8El$5DUcdJ@wUR_7?3ntR^0M6!zRAf<5 zHL4t@WQFBxwO4|2SBp#sa!mqKC3 zAP%AkwxOV+*m`MyXlYihRqnHd&murL4AqSOd=cryH^yHeosW+>|LRP7$AfAm^txNH-TIv!eRM60SBt^>LwF zz*7HJ)a%iXcW7br3!3?RRvoFz1s;SiFw_te$=sQZPzXSS=FJQ9iBFW|Pnm_9$XD}` zb!cWAN12C1N#hsW29>FziAWCN(b+_G4v9lps{*O4x!^cE4zgFsmE#X~L-*ng`zj5O z^cSRmK|fOn{mm*f4Qud)={ z7y`b)HijRc1O5v>Q3laK`hv#NJQUzLbm&kOO{tPrVeQH?8$;DsnG_XInCwnOanG`R zpGDnK5BdyAKkk?VYrKNr#||B>(?y~0)~Z^6F8uSxf_CHUDEtu=S4_BwdNISwMEGpl zk1tC-2bfd71n-RDWFK_0%-hirBA`8gb~RMZ*45CrOjdfU6a45g<9>B z5E(Le2_uMF1q=(Wlom^gwqa)~Yz=X;I{PrI=ooB6sen?qb*$N5Wt%OO1dFH&;wWE# z^CyfA3tcicX->X!)I=n^G=b_hHo#`1MuD8^XZMmTa24%W6htm$pK^4Wpbb^C=de92Ka*5#yuG8QQhg{_ZQI{a$)dCy>lS=L# z(5#WVto6!FFt+U{gWA$=adKtW%cz!r-49VUx2OXl0<_+Xx>W2^il|NL)$!Wq^xdfp zac6uD$NHpn2FpXuvPR)JKSK^dD>~RdL&mT$?&5fckpc4^LjXry>cs(l6Vaj6~9*%_YQXBseaRbo}VFPZ%;NPLE%A+ZN$oFDo zF~wf8a!Kb65u6)qQ(R9~4IOT7?HuTuFAzBkQbi-1LgUNLLrG#_VtOs7as4GXQb0)lnKt`NFaj?b()&w6rV#bA|$G}CBznTS>7 zbg zv}j|iOq$q9la}1+Dn66-1d_w@x-yLg}Jh5^Fi(<}%`EUzX7I}eP@s%EB1TaCNIvz+W2D1yNd~lPj3M%T|R}CBS zE4DG~xVnyO>@7Qg3ptHhG014Wz{4kVMkeERgX(r0spxVlvejjsLzOnwDn(A}iJSER ziCw)Qz-grw0hP%%&igs}hyFF~Fe5d$6H|S26F;$Q7vj*nMEzH{1cm4E`-wI-q30PXUqG}&3gKMGXp;z)o@cl-Sks4cdC_IRn%JY<;C)ujIAbc=*# z7&uTA#DgE;q6X(6P=^Ca&dE4(%W#oit{GCTMtG7+U7RHn+Bg;s=}qM$n~;4jqG*ka z=^aPFD#cyYpsX)=Q$@tfIgZKNl9f%DXEE`%D}7BAyuhM)l=00YFsa#jrIy`0u&k8t zgdRU&b?e1{cRntBG)lX$?+uw*EAQ^ON)ka?oP>g;z|Kk4EN5jj%lM>X=&om=nx?HL zD1nlquy!xKv|f2cvqEhmB^SA3*%^Cm^^jdAnSIGe-yD3uyM(bu_38qExeR}2dSDZe^{}-nB4_+VA~NM{W>D!fRj{Y z$6UKBrbmDPG8NcUynk>^?`R&!h#;lq>d7vWQ7@D?3%7hp5PB4}J1UPLGUy}stE31R zjKz4nat3G0&9SYraHScyk}(?DbrLXE3GhfK2u<4M`ODHsW)p$RAgIzLUh(i?;6~Qfx zZ4&_vYse~8HK$P*FtFdhF5p=<{cIk8v@U@68ldsf&_L}n{9NYdV+DLO8;HcSUZM2d z5KIpc;vAl^GBev=)fobl`5YYGy^7;iAAV=Kyl-NE&o9^fmxo;Q*qf-Y{b>VHVKk*P zpeCl=O`;TsJJu;IQ*BYhA-9KvCg?rGc1>NubUx-#e^-p*rgIigB`m>a6Cupv#1w6KAY3y1{jdQ;~z;W1#()c;KyK@1ydwdx-7E zDP_9jkQ(YZqlP|&BQmF1PRLk)_uz(wdu+rZQ6a5S{c#Hz4+3c0)tUYPOg?~%uGHy& z1;@)%BiM8tNT9T>mNNJe;(h zExU?w>s_XW&J)$$F-}$%^;T|Hy@oq=Ihl-{0W;S)Yc3pZR^+Z8GD5k3j?a2>z|Mm) zc)=NADu*0^8GK0m9{yP4Q65ajzbd1~cN|90!*eyBvL=8G+mmEmzMxrQ*LSEs6 z!lM-a5EDZftPaG0NsY6AvEurPMPvghn<}x(%=M!9@Rq4xDD)HK2wn)}o$u zYN?TT69PO-MU$+mT%X!({cCGLuC(ML*lBXGUK*Ek6~SJye>SPy1*i>iGdc zH#40*gXZ+U{Y5l?in2$)ZuNjZy1ToGhw{uSoG%^3fY5`6Xh+@xl}7lkuKfTYX#HR?e%W&S#KxBis3uo&LVkzQHZ*!T1C3k(#-?M5t6waN2D5P-AW(d^t9ys z@P9Ak{sPPE`$6jXF+6q=sSfzE!3ynrM#pu39neQD!1@*TdU~&Da7p(uA?A5RH*_M* zL@ECv0wWs+FvTr&@EOH_UEmw_z*xss`#(zCij`h??<1(hY*bZAwwG^x2^{z)DBL&d zpGj7LM}uOw`kAZrqUoHm9&X7Rv)1r__+1N%4ALx4;rtuytk}eERvTGyInq>ixr%Fl zaVr)aox`loB#nk_*!#cdvWu11_%mbdXO;@?GzWVBbDyHAZl-KaS^c2z`Flo%;{mDo5RJI~}1 zZTyBH9<-z{s?f)E@Mh}{6&^3`&p3fpkMDf8n1OV!zjfRjkBbt{$-DUbDefnK1_WZR z>Bn8>sN)6AY+%5J8?SLAZj8TyWR}S}LmBqLL0EtQ0)nUMC2A3pl#f&jvTKfV20_Rl zJ_V2XO~m!A&#HK5EqT*F=L9to*A|wARYetEON?>cl1qvtTnyb?T-MY)Z7s*R$CUsw zi;=9QITBV(yFv}9%i52BEfm#%kWvWHO+Jy2zcQYdS3l6N>M!K)WG~@{po1=*joumj zoB*&XUIgiRLLg7<2J{tVN)at=&GQt$uhex;M86oN&`{B7w4E*Wtp@gNL(JW%#0lTa zIApNQk!$tM34^(_<(U^_ur?|CsIx(ZLYOz?up4)yW(%(>Tk}_~t-*zVg4mkEtgea> zQq+*%tn5&-Hy@ut!}n^|wG2klX;UmOd-VUG1)?{?Tu<*NnMyBLd$};jaQr&Mi|P?N zt;$J|YAVZ!X<5G^iphsj2A@pOAMvQbfLX(7$uiA2VHeul6|ku+f#|7kOo-8aGYr|; zXoz{`d4W^_LPvgdn$kmm{B{p)ZJ^BVc^vxm1aEENvwUR8u9jR|cGI{h22_0zLtkXz z>YL`)mnjS_D<)n=8GCqO1Pe`V9@FaTTx7XXI%+9#b_{SJGN3ER)m~$cB^(lX26;NQ{?GrsvDhW2~g3 zzeu(KF$jqezRu$gMBnm0*D@D#1@j^tE`l^f28J>~t>u_$ZOlG=7>`VlF6Erw)_4N{ z5aKP`otdqUL@616g-L&W?T!$Y4G&9m+olKe&fWM3`nhZSBjnG*p^MufL!hP|68h&+ z#5g0)gM~WVbt*;;bG1cw2H7GR06BX3#XNFgxn(_*!#}zjdXD&;i;(i`2!T=&ljTR=u0m!;+Z)KLJoh6DkN`w zG?qx#Kq;fY+jZ&ZKLIX;I{_ZfIRP$2iOWo5 z1UGWTVI%Bji@OxmD+pUErx ze7tsR<{A)H;}C{34?*|bVWU(do4yDShc1qE@D9K}t}LEK= z4+5xvTi(>7wc=jpJ*6dPWNdpE2+B&%ecCm1ua(Ffak!%9)D}xIx3-wW{cCFueUWo7 zuC67=j%n1UyJ1Qz)x73VN~B9A_}qdy+Nfs@F+Cy z&K|Y!z_X~6xwV2MST%;G(GGqXfjue0E98`ac1rru+z-^E6uqg5#-w zYlTc-GstK^V=C_hH6OC4ooL7eiv`)>)}?bA1@PhRL>`=^2?E+q1YgL2Jw!ClfaS8z z1@4<-L5Ltwfb(}YgrE1NQ1M_mvTi9kN2Cp5N@7Jk1$4i3p+A8HB5+e{BWf>}gip6N zk2k;EJlgh;qdsg|!@D6!DcOn1^{dZ+&*rX4_{X1C2~G#-CiE0KmJNM*bzabi)E;&9 zt?!LARc3SY(V}P$CAQ3mX%&;wCuAUWsOYS4e7QB*_AAT{K zV?@#%KN_XgaFrHa;z&5yhLxDA)1=IR$r!oKkEURM{<;pQ@QrKpL*1U*T$DrSq~B;^ zao)%P22qUL%Ye7B?rn<>9YXHIbslO@u_A#NyJE4Z)$kpT96hTgz=lSD2_QceT!&iz zv~(@ipr=cP&r{G&?N3i@Ky8LN4O5t3+c9z&P+caBX~Q5ic@(5RizCz&fuzQ!DlqO+ zFJQWfA%>ztFEc8TjsHZu3+}Gg)Bv?UtNo(7u1rm(lym7XE!pX4s8gd92LB>VH?jnS zH~Pe~Aqq6_C4e%i$JBCvkZeY@H`Dr76Q%VbJzh03-mQnhH15#FVFI`8TyaZZ}K zMxn4;+tBz!yiHW$@r(UEb^JQuSJtQZEl@SRWKha7sLQd$RbD8YGzad;>e|&^*W1*K z{NL2iySmEf{w%nERdUbOa;xy&0VA~g*#QJg#b}I^Sk-(1kti21Rfo>2Y<7#>He<6sQu|ruPmB^nic}1Tl&S<>HpG*-yz63a(Nhe@0AXvFs?i|BdVqNwN z%%Rzr)a6irU=5J%qLIi+)SUu;z{P*+6JS}H&&j*|SLw4crK{6yRA(#KGtA%b!s}6# z#?YObL`^Ny6wWO}9$xuKCVn~zj`uRO<#ehLgz6xR4Uxc)DW2U8H>n=rqHIjTkBs*D z^BPpYTuCaQ%6ZgD<6++L7-sU&JAM(o-$!5Akd;G!q|M0e2J*>2@;6kGG@lAXkt0W4 z2+j>P%Mr(lOh4YBUe6NPRlb*JIJn@k1>$LKS?DCJy+0_J?7Q=1xIU}nUqV7dJLkw63?G2UHWT_b5-wtg1n2SZ+e zjCE5yvAN@OlD`?JejNIT2irv`tUV&wKX|#lfBMzV;kLLdkL}GD$2$l6r||Fi8+bde zVp+!Ww}05&+BPD@-I9|2a#qxfLJmjS1-2l~f{1@|tHw1?T87rpY6h#f5unGcG19oU48qm; z)sOInIpa~qvxv(s;v4m&BbZf0A=YZ#2-5{3uoKnfZqJju{a1_7K+W!dejTt_ zn)bt%rhUJqnGsIfcMK=-;F51c!WsKaedOW_%5lf2vY){2@u>~3@*E}k@Kz-`lox9z;@dRH21yvCw=T_A z1RRrbG>6G+)Okww(XC2b1cVBsIKLmYzsDZG>fNfYI=jPs(u+qSFHAC zmHx_TmLB_Z7T?4=zH(Eq7Od)&vg*vQJ z_eGT;?bjlRJnvsQ2{cQh_17ZNl;P1Vf!@DIffnh;PM7L~dz8v<0_R};;XShco4q4# zZk+~x=3j`uVMri<1ZcV8F@zpac%`KY=YwI~L~RXeTx_RMnErS6(6yEwJ3Y9|0I{@} zR;$(OuIaPd*uQy?>|Mvw#`LXwWa>lFjoJ%J|B^y8U{lxMc+K)N!HTYNxd)b6-K_{; zT;kcr4-Hb(^E^}6(L^CbEl-GZUKepeT_|v{EYj(*E_B&{Q>XJY74f&na}$Ce0^k>g z&iCfYS?}%F2Y^yT^a!_~kKp$e6wNDbkE&#Vd?XtmCImfB1+AuPA3gWV)@)-?JwfaR zL`HoM5@ac|Wr?@ud(j53z7iLf{&(fh>{mk_Zwxgmu*>ZYi+*)m9~_G8YboCAL*?CO z5XB+Zst}ZaJ6}2prc^8BW@pH)&XBKlhIB5T3+4AX2skk*N}zNc!oo%X&s4IN*|ERP zd$S6Ba$&qYK>#qtZM%)XXSZqML1}0}?{KZR9N6Dg0U&3A%3?KK06dM)* z#Nc1TojlV}vUMeE6l`OU@Gac-u@|yKGt-V7kR98 zM>3K_5fWF>aq{S)unArwN_W>ZysIlLC)&eVYDCZ|x3T;z9Cj<>qeM z?zYj7dQV9grcCU%zZ&}6ct8wyh1cZOVgTKl{uLcC=xLaPma~ft&4@P4i4GM-fK2_UnSOm zAo>5SMo+AnogC}6G;BhCRlOtyYG~Ko97V(DkA5)ESyhlfz2?eR+YDWSsi2LmY3=6J z+Dfcg9YEJ;P-~jrI?!wiE1Q%zljcU{EQO&v_yKBH9pD-oR3cvv&T`+Po;s z5^QW=o?bIgC-6FLZ1Y~)n2&U7`aCgz3I2R-OJtopE!1I3ahm5c)-u_C5GU4)>q{lH z*%*mLGyZW#zu!iT*IJ(Mho@d*LN2JJBI%jMXT$aZBOR^CvGhbFTKV?;C2P6*?GZiQ<{Qo<*8Mu{qs$$D-x8^O z(XC7JH=C;$MT8ten9I^%P%lB)9B1@n9@n)ze!CM7;8Ibm-$vv%2O*}|8|3cQkrEEv zmLHsLG_KbtVyF9x-2}ASI5aR+!8GD-F@?5b!}(W&*1$PU?SXT-M(x*=q$s~iuIZqb zP1{|Z!Q?TlQkFYuQ6`J2K1dvY!X(MTOz<#V(bk+8A#6~sFn4QGl9(v3CB|tr4a%}% z|JK0NgBwBzJh-NIP^BdDni1Kln{S>=u1MKTI7V#{+|Ble?EN_(ur@)wdIAXh5NUP6 zm+i*|WmaRQA44qJ>ptQX1&{9zL=E&Kio*qyjM&7Gc8@9*A!K#@mFkZq@)DEnjSNe=ks(B|k#!By)8+TW#k%TK&%LralR6v#+x`kB z^dr=gaW9b~#4T!1Uv&qGtxMd1xuuf~y(G?WsWtzsBV8Z!_w`Zm52e2qzdP{6KhWH5 zx!#d8U$%-7xg7%BqMpKkzhqfvrbXP96k8D6+ilDz{Nrmbu&v#Z(CuyV9%~H$=GZ-7 zmNXo}Fk<^WS)A$FL9$rloA>ur2l(fGrtCp@Q~y0M2#dl#=bnk8egcI&Q~A?jRKpXS zE90G*LK%cUkK=IY9*T3B-P!2w$?)(G&1>_OdngwE{d%9oegk5E_d)B1-r&bu{Z7@> z4bc9^_je;I36dMR6HP(y)msvhLSgrJE1B-2Y_TXv0h=0yvbV|+^fPr z(hE&LkYHRcf5nP_MX$ZlFC0^;=Ot$tpk)hKnJo3p$)FftZD844Dut&T3L?f#C5n@H zopzb);qx4rI^cMtiYFxJxj8+q6b{KTmu4Q_w5d%PmY^j_HTn`+v$VLJC)cPxhQMC} z0(NJ?Vkr{kSC;S>0#;v8f+iYN=#7#ha8Pe6h*j;bce!AHMdLDa&ljU#o$8D##F}xT z7qrBRwa_ja&3L}_K0#ZZ_$7sA`vYQpPYV%R-~24*UtfDxlKZNq)p~>LS$gX!>tJ_0 z9(}a?&S(0UI?N42dPDW!nPh$$U&ZVAEf60*`C_+j?_aow@SbI#WD1BXCsU_FtdQ`- z`BLA%h)DH+&N4!i6W0yN-r^RW5BhMjQ=q))IY`;q`*PE~oIXMrALiHii4cW1*3$H# z$BFKaiZJ3Uq&QvNA|=y)Q#Sz_p|mRKHFNB8rBqcMBkZ4duavtvTjstLkn{`I9{O$i zi+23T?B;->+ht+*cR^Uk+VvDF6}#?DVT|>cT^6=~#uZ;b&>m{vt%;Q3UOLxBP5S3c zy=;Qtw$uJ~TeZ*9qQsDQyqF#9(*gb;ap=b+t@nkY(gc}z3>m8n{sJYmA|X$Q#h+c! zNJ2(4pNvLg*6SfkMj3$TZ>JXE#tNLr zugeU7ugff^=X$oBYn#_&`x%?$9M8$!4Cpqw9NQf-@AXl!uMFVd6+;zfoEXb>zgx_2m`r<$dbwnf>1$m0q z0?$1@Sw$uT!*OnY5$d2#0Hz#I!uj@p`#f4Sl&VX4%qcj6d5PdVv=Wq|YVM>;s_!lo ze5;6pzNZ1P>TxCdYr)`P#@kN^oS}KXpxWJcL-yrbtL!aQiAq4Q8`k~~ph%PI%8=`h zZKE58?Iak@es#k&mr9eIHQO8Me@&B0(yOy-I~^eui0?cvqbABcT$W;^gEY{8r_WOX zp8wu-Un~15YqKk5P%M2M__)o4GUBT4rwwJdM*K=89c`JDopYyRVASV6e9RZO$nb4l zhcJ|JnEwjeDksJpg+p;YK}ukNQ0~}&ISjHS1Z#dwR|Jh>e{W00co|K_gem=gM*_ik z&L?z2uec&Zq?$~mOx1(}z8G+SdoS{9K^1wc=lY4yJ;X4wb#g1QFx{*k$#C-{F0Jrr z?u@`p{S<^_9J>iQpbL+V7bbDWmvu|PjV90GLCAGHoOkei)K|%zuA>-}<+9bo*5P|@ z%GPzS44&h5-xw@ciy=lFEI$5KM#|4WKdAFA1KvK~U)@WHDW_1Q`#9)-Q~b_Ep`K(3 zzHM~%>hM*rLq4@P!M8v!GL)9~6({L}9}B^Echz*B6vYrB75(SczWU(zN0@cPd6fFN z`Uj~)hlk_cK#2WPor8gaKYYh0 zD)j}-#R^X%+}7t|@mm0++sH+dW5H1kvCjNSOOh9#ba5s3 ze8C|4MAz#s%PHrjxtKyo@ zwJ3PA0w%I9e9Iw!iYxrM!ElSKq(;zi*4HnQ0r{@C(XLf3u>!dW5X=|2=a1xg|S#a(8CgW5X z6ge#mUpT3KG`L9>lQP?Mo@*-aNdoSZTFI7q7dkt&vUtURTqWro{l8H~t6XYd^kqi?ngS+GiVAH9U-phgfNw`b4T6M)Q*`peADVCbtRjOSp6}P>qCZ=~1 zYN2-5luC_%ByZ?1lKC&mb)im7bC^{uY|~rVTwm!qn^zax0*exevKLayf)_dh1QM?A zDl;&^EQJ=ioc|QsC*+{iXL_OY#5CD?Ru)0G!(|c8lytI37C5mM&X1udvsoIdd{O#F z$dai|!rM~dfi8i53TfBW5aM>Qd8dXzy7Fpa=EInO%htVf*{W$zoA=$IIu>uT^=B~N z5*EK@dbE8X?bxg3Dj`~9u!a%IJo`ns&|C*@w9G8YFsN$qs74Ubg!yHE04BbWl`IW%axATqM`(gqjSsP*&M5=g<_d04jJWc%cb^ zU)9@x$RHPbn+@Mtd9Bn3sVs&6`oKik7^`qXvILQGMHlYa<9haCD4xOiflTOd0oR|I z;it@bf@Xjd)iN2j8`)VBnX!#3<2k}O{eU!Na$P=U?eEwn=a<63hw`{A&;@fMf1aj# zKI42G#SqE@e`Ke!?mR5>AxQWi@8xd<_oPREiy45|(pUV9pI(rU<@U3RI*QNF?44snDi+YaVx$EhDIaczKp z+Tra?Lw>HY&_Wy1U?!vSrvob+ctIcX4sGy2F!3t47`TK~ znV;7{g|6>DFqyZpc?SKUV^@kAGGVHJ#~c6~Kii|k0i_X%zUn(H`-5PHUz$!yJ@#w} z#KW>n=5^bDGbO1b3rbyhUVTw_R2(0Vo;4%JS!c)nCCdY!c1@rwMFV z$+g9XV!Cb74>z`2pSn%+EKHj}7?lRHmUbPXBj&@H_RFIN^wKb}7{)Gx!MxQ-`{&$& z;owi&a{4MmVgNpZ%qUD_6^`eBqEv*%KX_J^iOW3#!uaY0e}H~;EJQ%3ubjOxrS1j?Sa}LT4Ojen=0>TFM#lof9XHeS zfOy<_IT2-uykLMIhTW#7n6GUe$ zA5pxm=)ah#P8AWm%E=$sw$=|w2{C{ zejv!5{qfOgvi-wVV!J!>Y<>2CTAPSk<8}O^qW*e@fWjF-8(B zGzQ>qiIF~sV+u$Kz$MDc;bFb&rvp;Mk73p>PC8)G)uAI2XaPBsQI z?c@C@X)^kB_i%5on*0PFf9R>EZ6A-uA6FB1KiQ=xeyZumyL(^kKH2~5qiV*^?kJ*s zwEyI=J_jr92Y4oE^2PCPlzFf}9s}zi#*@+Uq$zVZF39BY@Y5f*4?mk6A3kZ68>k*0 zMdIuqPd<*c`o+Nr9>E;#KLH^l{e1S({%5-^;ul9vxgUQq**W~`f3rw0Pe$MD9{&J8 z;lE#ewm)eAc(ObCa(4v)6!zc%J}Fn)$l(OaO5!!<)~WDd^fe~kKq@x6Y+<^l-{DZ! zrPC;WDeJ{t%fw7bCfI_m8Ya!fL*g zv(obwe|RgI8f%_(wq}bKDcm2rM2Z%NF_`6=CjzMb!Tbs>KK2yz8Yue2@|d5bvEeD0K+8__GCNp z`MHOV{EU{Bisro<^?VNs?xtL(&*gjExjahUe@b&!Z=7oCO{x@!-wjr|J=aP80Qy=( zTix`-lL)SOz60k?JcXu0nKanHs}i%ls+TS1*Q$WMrVH9eVv^HBWs80g0vzBr63%lf zS{C5C-G-lVhg>*o%18iCtJSA+Kd9u1`2%RCYNk(?XR5&BU6`e`OP%9{y`JF$H}3L8 zf95t7r+A+w%3mS9gDfkE-kf%f6CvJhIZ(X>i>7H;UVmVBBq4C|ON#S_Gn4|iw9WKs zvYeaXahzFD-W+_Q1NeoyuvZ$U3*63}yUnrbsoUPn>SEcvL_;t3MJP7H&aPn;!(gfh zphmIuLIBdG*3L2KgVis3Dqw#SLZetyE$?+?D|5_zc zPLBb+32?gc=-<0pbQN!CV-Op5#HwOR$xA}tp1Kv@7w!EMb@ zXBU*FT4vSQ4F*V0qXO`Sf4*&~0KXm> z;hfC7=n6&c_NK zz@>#At1!SX97m+M{KL2wMlEVc83`4nbr`Ee2?iiUd20N z7u0Jku3<7Zx5okhf1Dm;^3Uur>cX_iT|12SKrO7e&A+(f{zXCB9c!+8W83+D|? zp514i!Frgu8iJ46&?OE2b_R1@!(Us2yDKWt_i?wXuV>b-u4m{!Et6Kyw9Z*|33vd? z)Sc(KcH9sJ3opG&_fBi>#6`1XJHh*twsz6s%%Jh}9@b(NX9dduF?q8QWOToT+W@`BqM z48!aYbab>|3@yy=0_aWI4;TQq#6pm?tic|lLIkR?baW1qMRLYcZP3a$t{q4u2KHB8 zabd%A*YC7nfBwYylS&=p!S<_kMkmbuJsR>_B+p1C2H7333e{Gv4Z78;*MG;HT8@#! zVr|-D*|j?^QitNimw!yzRWA#3czXs$pPpVTNEVeIUI0=j|3`QgE0#c+}emXNw+4ZSGadLRw=c(p45xfgWP`QMKfE< zkb+BNLL4l4$ZCY^ilQESAb$-RS-fY~$YF+aG=Sq~WT{eN$7| zDjtR4amOmX)}1@ou!HR&NVm>5q|&L&4H23>&9P6NRkyYA-FeZ>2tWk)W%Ls`Y$$nF>TN{b|$#?+{N z0AN?LAMwMywGuZb2-4>kX{&dPp ze>N+lHHp(LW(&ovL~b%u#&5!R*Tir_lG;cvmBkBL)kbw80LONcg^%#Wg=*j!&a(X4 zQg+DFtl02(f%DoWUW!KZ;7o5D;Wk`3H%dEiX~S*I z!sU}DPqE*4mL|000h~868G3c9f6F`BN>?TiWH1eexnUitpQDsXs zS!d@aa+~>cTCf~Ff5_3qQ^yAt z)awtOa=&kCtDc^3uYXq85ZFeS;qv;G40?3~bkl<6tL;?%_``B_*$>-2IH|h!4}X$v zS+VN72baCFe{fLJbJWB9+0jT~a_v(nw=y_G^^y7iFrAU%n9pF@;Gr#y`2F4Ni-c;h zF3wzSTMW}=SsvogwJR0(e|179Gv8eWT^Givn0HCDSJ|SzU%Z1UHqLwuQ3$lQ1~DJl zHj(?^%P>)*daJ}7X_A}02({53Ir~rUR_#BXmd}n3$NPBGVDs|XQC5(vCM&Yw4a;Xu z_Ia=SRB8oUdl}7A>AZ|)5mqmwIk5I+Gz)o)Wi*ExFQZw7+-Vuje-gRFGMXdNyo}ad zlkqZ|%WYmpb1)CTjCP@uVwpEAqP3K*buUareAt<8>*AcJ-EpstW!HW6#>o_~-uTRT z^`_Bv)U4zzLKmTBWUjs@`RIG#bgj^p>~giyYa)tvj;v*Ts-%OaAITo$qL zP0J#}j>3;RhJ$s;!+SXC2IH*b8n%fY;c%;{Y#`8|w*JN5VJB(ir4< zur-1_FDwUnmc*BOx>XnK+5E;}&jNG}_AGpDuoq@JeLa?Fe;n}fcRa?8NW??jT9Eb& zvsRcSC~xz|)MKp;qP1=Qsn&)fp`9RG7JzpK#~4#CdOiIwb|J4l1a1?+VnTG z)aMU>1&CS^hQF>tyKY4L4bkMlr=CW0Bk(Zot)Q(PY_+z7KiBJ`NbGU{PVL}t=W5q% z2iDuxQ|Vx7e_QRAR<*NaUZ&-8rkiT+&Ze@Hn%C+k-MKxGos0~3X(oRkdw}d7KF=na zS$m}quUA*Qs^88MX>^{M$B0j|D-68z#EWuX7Q? zEPT(#)MRfSf{vH@X)>i%WdNQ-*p0{Og4A9>O<;<0f2+rmk|7nO4UfP0?5oi?amObK zNjD_&I;@CB4k)hSb4|Bb-rDZWt%{Qsv{(3uj~SxZU)umyR{#Bk?oVV$9pNHr}X#q_2j zsmGL_Db8=JdDX!=U1<*pW1L=tH!__;~)R)ZbFYF8JYTruL93feVswp&* zX|xCr)-7soT}d)eKRsz)N!kvkIv-i^hLxmRe@nXWm84pM)?P`nR64IDS%lRqNe--i zCCNh8t|akOYiw--(tYT>(j+dRh_T;it`>Ki$*6q3NTu4*;Iqh)bE0jf9P zg{y#LU2>Lx>lbP`JzF?gASrSrY?z3MD)G(0zhL9{c}B6}1~Gop@w$}$ zRZoGND+lQUKiRK@`}TU584w1fzImLj2?_VviFC6as2wDi9C%bn*%{J{0vpX_Pelx6JAv=f5ZaQSL1(}U7P@4hrFXPN<-IV-`q>eU_Livzi>v! z(mGM*@pm(QOEM?8)g*T>PLlkmP~3y;DsC6##1u|D@B{?dW0ID9Nxa*~JX_|}K&aVj zA`H3H&UMVPOtMLyEDDSxP$qU)eZ`q9hXbH_4Lw7JCa!(9Fe#=?nM=!`e;{$jUO&xG zvV5VX)T<4BZ?yeGqp`zS*Op*n8X|d~B2w|o^b}#DfE+0>%V#<#FiI*j3mrHC)zb@o zaczu8kn2OWkm0whWG~J2h^C~3#xa>S`{nNTrm@!LqD<#1xwrsn?Pc>&`)P5mXDwVP zsBwztPcXbl_iI?p$Ju-qe~OIXb;@9`dXZfLzjlf?BDbExoHj# z6xG8i>y+mSRJ=7Df6}$DFr8FYhQ0!Hn5%O>{#v4~;QKu73`XU**}^+xOsa~>^$rve z^3k`4@W$-%XlMV6af|Cb%umvCJI$wov!}GXDUGDD(G6X%mh$9&e`je%G-WDfs!(+@ zHF84-hqd4{z0ae8Oqhee+M2|%K3(d0=zLv@j{_Du$)P1fi(mYt^P&1I3tmrJO`igY z*byDufcYRTifrLRQXY0dI>*8}Vms%4a?PH<3(HA{+Kw3?n2<{j&Mv6K$t+)XG+nuD zJvilhcy#T1;>hT%bw_iXxHI zJk>A*a7})sP(1?Vfi;P9!HqOs&=q^!)K7pJ6$uCy{m!i`e~@x_aRw6!wQ(+Gfqtq{ zkPiiBndUhTj& zjUgy&`(8uPfBFJ;jX&?FXcOx8TD*Yi9BaHlZHpG3a|^ap(;O3fgxGt^`HQK}%OsU> zG;76e4%Gzt^DOrc@I;>{S82B7o#`ukgs*4@b~c)F{OP-Dk)aS2XydqzM$s1+N!!>F zfKIZIA|*&lkeufU&M;AW(MA!1(yE+On`qyWq&o5bf6vS$v{E*}A!(l~rRFbC0RQxI z)l~Lt5c{2!iQFN@v6gg^`r>kq6JDOgc5ObQ5xptDd+msZ6KY_E;|y#iz0d{CYyOff zN*>W&UaQ36N`Yjj!3E@AB1L37Zt5@^kByeIw*tCX#J~h|LtYgt9pJm57p+2HrlF1RezAL?>PhptRLG%fU-pvpuU+SD* zf7q3F0N%ZnW-xguGYE9iy>_Hd)~Ht2&3dNbbmUN09;fmSrTcLz$2UGs54VF@S~FHP63J9WPyftN3<+%bVRFR{?8Vr@sO4U@Q1V{3x?tx?rr=_`vq;E zhphT5=LB!==fmPhXRADXe70(}Qe&;ee@pA}*(%Sm?rfFKb4Q{au{Fop>R+O9ckkhB#`E{Ldzx{{S*LsOpBY z-y5`X6I4pbvD^O2KiE6g<~C~JU(uu=aN%Oo2k$9NXaZy?1d>2MFihtfU)lrPf0wyC zw*;pDoqg!FmgKv0oIb$75TCSKtyZhmuC$Uo=rE+n&vbMFQc;itifn!mU6w#21Bwzr z{i0ymoiZKyQ+0U>io-63pBbY&&=y1b(xYzgZ;bIk5VZ$+g+DUTHaU_t+rL)IS#Wt7R$ipSV|@WZAIj zwZ_oHX_42)<0h0p;|M~wasP4F+cU<1s9rr_M5pTI{c;IlPw{{c)Ea+=@|jD9!?*B%si7_wen-^2%+i}l$}>l2W(mqf^~?I< z`UpeCa@tmxmSl74Imj5dB&S3`G~ZAHFy?0zPEZWM;yYU6+#}BZe~v;@n;8&)CgB7} z9tZ{zbDT;3Pf!>+=!Q;^?ax%#-ZSVuo{U(U4^cX3!Eypa50`S?BsZ@Gm;?DuLxzGW zYoW|A83k4=TKxT<%R#vJGR`ATG!9nr4#NXWk4bLiUV5m%}S zxru%sw7i1@&%vlqhrv&!TS9=6df z+>xj;^YAAIawq)K=#JL9ta?o@b1$iX$;mcQT-yUlj{$sEAz>2Gk=ikMqa@4G8;6Mr z2Tl7NXu5_}e;Bs}4F!r9TD#W`f|0|O=-~h$>{5v`=uMN6?#LHxp}VSjc8LL(y%A&! zk5irPpMHO;zBxX@17dH0o7b9L( z$fvi}*JV4S6{!n-K8C{#L19)+!BJZr?7C=*u{yeNf8k>K$h8Si9tAOoYw`?7Uem2-Oufn*8)1$=IAh- zn&p3$f3tiFYl8W_EnBpJ4c&ZUP)VVE9|pu>D=1`W8l`JZVKH^b;0t9c7Yeh92QlRMZq){bxommX-Zg%O=z6MA($3kS7k1X ziZIR41(0;GodMTmhbfLSB@$FgZ$~K*W{?Z|`5eL|v{uriKQ1Jq;pbEMf8*#h9Xd%j ze}<`%P>w1i^{bc;%oe@ZM~AXx#~?q#aTlJMMVs4!gWT&FC*hs}|i5)TmE) z>T1MUPg7IUz%kJk1m_OCj#qi9VGBnpe@x4~Sv3<=R_1y!b9yJUgDG3?dzh zJwG@sKuSS4uY}r)O9ZpcbBJwHCtf{7z2zDdl@7sLlB&2!g@w&K=!hc}EjNHLU&>Y> zPD`@n#*oboWhvlx2slH z@M&8*L5&033SScq5Le&jjVdlKpoi%~2a+pytCBrMNx~(HW;mWX84pHH-SE2!#{oNO zq}=Z{jC46iM|eHVWwal4d^}buQO>2`M*$CM`1N5Zv<%`ZxwXe>?*X-NQ3j zW%T#7*wID}7#9LM+a7)lw3H1~1BOawI^Z{B5&Kr|K>IYo!%!kOZ_f_8q)PR-cI9gt z?(*up2fOE0RZq$}Y0m1xRz@0Z!sJ+5wubRrZ5V4yOqjrzFi{l^nZN;wL|Ow$FnLB? zS(>EXI5w8R)-er#9?yUK7msG%@f8YXGe)DZJc0sFSEnKnN!uTRBx-p@+UMoJifS|Be=AY z0Tp-H7;y^&3nmQ=%p77jsErs7U^cv&i`3RNInAku*$2@Yq-v0!=`cEn z%}h6T?P#yb=-r-8M(a)>OT}*DSY`Yc02=hkhqh!Cb7JlkfB2H~Xy<7@62_alKzNYs znemJA!|U>knH%5bT%R3nj5uyglKjh*hg=r1bX!I!mG|~Cb!QJjnca@z*S{9N7i-sA z){>Nzjg8i7D_$m2vb!`*9 z^un*aKQC&mf8{)fFQu=CQ-`4btD5d4oxj(b`$q)L`swoX8~~f`n%vvGCb!+J-fmWJ zmm=TErO2hnPX234l1t5tEKM#!Y?mlg8>5m>+oj5Zdz|8-oB`(FK3~Is3((^Aa^~Co zb*gl0B5h5it%zhZLf2`6ojzq&Erjf|+GK_d)e<9FRrZ)qF0nus!Ei$=zj&5MpFl(u2< ziWXlea2xKf>%9`!%hp}Foo=2bt$3@obM-l~>fE&Xm5edG&ayM|LGFWFBKj)#rDDDy zA$IIZeSEQ@uk|c8z_P7 z+LjQ~U|NaquyRJ&8a@>#vco;a%;dfzKyDddYWg}TICwt8TL`{f5X9P6hY_)CGuDhU{3n=W+5V_NuQy3 zw@^r-gp}Kg>0_UI8?uj18Z2d6(gr@JY96ynJJ{wCNYFwPvj=IBN<$y(n-%VR9jgKrZ}tz4PEX%R!yFB6q&W|7q~Vqo zf0J=)(!9qV&cDQ7uW6CscBnDxVhV!tqUi1v9LX0@KbE2Q#Lo*=;d^NOexvqmp>#K@ z@n$otO)KxAIw;!Q-4wQhwqtBrT>x;Arh@yB>`VWd;>|juT*)XRFq!N3ENp9E zg*OgHBlGXT|WlYOh zZFJ7(kvM$L&mw)A`E9-_qoBKDf6r>*)`eCBr@yUMgUb))PaGt$V6AID0OV0=%eKbI z>orE=y%$O^f``56i}dEK8~t1^UzKVN9!><`yR7x1&aa0L@AAqM@0j8~=weQjt5f#Z zJ<5c?!7qhFF zu-xWIk_Gjt=V<*2)+LAjTu$?=qTY4y8lm}yp3}qq(_IrhV68qKSCOB$bWqgL#d3I* zj8X`iX}k>=^1^N2%<5t6K5OQb57rSJ_PQg&)XI>sg94e!3)c3xe~jO8$xLZHn&lvG zbJ!adF)aJomPR*4O*904H!uWzNh{}gZ#>uGqH$dKkGV$h=@m9UUrgH#+x{RUPu96P z)niU(c+fxAWG&>L7K~FJ(Tj1wxTajo?2m<Q`vD+8^P$fDP#WPZfE>|xR0Bc$s8sV)J&y+U;efYcPe`-Z|i z`7{{8h`aeXj1~UNl}0q07EPm{k=Uh+#EaUNyiK!#e*<97fA2H$q8^j^50MT{fHntf+M z4P1S2@V5J`*1U$HDw+|~Z|MefyWIpLDR!*hfTBt$pFF946fO?Z!O`93d45?;(B&O+ zj&|5#PeQJGe>vmyr%%Dxt$KF1x+hp@xTX^7jW4B*j^-5X6Pj!xRHwZrmN#5Fi6B#V zEv?m0ZCy)iaXW`Bn?S{pM)HqddhO;FTTHFVT_)$fPpX1_Joa*vCraANY(~jL8_s(I zEHA%6Gw6>+)3U;7(q&kSB&*9CFmb0-{7ai;&IxDee<8-;F#mdu_oCiOt+zc(wmnO> zJxjJdOE%~%+4jk+?UPsU@~!+gVd{6U-x~X1_!+;OcmwMOs1X-BhFnpRP1Fd~d)xQ0 zZumW{h#!^xzaGnCv3qmt@*8;?;GKFbE9&QNE~w@PAJW3Kt-rVR_qP7t*5CV|`g>ci zV-sG-fA$`hVII};lVI2KS-PL)8stm826`giRO*>9&fPu}mUt#C?($sk5iw@@_7O3g z_&V%-Vd;x$3`}C&B*H1`@&3b8(##ii2_>gj)DMjsAs|p!y(rnEoKeiDhyl!>f(kMr zq0Q|#bT^Hs38^)se!9uu>!os$-CauGbfhvNf4#9#<<%XoZxM=g_?z#%Ga_w`-s6Ii z?&FM2_a9@uu?|#+!Z)U_;@EEPC}F`j!NGxV9jF=|KHjbKNnYPx9`=WiPyRE59@?^o z&_Jn(#6aq%#RX8lR#`FUzRAE&3y#{%3599Vit`EVAoV?-&>gU_J+#nyXyL!Lu=bi) zf77<-E(T~?jM2Z|_T7yh#4uI%JdzQ%L`7x<2l=j^$$-qXSGWGWhKzaB8$;JQun~2= zHgTBa2B%dUXT5q>rNsZ;gptZ_8)?v>BplCk#1m|I*Y^tRoxMMPlQ`dLw^usn@dZ-U2 zsZ+$Qj9ZkUq^rM7B>&jm6LMwKaLVkyU{<)E-&D1&4{Jy?$p1JxpoP%nMYk@me{A?P zguG@p4uF-v+QgJER$#a_JPOZha6j-NH@Y8-_tSIg5#BZAvU(g>ZhVU2>xO8!)x@t* z=5<}ZC?+%qmve`PwNk%DnavF40>$qqHPq+p-MKmG3LhNS!LO;$K+ZUo|r<3 z5d}LThTQZV5)gEaaYjdIHh=v{f5LD*Vdz}V_@P4T1~Q)fv|@KdxYd&QA_+fe zEc=Sm%;jSGsz6b3T1=AS;3^o2+Jp!&lbaqY)AXoD^Iqn4p^rZUg|&8HKtDLfBSORX zwldc<=IR*?`8l7tw&VTj6}4p0NgwVBUCwqwb)ivTQu=y~C*#pD_eMBQe>BoBrqhg< z2AF^CE?620KVTS2yL{AXrgitll*3H8Ux=I`0dN2)a%7! z^tftpQ>NFsOq@M|N?fBIeV15d8m-yqyG+l zsRX);0$oXB>*`W-Kqc zgP{oF*!c~Nq~jMw9Rf*i%8ZbgF8eLwBoW~HI5Q*$ic085PL}F4e|)QXedYCk&|3Fi zr`EdnTC~>R5-6XxeUux3Ju&0)>;04CovrTMwC?-cPv&k3m15WtTaEdqG^W;?R!s^g zJ8pKbWIkz_uZw9o1#TZMqcSmkf;lt zKK$Wap&+|DQ1EDv0%D>H0=|0cQI-Aks%>L)>!{-Kq6YYkze}Ek@U^<^!(pxZ9e8c_3 zP_7QhHEytA3uUn=Z}jMTS-rR|i=;TL0`;Wt0tF|&_N6gY2bL#U@I)NKsW)Y{LGiJLNjve4O~ z4Rd!-eF#_Ve}8NysHlnH(ux0+$Kb?MCzMWmDuV2K42z$`@=J6)ish*iX|`}#$yPRA zL?$t_+ZeG;b7JV47FsF}Of*Wu%Ki|I;mTO_gNg!cCs{|>sj`wm=10;1Ntqyn6~Fg9 zC}kQqPAdC3ylc1gH2SO8t+bcw*Yt8K>+q09(&f5cf7J?YD^E{xo0iNa)~T4yv%^Yj ziD^5lG(96pY{E&51G&xY!@qJ^2{#W#{&pWNTm9i)YS1?Fv?as${zsY2z_CU-JNRzh z&QdN950?)O4nWAQU?l8VEJN6ieqvVc8Fm@YIRQIr?~efsI0Pd>SSZ<($35od1X-KG31CgJ|Q zJAmfyXP?}If0sc1B9PsW?(cm(zWeFkz5Dm~KE3zZ63{%K>Fziv&)e^dt0(Yu1MWvX z`RLwq2hk{Ca_)UP{?z_MIAsgj)nj1Z5|tphf4|VDmrFpw+IjZ0I>SPdE@7)ZKo_8t z)yo2%g+%{a3=&d8d6cCD#d0FTXv;#k>&!3`!F?#J-U`brUgXyT(#rPAmBN=kOzOL2 zu?e`8=@xB!Uo(z1z2UM{{{g!LYfBUl3@(wMw7GZ|kXg(De+rQKPF008bBHC*`Wi?b ze;xRC%qT=+J!QF~wYOPoiLsolaPpKm_&>~QK%I?R@808oos9w!W+yLBWu7W(Nj zu+_6cgYADE>oGix%rLMuQCoJsL}Mnff3xF*&e0X**@B~V?%x;a5cY0(f@A2)otQ=lH*kOM%m4H z!)O9M2)md_Bk`?b;g}a_nfxR_9Uo;>6}EiQPyh<~EEqaYPKzPyl{%m1&7dd?f9=eC zT|6u2&P8DcQ#=hXZE=qR6DYcuZ_XPNJP;rYm5tgB3%x9mA*LY1U&*TxL0XJa z=vaoie==;ZSZ#~PjX7xR1ctMre^$9P5iO<@j%`1^%wOUV^Cj374u;JGvt9^p+xhd6 zwc9Wg&P%AB@%y)Sn7Z;JEbf*{Ld-$Z=gs0N>}P^Wdso?)*psCtCGnU0{|O2%bIWSJ z2R(* zzOF?z{`Khem;Fbos&Q0CYa?cf>L^9jM=AX(JpSqI=;7)bSsq<|^v$)o?>=>%>>uo( ztg4B`*;Ry}gw1{Sf2juHR@DMxY#6~#eMgwhX6%Q?*B%A z$72ybe-;kDWs%L6q)MdlD3pEUebQKz4ep*@;%efkK>{7QBV`BUn;7AKk1}CLjUg?w zDZs%J%9sRv0r{+)+3)Y+84d_!6yN$(p(yiH)%c%oHBsR|f2lx|aT%~I3YR%fX4U{% zrFc4^SX*=e@i6ZKB5~?M^tclZ37&?LAuw;W?>ZI`k7;tX>xU0>wzY)y@w}RnpHSBN z)Ozz(pTz;L&`#>9F~<~~93SE{xA=51G=`Wm>`mUyjXHJ(xY$v%UxM_4-ZS5P36V%T zeO_Kdf-7y9e@#kNcvCKqHmZ6o@$M?*3;4%|_k&GFM%xM6vv=NPuk??8i}j-HAqW3? zQ?%U75ne#SKgUpFTu#Q&@@y#;4!C3T`0?TXPscw#`R@49f$}0*pi&_!1MB5Nrs^Q0 zf9)uh1MB`V2kfqDnZB~-`DD%DkEp`oTVQk%6n&6Nf4UTcUXZ^L<->mFR{exM#GFCS z4_kpBu41^Rt&;hdy<^*MoCZGgz(0ugfdovrzbuqPXtQj9ZF`z5w>_LaZsN9vG!C{? zD4g=`%taTEB_~dsZkG$!jWimKW=1n3SsGQ1%*kNN& zBct=|f4F_6`w4E27RmqCB_JB)%S$jV(9QpbMHrT&z)W zMg&a$bbT*og%gK8&XZTtu-uo?piu*Sp4_+Hu>5^czP?(PL&yJ*PX_ljkNCa(dk*=> zhuKLI6Tp9E?l8*_GnHJ$cqYcKtDv_$iCd=Df4KE*s&M=vIsFi`Y0%%tD^oAvpYap; zH4aTKAF6kF^umHs7-g zll*>AKL3*@-f@348h$%?aWHs1INZN4M@N(I{&%;=1MKHjU4Gujbkh@#+50j!ub9RE zf5j!{ZD-iv+y24eK38K&Mf%3WT_ri6M}ULmS+cy!@5#x1tNZy6&$mX7-*=R0c>j<* z|0hkvFMdF0_o9Dz@M199?;merKA!0N3f}oVdm2BUQ}%7X-T;RPCyBCRy~wg(#1UuR z2%kHo!=2bb-`#yyB$fLTaGt&KGv}l4f8uMtyrcWU>$!X%fKX7kmI!`ugij2n6Wepq zqSw!Zy$*g)Cd)Db(Pn(|oe(5gT0Jv9Pkyt*b)!7Y%7hLm@?mm=b2v}SG@jvE*0fL) z;3u9fDBT^Cz!6CTJsFI~{gd(F;Egs@QKWe>eHU;p(*2O9A?JAh(H((bk@=-*e=_?c z>{L3l7YbdOn=w4iUBw;($y2OhI4bb2eR#@FVBRU!^R&P>f>i93)Qk)T=W@R%tOrw) zq!EtHT2?6dPmXm&`i6PS^u+?(6i>rCqPVi>Gzz<6g>*n!^#(~=I8^Vy(bN+QYnuE{ zHyLK8iNH+L?PrhG4jbz@$3 zY7^$U`O{B5N?*(O_2|zz~Zj#CdruZoq!L>Nd^b2L8A0f6ai5=n{+j z-OtaLmkA8Cy&Tq~YDj!8i}-4zx$f&qp6}W}@`Z{Wk)}#UJ(3rXQ}`CdN~Ly;@%8B= zufFRSf2Q86*ym<~Bm)$5x6=uc7xA3})=rqOlep~o)Bscj7l#N!96^zI1`F{|BO5AFCtiFQ z3VW;ret(mgC*Vuzhj+6vGmgDF;$9e6N@qL?S9}Q{M$7tR5J2Wxe+F1nihjykw(vXn z5-o9Q&X^q57;_2A0=Ri=i!dXHP<@~VojwVpPOM3%J^>FBr#c54%MUeD$6j;JiOP?> z&p^~u%>o4Ez_O|@bR*5RA08k{kt6UO^*&ubb8{+B(396)SOjnl_xdEDm}Vo65E;g0 zGxOVc%x#V!`7xc#e{8yRN#bcg}Y(E2o$n}E((C6 zylpOP(%xOuO$n@0+yf4y9&n5~V0B1gxzCw0$5 z8QYdjoyigd`=Bx~;!zGrvW3IOBV7NNKU95l4e_DRL6pV@!!JuAr}_lWo4aT&_%K2w zz=_UD@=lk2@L&ySZ%uQc2wLO+0`1tAX~nnAxinq^i8(xg4=+iXT@yWH!jk4@m|Vow za2W_?HZ>;LfA%vxAd29B*_lThHZxPmOdv3@7O}}pv5!6L8^b%c7PDB~Xi~%4ES-Y| zX?%V38Y zPbSHNhwEltWh$nU78xV<0-SD!R!8PiX{?LnwNW;4ae;(j5aQU$L*Q1@;kib!;{N~S zaezZ(vOeJD+)Xf=p!qoB@WJW?P-S8ZCWGt6Mg#>K($6xrXqQQ4*mm$6J*6iAx8oE} zYmh9Gf7lQ(3rr14)<)S~SiPTkqicsG&8N=fkCtIcGxRy=fi~xWS)vL`Dz`l(DXEz8N(yMf>+e2#(bF^6+R0fb4}D8amdt z^{A*QK)v^B)m{~_f}qPjSaNQlFwTG|?w+n`78`9QF-4qH^CJgV7u z{eL?gWHh=ST@ws9(lgy91*IL;u{>i9#EUw%5Mj(8|I$W+7~u3nT53j$+kGAhgx4#@ z2A+xibg%B_-u4?xGK`9wiO^5~DOe&-!sT<9J4-%CPBzvR+etlfJu zAN_{jN2w;)Rf=fQ~xV%TET6pA8^c$CvergF)ZJd_4T-C|rY!))#PG3ht>6yvnD;(Fjjj z(J`B*%7H(S@zK%OFZ8FIM!Es((SNZ=&hTXX#N+C-r+v7o(;t2VM0)%={Bn3WU=p7l zH`P9QHar;eS$`P}LeN z+eKD6Cxg&61U6B#l3)U(=nHROE*gsKEym}ip;?x0Kr=wMp;?24DPWpqaTCpaNzX3{ z!@03|8d5ZZgszh(Js+KZ>tYB^(TIO^h)M@`4z z<2yWjcAAb}Td(%22K~7P{(lJ}T~`jg_G#0d;VV=bU^RZga9g`#kxiY3UgrD`hri2A zpk`(SfsE!{MXpLN)2o8@m;+QhzC;xqRRLiF*dS{}0}Q&{mvtx2!h*ZlI9P4Z@&I4g zV0!NQtzumdE4nZ;UE8cC>V3RLm|zriG(SkylN!oaRNnIdTx@hdFy;x|T6| z1rhbvOuJpDuiU6hN`L)zeuhVI=SI!u$^-=88;QV~sRguzKbuo2NU%a^?Y(<#)bhU7 z&VFp(ssifSyMelWiOftVoo3xKNWHH%ru-)0Q1l78pn)Cf6WDgW(VtI;2ihqzNU#1q zMf{dv%)32@JFG|>t5O>+srnulJH1>3_Nr(S7%qBA+T%vFv43vWF>F=A*sp2@(qUc2 ziOO>6FlFWQI+^TWTfntd??wc-QT(dg{vyrGi#z#kiqUuR4cB8PfC^r!;%`UY*XTC0 z>NZZfwGT#+yLo>K;2f!_Cfxhod@AiWFux)`Yi4f1Sb?b1EPrJk>IMStv=k%#Fa;a< z(8?mFC)m4XIe)bhMT6HOS)}*`oaL}wwXuA(!I<{`LE^oIZ))L^oF?4K2i`$9sy2N; zkBk3pdMlkkR{cY4I+Mz3we~o}T1$aj=$lxI`xf`DXEn0rL5wzXFg!8UJNfVYmEl%utEL-i-G7?p#*dR57>oOs_N@&!GUXxc zHu8_L-*tOvLrMG>%{B`87S^oyDq`@$<{oiJ6T_FZ@c+ff-T`bFk?6>)CX7tN99g^lP zh8wkmzyI5k%~WU8$^MWgr6%faY7ZYO|6h69C=XtodbYTQR9^+%VL@+0b?{oq1`6|U zQ-;w+R&KEUxuwldWcqf6$2G{$c5?hLPJEE{ZGUFsL(cbYDaw=Ke|eHWNgrU2KN&uN z-UY*oT^o%4SQqlCXn z;;ZCAB}~F-Az>KRdLh}1u-v&f?2IYaq>7ORFTwTFsksFw@>yUTJTY9oT2}w>zcve-QNWb!^v_Ux#Fhf`40RilLsb5Hphn&LE&v6)y8t#cwE;#cxYh z!KRJvxH#0JSz&x?8mRSEMhb$#q|$KdTBT|1$S;?Sv5M0|hxiI$z%+cv6?+0M1j00l zA|z)Fx5y<)@4QomaqJB>CdGoLf@(IsgJ#R?+m6WBkI19mCWs*q$+x5&;6Yr*?tk)U z*kar3pMtm2B&Mnhz{^mzyY`vt|_NOtV(>wMEPQ7Daveg95W9oP=V6HpkY^roWi zZHep2Td$int6YBLu0>*<2Cg#i=2_|YW%c>4tP-pc%xD^}KcIGV68S;1xs^S`A)=N~(7=K1rA_SxqdB$T%WDXr_QAzy3kTQET7dB>q#>!w~ z9IT*hB-F`qTwZXtAzP$#DeP2%a^Q;tb$Lr%07leMatMngsx{{L>NOy^pXc%XoL;8V z`GgCo(9e-wq_b(O1QgJOfO~QvN|f_xEKQZY=1;hF0M|B zhq~D1Vhz(MC0*}?rC;Mf6h?`S++?juxFtkorDXB?!s5Z>?_Zb#+pj5Q*g&!zg zr_`foUj!AJ%bS%M>KheV*MIHQ6;YQrE1_y-E&h#qHCmn`z$$FblH@l!h-Ul5mwAx} z_b(>#^z-d4*hfr z%^)7Q2AYzBVhP59J<+I&_|gom{4JdTZA;qXO-+6u^3ROXJ|I+Z6YYy>OfDl{2@GX; zdSHNlTh{h$E;&?!{cna4<&N|m1pFmsl^_7bKqQi&0{lJ`WG2vVWb|4!o9Q!zKD~X1*1o zTB6@(hVn8!viP5iC)p%JyFYnRiDf7Y-KUqtxdJD@R`>1>{LkWI9y^lE9|S)=Z^!9T zhhUW8V-bx_FW6TqQxxn*BupmNZ|7$>@43+@hsc7y1uYv(S+sT{lO_koRJSUHJ(^nVHFgyf}D&M!}G41u3M(yL^4%^xt*qH2DHh4)PMtqeNTp#@k}GqQIi zzp8n{uxxn1f|DCW3|~nKMljq<^?lt}m=`U0fQ26C{$bWJJ!`Of)T+@;NuN>~!&b17 zyBA~Jo~837skmtUjAokr#L*3b=?lFz;0LHaOq)Q}z<)LetP-v{aLwas3JVwJ|E-a>Qte`G{pZd5zWcta zQtiTWGk=nec3`o=MjNp3&wAI51q|y4;;Zd(`)KeVGok+v`R*a)JL-Qk#AheGXiru* z26_@K7~@Hh=J0Nk#j_Ok+3iq@MUuo5%Co+2Fzi}fy&|3RXH;8BqqhLB#?GZ2m7CeJ zmVyj9m{nVtN;QQ~N;L*gSlJjoVP)HGOg$x9J%1?BHiB}d?9WzgkeiuO3-%<2mlHvS zHzsAg(qfygg`;(wT6Tz?02@|rWJ$UnVgpL4ZS6prIn--sQ*Jdq|B1U%FOM%R_z~Qh zTI*6*D)^n<=!TB8ar;DqwcJ55;4L;$4CprZQFg%W4)|;=)j^ z1Al_eR!XZwhktVT@G8Xu?VSDwlG`La(0^WUJ-4*>MzS_tR4cXVsu~5nNsQ4Zz=#{| zr88uk+03oX{MJ780bOUnalT_tCg}sNu;?!1RKMU!d0*LavXP|!yx&!y|5-^4d&3Zs z(q0p4^^=k_v{AeILBenPUwkvTAq;zW`G3ot4GI#WQdE%N@_4aGa$QtrI)4q0iBA7g zJC)Iejp7j^B&6ysHCiqfSzan|ITgtM@v!I_kii_VO%gtH#P!7@nWXS;Cj#=}r<7ck zM1iM^Ef#)rjZLWrF-%Kx3-vUf$LCDG9FYxDVeR)qm09 zK*6Q!XWtyCLpb7pqDKA0{&@J~09zMEv`1gyE0+r1h8&y>4)+J6H&o{m@*6qnYc7G} zoF#bz<1SEny1lpFvi-i_1C1bH3q?NaBAar&^-lONsso)@2^@X%b>3EVdRx1O}5Hi%sd^-c>pUc)F)!L2#0wZGXtqXcy3s4 z=1SEDg5t4B?V*a?bh?ie{z1jHHuMS_PbM>!40BjdVqbV(7w)#$mO7dX^?SeffiX>G zT>R47Dvj`9Y&_!ym}p9~HNJ{d@@=ff7s+g)uCpa@9Tz0H+@Ur_Pk)Jntc1WQLacZ% z6K8D!D&))y_XpCQlElb8)jfHl1cTvgE1G-jH(-<;bt*o=<5wP(|>;P!= z_>&_AWQgH)XORI$U`SWLCR_;hfl-pJMP&g#p%X(5n^41#LZIRfzfX?X>j`%}GkakhJS`%WS6JVlWld7V01+GgD;etSY?r=cy?xPm1;g+jq+qU|1G|5Mr?59 z1lNFTaCsW%zf=i)nq5^Cn=Fm`Hko{&j*&o6s5mvbo~FrJI%g+L8cq`~A&h1ZY-P9O zY@EmQ0^@e)d4ELwQ^h)>iPIdPC`&Yf4chp) zzyHG5NcFZdRF3uhAWKj^h*?sU?3JVqrM&Nf1ovMIWIASxx57WIBqEvh%YTJl4%oqicc&b`6uW~ z11lS_Jb%e%(<*iNTa1)#7p$cL^$HxvSwVywdKl4yO5HSq-FdQyT<)yyS(<}=!m)G7 zYML>zv=R9eczl2V=y*JUF0q^#P*$fYu7xm`NGI8X-one~v+EU@`{j?YNMZaMsiTMl z2W=2!_eWR_zBuV044;jfEYnebnwI-%KAAa;RDX6$j!^$52!IJkTNveXnyl}?U!tM# zs1WE36^-4Pkls}~149czQ3HQ!RNs^2Y?;iew#}9}cR5dDyj`UrVEqNw@9Hp9wEL8x zAR7>qgY_-KiHQ%N!kRLh+pvtod==}^FUQu_cAj3dVO`nRI77zzJwCN7ev;fJneNQ= z#D5ciE#43B121Z?kC!T)s#S6R0Sy{ZGGE6T+{HFH!>HzDkm7<7i7@Yjt_Y00C{NU4 zs1IweP2;9(M~>MJNTFSk%!@29y6Xa~rr1bRMp4Lj{r!;(Kw#44@ma~s)EIYO3SHK#+t?D-?S& z8?Q20tAUOg)E}zT7(31J!{s`p-<@m_TbhO(s@y(2nI)wRPA;;nNK|YF5e`ja`hRs- zHe!s$th{546&}Re0PBwAkI7}MnU31A1g2wfY6+wDVOJf~t^`j_-*Cyb@g&L1I2CZb zUB~kS83XmREO#d8G`Wbc(rlTN@d=yX?`WHL+MjUn<=mX8PzVZ0X}uNmN2SIU4Ah=x zRa8_UQ9yB?$GAg5fQ_J)+hrFNH3Fu_P2hE=Or&a z7S}2^Z6yiDLi1SIB&XQQg!`)&?@t*~b5LZuBF0mHuFQ;1?EiuC6MCacZGW}^;V;KC z*oBzLrfwtzG))N23!*>G}u8lB2fT44l>1mHa+wjTaCaO zPcFWTug!w)ILXm5W57#Q3fA!ydr4fHVILWW9gz;SedD8?FX!IqWvj zG<*TM9+Z+w`YBr$uA6;Q`$SQ%&wX3GJ$5f2Z%r7SH21gxbF%P}?)882omx@2lN z&7bS6$C+J681s~PdNQZrpTF(eEsq;EAkT_Kej;n4wz^}wXp+*f*th);=ZMLA_Cl5U zGEwOn21$CIB)3EI#DAwT)WtCls~LR(4*5>_53{ln`5cM`+D&^h(xi1b3zHDW^J@cY zK3XR^Xzr9;xY(wmPx2UeM0`>~e0W=Av+K(&U%*EnUe<9>1qEspmhBh8>VKCTKnoZ4Z1@~PX`+uM>l=aO+>LGZRlxlV& z@9d~PI!e{VME(luKhI1Mp#!4&Yaz*0QYgQsiZfCMojejng^x~j#-dIIUANVF!72ms z=z_o?lLfmPSKf1Fd#=9uESWl~A5-aZ1%HcjpEBh^BKtu)bPl4oIn&Kg$@5---%dAs z9@ps{hs7mtGk;e3;%7KjCT8PKYRw+g5_ivibElrD$`gWXK&c^JbyTUsD^*st`|~N@ zsiGs2PEHP(r6q;p4)PGa!P6*+yNxKqQ&Zx(jU@OiLybXq;Or{KIC8CxEcp1EQD*t>h0WwRt^ z6wMU+oE{c^tmsIi=<_lp1BREfYUaAoS=}w*@Uty5FrS?Mup{BSRr!gkbuxSh6`a%8 z3H>!Y3x6Pm>!X@%|06hID9UL#WrOeMtmTlOyzM(+2l+mr?9Qc++@hZez?}Y zZNTTb@URKz|CdP2ZJsvMttMJM+Lt0)T%io%OZe{*u}-FD7QTWw+v$qL%+wjjA(WYS zKaY!xjzY%eIK{^)`j-moTK;L*!PJadmh*w-Hh(IjCwcWK(w(iH&Ebw_&tV=OgzTP% z-KN-D%tuS1bnK?so0OuFoRzX}6P}ABU>GXij`_wH?+a9W>WTdn9^tMyZ0*f;Krx?^ zYDH>vkuFvV1$e(rQ@L6&)lTUmshKX%rB?M|Yx5W$a31`G0lpd8PSgbMP7Y85$ClhC$itV_OKi7O!s?AV7I^*MoV+QA zMby*Uz{sL~X^Kdtwp$@ANsg43Y!)&S?n2h4RswXeyn}Jp?RWM6dntT9si39ovv`st zuf^;@Q!TJh-KlLpa+}LYONtKhzjV{C2Ye`q&;tbYM{!`Dau(07fyE|1tDl*V5KctZj+mZmwTSabAYtp$?5v4=K5@al zB~zg?glm`DjDw9sdcwk~km0>=BvmG=g5GSVKx$z*2y=yv;h^o9ia&`+q%%FYb{vt)-1@Gt^4o%?dOHNLn- zQ(x+$x~1^FSfVfvwOB9PcGBStPh$^%qpvPrsyMW*E2J14A<}ts3Zj;~G}J(B%}~kn zUHaeK@BbvCfX4k8>G+F)M=xIActN&3sai};{_@q7Y26PNz7O1hwRk@6ihq;F@Yq}L zE9#bQZBUt~=jRY_#e@U?$E^vj6XKTmQW2=H4FoDlLFh26{2JO`IrNs%xDicIRmK3i zv@KHK0qPK4u9Y)hWZ?{x3G$4 zqt8?tPG|Mt*UoDEiZEuU&X}F`F=nR+V<_2I47sD>YU=8`in=&C0G=~a!7FwbW2&tt91yIOO^v>ZS zGVJ&;w!~CC)t7)WI)BZc)C2d<#X;2cQ#9`e=kN-5;cvw{be!;ktp2+Kr&q)yYO{l-@ zb|+N2Tv~g)ZO8(gudE5d`?Mk2uc2l#Fm9f)ZSyoMXX7erLw}S{drb9rT~kwgr-Y1J zQ8y##w_KA0ExT8e%W}OiS4gO3c|E7kqC7C#@~-pbhQ92_NITS*!weYev;R!K_O}Vx z?qP|tl(~0j6!85M9HQ%ElYUM$qGf?OEVk@x?dB6)Tj@oqiM20lRKH5~KlIWitgR)n zp5K2NQ$MS^NuT65vm5hs24u^txjs?%PWp(!Zr>qdihr&S-0~AIVy!=-5b9vh``EDl z`%qj9_nPA>Epb~k#8gJU=QZue%?7WKG|`hUDEgT#b&uj#YXv~Od{?Q%+5%i4dni~% zcPlJ@UR3b42i&Qylk`zJ@Hxp7Xy?UP#=I@#7nDdD4vj|MQUp*VLz70=i;oQ@`BJ;L zS(}&ne1Ag1a-HFuz%@y{f*F^0_UZT-UlXHGRs?VdiPsIb%R3Z&pUMQ%zMN3$ll2oS zebR|g*O0v?N~KRaQYwAYg;Lxs&;5%ZN0N)@fjPHMD)d%NouLN@=UZE@7L3h3Dx5rN zWXxU0FPI_a}l{DYAqk(ze7vKqexQ62%qJPWsGarkB6bG2@mEzDH3rViLf)Z^K zHpw(qFco3rwcgKC^3A6!x@4)QiS;$p=$jt*hs5kpPZkYt}g;?BamF>c(4F}#$|GuWw!_5hG(#d7#g4u!wi=Z z1M1w75)3KyQ^>cKaZ?`W`LCOS#yt=wA#4*yv6V_fos?+<-BJ#JP|KkM!RH+Y*6Tr+ z8v{2{y@Npq%(-t3abo|>;*6ObG0_f=1Ah-BR32JZm2j?nIf=D#G`S2~hye#G5NNF6 zVNx0BRb^AQFhNQ{1)YDLmW-OlMeaLbQBd4~QKA2({9O}{BSeq)snHIdf<~K_{G@lP zpyaqA9U-J3qrP035`a)RQKDEfnK2{m=tyuL*`|Z*6e-=b%%-WR9&iwSI~21q`hUU( z!8+rJ5Uj4_Px{%~Cb_|vs4^A1Aj+G`gXcGmdvhZ7WX6oTP1pse=mYc0$ZV0>17E|2 z<#lUn@oo35$`L@L^P>Ov77f$L2=$vSn;`vhk#m{kYGFVrwDXerNh%<7RB`;)g=N2X zPHdy_&Nkzu(I=e!JpE;R&Q^W56f|+kAtIuyn-r?B zKnJS!!-Lw|^P-%J3(} zE$%eeum-V>@x0BTIl^D9tk@qNIxouZ2UWY|4_4P6jP{}7+JQh@XJ`BG9R*s}<_}!K zk#8f=t3ipr4_}tJnqU;!8%@~Qh+rxcMUF{r20kdYGC1Yj;pTGgBcspYca6&xxgiiX z^EyIti>7I`dQYcpMH*7oGNyR4T^nP9vZYpv_#XPB{Hb0xu(FN2&!9L zP(*A!VL=;QUt3&I1g67+np)6K%nibVVq)K5oprti@Vy_+wX_19RV3>XBpKUW7$ccW z#6u)=n?4LFB1FYenA-H8<*8QItPN&mcFFS@y8ITq|Bp{j;D6|}AqaHXex-FN1Eb@j z=`<^E3tm03G+I4JPE2r$L_xV^7fG|cyaqUB4sGTWi~}(R5FGi(M~=Keg;+h#GEg(V zm$A9mOU3x6Im&AQ^`n+F!A&2yvoAlFEiA z6F!YCrhn~B4>(kRvdeT2Gjvi1te1&CWQA2z@Ho1EyIYZzN9#EVRQz?SmfDHo@Nu4F(9E9`4Mj{r00j5^BMH?y*W{H4(t!VYc^Wy%vd;uSqHT6a*wR`TszaivD3s}Oen1OZ~! z@q{n#q@Q7^2ZFIU(u03YuH-@meBi`Y;yuU=aDXb?$WK*FCRi@UKe-s@vG3Ro?<{|B z6I0nOtAG>_vovFwJ@2{Y%9lwfYsAH127ikef(%=P=CgPq%Cg0Hev6mmJTCVX%TxE3 zp^Ve?Qk1dKQk1Dsh%&Ex;^ipM6~x6dS%x*oD#p1C@DF}+zjejlP zI_030nwMB4ROC*fNCZGF;)qY&qx?I?8!6qEDcsc7ceAo(?n2P|_Q%)WpZFQptK4As z+Ct%`S+jO7ipBJ4vQWt7OXLw_J4zBhd~hD0~5pO9+(Wm*W^^txbMt`EpuA>+ucOF!G; zuF!JAFKk~Zg|#`spXrhjz3jqoOL zA*SAOFuH#6NQOsbgQohy>0+_=+@=|Ja_v~3lyArBoc1$m<$~hMP%Nehr7=2Pu`%0% z?OvPbRvmqfK%qc*h^a$2B+T;UZ(i1>x*9IyM>KK{)DED@JxSSW#f{I!n)dmocbt()4mLH zUU>e6Eu0aFqaH}=n>4zp(EIkV3A_0lrZg>gz+%Z`>Gg^QRf@ z=XmfVHAuGo_cU|ODt{9L?ooPGu|7nE40XwL6!+SCs7ca$koHfAIVhCFvr8p+gEMX8&}{hOO&tvo`2 zf38Bp7S$|4DSD3Z1^d(4+4hyiv|NeAXIyu!RJJhxTteGM6@RT=VnA+RybHxcjh`Cd z=i6**>5oT?RGgTy3kx^bdX3QMP$)UwKioeZu?jkcX@XPt&xQeq9~TDw0AvkQw|CJ9 zfOEWRW}i4{8jwPsb<-%z2%e7y<&dYO#DO}?K=ocaSY_Q}iR*Jk0FX~A=zCew-72p? zCgXX~DiyD{O@C0Q>4m+|uF@$mrmL*_;|6nlhkiO}UaFqwKj!>T?d_U|7mCcEyxOHE zPbMSzU;t{gafTji3v0IyzEPXbgEHfkPFm8NV#a=)uV&fU4Cpxc<>X}?r>`V04}%?4 zURkD2pifmg`LRr_S=y8guW@waOa<8llFMK|4-VRPJ%7UOQ_FC8qxbq8SVZwg&j9*y1`qVfgK~dC~X+zo-J300oBMzMQ;<3pMWg zP=An@Q>slA1USgz+KMmklj;{82F+teUCP1>+KPlwcS&P2!HmX{!FvW_4WpA^6sfG09iVsYzX@zN|gpw zxAPFkvTrTJ_KzGE7|nHvaf8L~HN*{4W-SqJ5PwiC zz)i%k@-Qnerul7EOzjdfk>d->gi6|-ovxKQj7F3Z#>7zRDtw6qREo#Q8H7zqoPl^_ z1|Ns?sVLa+s=Pf`PBc;uOW6`%4Y)bxTllOTnVe0n+uxb+ExSLy&Y;?)%JHc@-WvgE zZJKbMx)(X=#YF+_rTHm5HzT2|r=070RyDpYvii z#RsT2oM_+a<8!Tx5w1hWc0)%Q^fVD4j4)K!Ifn?7g-Uw!WCrW9+*w5o(-B)=&;y?e zUnBnv$;FIbLf({dDuhwPJme%Oi*^`cIWqwGz`2^)jdPVy4g(;x?Tof^n19nlZtsR@ zlBH9sGr{dNKm&UC-EN2a7a3NJmrWA>El$e0SgGaH0DnR5urk|LkiQ1;r-7P^cl+$k zR&fk(N}1@!lRXshUE;s{=9V=y_K=D+2B~LRQX-K=fy3?V@uz1Fyrgigy7OJ#J^$Jb zd+H8d;%x|Ui}t7nR_MU?Eq}gAFFxWL*&JQwpqSzvLG3Lq@po${QjRQ=D#t6-;^MA+ z_sPjeU%q$p&^IJWk+#Ivr?_eg{^NAcUN+nNIidl{H>bD7c>aAcX-Fe=M&6^-6*(2X zDW1U5D(8iiS_R_AYs$z@|)kMEm$V+pvV9QXFttg`J~Z}7ZL2m zx1C>0J$c2P+o&{C^8{9l#T2TdjqG5YU7>HI$CKe=5c4{S`AQ(3Y@2f%@+ClHii|X~ z+htfN5c4<)Pt-cwiwW>_hK?50_SBbXUMY2!0p3A{klf_%k$>PR=Cway-RikoSWY(2GxE0KmJ-A^4}S4gt-7LJgi(~n!HQ@gNa$lto!%+3 zbcgj%KML&_zt}4W8rOjLcjm{9>MJ zax+X#??akqXn%T~T+)Gp604{ENpIUyV2I-ML)1tar5sr@5-M1HFcj=bMS@qWHd@0;@wd}|kU)n+$dvHjq`sIB>XTXjqwla{dq405N#u8o%W zkF(^)fS+RECqsz$h024}v|m~@Gc@+`mGx+~r8Q2>3V)iK!rIiK*gkmJYI0dT4~7;C z?TZt&HpCT*U>f=(sby{|Ul<26fnr;=aw9yZayu*`ntaA-r$s}+tvnI;n17a5?nP)d zMpY-Y=yH}`1&jnmWreYHUC_F!s2Op9I$qciYho^)*t9*H>5_$ldjbJ6;lJjR;;yQp zjsKsV9DhGN|L(J+gB|T#r(I`+0fbyoo`%TQXa18IpN?@a(|UZ3T%&OFJG5~ zZ#fUWgG6L|zC4bb`r*OJJo3QaLd`Eiw@y9{0`TUfAx@W>w z!Tg0ei*r=0(BS^vpbe1t%`Fys{ZLHRbmAam{wVQY&X+rI`A<7xW?cR`XUvx7{*c)V z^D1<2o1!|vZe1%<&Bjb0pXkHg%SLClXiKKN!%)#xVcjmH^h7rt2OaKAwKpRM77|hQIb$M*M+17OL~c{n1W|YO z44^M?KF4HL#lJ-J&n!ug>mb0GOl}sbfOuHc0fCZDhNs>4`-t)O+iFScMXZNWL#`mJ3^ngw9}zQb1}%4qOgmfXMaO-7lxqhD)9I@vQKBFPH9?y|&r=!t> z8VYfUjj4)Zeh94Q(^(2y&gM7b88 zX-1bDUDn}AoXYB0%dus_7Fp-lU%q_8wqhlJhL&o4!yKw7n2D#;bPnVS%n2f3HS ze)+@&k?byrci=kV6gTs9Z0x}`I1Pv z{QjZ#`z-sO9+{wMyHUV`jz4~YAJ5mx?Mm>|w%okc$XDZmXMgN`WPTVmWxJ8^!#8d! z*S^pXvvHMvVfLD(@kA~hSV7G%BQ@udnsaHHM!KU4U7ZSvE(?PZ2QkPcJ_Y1hn&W&z zW9cVIsnS~Y?E0*jO)oO^RXK&l5fYx>K2GRJWY=6*)or=^ z(o2sYKTfiX685;ad6HeuUV6W{$!^o{v+||K)2o+Gvl0MYT)%XNArZfOSX7X4J3;-K zTvs>ao|@q=JS?|(-QA>_Md~4}BkQ*%)9hzcKXCQ>+JC#8!ECO^8ieXBR3cQmiypyp zBZAjZ9+=ToC|Jzv6h6?$f5VD6Jl;0?$o{uIE~&xAN)Am*a_|1pmj-V|!LaTM@pyvg zmHI*?`QtmlM4O)%J{ zPMD2-U~+(X|ow;@Emxc!VCWrVyfgj@koycIkV@(~RqmEY{5_ z-H1{cbpw66EO0TOS2k4hw3?I71R`C*i{?B-7_g^H5*g))8U>GXqg-dn*E?r+?rAd_ zS9hCGdZ_e3y&>C@Qv#I5*RJ}i0l_3sUK!CJ(0^ScGmjLQbAdS&Fi*A2GGtK_@v9>) zrpJe(3#w~1D)^7?ark0{lJ08w-*=_H%0qy9{Wy2M7|?qFt!iEYJtO(^SpK|Le|t&& zSpK}ZP1_zt<`b>0!X+t65(o>RFoI^h-r_C|@Xy=fGL7eeNP01a8U%p*G{8S^^#riZ z0DtC;!90e+yam7<06+~3fH9Z@20Z~-47^l_k3X1fX3x?NQ<#8zL`Aj8BSHUb--(82 zRnapu$&Q?zEjc!`CuV)lwz?c^Rr*$}L6i3*UVQN)*00$l7<`aaSd9|3wXthbQL@&wpAB z5I!SJn)`ehQCV50(|kNX?Dn>pR_K63pzVKhT>276lWSC;1e&tFqaG^fJr6ND zEclp%O(z~@Sm3!JhCjflU?!mKWq%hi?wI5zN9b^FnqT;e?-M;i)R8;iv!^D8BN%?1 zP9Tdg*hCjm*=F2paUh_NGSq>yl2s{d{*RB(&W^oL2ig!6=ycPyN;-OKgC1j@d}_+s z#YH9#OYDe)(DZIJPMcwgRV4lPc>3=aQ#uTD9U<`noE3|kyd9a;wX1zBn}30u3y17A z?oq~brXG{u!EVk5z@7lR=vZ8t+y$V(2SQnjEa7Bx5;aKv(u=ZlP<8r9T6f_Yc43thx@&q=Dq z!wtLOW_!)ipJuRAAJcG!L>L0;#FO92x6+sBPKomq6qKif;jRr~-G8hWiwn*~a^b-P z9)@j5wCOdq1bkNHJO22SlhgD4hv&NnZNARlKl${dL-X+Hv!hdUw*PSd{P?RQ1YLS6 zpS<(I(ZRVnJ$m=(^yuNi(b;omaD%Swgu%feArTlRq0<*uGK<~5Y-uiQA1^Lh?GEYz z<~iHGg+6)s&dL7i;eXlj;gL<*cnIC58wC9L=;&Q6`U-uV9>4cKer?m&JNpM8!p9DM zynA{=Fki(-)R?0Dz;KhBn9lv<45WdiQFH)zS|iEl({xheBpPPD10s8c`}u3|#!}Dz z?&EASE9o+mK5+#qpC9vNM+t@>eZzmvNcMztdn|iBK;nVd8Gl6U?!b{k?+*wTuj(E= z=(OTbV!$kVgMR8lgklcFx zg^_vT1SaB?Uw>larQqd9XysF&&DI+qpMSRf;Qf>H zEr#j{@Cr1)>${6jHC6_Gy8rPf4d^@TgC3&3y*}U()PG-%08&7$zd(0$o`t8Q(ALd3 zxZNl@p{=Lxz8lu{TUIHjPj1DKm%AvD(eYqumo0lW zRH%DL^~dmdK9zOdJ_Sc{@1w=<=*Xm^cPdm&7f=r4x8*;h))|+@|9Z5m9^Lr2snLyo zT6ALtWzkiMt^$9%vkqMacvls=3hX;*PzO&2;;1=p?xZsND9m3MV1eg;K_#S-D==tQ z2#Y6n^>_wqk* zr&4{)nYw?8c7+9lZ zSU6a|ID+>Ql@=;s1D*`}nx?5vMy?ov` z{7jNqHDzJZT5%K2jLOn{O(!nEPV}1Xhc)Vpie{!MyA?tV9q1=sW4fk6t*FZi^!(ysz$Rk1%kH zQb+W=F@O6;_W}TolArkaEl?KLbPLpYyw@S-vDNIr_@5*%TA%97Q81Z@>;3lmeH4GA z!?O6n#))Ovk~hRuqKL&J>k$P+VW4Vz!`@BIhT6oXM_9}ebJN3%GS+P$W|Ld|igMH& zv#1qAeDf5JDd_PcqEHn@lh#eylEF%VLhmB}T9Q-=FB2HJTyV=sWdoc1D$mFz(`A;9 z-MjeCvGXj#O<7``5MlJ0E>|#CFjeFhK}j$Co4dKpateZqpnYajirp#@)NBy1Utg z#qL$GMWPxsMt|GdQO&4!uogGrAP966Ax>if!jHK4xM56(Cw!LBV4hVbY64dwsG&K> zT3H47y{5bM@I!?wASfxVU`c;3Hx)oS3JFAuA%-BOrkL>Nkn1D$wIx3>!GL?$sND;mP+K_Bc__;>f&de3^;@Y#P>TJ=Qt0_$lET#`T z=&>Hs;yBYP4Z<*4H;2tY?yld5mp%3U#(;Opflmlc_g&}sH!go_q5>gg3M>0nx*~~s zjzQ#Eg*NseDozot)>fg3UKne5cc2MYZ}UJ)$4Wqo?nj#3h?v(cBL)^!u8h^{8p~lP z`mD?wgwimEth!VpE~#`%u&~r~CKd^9YB4d2(S|r;mg`veq5L=2i>dtJi)CRNny7c~;-*;oj#6<9T#H zb#Bh+Qb)VmN7Wdj+o*C@D15CLm<}{Jfhf$ofqgu@e6oMPclyEc9p7G8d)v}9K98^y z_yEb|#|`Sqi9$Ex1Ja4yYyt?g>Hp-@{@K~y2XIw?I6`&z-GUlfEQ@*m6JSi;VZ*ji zrJ5Ns_9^qzLQbLBvgLHzQsbYVok`@MIRn$|`hcawkkAF6Ob2jh{cu8D_J{X#Qk~S? z>+$a%{VRXV031lqXer|7V=Cu=L4Kj}{({E9=>+r5WUI8^$}(0>LI^h85$Ll6R>AY- zmMW;uWgHGTU4N^KM*PmnXgmdqm}6)2!F*A`!tjk(B{r6KbQU3|XiLEpn&S0};=8Q0|H?lW}vW^3&u))|J z*>-rzeYWpu@>QpR@DsG^_csAk5C@E~`q2|PEMx-oSv}vtGh^1$7>oa6iytib)|o{! zbl-odjzFypehbM!+Wgm?o&#ALskXQx<9if(GB7F>)XJ)s9UeF$hA>oc>vmRZ6(JWs zk$!e0M}%I+u=&v~cU8B{*KV0Jl5n7dfvtam)5Qw&ZyeyLw!@PZm1y0F6(GtsD2>-N z`$wN$G86pEMNcgVT)op}=>@IHJ)UR`m;1+`e!6#b5XF=oPo8$e7Ifo!$KIOi@;raH zl8o!?S~`RbfNn(xALTG1+G4lN*Ba5CbVwHkV{?~GOzEK@Kijf|$izjMMArTk9L9el z*VGgj4)$ABp_tw=P&y^Af$7IP9X%sA{k3T+Y_ph zvT(=ZRc{xl1%grvVo;k)MlqtyHc&%&Gj_@&-oL=7s1)50wKm8YVC_;3^lUWQ8_m=X zH6ku|A39J<>GyYbYvF8@@si}LUbTOztjYpjRj?|hALGIr-yvL|I}O=WqzYkkCZ@~V zCYi{;%nxBI{@EziY^#d#U*mM)>>OTQ?#G=j;NpIC^@KqpP8Uw51)as=0vUW?o*kaU zt+l=PKIyk|!Vq=Jz$EaS_m^MhuPoUsL&>#*!ZsNHG%e;a?+V{7D0zvm#h-uLn_Ko# z#yD3#QxuCD`B&hQ_StpJO+p+p?*Bl*sy!euz)Bwo+WUbx1K{>;#u)&U!OyXow+4On zoBzM@jX#t2H@@*V>}vF+pNX!2(yt_|S8DWC)uVo0dPC3p8ClxHes12zANF&rH}!?inWi**#OW>e+qZ3QTIz5AbcWet=&&554d_ zgG+F7c{k5FTixgbbyLkH?uzM&-s0S6uNplQWw=&*VX5>-BaNI6*x~WBldU zQJflofW~>Mq`QWw3d&|Zr^*8~DN9zXejCPl)o;UWpGV(@X`-lX*nWR`+r{7w-iG;N ziF1ZVQTakCBm#{YXTeC-kYwa=*I+)z@fjYaK*8W3MM?+3=OoMHDVGzKo3hZ{J3O`F zG{oPKT_=_no?w;Xm6j)_%!4mIfgoAp86p}j?o0#p>Mpu)6X5EVn}w)cx+yf;fmO+^ zlkJ8!OSzp)FXqCA@*RJ2@i{wN(BjLku|WUX`u`FBos`IeO08V}ftIaY0AfK>e+brg z5vW)_DX3XM1yx@OGJaOdW~oR0`E^I zz3KX})TNP%WQN~hb!)6gZOzpSQt6iZ73pie*SDE6E`c()Lh*lbzlZ9THW0}99?wVx zD82F0DymP9kAaa9dAS)B*|jK7g_1THX0sel>e=lwi>}dbQ`CoaUOAuAVL3o7M#T-F zDn?K<)ViE5W`JVI9D%$4h6nBdYv4B;PgiLe=$>*}U8;BPyt|I`xx|7qw84m@B`XxT z9nC@W|DF$F9W{UL!cYgk4Ddl^HyFQMmffzqX`cVbrHYX}svcE3Afbzsd<|(H@N`i4 z())o$;CK3`(^)Qq(oHXeA?TjkNsj~45XJIaONC%8K67BX)&Cp6byzFfB9|@7cSbzUxE9tqoicM-O^@e7oK*#G5o5x=axox+7Fr@@3S1?hixBGYSY_qZd4Oc~>4Yy7~Jd_wr+ z_V|044|(nFZ=S1}FuZ;=`W{`(;|>|Fv?A@x=2ITy@Ix(}>8A0S`Cvcq_KWXBNG9|= zEJfw}FAnWYZYMJtf9<9(h5!8(>T{Pa4)RJm{V^2^_k zr{4|6FTZRRsyv>N%D4xxFC^P1^%}Q6f1S>L^jFGs#D*(Y>|I<#N=L?x3P#9lT$Wu5 z2L`3UteWM+@^O_bKLQpHfJZBLHz@BbrpAAi$kmV$hYf>Y2BR@9s~l#T71>w_bGSc# z9gKg}{4Vl&*FCfs!yxAcug64$ly~@;G$8I-15~OOBQzjlFmqvq$4hC4R3nu6gNdy} z*YU9T(+46^UhnVikajd5n9-cRJn17%n2mPDuo$W@aiF&ad;rf^e<0olE_B^lEAZ^ ze49B-67q;6^nv?KBqy?{!MS z=jfaiLuQRXjcW^7J;}GAJTY0>pwPObe%AutfKhohy#*C0(8>VaKR!9{pE~$o@|)4s zIEEV8dUQaM%^h?BCa8caLsekt#3TlFe)`$|`DdqnX}oWz7RFF5O@KIIj>dnqFEpUp zV0vwy`F@v=r<3okJ2!dBUv%x|=uwWpVc|RHpL24ZGo8`!bE}Kn8T|N-Ooft57bGPb zNKCQobC>Km(4P5p=hrxDmcy_XP4&Dz>pB+!$8_ni7*3n`g zeeamGu3YJgl{?4>Lsg8Ej%WL`K~YzjVA4w4zi4pM;)2z=3Mpb=^2RIU$*+&AWb8gw zZICNfufX+54!4E^Tsl{9={SRzcB{onQD-~MWSzaoFY%%fq^jdtd|H1R&0-3pS;h|J zytrdQz3sw-0m}?cEMf5xT|0ucO>d8cMUGLRC6J015`jwK*b@gP|gv3+67Aa<&yT=p3Qc(W7wdAEOYKk zRl%MHs;oVsg22sC6|R30(+_fVifH*xDp0Ywjr@h2=UPJMJ0)DzaK8M`G;1;8L8!^& zv<-<0BO`j{B1g=Zrdg_82%wgjl~B9k%@cu8y<6393|rT84As8x0&eL3i#IXo!}u+% z7^Ss@R$Z0~)SSA&E2_@a?JK*)yG)ULP`ZmbtEBe)0x@|u(}REFg-zU$L>p}WrgxQ0 zTO;8@fhwt94YwOP`Vg2j$u__>qHV$2%XXA6TDs#+t(9*s6Q{S9+?8AND>vdr$W4kb zP3 zr^c5&3Cvi3;Ol=Dg=0S22tC}ZL3Zo?>WAKZ~*|g zG%_y?u1A0Qc^m{rR%$Cr5(;2vEW~`uO z>tee7yQ}%*cyq*!gRdG2Whhk>q@b#+7qIFLy^@G@1C|Cup<8C1mZ&$P0x3Ro2X>BJ zIpjjg^W^N5Wh04~<)j40>Vy;?hn=qFMfsPLMM89N%JeNowJ$0<-Y&?K5FcX@jOac& z_v?RVkVHUN$UdkX>@4@Rk6pS@~Wnrae7JHNTN;l9EY;r_ZA{O z1HNm@saAgQaIO5Hs+B8SH@dEEU~q$}wuE7c^`WlHZf(Vu7$-9hX2;VKU3PFm%L|!r ztd6k^}2Y}j3*z>aHzT2eKp1+leITbTM3f!d+|hm zzrvR*2;EiU|E@R&Tm&gS8usDV1Y4ZM1IN?+J{j5wJyoZr9)v zeB1H9fyFECEMr5(__i#cS|-gn0w{kIPDITUnRLjTI4@KbpmZiEps^7i`=#+T!%?fH zn_()e>h?5MtLjF$DzsuV9C5AK7)zyAq&ZwkVe#Y0ylCr0(sy^Q`}Zxp`cwhI`#)Ra z4=h5gy1W;YZH2rYlBzyvi!I(8Yv3#OOA2j=2ZTxKpu=I5U-}_LBlTLVK+J#IOvi{7 zq~iM_ZdN(wy$=gdZksIl`8#-fvXZ;}74*|;Dy&4@3lRo)Ee+W5_e6rol-Py#)G)1U zY99nuA5Mvu2PBG~O`K^7mXy;qhL)*9 ze(KPA@vD?gh8C~bU9Z^fru!dc>Jn=GSR?S*D5H$ZK}NYWyb{Z8estN$B7ngCt{Gu6 zZd{4gL&br~lif&2FZdfuv%AO11-699P=NJ*xCY#IWJ|k^VzED^)rx;WBLI$V_%~>s z=mPtt+qSA@1ij_Rs2-T%71{V`l-=H-Qtn>uzvWp5l}q1K)d5B~xN9Rorw#1SY@9SQ z0BoeR>C9-F2OHMW^T$Kmcf&7Oa9a zC?y53vDaWyOL!GLB!`a(BZxe1m6sP3{-Dda=x!${%7{9*_HY&}vx%w``<5avs z#z8By`IOy{U7>$-fEk>WqFZhoy>N1c(mFOA9L#cb&oQ4(F<4Kp=f+7&CzU#wI|*yQ zh9wvei>tZ6mBA!HV4e^rs zEa>BQbc?>D=asteuJE2^Rp+H%!EV_*M9$ybJLx^6F13HA^#olwwO&kgf_91{u0#eC zasT1?$J35+HO;<9*nNog55!B~dOsvkOX%4;`HrZi$F=EwlYlqtwTlyR1WS?NTx_iw zM@XEMoO4W+%a&e4Ys~nx=md0i@tpxVH5EXRX}SeP#8(A&Y)kA_~ah^2=A#}GBdMA;AI z^p_xX&8v7`W&_v=Oop=vx3jmzJINgrVQO2TNW8T@FPFkN0;V!Dp&T;{a06{p0sA!S z2y3}10xLNcopJ`(>(H%8XIrYWKzvcJi`RBlt?+-nfYA>rSY0(d;?%pq3dF5MMT<}_ z@|9U8%ES6Er-Gs>Y)MKEi)ohPbkC$`6LdU3AMveupniHApbTVQp)F^20*Q+CEYT-j zE8SsxVTSi6;i3P*XP@*>y(ni6po{KDvR8YrzWSQ{mu=T?^0ri$qy}Gpnbge7>{YC! zG%0`W@u@_lDo}_D8(oj%Yp7S~|2P{^A)&sd{=|7QO^5b+y=wKzsV$VUESM2hOe!`j z6Z96TBov(Z_@si!YAhC1YHhh7vrqbQV`3nkPIOYQ-={9v`{eNRKJ+^;I?5f-spLfG zF?Bza)v)Jvd)lt2c!_(j9d8!i_dO3VFMxl!Q}W}@p4$AAfnaKo=<25MqmhYU@sU|O zvDnZ&;d{h;2Dm)Yx7AOkqFk5kC@g3(JO$UOPcy(D=6naI5l<J3s4lq#wF2sxSQPq@ z9s%Jsb(elqW{LQ~e`64$Jio=)s;(Z8%Ql!Vo?^c} z#TqQ89x4uW$9y)QQD-0ohd}}i^KqViH=0uv1gc{v{|y~A;xJtH+L1u{Pr37`MoREs zD4(76VOX0uN~8ID^;|stO*iAS!c-jnJ*0yE4*}T8X*`SFu*QG$*pq5SuJwv)<*B%tF2+M#nxK#O2?p#b2D2qUdQ}Zk zqM>7x=xV}JJoR;`PaLT37CX_YY<@dI>0CIH8=~kui6MC>dv$x8TWyEY)54ywz39{2 zOe(JoC(6@oNszc6dLN|UhlmhGs8-SxvQ#4qpH9k>hPW5WjE)N#5`cg7`@v|kLvNv3 z>-+*LbI7fU(^c&gpb9?IWOr8p>MIl%N+&68zWwbAG@+MciwT^o0w$YUkI0AuXrK}; zoX!X;%PY01CKl+0S_zu=HKbn0a!H4K4*i2jwL9XCO{vvII#dwaiaZ@aX zKp+YHHGIMet>vA?lnmR~KeW(y5^7Sy;NVpc#1L(7cU6OXS?4UrV3ol4 z?J9Njy04Dt6M{0tn@&Z}uLNlBF9m;GxXNd!hIRBQxg+aRY$OIr z!AZ$aIKv3UfR*~r;t2jnvjt2O=kELHRnPKQYpygYDxff7#j z;E3J|kIw;UP6+o*0$fC^ptjkjz3vnYkLZjbJH<8)U@7}7OKqcSD<2hFr92o~KQXK< zh8#IBCL4b}d#BaBvLGcC05Q!P4gMR_$t4Kf;}F*8sSB`g%6R&*yq$k>sqWM%r^*H}>L zGaB0NTPa;!R0bW08f~x_x*n0?$Uw$)vF||8dMke`bK`l9%Is_3QC?dc>Wak57Sm{D zh#{%26H+)yRZ+VNrM9d)ORcwroi=zL2MG^E=LW8F0`a*Ktm#Zw-n9|qxK=KX74U#f z5E4?d&@}qL@Mw@A@vB6YM!Q~E_$rJd#4llJa?CxL3WXv#@0@@v2TkT`{CL77`ki9R z@vnd3i`RmWnjfRW?Ai{D_zJ{>ecS>`->1hsGde_V`vFs_N8SfYaQJlxfu(99E18~5HsAawrs zH1B9Szvs4rCcCGGMPk>!;Tsuv27gaBMl&Nr2nlQqj_G!9CI&xuSl+fbI^JNTgB!7q z%@LR!f;DP!a9)DJfneI+h~rlak~czw13{I&feC3VWZg=_R5Y_Ss1fF&owhVI2-AOx zP;KoDL=!VJC?nCzAX2Ekp$kg{rNO%4t&@3F=3h}4v@V*QWU z9slHod8Txaj9e#s>uR1V83dNqN+QW1pQQqENkUkzrCJ1=cM9TeEOS_>WzSSL3IuM` zt$|*=pJs%oOKA#&Z#pf-vonF5ZtRtNj0P!l?1+d zvy#w0Qp1vITPef-L%|gDlH|Y{nDr8^&ko-5mypI~_kFD)n=K-RnD{DkU|jyWb@X`I zVok|Rp!J^AsTO?oGj(K*C%B@EJjqU2a?c=(t@mtR;)2hThgQ>RFn!%K9uxM~?5=K`_!<$MPQfJ+k6R)WydFD0n8=rbD-uT>W z`S&-?y@t3NVc^-#762d5;p>ZiL|`5jZrRMOE@UAs^u!K6?rg>3jN?r= zU7nS(Uk22f@%^2FjQXORT{&~E%Z3a6gALM5Cfx@-TWNblJNIPH! zd?-}UdHy_}6N((cIuy|m`zG2oEY)Sxplerq!cgMWfZKlr49tJ4ZB=#WNv`xA=T~;D zUB!8@(caw~s=n=--=>eF{h94Dkmeb$R4dp<12o1s(hWlxoUqKaZ``_C{*N~z|6$9S zU@h3yjkb|rrNtY2LX_Gncw_rrKFhQkIy2)2IGq2y042S24uGO~jwU}CVXc@Lelg8+Z(u1~!ngX9r zm0wPEG_Sk5Ios7!gDzJwODJqBeVeho#h2)86^KnE?<;G?Dw#Kzo~htRF$vX1IeLlA z+1gbRDdWT9aB?+X40A5qu{h-Ebr^O^hV`>8TWNpX^MAEoi-(Z9WY^S(XD55-;H32Q znRTttEm7|FyOfq~N6WFJcvVdKj;|?9FlnXnFD@m>M9?APP~TYln0h;`D)4`KMSqS%AI>bYDBRZrx&N;~4_ zn^hLj;K=O=<;vSykS+^5g^Z^^$=qjx4o1a%0EU5N!{4ZvYt#f~?V#OVkFLvA5>llM z$}|aX0}&D?4SZ%3ku%H`DUVA<2g!zk4rYI2TfQmG*kD2Sc0jmoc51^TO?T+iBj~Am zN;6Pe)UDb`m8-^`41h?clKIMbmAsSmh+|gn?5rD)XJ@Bn+{&GuCXp+5b{fX6+}UXq zy;8tc1Po>%@%cgrLct>K;!##b!<2>!)=C;yMb*^a@99&2$WQr!|Eg&Z6Ck&3#G!u_ z(>W~|2Nq0C z>rYuxK1{FT>Llz|=`$%wDuzG9uF^JpePopfj8C+xn`%3%G`S^4DFU>y4wFf+veP)X zdbEV4M90^tY*jK)-|5Obh9^v|QRsik^zGJS4zTh~h1FQa8Jq>bh&C+yHfhQ*|KZ=w zhHtuO;U%ITm++^BfK6 zl8-|j392<>VR_cD82W2r1bodyZH3#%|3}{X_eS2jk9b+Z(Ly9CEsj=&F4uZ{lJYbN zr@=_PluEtaU=gy0ZVp0YsF#Wp)#%#57^N^NEq1Sr>NgWIP1BVDG7v*q&C4c2lQ0=v zommzzlB#_O{BOg8!AqqzL+O9~ZGytI{e7ZR8*OP*LgKGE1xK}%Y)n%4$SR1jL#d5o z?EKSYgzl?vMoMa9?QBX)jDb<7MC8826*~4s#v$9ttuGsH-pW34fsUrDEz)qs9p4$$ z`(HW{{;D;Uy2mwM6gOmpyUUoaD!M{P9Aas}s}0l#9hCQB{@vnxx+s4LtF2->DYk2^ z6DGplZ`sTEhuml7TimQk#kq2X2}E{BH92yt>j=@|ZON_lBY$NeXgunx*YiH{3#{fX zS)Q8J9U0mL$6N&L>fm42d(ugMuGd%cnx4M>g!0`|$x)X}v3Bo@r4)}{Fm<_n!<4U3 zSjfyf*kL1_fHHaME6IP(ng~+q8YVw$Q#p5Dji2W8L9A9u1GdR2m^$z3T7d89peuHy zapL!cicjy_T3eygd`w({z8ZDM%?8 zsIA(a$Guu!F+Z`RMx;G)`}2^tBDmfQtWJOS*LsBozs^p%j}8I01EJ z=#jHM#g=mo(ScOxh1sxb$sVCXhNj}*W*Q4!pS^!YzL;Fn0#+Al*ziJ++g^B- z`6V^r0YW7wkVnrCn9|@1%;Yimt6zzRhkrGOpRK1s%bbK#n>$$D)+=?CH5~`xl?0Ax zoLZmXiGLHhClZxaIoZSQ8)gmL7gi6H%JFdCPzAqac;YHJo|NSXJi<-DR8SF8TH}~sum@vP&-)V z`mmI_`@$moieU!%*eF%Ke1T3Cll>ztP6TQp?xP5-qmd4Bc?cqrq+vxAmTw=z36o@$ z61{fS>`yoJB-5O*PYDD06i+B~XTF%5$zV4;u~RxxU&gM%-OUMdGwvl&X>X0s^8*jk~8LN!f>`PpUA63EpoKRZp%!P zWfmRwG@+BD0UEM|uiIQr{QR5fA@=v^i~Wf?;_jqG$dl(xOkrQ*pW;fKBAyi2^NfCxA91EeH%fIRu6$l|S#R1K zkE35%kVEh)lihl>`(?x0ad%q}vwH?KmEb}^W5m>-Ux;2bt7P3uDzK|(+2VRqaLljN zmWDV(lqc?A%n)}kSAc!+or?+RTl`C0OY(o9XEkVf#y`-x_*ar|g#vz>P2Ji&64yiZ zCu`kW{nz7wD_gm*UKkHBWMi*KMxyeH&xPolQp0A`A)QtGGg&oINEQR)3Tf=SW|?gP`n@d3SO@l|36Hp5 zkULKj+16v{><#3q)=dkCs&2G%KJN9^(7-{|ByCzq7gL)J(o+H#8?d?+5I|{k5pVoWWgS z{_U_;b*J9NWmAELPC6WThwCF05#yr;H8|3TulbRM084Y_-`-EdT4|JV$%8A3&DS{p>eCbq*R0Jl^P-4VB>%zeQr zyEmA4lR>KAXga`dca{QFt`c_J&SBPtyL|wjl7zfXb(I#_+vQxP9riYHsB}Bp!^xy9 zD53RO;~{KCmKshpL68ZOYUF=p9Qb8-Et?P0>vAe4kR;vof`e}jFi{112jTvm8Wjs- zRYeQD38o_Twv8nPrx`p#rwy#SX1DI3mM#WcZVT?+-MI34j0{yZ8!dYGOcpY;pGGQ6 zY6wigPSJee?KuTA&6Q6?&!@FVgiDKigq7kugrx-i!9V9F%ZOGf-r#==shlC5+4BWU zUf>FrWj&r?gnN$Acuwv40rF@!2%ju3bOPd7=mW$NaseV>O-ebwS7+C0kF#-eMD>VQEdDG%AkTWU#0vQvcFOY5N;0r8&LvD3PRXikz zkWvCKkZ-BD3u;DQ*o77CMO|3JdV?;o1QT=dAn$5z3KYTjbK-wQ@UhW5ybuwzoCFJq z4Dll^#J8al(zDXkYOP9@fs0>FLM;L;xyV`st6xiHB!o}Mcknybl|;?(vmZVo6hCxA zXyLF4p-aRJr>JlViI()s+Lm}4BH?USxMVh4?E!3^Arf$>5}7 zok24AUUwTKv#76pjF4Gpgbe!9-37>?J?}L>CdJVnqho)%N5?dDSY{zZ3H0t^M>8~u zjp66y2$@B0#*1_DFp=LrGA6;BsI(px8uuZlinV=O*mFp3+-a(;_{(<{N(DEezr{tE zS-iv7<_!M?ry$PNIK(>RrO+C87%r9I6pz7Ds|c0~_A22}DI%>SQVNaQJx~g@N{N$7 zaH$qiQfhzKQTdc&+4vYKRI+=BRJ$;#$^xB?^B5zwOpFv(4O1O7PO%)ua*;>X%VV303D9fCu2yE-74=ylj16*@eK~dcetFdFORx)%H==g-hWrF!_OoKCPl9!j$E)3Eq1Xd}uKi>u7r$8D4=VO>25d zbDnivXpXAf7iPX|D~YxfBzi67K}S}!@|1N2R&2bFB!yL^dC5Zws%XF@9OBQGBZ?nN z;o*OBB+Z^!bHb9b6DZS(`|b zrB)?hun7@$HI<2yItP-VfcuCc!E#p;KH`4~3RQM;&`3&sCq#+J*-)&`WAPzEv!BLZ z7#)HPor6O(*p*9@I1ZDL5EarOCuES+P>>XREQ-)cihYa-dDsyl>__pK5MI>XSyTwCHIJ?G%kY9iM zaUmkuiwyBd>xm5E5)!}1!OR?6Ao}?Lb0IAXF`zn0!IzV$RD`*yGAmyo=2eQ1Fc(@l z$UvxJe7SH4yj;?Jbh*%AUZWXhkgd`aA_{~r=h||k3WTF`T!9!Ky{@C_S%tTmY9z1K z2b?16kp?kO(BycuL4!XyOn$^c%qxEsS)vX?zTuLRBM*d|H)^^^A5eB3e_+#4W7)BBB4NOic!IE7WmDM$xqC)b>`&R7Mq>77I?B>L53#6o|nYpgM5 zfh=;DQ45LA@ff+VipYg%KNF5#VB%Wh7s$9vL@oCSu#<3jb#*)6tVrTFm#TR*tKfDN+m<^>3lV(B0# zfy+@wFGzq=TZ9P^|D6O1a7lmga{ARf!k^l9(~0n>m0(A+mQZEVu>)9{^0f~fplr+I zmPyQ}BbPVF=^hk>S#7uSQv#4#_%xK62?A!`G$ivn+a%1>9~sZX7YaX0pxSSj!B zDHTQa^fjKhK&1}lHMeqKuDrGHxHqyoEzthK!r`I$45t&U4EyQ|6n}7Xbf`h` z*Mp((YEb;~-hqFDxeK30y0=5GTl2-?>jN%i0e+o(Vp{>;4!jiN9YA{26ll8T7i_v5 z2b~tp=ya|%qo>Nb>&o{b>Oxy5M%@&V2vRrPxS8ZC=p&Vdwg{ze>LvlAY=k9Zlx@99 z5rS0LrRrS=AqL^eLXLygg+-vrlIR1Ig-CN^%_@VULuh|StUHXktvQ8R7oM)5bt9F% zu(K-|CEm7l7QSw;P^Hwc>v7-E^f-FG!9#>gJBdz@0@%e>bV3lq-smvQ7GUq2-p;aL2o#7%{$5Wbf8=C%R*!t~1j~#2-s`2nyH;r{M86n`cL#ql1*YL&+IgtS=s4&@ zg1&evM_qH(;Fp@%CH&F{z=$ULY*b58W0QZT*}>_3yKK0e3~$DTJvQQX0!;+yY_vKp zqCY;`_U8&8-!fyKnWIu*`3eUy8qO)(Zo7ZXlBS54#lfU>ocHlTc8yGS+F6b+Z^k%l zbJgyH;vxj!l`g{qE3ET&P(PD`vv=Vg9QA+u zaN>2_+y2bao75!coj~R8c$MqdNvAqasqG!Vws)enO(HIe(d!G`9-d5L$$}Hb-slz0 z_lx1ST}DvGG5EPS+?zFbDr-u;IBI@r8WvS5 zrwndp7cc;PGsbt@hXyyDjO}Uxt51Jy>fsWEq+tnFOXFmys_`&$J?`{!@&*RDF_bGm zW6a--2UEi=KV!@%u%lbh+wF}RLguA3XVv)R=t z!E=<+>(?;+mK9H*NIA2e6vHqR5Dd$Y7o%AbW+IYdJDLuzUPt(dW*NU4-$Z}dkRoUi zv|Q6$y#k)bw?d}Iw-P4xRzDTEn;zz4nkekKjp+T=-pLVK4*%ZDLs>Nca~SYoMNJgU zXP&tcY604JT8j{DiEdYZgYAdg9o4&&fR*n&az#4{>?kUQ?JkOl<->{~eFchG`$@r4 zo0&0T8P;G?55dM}Q%8g+Nv?m1)dtn(jFrPa(O43*wJ$5%mm#Z<4&`8!EZ#>7G+Qxx zuSdwA%zewm`sX~pqCpf6;ou~RtslHnx6ow)JYI2@K!7zJH0y2LIAWF7W`gVhe zh9Ic)T@st^vglp-|5k0k)G}=+9Iw)z>uAciBTdmAsW#GGWbrU={w6C7#La|m7gVb79R1EqSla`TM;3m0W40cj^9a zk@Hr2uxL;n4@*)XJyiQ(|IZrB+-Lc##sYrgGtGUbm*lg%_GOTv#$*_nsr$bbMe%BBW7b_xy zWcn>k`ZV0hBi)=#si-B&dJ}-RICV+xe4Hp6#Zc8*i}2o+DSLam!cWX zV!P@_nLBAmIaBnb*?ngPDR(ywDQl97u-xdZAmr_)9%K~dWSO(_&Oz2j!O6wmU$D~! z7?+;ir`pa;5>J!(x1FcbVmBL(rUkcs_VPwvKK+5!-^;~XC^ZFs= zY1a>pUW59W&F_suB{G)WzTY(aFkp>Nt!*=EnVWX7dV{H4Z=T~wW3MVMrJi^x{U9oe zRb5d{v9MNEl``~gMop2XE2=1x)vBJl4Z$P|vaU#NkmM^J-0I%(wz`Gn?5v1Ep`&up zD{42q>eXehT!aOGcZ7v(cJ@F=e=kP3f_pJSen@*U?zTyTDTif?7z~E|u5^ASEZ@kbJiFC$8~84*ZOQ=ua=2%} zNt;xGO)im#HNNf5DFPK>_4l^9cGNZ(zv^OK-2PyEelxZxvY~Y{M!8AQVl&=tLAwhg z-A=4%^xLF@_!R;z;<=~!tVtx!QVmKo?0Z(Y2Al=dSM~}sXz#F+DL^cgL97YeLGP1j zm9(AxlI>)F?=|I}`+4V>cL)FYu>Xk{(rpz}yPh_&qtmzpMGKG70~&$UWM4hT?5-115oZsxFSo8!4JP^gn(P5!OEXJf$)nM^`I!h5$525O)O-@vVrMjFdR&q znCwS?T%&x)qw_a6*KsM= z0;@`9;j*%GI}_m@NZ9h>Ye3$>;s%ojGmKfC!|)9+_NK5OrWhEk91Z56acRymMT3ze zdkAlhX@lys8G|t(K|$0dXZjI-qRdOE5{Mk5EnFzYw58MY>F63)d3{)U<*28;1jXx= zv~n6xU}JE|+o$`dFKATF=@pQTmL|x5b_0!mFl0~&-+&^u$Mn@ILFy8|aPZeT9}Ym9YpfCzFDT-M_|X|LElDvv1uEgkxirJ=`fC zbF1REBC*G;o3Y}>0D_u+n_%tp7f9r)fB^c=lo;G)Ftn|_q7Y2`LwvS+Va5u7SHzRE zmnNSBoreq-r*!raokyNvB)m!4p%mOP=cIrv3n|v3!XK?AX~+C=FJTORv6fh$$mhR= zKl0sL%J8CqHa-^V{>N*H?G)mzg(v*wT4pp~xRuurUjD;1VLBRe=;7t)YE**a%5fnG zYy@545PBTz8G1QkBt=8bzXkh$qYt>jjp9nwxp4BRq&6uH61lKRk}f>mRm+U3?4-Mc z>u;OTo&&iY&q;O{KyhTvB|pw$8y&NDU^+Tb>0@h z-INn$UJ-UH9;C{B#>I3xnd0b6c3=x!-jwj6OY@l_^oeQlnmi)Zm2Ihidr0j6^&#-H zqpJg$Z{x*lME&GI33lwn*DjxjsJ*bIRB@R|>fn-OfoEu`> zz=coGkHo}BT15JN05_?B>0mgTWS5Y;pY0Ruo5E4cvKo6&h~xdwvu{57u%X?DTczJJ zL}RHNe8fum;j6>1pZ&m9@{VbN?>Kb`pU9%@rOB{=ba=S;?4XvZ$bgRkGB9|VdVD9B zlJd%mCk4(2DGy|Ey$P$!m;Vmz#zOFt87V0r2zI0dMY9SbJ-#h}$fhr`!>Yz%D5-G1 z99ueH`NEBsljnAtc64y`S@x{pec-Yvu!9)UB<38au8_fWu_U3oQK6qbHPOv5bio*4 z_m`~iW4v&{j1f2O=>YSs2-{ZZBegiJ;gmqqCGZaCuC&X#hjG?M+=;&F4|kvqrRQJ& zx1FoJI73Lxj5h;+ZfCcm7S7q84)rrCC@D@!_*NGD<6l%W%;f<^1TU*0f&{)vfLgqM zYhvxzH5ZR6LCN%YtWZ^^T<-zf;9M4NykY*HNZF2EUnw{1dz)I*0o?bH9ellakYT-? z?43Sgw=6+ZHSqM4rXAtS7JT;&3?_jq5}X?nw8K7!t&@U(9F{MttW#*WLXlJ^J1O1@ z=8ICf=A-1wcHx3$+UryKzU8>WB0A0@;=>%O2%f-r7fqO>AaW#C$sVV$s45NJN(>WZ1&CtLOyI|+N?f$u?XSkA{ zOy3OXMkyA5Auge_n?&_SVK4C)ZfCVO|GA!9H1<|%XZoGItV&aSK;3kls`iw;Zs}ZG zQ&L3XyjHX3S#A#JPEUGyR~G-)oh{Eum?DAA)Gmabr}ou0%*Ese*6~-9DQJaLA_45Sp*8nzgI@ddr8ybQJ;SC{Xg zC3yOp8jyb)bI?>z$IrJb^Gx~`TYhrsDlcl%F>jw%E;t)sN&s>#BjmV%{qEU(1tLTf zWf^6gTF0~N4c2jEh^C>$_p+T&mefDn?UZYO1tlY2x6=P*?^v4~sbQaw8UDi(xVeOG zm-cvkD3qb}3S=nlOr?dV~zR%<))CMiAOj>lzfNtR_KEMMyeqb+RPkj(1W_2bWt-!koA6QL$7JLMPGINdZ2M zZcj4mE+g=(cGU!>^J#y7|A(i02Rr*GU&Hco6OPbqK7Kp(4NfuRkBngcnU^NwY16bh zzmuAXAJb`0Yqy*v)Wd~s2vKO+2Ub*n>H@uw@K)9L#$YG&tNZDBR1v4&QR-IGy3-Nf z^Vj8Ywzx+f4piki?QY{?@IoN%@^SCj#<Q?%~~`-JWw!c-0!c4yzh}Qd5?6 zP2M)C%er38>lL$7RZ%CcGg_@wNwV<3W>IV1Z-q2WQpqD!P4fHr(ga~KHMEOCHnlHwpu%z^=y z)mrRjX^kZ(ITM7+%&L4V8&PW1 z%b)=g1J1`~%1#vpY#t8YHJQ!biBQh&elXCu(+gC$3Zs} zQznyh*urs7$)@6UZgYBA(j^DR?4;+PiOsbOG83Sm5g0*B5`!yKoBC%2CVPz4v?5|k zQJInVVMe_{<|)R?HO%yXd&wrDE@ULOk}r3T4xm9_N&08WEuP^j@W|N>ULj3!e=vvm z=xFEUsK48PLU);Stlc0n-NA%tTtL{Ly^?+tx(3m*XUKLBKR-HwyDg7S`aAo3PlyTx zzjMWK*iAu<&3lT?i^~q)K-4P_7i-G|m1EsoYl%?=40RP&tw~%Qrh|#h~`kGS0vt2$Ab15*3kJ3T!1Q zzp?v12U^w`?h?&^e1!I5=g+xJao zSC?C_mfo%?ZiB-+nfS@5cuwY@{@K^#4e8Oy>+HGK$LDzKb}!^sG?tR>Xf5Se31*os704!^ZnZg<|Z zKR?S%v~f<;-!4j2r)~vqidtm2s_S?gosQRQSGVV{Byc2zbwnElcSF^JuM<(sFo&f5 zGZAS}T$@OLGA3|{9fODl!}?s%P)MJ^V{0*NIDT)5AgBd@f}aFUai?SU!f{a&uh(cnH!4bR zk=f!F*izH6eOl{J&Zm))s{k1jxe8!Wk*fd~7r6?6_ZYbv*9-16!1YB$>p~H&i*FoD zcd?zNX>I>%Z23_<;=pbYPdPx*Mkgkv4Oc~C;d2Nw)b#uwAq>3T_#MGdQC8hx4Ss|wL15DW=GnYSah-SPX z!tt71)g`%UM6WK(okI?}T^%{uCS4&-<8ECsRpJx?S4`G0YYB@U=s541oE8liby$tq z91VbB-@F4MB=e0!G^xAc5I|SRB!EV517k6Nu0v!rU43-wDr*;xS6x{##C3*o69Vp5&D@GC2hm!Q-Ix;X z=f!H+n)zaF=Xc`h68_ERq8_UIT$&0U1tLGthPcbHZSNXo3@?$(0>vy%@a&YkU+g-6 zvGs)t-JV7IB^!;;3S2kfrPt^YxWr&3%2!h?zIv|dJY}X;p4z|cuu^d8on?1<{*g17 z#4s0O`j@b}z*)@Mj*9wW$R!UmYEshMmp}43??|b}U=W#>dotBJ!~i&2w)Ne(Be{+y zqD3r?#<0a*X?HC=SVncQ}W~_q+EMfz+okJ=sFmy;}aZ4xIi<&B=uxeYyT*+^RV-r_o zuDC4q=_{^7*i2A*S!cmSMSz8Z*QdYo=+o zHD}cnc9%{*uslaOTR7p}b8J%`WYN*UNo)~OV4lWF)}d{>@Si!a(d(qXgQc^$#ukg# zGKb9k1`bqb(KZ*pEhVD?afP;13Wv(kgW`lDu&R0gpIy`0noO-S+tJD zs}ogWdV*hLPJX+XoGxfyx%g5^#(^NdcM~o8NJ}Wyt1;%+Hw(LZC6-io=>hs~jL;8J zO&<=q8DM~U7lxJ|JyC=ng%{qa|CcxFyYZd+qmsLFNAWn>#sBeer(IIu_W74MrDnOMj&nG1J}gg) zUFc*#bxZTz6Zg{CB!M_=t~tFTIbxZ4JmiNhFpBD3PBICdjg2k(w?pYNjE+Bn`&UY5 z($aaj@i;pJA;ZUiMRs;s6qBwk^^G^*+1TjyOabH1M&p+F?`%LDb-Co%-vLsV7DBY6 z1%wP8WD35R9iplwz+hR{+3I8&LfPL`sPEAAA^6VZX(Ia+Uoxc^!BFa))AIQ-^N0|T zYxQ&(GGnf-40BR{$xJ;Umh9(K$WiZ|37uzfZNiw|;Atv<^CB;gH4(Oubqry2dy3mF z1X$#xPMtgHrb}F&m3$XXL4OscbPLQDEcdRuTHbaIP>+FU!_fq?p_uH~$!MCxXSave z?Avemi}Uik@9_#WhaL~l_*YS8Lzr6P%=7E@hgWFO9)7a^@U!)Y#~=s-%udT+z@#eP zfC#=Tn(|kFK0zKvMOJ{6y2KOMpI_I2f<7dqkX4Q4p|w5ydkdf0LIk8J8ZjC(*SfkY zuG7!x7D0C*)Y!iA)=4`@H{+8L{o=oj9++Gnm2R&k!#aaeF;t?RoU23!)zI|>uS%*W zro&eyL5LyarDYZdR`Uj!5`n2^vTYk1EY~f!^$%5lTle%uhx+9^HW73c$zU{wpSqvA zZ{lU#@;a`zb}()a$esWR-wUKn^I}kf!XU+bY-ii_`XWB!gzcZ!x)eVLT0%a+(-W{+ z#w;)c`XRBvyYgMKrd! z)pL}8VdNb~IkClX%X#6o4im}^e8kp|(Ury%jZ^!jX%OuoA>HGcj`?U$MhQI@T{@w+ zp{JA`gC3B^0)%|hXir8-!-wAf`NHNUG@|QiO@-6CMy3sQOMUv2dUV02-O;&$^>rFU zk`iCAFQ=nZ7>#Hq$R`*JvRg7swzac|eVP-0YdSbG$)FenGJ}}!UbgxTJsopHk6g^A zWkm*2C*cb1(Ie+FZvirUEy&4-w{*O}LBW>RD9?8y*=-aBg+g>efC2xuse7%#_f6kP z-2Q9e!h`SCv>{ZL;4xK(h}};1T>cPQKB{1-XuW0Zxu`)(a0d8hGozlUEG1pZ4pv=% z@-=^wrKbZy9_DfoEQbO+xt!t6VY71(C*IB$A`)8<)AF{lBa6CFyb5plYbb+zLY$eptS(X3EhfQ zCPR7=epr7(+4@-bhNEf0m(S2m%#>OFgj+!Qv_gdCTZgH45`Z?#V0PT#921IvI+em_ zm3KHf1@P&F=UE?3puK;Edy?X2G4Sr;{^1eAJ|NVOkM{NsbP-4Wk3Zf! zvT!h?KR<_AC6%~aTo#k;;|Z*wr3`q+9uq2V;JxP>FEIp<@?o9aBp+79zJ#;CwW_@t zL+;B9=sIPQYJKCkksSOcJvAQne6$JBBEKyo0Uydv-Hy?$Jp!vv*P5ft}L>-NXBb+GH8~=P&ttsew zbovw62%&$4-I$AbIw^jC84b}Ua8bN69-u)vg^J4^w&oIU>(-kVl&ZR;1x0^uf|n;1 zrXJXw*UW!{Ygx$4C-wmx+jn`%huU;{fq4TqZNdoomG_~B`~W_iml9G>FHm@6AEzQm zRg5jWa{&n*UOAg)At`JT8vXBe`-nVCS_E}nl%r|&CeOfFN8hcN}*F){*FvZ1E@ebwe=b1_~iQJR@W(b zRQTvjam7m!NEfaoYg>Z?6lgS2QJ1UxN_yaWb^XnAd_DMob=<8>(Pc!OD!xn`(|$OH z81@p$;oG`}bSrC*>1#qJ0aDnhiaI_JQ)N-mu32tr;`zWSn;56UDgOcMkj=JNUHXu= zKF&EC@5Aelhxu>a9?`%;Gyzh0owU_2chF39d$q#tsvX8VUx7zCi#gd$Oi5<7Uqh_o z7BPf<1mn+t?|Gug*a@_+2#SPwy7T1$b`pORZtah*utRO8mWxPU>wD`h6bpoG=ZTJb zu|i3kdOHOEheKL|Ik@XVJ07eyX;M~!h098HUf!7%S7fN4vTCvTOj|h>A_xSK*n^pWP07b$hzdGsY0&GM6_PQs> z<_2bYvK2M8!F;V7Ruu$Hseq!PUm=u4?b_3*Sdu=cA$k3hxQFz!fssGX<|q+EkU3Xk zqj*6@@lXIOnvsbRwznyQr%Dlp7I07&Y}K3cpcvOQ2LEVo@k^anTc=&#dZAF|V4hs| z)U9QIeM#dPrT=u^>&O8~Vn9SPo!qcSvcj0ZwT2n@nn99^G=zRo7*X#0G8kRr@uRF$ zQNkarOj`z}Td#NuxA~_Y1t7k+%vr5!($m2wP)QTT2@uk2rrDjTwwL+PYKO8}oLg^S z_;-#)Ly(p>jZk9ykpcI2CeD*_=8>r%N)F+F9+A)*g?*93BH=QBT9m50VZl%F?S(J$ z(>J>YuZfY-_Jy0chVv*!afO-T8gaYUNE!PTGIS_py(_< zi{e$LT8H)wHEDL+12BW_b6bAVp)sFdBK8qX^B3TnBb}M9Ut!(u`#^>prC&IOtXkE7 zsF-f)#GMuQaOwv@p5@varCq{Uc|ow)@(E4zN+=aWF;=AlUJcOonI}k;VyO97)A}=; zz9qZT?7>zSTkRR~EfS>89QnxwbTfP|py=f$APX5>6${-F&NA4aqu z#oSha0Mm8?3tp}JuR40;c=6?{Ii^Q{RK5M=9Xy%$UUl%l-b2mFL3;n~PR`x?XnAsq z-+T4Roqxx*pJDOPBCoFgI1aR|KU%!|XnpAS_g?q=>G!1f_g?pZLhpUG=lzy@uRiY; z-EsYc?kZZewf0$wA2M0m3ANc<#@)n4w{kkEvM?Qs(kY&j{Enr-tTW!t1gt54SGHc5 z3n7o!yP`|v8hhL1fuM{IZB(D^oP2(4H>VGHFMK1#kNv})CwsJiOrM`0R0)r(dW2=60?uM$+qOq(8v-tj_Nx%nRUf9wj0NJKD43Q6WYqhaDn6*UYt-C{6sJO zTTXH7>IO7sf`R8HEK_(nk@Sgw1X8#fzz*7=9{2!-HpO1sQK6_%{#n~PVNX%a1`VbW zxyFu61a-45W3cL;G(lFG+@wOT9t$FL5kkIX*QDlni{2_RyCjKe=UI9gTu?zjI>-kT z@tf`sXnPV=IOsV=1aZVkL70vST#~n}{bGRBD|f9fK@6F7MOp;u=1y;aV^To}@;q+x zVSn6)nS6K`ynH@J+R_RfE+xBXiZiVKC3+UhZKUV3S}-=zR*zeO5E>i9 zGH>(lXY0kVT?o^E-%c2VNJ6cE8>?Sl!H&v3yv?h=9#!1Y$g8)hb4Zyx-xY?fmVbRivz;YhJw$_D^=!yMpQl~dw_p*T`=SmbnnG@4hzypA4K(NsgE!U1X+ z_RCEuoO8ZT_{$FXw#vG~rm?(@55P_Vp$Rz_90k~_N$n5MvR9g1!0-|X&@96T-#|Nt zrW%cFG9*6)9%gtpIQ@x_HxOME_5laq`U;%i8)Zln?Fv<`zUTuw0>lboT2`A=kAF`@ z$Y7+C$Xzr!iJu0DEQ68jr83CgHp|8pBpV3P|9t4+g z$mnn&mt|JO_9Gx=sbLTjAhszlvwrz>Fqs~n5lDZ3d;}xXjha@ZH8b?ogkW%Z4g^rW zy^+-PUAvXUS=-9T#6q0u;z$#ddpsJp^LH%Z(*RCI+LKW}0U=aq93#k~EC}s_epdXF zw*WU43t%ui%QU{mHX;x(D9XC=H6*ZR0lh3qasBbmXrf?8n8JY4C7TEw3SPx~Ulrz< z+c~m-W&PZzEGG{7mXj1C8lA1h8UQszs+*r@`m9cYLFC2gG8yJT>hz}+O9HhLYUWr+ z9f;3#3@6343s&ZXUM2^EoqAD^O-T6=%E**tS5^;ZQtDun5>58D6jbw#E=K9-L`R}!VO;{y}A;E?k53^@Cqs!r!PrDUoDXj6J z&rF77+j1e^mS*?(BZL zjPwydBz!amPSOnB7X+R9pVj@3jt&o&(tRS(O8jdJi2uK;`#54OBmG?0t`8|7!2=DCHTkLzf6+Ib;=TZnY8G$QeJLqKVuGx#84U|0(qCP+W*4}67a`Jg7{bz_g<_=L6gCYow`=w$u;V>Ck1(Vd#bza_K*s{>w^*b55D zZ{~gwi$Ze=gA6&|Rmd6)Hm4AOu?86hDAW1H=iJbM`fTiG$bZ+xg+qMcJHvMSzE@jzboYP%&{Z8CUW%QSv6PICs!<0cgOJzpq zKwa-M4pVmaF}K51ZrNFLlg+zuN}Gmw;g*iYzyfyQWyxqyHtbo&TX2m>$~PAc3%7F{ zhXk=#I$`aA!#Ul6KU}cMEvYKV7~0!Q)n0+8_fGu0z*_5dsO#gUny<#c3k=Ql?M8cc zs}A4Vrwcf(*7cP?H_n}Z$R4dW&cyXZ5L8bS43*4*Xz*9EblGE&eZWaf#`Fs#;I&TX-%NjNe31 z$f=#H7+X7~#xY~_@Wf$+OS#vAM(CS+)zN-jOy5zMM0O`<@qd6E^nCuMzTq1Yq z*6RWSgW!MF^{B~lK^Lu_+xL;^mR`=p%X4*vP(DWAp~NhP&*})By&UCG7sU$LE?#Yqk7Z-ko|D5UG29v#ebj}r zqz{}(!E;W;JdFV=z*sK$%4Q#0k$6L45Kr2xRKDDjne)7V`26a_jW>rKt8XHi23gsZ zpl6;~6mZ?R-kvBXll*jgd5Zz;!n+pUc0-y=9lZ(bX!Ide8e8HB+7qc!=UKy)+V2H% z*O+-3vQ`rZ?`cta-OMLWtSBqH#(^FuRQ#Ce1jJTcbvbWBLu2wr@)$1sUf)ce)LxC^ zt)}?<;uPI~Q=R)z6%r=<#|TTDgQ-rut`pjN;$oP7e8Q->}K|M_81kl)>ESH zgJpZnvynQk9qwysvQ5w99`W=2_wd&OZ_PU{a=fsef>ikS ze|r?@CZ}$Hb6zS@Vj-?gYNUW>Yy#k2nW?&e+8zdfG$SAU`L=UvpSeU6!wS|(ZDx5f zxXynV19{FKJX?Rf`S^!Z4TZPd*U&d5=Qm6i{jAb&Rr+m}eg#7@W;yq3R1g&}UQI}) zR%6OSP_#vobCJ{TC1q@I>Yvs0u6p|~8w`ha73?M+`<-g3@-z`IV`;aYR~f^VZ0ObY zuHuS+?2l{3ELS!s*V-idQt5yZsjiew-1Q1W@ByK++rZKlSa9cWzVz;7Al@VNe3FFy)OXMbsJLJEdh@ahW~ z15KX14=h3;A}_t#M{ew+J#vIdKLvZmbn2qcK-fma>Y6R{;7&+}A&LO7+ziugr; z7q>MtSV8`o!C~5IP7jI687j+5K^-0HWGSW4Z*2uIxx~r&Ev<1-#|lgsS^yB}ZE;i0 zp>E0?i6fNld8HD<<6d%HM<=!|FM!rg8Z*RFvU6z*ayU0hUbos6l9fG?|7Ru`qK084 z3nO@-u=eHG8HfN>p{Qr%3@E1!ZZHCWF8SyZr%Ah@lam6kq~adm?A(lk^EI2!DYi4) zt_;bTABdJTSuh2K9K%fQP0fu|lKW3g0@w!s`&nAiL>FnSD4UANtv4=6LFiK&ic`1+k}0dSWk;+LQJm!Eb&l^=;m_02HEEE4dL=3F zB$K6d0F$)GP|LuALkk@I#`YSQVMFX+AL-*jsVv%m-vNh{v3N z4j}8AJ90{+%Hy}ySOR$5^G0VQ^BN;PW!Y(#0r$}Q%V0HwY+DX_ys0p7tIsQJ4^oRW z`-WpDWorYyvh(F=>@dL{Vl!CTgaO*sRLbOpdo8urqTAdbY&>`81d0-Wv%HnyW$1JV z$gjot72bN_765^A=C3$`g1AC*@szJXnZRD^2pwmOs-fMYrIBs%XuHs&$+fg@_kpk-Udoo#9H0x$GZ5qb3X|dv*>!IsKTbA`_ z?fCkaIIkKP4$P>u&$0ZP%|VAA;H3S9&ki-8t#w9e z2aVsi>BtG2ATH9cpO+CJkp=)YQZ%4>k-vG~O98QfzqtYrQfU8z!8I1tY%7@eXpy zk?>=OU(SjiEwS>1_gLoTYFPn!FkQl>gqfe4QAfF`e@!o*}F`dTgDSH_y88;M{AS zwA1M|J~__(4LRrR3}aBJ^Ntd@ERpm_#e^dkbPduK@s|338Iql|cEc5#Pkdu2ku8qk zppvv283uM#h#VAf>a4gB^~9{uBV~-_4NpSr}Aa%-+@_1UQHZCJGHWzcSw88kwR)!8K z04E$Y8=iAI?9U))FdLtf+MZ2+g0jF3x?fl6%`P&3_ny&eXZ#+q;4--0pFytR)1)6B z+p0R6MTC`gj(8*KWYT-@p9&l6-#t}h9eaDNU|U(V=yq{9WKbk7`T+c=a!+Sj2-EgmyB+^*u>QJ#%Iv6rk-H3*TIAk0IH zF1zXIQ(ZS9$ZV3mJgZ6FB^izCggC9h(t$MN_&y-AtLhuX{OZNaT&y6P`IK96h12H@nBz9h8g9)vQCHt|8qQubQ~W7#fd`O?$2B0%SMbD<4nOhzC;qQs;hk=tu;%2 zG;Mr-kzHiI@36QRE3Z_e3SvQimoR0R8rn`^nC;ROo{v9NvQm-%!!=x$5Nb-~pBEg8lBZ{oNCP_`UU_se}Jv zdkmK5fLo-W=5giCO-lNzKPJ*eSlr+YuB2wu!KF>Hgk0X>brYT4;)}1k8OP)^%9~-G zYW;iM^bcT&9@z}VD?SByREvF2+K&a{UeQ?wr3BfY$ZD1|Q#T24B z`h-3kO564_tV~5nJpa;n!LK<9U>%#CZOYquEdivJ zj6_d`O^$dWYSxmlE`b4P!X$bGnlqQNJ<6-)8c);*!d-&JUvfO6uRe3WU52yWSZ0V! zbz~qLn!U>9@aO0xxGqsnXkCJ~XLHTxc72g-SzYK`*jy#oGC3h}Crlo|V@V#k9;O

C;UQmr@50yE;#l@@2RKiy9?9EBk-oV*GqXUIk6y@&K ziX7a<4I1JHBo)1(y|j+4J7RV zJcxXM;}E-XAJiOVm_~y18e}mC(hMDuajX$am@owqL6t1ijNYL*FLoER833))@=i5M zEJjBnST`nS@$jWgNm8qXGYlhiP+9lBKQqnqwA)_&U=9_wp56D2-5Z&ply( zcC!!r#JCNmAeWIRnPjh^L0pNMNN30^GrCb`167#gZO_0U_d7MGDYsEz1&Ov!HAIQ;5M^uds4t*TR6U93>d^C$hdaQu^I! zq4!EdACDSn=QM&_TY8@|tSr5MjvZ|gNFLb7`u_U*ekoz%b12Ql3b5}OgRJeCK+@Sh z9KUz$WoWbDh1)Z5a;Ey9f(R_co~pMoTY4X}r8YA1zNDf4FEjWAhcA4pq>;tNR%mx( zpwP!J1Resk|L{`sd@$=Wp7jT2b&?;@+s*F)TYws4UwxYsC-y^LBX@{@Ia4Ua381gy z>x`-$?nXDc45j};mM0u%g`fqmD{!Z`90aIuGL3&mmf~(*FUR=2eY=CmAiT($F3x*R z;UPJD8)izd4fL?&Nmk4~#Sja*=dD7I(%s73clG#nossH>8O|^dmoWzs3wvK}lAK1< z?N>2Rw+=Z?+FWgjh|jryRMqy-!17QotoxC}YRQk;9BK>>*^n!e)Y%;l8yFn+@57Nd zA+qFY_mfZ5D#1`Bt^jT<)c-cFOa0rpLG3SWOxU!>1d@^x$j!4SBvxCWiMHPU;Kl6@ zD(jn`;!T!%Dld7m-Lt+ifRq1EObNxp>bZI$Tv?N)p>iQ^u+G|lG62jk&^3E{ys5h_ zPu6RNI6|h&It!E!_Fs?c8`j*6&g&9yxmg#*7LY)X@3VZCg^cmt1cvyuKlp_r2_rA_ z0SL!0o#9~f){JSTNMWOTt?JNAS{-`Hm95vO3MI+y>q2aqz7B0DN$#OKlq9#W55<>h zR%NhI(*~JsLR|BI8~h=junYqx!8CbT<&#gW`7Na4D}`Z8YgI{dvuf2kqeyHV)V|)? zNnQ%5Uhk}^dbN5e{DwVI62#`EHOr-g&z_QAvrw>!oY zd594}WCK{V=^aSKgM?vPtB$yjiO7;xE^}4wQQRoKcS5v(&MNLNTG9OCAnFw<`9VeV zizyguqpGG9@N`NBduMKx6tdr*S7iykHG*aUKOHZ zVTx&VIm)GfnQZ!NI-ZVl7`QN)jx%cBD?s7Aj%(7<&kSLX$Ul`Q#Tkt$NYJl+9!apnI)*V(=3t9Imi{UK0G4Sl?0>R#r>9F z%WZ%n#3)cYo6IMyt=!%=$(1)tO#cVFy-)V{xLPfLQ#arBFC)NPw75cDUiXaKZd=W6>%F?2`58CWAbT1x3AJYxQ5&H#X9ly zzoDN=vUEpXL65u~w4e%guVTi1Or_0cZ!Ic?%Kr;0g?=`m(h#N9t%pP>H$_XEG{$y- zWqdb(mmJ^C?!v+HMAzz6af=ws>>AVX5^Rr!tnOkBrVsP}1fZTzGK$3Fl}WL{m)Y#J zTk*l@;*OLy&KbTY?)q{R6c&|Ck3T`}WWeyVq1oPBdQTUUW_YW+c%vKJ=6M+Xa_9InEwZ-85o88zg^~k*gg@?-~W35!51gspCd;p?8U+cd*Qn> z_7wV+W-~0Log}@7fx{L&ldRqeUUJt|;%xSK>r|f(>v^K_X4$--Zf+}BGv6%h4=*`d zj*0ctrT-^m3=pZF4N4J4oM~!V<~kS#M|7FBH^M3~sA93G7Z>6b6|xv~l(S-$;<7q_ znoFD)SctZ%VVR^{&w`v4My?%iFdTWo*Hk~p{!_p<<{8wuc-iK8PqCiw6MjmO!Y6Q3L?9#x?WI39)rZexN2m2o-e{p@F6*CZ-Gb`cwK8P2X0)F{>G|7Hbtb0Bl z{IYd%POOV>^-nSj0f0H29C52kl7N@7b~Bc<B=HVfN$R8XdQC8ai62dRClXX#~Q&J#|aIWcW+!D=J_!BC_hb;g(J)( zt4;K4Y-YnNGUZ;sp}jg6m33a0d9&ZYj=5;Ic`F~qNTilVf3A;6!ldF8i%^Td!E*Ol%_3{i&I^yFVy7{j8#;{v z8I{FPV>sJCjbVT{6-aBh*X$$)P*^e~RUA;WI6E#RmXA0 zXP2T<#HWV~_!A^xZ)%Fnfmx$?W`tyaqTHzj!#jv&M(r+1ISpf&1kS1he?d$(<8}Juu^Djmt`iBbTQO`75w|_yg)UzXXuD<*4LsPZ!zGjCVE!0!|{g@ z0PM5lJqRd#bofp5=AmDZ<-i{3=d=8hdUHJf14=`?%fv#|g2V;4K%7v1VG3vdF}#oO zja_4muK`D`B{<`#g$hnM7;vlog;kYOaz{e1;(7BE>IAHjj*hr zHAOGl5>ql&R}FbKG z2ND+rKSgVvgrUX?77nBhpOw!|@{3DFsWhinbZu2pPbvO+IEx}0hO_X7rk5lB1F>qT zcSYLT|Mc)ndjIBoe~6Az$tA&t^*%iOgv1;EpXDZ@@4O#C#Rzdsq#q_x!qBx;z&XBb zYLl%z=5Cns{2?{i4XPy$Pvsq;mV4U=dy8rCe~ZKcY-unF|8J#j@L*Q=nPj)>?`zw- ztFNj~QhD9Gm$!AlBnc7bFX@VWBl7g6I;eh;gU4@z+wGJQS+L0o|NV7H?pbAZB`B;S#Px&y4x1r(;2C@2OXoDKK^ zBS}tHV;h!Ne?3A)<+Q}p9j!bx#fkh0@2t_|-0$~`>}k*jfR`~7N7lIh#DpZ-4-*8( zqm%Sms6(aW-ou04PZ$Q684f==Ji-s&^gk9_=1HbfCSu5ZWQ|$4@Reu()6n0wj2h;>kCk5lCv` z_|wCWod#Z%+6Y*>^}#2*M^3qyq}*uIpJ6#HhJUDn(w&i-TA0cTgL&HvonQ}to5C_~ z7gS>xe_UFj@$u#?on3ni7O~7aAVlsqO zxa(`*t4kAlRBhBBWGsGC_4*Um7UhmU?Uo=(e`@yx@-$j-O9<`s3zP^neJD@+u98LXHEe{G5Sgp!smydg_am=*YPYZZThfq9=9Fiuxq zYCHTP08Cg~@@EwDz5Nw>=T`)&@o#iN8q#7s^l5>GnRJ*_xB_to|N0wIaYFl9fSYaH zjdCIKONVQkLYk@|?3+59PJBGKoANtN1sR0*CT({W;$*jI+fwFjfS;(H3NkQLe}46o zeBPggtIKthwpZ=5Y&OWIL{GZzvz@n+>azq+-^zij_PIqP(()fqk=p9YFM8;PX;3W5 z)(Bmy8PFuXqfAQ<04F2PU^YIrcjHY#1%(aO#^AJ34}%M)ReDE+6~R}nCCRODfZV9LrkXsEGlyXffm z4ltKMsZ`MnNOD*!$+UlF9RVoM{zf46Q%LO#Of`{zN;<2V>~AZnvLJDSRXgps(%RlU zL6CZYzO^O4mlk3rP&7s}f75bJPTmo1Up>z58S6**U>u^5C-zI0+bMaI~n# z8})E^qNeXGq@uif2gZaKGD7)a@0dj zVfiRbWa0$I6O-%7yuaijI`VA@7b7z~QC5)x4P;0Cfu6_*fA$7^s6M$|Z3c~a5E>f0 zt#Gb17Hi@@5k-x~?AYCiNxvgPyGDUH&#;5qx!B-wod_?41+N6*e8G`nSU%8eTDX6IkE&-qs68}%P7#+qMsn}hjKnTrKVBcvRK z$km1VHskb?f4$QLumN*spK0P+(6+bN@o!Bin&)nGb=z9?s4q`5*F+F4-td0=^y2*I zU&NiW&8~&Fv}V#+DG^b|(YP1U;&1)(#N~cjOd@A`75b??8;Eb1n-GLLjNns{QY`oO zn9THJ;ESh|<+KIJ|F`l_f(ASf|M3i~!>BiZDlSgjf0+GDs|(0*Lm#5K#(+b#-9qHst)r(j;hvQ5BELltYixQ>{7Srm-( zKK)ZY=Z`tW%k2z-M=P`S?;nqv07JvMfbvj_!+M8Ty*Lhj>(zvVU+ewE`f9V{er5#AzJ08_qJ5@MVk!V=^PY;hPQ9L5`%{>PB2o{ym!?N;a z3kRNe;qlR9{Wo29jt__`yrb$i7>csqb|T$Qe=H)tx0M{z`guEkdATp)jsV^ER9SW) zC8u0vMs$t+H*7aUUp0j4-v#xQMeQS_8OW|}d~#13(mA*afG!jQ-UU8F|5J8+)M%Yv zq7Ip#^Qv7XCACTuVgJP|q(^fH&QeY80~9-r8l#pdgL&Mn+<^3Xxe$y2LhqBVQ%d70 zfA4AxXbgk*X?;af6XGu1iJM;xGeV83b9Pd&W1(#B79i;S|Clzefj01B#9a~xe@^6eQ^z!+>l}~i;~MCLuDaYMfzVW5H-(U5 ziZ^W@Q^%^*0WP1j+fht$o^Dq$eM}i^Q^qYRrZ`h~q?kS?lC_ECb`(>bs9RP{AJfL# zv~f#{DbCdGE2fX>V{Q7lEyWb4YI((!j>?mVhaVn(x{p=e*aUpa2tR+#CianFe@c3k zpJk9xWL-XP<}>KxJR6Kh;{lBn3h65ss72N+J))7vSh37c%MKiBwCxAKr$c17BCd(lky>qO}pq|WCl70n^(_J zrG23oN#y(2y3uC0vE}l%zJ;t|e_aVQeVSvArfizT?6M(=@59; zgwtu`@f^#E32_8)>4c7thZ#nKz$u&#O)b23Kgg0cn8iFlN zMk&aF7QB?upK+Xw$)r!5jvgAvkH+WpmBH=4U;V7)d= zjx5j~sdlTB(hW{pH!!e`;xC3*cjG;!R#el#rcGB|FNr>GkRM78RWS|{)g&n@Lt#ql z6kaX;p|DDV0;7bGmnKiI#dQZ;i@gzoF&)#^n#-pbSu?(Bf5sQh1+Ii2f~cA>{T~0g z|0V3>e%#yN-6M}6W`SRgq83^>nNQf?kVSx9W?`I`6V?=h@oB&N&5~~ZXJ$I zKsfd%MtY9TMpa_8Velv-1m3y*WTY>@FiTFTGxnx_$|Bl>`v8|EnsewVphzHWwO{!b zLVwQSJWvUgEpphlKcd%o4h$&#`~{z9xB!TA=-26Zf6lMnrfDieOPZdRV(k1G5Lf65 z>ZdBF(1`T&pTP4=iBmi;%qd8jVcVPg5DLKHUD{`fPpdSgBtD!}U~(rFg|5S;y@8X!cXraz)z2r|HjJymQntFA``aNe|al!0AM25(EhJu3lhh`Gd_D;3dOAD z&cfs8n1&4%DAG17jlJW~c26FBxPJt%8nX^a&`O;!>GDu?B6S|j`o*J2r5YugMJ`{K zu|juQd1AG>r|GX&5!YUDj28Md{!!w8rKLxIZ zf5nD;=|>vlk@Xh0pplh)WN0#{EeIB_~(M$@luxjY8c@+R?n{Vx#v0UDECF zC{_`7!@!J33b=FS!yoducWwsBQhBc6fA^yQPPbpeziFz?p}g(1 zCo?iUjvd2e*tSfDU=}O^^-D^GR4>V{RlTHCT=gPbY0-*mUJ6wGdD#kj3(LbPmW4uc zb(Kex4EJhnS0c^FPXv<6lSSJ{ajE6Essd~VCVjJOlHr%%oVV5nR$7@GTxnNZe>c}z z0?n@J+P6|9=x<;@MRR^Zv@?B2GIp@^f zV-a*U&~f4TWITcu110W@={D6teVw}xFYILKzm;Bq9Q zq+s~8Ov}M=nTR-)QneCM3fkE7e*u|TzYkSl6oE&#nM>_67oTH&Fv+qx{&>HS8IW9i zkQLjjF0)xRND=K29)&$mo7*$2foc1`tPzVkUu@L2iZmvT+JPw+>}=KA6rpnwT{`=^ zww0#LlFQoqyUL{Ea*>IdIs%6N%Vv`7MQ@dAGOZul!;${)AfAVJlt5QD3 zR&Ns2Sa_wq^5Z36gN*adov!+L0AYy&j~(pq$YF!c=7WZ23pi1I% z{SSS=LyqAww)Rj)P_;m#{v*BhBX2j;A70`(68K=P`jANRfs2TM$6j3fdCcT#ZM5j;6p zFSNQ7+%Z+AtRy6Ze?a9+!1juN*gMwdHj?7!P{n`PQ=lS)vgE;0;KCG&?OY6row95K z1S++WR`wEEYqU~w;>!P>eoSvqYi6aDogB}=C98S#^z`)f^z`)fxOsTWy^;Y#){u_! zMra7ta8BZ(2J<*Zeb=KBqCAL4jK<`FA4~u^JW8d(LICoSe;cmK0(4Uy#V6LH$I z8@mj#m(&5kPC?OHRKckp>#SV-=)l!eZIyqEdTP8rI7=N;TwU&^O<;*D2@rRaA4EB( zmqb=mUy_m%O-GIoGtQ?{MLbXNKNOUn21CzLOy#AKe_oQI+QM#BKsa}CDP;{jiY5x@ zZUaiZXff%5SEQ8WpOu^i<^i9TqL0oW9U!xD5jTZ#6Yv%SNviI!f`XO@V!2P^N#FL`AE6$r zxVi_t+O?4EctmYEc#bZv_tn;88Pw;YRV=m!@iw`?Re9WiCV!0&s{8f^wdI(u2rQ;~ zH=z0(x*bQkA1;!ePH!8UVJ0@HJfvYA1<-eie+j+locNra;}rg;6+$^GWGJQBgOGK& zgS*tdTXsF!X|e*WU8GL)tMX$Wu2X@&MT-#@fwhSKweOc1HdmtwR>E#`J^Bo*N|G{` z1#)kdvu1?!(LBGZIV)-8DckCfIcw=q_g4of5n}okX;3oFlN;<8Ba- zf7P}faDQ)9GH|;wppp1bQ89|~opphF5V?qt@G1dyb~Vkg7n!_PMs2et*iJ7sT%t&+ zEBFx{IYqTkQ_$g{*YsY$Jo!`HtT)Q9C*>03ORHs%U4`0N_Y^kuSlcAHh?N@hOkw_R zwCQnn%%;bX(Tc~o=Og@HOq*?b2X!CWf2=`P({~MS=WC3%wuX2jS*k}S{hWK|ff$8-69?W3>)<&cA5Aj-o^ear82m#V8UQYh4+%_Os%jhSt~4H)wr&~Hf?Z%%p@TAD6Kr4$4r>vQ zYO#Xm-U{SsR0M)VX-(qj?#91*f1x$of@H6G!(hE+ZMB^?dj97(CYo)k)6E<8^L*5( zo^$rm)M)33WE=B}Z%=7s3sL)t8s=Kt#aP9`%+~F>I$N8?%m||q<2HscAj~?Wg`yTQ zg6$Y0wHplAS=rxjJ2pXe7^>T2ftdyaOM+UFTYxymLgIw!=KQwUZnmm%fBD;6)dH5d zyB)0+#%e~3Sc_$^Im+Y9r!B)@|p&No+CPFs1=Vq2S? z0`uG3$^hoN7aHnf)-G*N4PH@GowbI>X>ePUonRb;hZr>@Zm zj22f{_`c%2_*l%BDKPT0f5lu>M%3p%C7HZupU6HtO|40X0jh5nro{cSAic?c!&%J^ z*$$?sM{){V8txJ@ZLLPxDyZ3UNs$gV$24;f0C6-i$1Qh`MAACiNUIQCxL;o%8E{_S zCiox2wS1z9A*)bUBezg){JPU=2^4PTBW|?IK z+({0If=zD*zLy&1xDM!I?0ecPogbPO#u)4wL_TN4K?|An_FHb(zDxu{;*aF4q(OYZ z`}^QYq$c}f@D|d)$V|w*=IqW8=q~Lz%R)QXKsS5y5l!E2weznscgFiM9sO^HSG=|8 z7UBKsXfQZBIhF?_f3NUrR{3el!EkjUSILgQSZH$)r+e%UECt6HeD@Q)PiGf{-+srD zg>R~!i?6_6)Tf&&$>&3sPJJzELPyN<3t)(RW|j;n>+rvUpCAn`nBzpAK|W~mtUukP z0GpfsY>;t=+?Yj6=-@9|4$$g?CFz_3B0Qf0PS3I`zmKAnf0JRxfqCq{E1Ggws^p#f zFok%%5Da7{|L_N{GOvpF%%bSBX!9j$^uqyRYY926ACd{4GF|Ju9i{{%g!i*gGt(yG zg8ST2k2OxO9loG(HY+aR#yrKI)I7PeVRLQG0jQngF%@J!haO)>a?gsZ{0Q%)!99`{ zsQZ9yL6{0be+K9K`-g)8-hsrQ&-+I&4{=BJ1b^{6l4NwJk0>tVVicIQ540CocpJdB?Ry82P{8^Mh@+EJNI8TlcMH}l}yFwj@rc{=T zlK|u@o6(W;ARm^~5&l5pb)LiCcdqH3G&v%TaXiZ@O50V&*LwJ-m4e146@#AVGfW>| zmSvSAe^Dfk&J^eX0;>YTTmrTn@s=b>V_#LMtm&%~(3NE|OFP3UKjN4A|3PRVs`52X;24xr3Yci}U3>YyT*Ps-^9E&)yS9A;Pw30LJ)%AG8QDXvy1oF=fJ zbMcOpj`E%|_a6ptyr|qFW0A$YVSYWYdE+pJe|=wuA&Dxx4DV|d2`=9`?w_5|9pC-^ z*Z41pv>C*spSi%Xvl%d6h0$YEqyO9GXHj7U4f=-vAJ9b4q2Y1HQa?ZyE&#I$ zsI??nX0-HF%o9%&SB;Pyf%utL7#4hvkD2C`9|;~*lWdlpE{dw?CBOfe%`RcQi6Os% zaWv@P693@`9O{F70!uU?9}dD1&K_VOf5*55aQ|X5kr8k-M^Z1S68Ny>q)?&Ok99^2 z8n_1=NQx_@L&u70h=@H83~e+P(@{Rphd>9Tbs>v8vauV6w1K${NuZ;Q z(=_-!_4n7<^rvijT^5l1^Se{?6gJ%ph$EJR5O5rfoChGHOmRs8FNZmxj=nr-f9#vf z(-b6!WtfvUIf^K{MP6VBLSi!BQ)!zRjbDh*uICGWg#$9n*+r4105yS4tb|d6W@e1} zWpVWtT-K|g0uCQ8hD$8Tqs%-y$=#zLAM*SHgZ8A zN!ALHr+fvOg=jIWXI?(ND1c*Ue=J`J+xKvR5E!U}CnCzps6#aBoE1Ro4)8Rq2G=}^ z-Nao6GD*b_g7jOgp!eK?+esY}aNCLZ}mzu%H+JNS+-0Bft1q;Hv-of2_JLdW3j| z5VZ~h7?c;;bh5a>!NF%4?l>+q|E;u9A@F&mshg;oX++n>Ph~l(bvT%5V4I(iNi6Aq zEQ^sDDkDJ|F6J}HH2Hl!y+IB`6f@w13jR#ntqs5q)aRuU;I!+Vm6Th7s|iQ&Y?1h;T`0Z6uv!3^w)9!m4lU=$$G*nFhjuvxCa+2Rggb$2#X3S;TN1)W4gM~f08Wj2E|UY4O!4GxN$lO8eyy0X4{E`O|_mv1NgSqF8n3!lIjXd ziK`pKECjD8vRqayt>IN9H7W~S8@(9#Yc&#%SeDhNgA-ttt|~g=hzsB}1^1kex{Qej z&Vvr$ri=_1Wq*})O}<$f7^>KMc9I7@2r#OPRN|aAcI%;Kf508<(Gz*11J!d;)#ZO|)G9YQd2gBP9Bmxm64;>I;1JeFvx#F7JlclS z?AuLD7#`1?Od?))cgz4r-OXG8Yc1NQtQV>3H_0OnROKq$ZehRt0{2#XEt7$_j_v8RXAHN@s^hhRWWNnu732G{-UkVH=@shf4irs^|MG_vk?Db1wv2tOHce z4l(1&yYQNj6P{Folb#GuHr$+96GtUS?IfvcM8PS(jKObPJGJsWaR4Iwc5o6yOS z$>wt_$pyZ>X0MdVGW8Bt=u^%B=y05DJ>(vOe|hMy+&Leh9Ysnde+JqVot|4iZhFn- zF3|CyRoQPo+JaP${-!S(P3Jf2YO$RaN!wkeT(To|xkdDxyUd3lK=U?ti)j6ltF&k} ziiSqL7r8HDMUu3izB89cpen5bBu;U0f3_qEsvuJO(x35c zf80nBWb)C{HyPJeTsRlc!RY9~H=`U?xLh1fF{g6q)h`5K7Kl!`E>Rn%WF_drEZ9j` zT%(+eN=0YOnn{WNpFa2=;()V^pAOB6K zaWc+4w5mgNn^wZu8AVXpsv|L*e~$Huv*mS@=(7cjH+7Mmm&6mru(-yKs%9iCVstsK zC5tx;dIjdR7(T$^Z&IS@O-WMCIFc#95Xp`#b!}A2SKiCz45J2#Dl1W7OWF6i_A2#Z z^04=Zhl_U;*XnaP_7dUz0JNR+7Y`r5_{octvxhu#;&1Z!- z^nspMq5$qVXratyT5~C`f1{_I$euEA3Mn$crl9tDWt8n`dBcPQuOrh~%ng=VD~;t~ zbq5e1IqSrk&vJ1Ay;@A>1=JL9m49Wxf)LMnrKjg0>m$vY}_7^ zT{U=@%9q@ODEMAie|uiM|Mc+qo1^2y!_z^}Ns;vA_}NMS^k8swaG1V4e17H@ErpKa zdvH~L$a!BHc0Q~zU>omQIY(>K({LT+U6$6MjZs7I-AZVCA8xvISiu}7*~v3r(g3`c z?DV2Vo@_4i)Gw0UY($61CL9vl=^lFM?em%o4L6s1(yG)`e<@`#WHK_l1aaI#^qV;+ z*>QuU5aZE$Sg8>erazy99>V7Ls|xcZeu|O}nvu|Qs zh0{x((9#tyiCUV=smN>y9maR7-fB72Uhr3Qf!)I?-gZ3v$S3v91yiytYJ#r_aTAHB z2Z0epg?BN^f2VLCR89U0MV%90nY%b+Jv_jxIN%1E6!uu5<)Wf%iMQaz7xh-l1a^%0 z|4D#4)u+rS$zIf=8oQ&V1r+&qfep=B9bc0(5yceV4hGTaFe&t2D?`(RcpAQ#itOMw zFoxE&>|nWp)Dz)|>h8ntnxgUK$KVF_Gf?H2S{cwVf17c4+>kMEe8`vSnjx;%jBpi> zFw7px&Zi&KVmdBC-F1wj*1u#=4>Bt-;L1U!zD(`9~JiS`R#qW?3a)($`>POZn z(f8VE&T$?}kH6L|zEN3W>d$}vNYh=>uY;Srjh*rD@Jg3|BiL@bSF8OV$UxRY)7?(| ze{!QJ4TXKHk>PMRB$3E4P+ptMSywVjy!h(GCyB*wCQ+Yyd$t=Q;EL5QC`m$ptsGMr zXn>!PU*da6Bt0o-9j5II95P7bNp>M2FhP+7`~e1Z!`vb5v6X-)ne&dy&@CjTw?+hx zz6sCgm~34@y~-&tMA4p4O6Lfs{(U)JeoELWL;9JVD&GaigzRd7)&j&dq0q-O*>*{2n(jMTaQNSEOR!jXH zOA)IY8fKNHT0M`9IhFcieC$g}{(Jfu*X%d`MyJW?#k=8_CpV`G}*dcAa^GnxwWmoH`@ z${rteh$|R7l#C@Ao3DLy`Q~i?v79isBv+RD;qoDo$WGsTVg{kCE}Gv$QZrQ*S6%Z_eG1*Ixo`vlSO5;nsgeIu zhVyYFrK_|-5hRB37mYcm-BZlv+nZ^+t9wu@JG-h`kV#5@swZjkGiiWJSb^vlLp)s} z`Zh3#z9yHW=1@8pdgx_Rf3gAy^Z0Lmav|2)gyW+I6sBr!BNR|t!SA{v0hyWi;>1o8 zAAvVnG3Rp)-DLv%i(ls`@&5Q|awqLxZExeoaZ^t~KHQ-%?k=O8*ht8cSq``KtDFx| zX8?1?8}3!Ar!-G~>JJ}Mhf;sNXQz{PBsM?2ehE&E-D;Q-hS;%Le|fLvjCl~7E(9?; z2MFsmEItAp(iJht#re22bVCRRO7Ya@nE6sQPwJu#Y z%(4856>VC*6d7$RwpA~Y1S<_CjRkk#sVg6L43qQjhU+OkGp2CD@pXWsdLp*kbyH!j zZNK%?eiMP`CHVx8wPC z9PhZ@a`WRyk5)8YL)>O5pi=!bN0K1dO`W>|$KMq*?oeEgnm5WiS`17d2Pb${6NPnO zqc}6lo3`t5e^D-8LTmKf4jU4=Zz(y_ZtBRcpltKDvoI&AmNUbbUsZFR%}Pb7I#R>s%sBAdO()oNHyCixJIgQ@lh4N+qZ*jEE< ziy~ciqQ$`{Ws{k|R`Ms@xRNjW!!i*?iiI zA$654Ymcl;2vLk;@QBc_aspgowL)bfnQ_rbIa^EvYB1lZaX;1Tv1*1~z35^ErXRjS z3lKdlf9gy>jl7^N;>u~wIEp!?q=8^x1@U+?rHDE7}T4&4m zOLb8pZ_8Um<}~*^)Mn*D-5h?C>c;<=dpzrleotXL*I{5odIns(>)%`wTJ5Zx0}U1K zH6BvF_0`G0svWzrj-Fz#&BsTX0ES$g0VW0Q9M|6dkz-78X~h&)5>w~9p+!FN`QxyF ze@k@|z>nR--0DQ@2HqW*j;!%JO{jH;65tTItsoxP_;At@j6q@pOuM>f67vf+dVyUz zCKOdV$2P@&7GM_z^bJl9jYwEju1!@k4}W5?aZ-PYyx!MG*Fp)q^3 z3?saLCRpqjDp2cPf+A)f5h}P z0?5zaD3C2QLf&`vwV*l)od-8J$2Kq_dab^F-#qc67~$oJ+12+mJ8;}vPLIfLj;|_I zxC$N~pM%t$tH}fppROQ!1IHDwhz=AY9*j4S9~tN4AhIFbCGFbMMBh-m63zTu#Om z<1c8j|~qJB{?J`8Wdp2 zg>OgHZgbPNQMfBV%(Jf8?UAljf^WBUL55x_f-V}i|t8hf4B4FM~^TJ zNmqcV$Mer1{0RmeNxFfc<*XeEdNy64dNj$$;<_P}ndRuvpJD((6PQiV>1nHovqnFo z7EP$Ld(DJJhaRiVQ#EMTz|ta=rEEwW{K`9n zujGKMbjJ=GIMJPSbrbi&e|=1N7$j{^a#u`hIqc;R`^V?6`IRz?_72F9DL;d>JR`gI za0W9M;gmBv|0u{p532|~=tDv0kML4ZRbn)FGB0Qz>*eDD8#lKXum$^u+CDaSe$8na z#G^-RJ-rv`}+c ztjCGvn4eXc>T9K5+q!Hra(FhsTy)mpq`~$=Q3b!d1nCo+SK!G0!joZ25RS#qA@@ znGe-fS^*k>l=@ncfrk}s(-;oxk-tYYrIk&3D?5$bzCf3Jf7b|;V?OAWM{V6b<@tcP z^nnfb;mu4fuaSp?LW+Ps-$`v6WNaHI$BKFXDC^zfAHXPja5Q+`KLg=>3f{=iirM^9 zBI%w?$?{5Ryhw77MO3?i)4M>yu@F<1p_$TrCWLIXLez#A|5SP&;JHV+1R=l?WYmgM z6%hX-o0kCjfBj<4{?U~?!1}JJ(~X)b(5M1@J8AZYWFqORVGnVubMkKMiuAe z;KZHiz!2c$hj7v8>+~rf#v6dhXC@(Jv=|;PB!#Bgu%hC)a6eK9E>S9E1#Krs2-ypD zEpJ}1e}+Utav$~0V2@%5p18^euwxVkZ01NkFA^@KWlXw*Qo zYKw3E3VQIsS_f-_Iw2=e0iYP{xO_vjdFCLVxj5_avOsnJO`cH@S1Sj28#2kipZV`& zlDy)USzxW1v#wm%RKo^DhJVbuq!9 zf4bSIJ$RD#8^GQQ;(Cx&=rh9vp=2;xCO`;M`!Ec;NoWTfhD(ZWdF23coB|MEAXud zb8y%{2;pym;Q#`b2BR+Z6-p4i3I1nPe|3t2?H;!p5)RZ(QVxd;d8nLl%SRmg8oc+( zqZZ1mR3x_{cF4#k?QBN%I!(AytFh%-spGF>_kv|iSsk^KT|S(t=8N&zT~CrYCdp{Q zvCRn#WPjvU#?O?oT zJsBg)=JGs}DMNlYfCa?C)cH$$`?!5inpoNH^kiUC-Y$^`c=|Xn>jYdn7jwvEMkhPo z@*JKg=!g*mtIIWAe=waT=KlhGsq1tb?kvUuAIPvm-W_3@7>ZIv9$(Zd4s~?B6k;Bb1D<^ zy8xK7YU~*^JB()+^R0&w>U@r2R4`^3H8VbnTA-wbPnSf5Ydu)V49ieRtEQpjDgv2Dhy(7E_zD4U{&v}9(8({cJg-bhN^7?kx6{j$JtMGNi2totapn#yR$_o+xZPm^e+&CAh40q)t(LyV zzFR<=(x&e^56s!mU@?PxM--QcUk~Nbp0MbGZ(pa!--8zr?eyf$yEpx_!&6B#KTc2j z2le;)@tgjiI`HGBUTBEO@1_? zJn4MPHr-w%e`vCPMH;MQ!whU?@b3iQqs+#6a*53`1B|k(48u2&=(WvS-;Z^>gq@9H zcRpV?$|=T>_>?VU=-&mhRX0*5fBhCN5v?z=+*sltJ1Q0$@%XiR z!nm@!XqnB57K)d0K>{ED@=@~ZU~hEGiNt3qbi4vbKjghVU0#*5Jj$D&f7V1JD@n&U z?gq7VKuo?_*2v&14n4S4BPx(LJ4Z>`&L0QD3k&IF9)OyBdUmM#u{Ic5Y*-O(76{&< z));T)e?uDxKY<2%d~D|s?<70hx)L>`ZdH2007*c$zuH$JcN*ihXmAd85oj)d{-UmjcXGMl6Qy7x1ZNodwfN4kWZ35&D z4rImjvVZV_@=F&yne*)xcgDAwIF75e4M^gMFh29W(dwpc4U?Bm^|b}SCjXWXeED+B z9G}lbgm|&EZqr(i(#cnkPLgEo9STSZWjH)AmJ&#TMP-R2d(bNBR=HDoz%EtHB@h+A zz#*}^mJUV0Zz07 zf_R$9neDP%z<6=Qb%_pdnVXSd-saO$E|}B8rEm(aYE%4Ne>c<%r&@<=XmWY z9~r{^q-HT*FESuHE=}Buz69I6IOr095+96h0Lwg4NJ~H;#L;4S*>iW9bcJ#;Ko?cC z5%T}VVtQ-cEU~=&r_vesf=zLS*P?hv)jfE2`26Jb5GNbc*DSsnt{B&Vhh1>3(0}5% zT0<1q6f;?S&R5ARGm{sU;>9v;l%r4}Jy`p947T`FW*$ZcDsqv|eSI=Fx+Yl>(XBu{ zmovpzbR&Aj6datU57^B~^fAGXwWIX$4p-CpuEEVJjvuoA50znudKTD5)>BtPxr7)u z%N}XovaE%$>)Na$jp8-E#x3C*QdX~Q*+GI;Jz0On|EbUtd>GPQP@!LcgIDwSyv%+f6P z8a|ijLpcNaX4YyBXPM#q{7}IKPRZc^*jfaOBj7d&hyg+l>774h#${Nw%DE)Nv+&F% zC^E#mplAWlK>#onRfug2_{r2c*xexB@e=m>#EowgNT15wl&RfzR(jg3aJDL`IvZ&Y zkTBY`meD}VfFsu^GjW7rTTlSO})w%#kNFHfv zGnrJQ`aHBslRuRUqz|e?amakdSMO zk7%QET``l}R~4?ysu1-r0~qJWM`t%pK>2h$3bL3|^*_TapMT1A{%c_tlG4BoVL}El z2KCM9$@%O1^fxI#YDWNYY6Z(yttEMV1=`hM$zw(bN=XY2F6+-F%)%M%@A;ZApJ*GP z+&P(3Ki{#cjs%w2Fs16v3{4p|HIO$m7?Wp4bFTM++;^fl39f_~pSWgM2Aai*dBfm(8buI&5efZwz?j-^f&ac2EJmG4`ZOO z6j2{kzfv!3-T_^eq?ZwBJ`S0)M$hpA5gH^>FmWaqZ~sbVMwX!EED%;8*>QoVd~1j~ zt7EH>_5)N?=5%)2o48hihC*m0pUOh#X|Lc|%vy@PcYkREY9Ru4QDANp zIOh=!sWxkmk^~8L(@=6VQW{|-k*g}QehZ)Bj4_Wz0ww2w>m}P!lHG?p6sumCOi^_c zn6~18CUPapV1IKrEVBuToDem#%$v7$0b&PV3g}?;UBiGGv7nlC>PHh)f#GgOY-+Ml zK&E}?m4Dh$b9+9)XupIeb`BdJ=GAxsB~3?Z21#FgkOH|Rz&Qs4u7NJ$O)(y4@{hnG zA+Okjhmwsfk)%_aB5@p9(``Oj@;uVN_+suKom|k z2Q?O>t*(@z*2Qzl1P7uV@=J3?A-6ED-H+|Lg<~`6tD& zyryksKE24$8mGam=W}2=8drkJjlFwz`0n?8h>){K3?+eTpB*N@??3$d(Qi-tuUT=BUY~Be+-)vWDS0o!i@4H@ zf!-gDMjbs0&|QtRnZ+!E#1HDUrl`i~j-9+iD4z&Ky`}EpO18Kp)4%FL){Is$wsmbx zp7^Ybq}m!ss9oa{Ws>z>@q6|UNm@O$sDG`+<=F1Pb;AP5D2U;|>+2jx28M6wgdpkG zY27kC|3PjS@s{_!V^nFG3|v=WGXzaV)CABl*wnyU&`O6Zr?{(+^hz_Q`FP^FE^Alh z-RmZqLC=!Nxn0zEMjosSDgE^2CTyiSdpz$lf+$Y}42J{sF0y6H-sEnF47@;#T13Ww#1Eo<) zy4^BrOB9D+v%$9Rb{vqe#5@O16=Op~^JLv7o2QeDrVgqMJv7d-;2{Q*gOq4tHB#sx z&sd;WD}($h`xdxaU)O#V&Lm*nZ+{`0$W|OtEH-e z_Jf>lbM^LHPv7Ox(wzS`)Y!~(fXC>{JHt48X;{_OS%ee;q$KYIN^DT9 zoDS;VS~M6C`I82uB*T{5~VQbl>F=pb5_l zJ44J+L5v(v|4TKyrbbkqwJq2~5w>Q{OKsGh7vrS;7wCKSIo2k{uLtpl>n7oX!5joL zkJLVFZ=3bPx`BpPS!+X=ynkmUp8amAGa|EXQX3iY=hYjv2Qd!oc^vVjR7$^%{|F`X zpX?oLb0anE^D)DJ*eNhgAYIz>?oftuSD-*SrtR?6+HVMW&3 zn{3h^Z=M&gEz7bj%d#xl3>flU4Iz4*Y^ZC4mb$; zzKuhGbIe?w3jqNux8$+`{*?dR&xzz{u(qx`PqHEE%-ExGG%3%0DyE=}xjd$#LSMne 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 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 b2d996e7a11996755ce74ab841e0970fcd24d110..2788c77a4744b77c54a6e42c4d6b73d36de11816 100644 GIT binary patch delta 523 zcmew`gX`iM#tn-k`FG8}>kv>H4X`w*H3=1m+5B{(tynsb~9_ z#p9K#}=Ilh5Ki&4KI$!eP&+X%`vH@YOrnfL7Vk01UBdAZXkWyV3}YoWn6^v_=HN?&u%_s^$W9fw~x&Ge4?d?w&` zf!~ea2a4x5F^O}{`tj-^(^lqEg&60#-T};;FAMcvNU;CAusE$rfoHaXu+oB{DHnWN zqc!KL=xvXX&FMaOQva&bj#V8Y`@YH=FC=k^X~UW^46UD{KBtV70Ehi?x=c>e(`y}>w5AtyGifo`$}&u!+s$OeywaUv`Xvy9!;fJ)dk>Q@1lNG6CDBb6rt0DZ{}ld%~af9xG;QzKRIGgkQ@o>*3r z-C-7jSFNJrf=bD;0%|ELHDo3*Zjy;J6Cknhx7)`%=g0vpiwCYS)30B5zkc2Q?l;lk z(vJt-q$wIto;(qI2M0&n;^=tuc;|)K*?+P7{T96*9t%uvh?aQ!Ei2Dnl4OziIvPZ2 zkjKeD9LN1Af6IgZ@VRKOu6?-rVf*9LwY3jE;+(yt6ZFJc0C_gV>DO<+_4ZpkgHCT0 z;`^UB`py3;?nPM{hG^ZA9 z+rG}zpp%QFEB1Ddj4-2HG;-0o2nOeo$St{-e`#z6**@}SLyJRhRVs{jX5rRDtVt^=1X_SxB zfnXGbL|~7Q(dKu;slOI;RU%i#j|X9N?TO2vH;Ujz z41+k$bZNqbMA5lUxcroBev}84wW*1C;@pBOUXY!0%OWvY651#! zo)a7_3M$$^he-OnARWFSr&2fcU_on{DWmy9GCM7!{Mr0{HG$8k`eBr$Zq&zW5z|{NwXpn<-_k$3EMIzE@*b6$5NO~bEgY*JY zPCo zZKEZi8VgBhNz#jgL8H~OH4n)w2tAbbO8IBtHawEK-oDr)d}y*dLEe-_ZY`1rII284 z{JX_taU1iLZE7t&#sXKDco6q=C=yrHor<7KATEO8FoIq|ik-aArxt~&Jc`l~zEgdG z0=y_>oSssX>BNkcl{(%Ae>N&qf2F`?X$MHhgID-F6Y!6e=ZPKhJI07045JVt9?(+- zAm^N_+S7tfmC^4m$$aWpRklzjtIlLRno@hJDO43WtAcdXxh#C&4dOF1-$qefV?Y#t z^pLJGq7e@8H|-jC<*0a~0m99Q7FrE0z=aG!&Rs%yEEcR)7C?m2+34KIe*sl=7Ia=U zTiEq5>Q?Rl^v3(9VRd-jN|dNA)oZp8wQz`JI-l})Z9h^M9kWgENn&{`x{=FS(2bb& zvLJP8?U%?G*^187 z$kA+o-EXUE>HW#t$E(kP+l4=j6}d98!yt@4_Xy_0gDp-i>J zK#~$I1X`r<^_eY@Zc~b73tmM(M4fgMeyz)(fsg*A7&89627Z(TL;A6Lp4`YFG81!r zLnGWc7gs?hV3KSEe`DG)3~bXV2*=_Qgz(uR=M{RriIM{gDL1H3AjHV7pkosuP@Yxg z|7DrmO6IXACJHoGg{;k>p6y%{yTH1fD7UAJzi5fS-j!uey4@_Yrk8^7ci_uVh_YD3 zN~KIIL9-VOLLa6KzKO86K%83QDbj8&s*NHo7s05=qHll&f29<3F@c$s;{>%~I{-pK z9cIo-jRj?sK?qK78Uz#w^oL12$hCGLtB=B(B>!5$$1Z%V;1d@_ftid2<}5C>*589$cCcn#$CexRIDmpIyBm<9VRaxj&g#>AT!O%Ctb{! z0NOBCT9W!h#G=XomVwwEm>N<|DNL^9S5XB0oU4RNe+yX6HXy=$9!_0Dzj>;r+FM&d zlgqOv_0`6LF+^7th6Dk0k;6@~yFGKPW(!Cu%O^{|(?w)$HW z5~!h}R8}XuXBTE$Q_L)$F#c1q>VMD@&*+VmQa_Cz%07QdI+fs#a?ETstnQ@XydY-~ zGNv8`b&D-uo{m6M-Da!YkkN7;(Q-l`3%tH1e}14a1_d3&!%;8bsdU?l^m>wGT0!V& z7C>thy4V&?8;USAyr=lUW~YE-2C~U1;6wo@Hza9^aW*E2Ftpw>F z)OdlvM`lpL-oJi=DVnoCmhTh!KB4!i{7$8T)`(Kd6%J==hZXY#p;$3eC;UEE?-PEX ze^krXna$--L0T}hrG^ddu~du!$?7uVO{A_2NLHSqdTrEKjC} zO@3>)ego&Oq>1tO`$3$8%M?f(w`I0PNf4)`8H@sSm(un7Of4qm?U!Ff~z#j(VudVnz4TcvohA*DcB$cL&RuPJV5l#pbe@Inr zWs@jwOT{#?QT$*9%LTTu+M>?7pr3o20K{1V=TxkeK0-16hVe?RJ^-V*0MN&p#Rq${nkY$sF#58^?>BE%( z0J9{(EK*%%2|#PQ6dU40V>e5>Y^(h0st6Y-0ItnOnqCDRh8j9nL5p;Bv9OlDO8fay zo?=aQ(g+$qa#fBz7_nq5e?kbRsESpigC!N4KLyUlC`cXA1L>!V4CBP5lnH0&qaX4 zvy>L}VEzMsOd3sNe?cnGV4<|hFsHdH$ksC{qKR|$dBSrJ(0!(bTCj|9GLk!huYv($ z&{R;Iw|s{fkb#1AfF97HISoXGK^F;tZ8foraW#nE`jmf|f{o$a8PsjB2Pjv;80Oh< zt|>@i=~+5F<=Ec?u^_u&*}csxfMuJw^nvaBq{B+ z$fS-UrafC*U4<69t!8&ro;js3ORGe!#gvq(OLwbUXI@=L^9v@@^Z?H0hg4)yP&KL? zreuZXYqeK`a#xE?8eY|_;tS=Svi^&7N%Mu-f9>Ad8>URKE1NKL?HG)3ewRXF#~==( z2)3c1qS$(Ae`sk|t>nUl+Qo%K_fO=`ZgdJ-Nkc&u-iFLEHb9zzF6{kP!wN|1K#wr= zcMtMpcem-TH?T0LH1si;yMTFs%^EfhM8(V+*lQD3W-}*@(=&F$wNALUr;5Ww%MgeA zqdpe_U@I#$LkuIVD8$Wd5E?GPNqZ4aRjLZXnZ|8QfBS}$oF()Ys4)&0~MKKL%Yb$1|$QL#hJ5>dR>pj=RFw+@ViY3F$=S>Ww;j>i_?^p zwMW`TPosWv8P%0O4qIwp`m1Q{sq&hQyv#7NvS)IWI{B(qba=8~H&7MU-mVHlC&2Po zL0fSUf5(}LHv5?9PjNE3)DDr~paZB)BjgDfsL@3}ch*CUmmY#7FVWg|1~1~Y(~H>P zJ!-^8nFo4+qdSN6qP>7;#>9qM4CB8k5KH<^jfX@4%SjVY-FI?qLi|juX>D=FHaDiK zs5V)gwxz7LfLH_0`==YS95!J&`P`H#D^3xge<0_lHb^%YCbOdY#1gJHK=pB)6Up3}jZg?cgXYZ(^NCNC2#4Erh#kMtL$ ze?dP}2;}&YdXw74)SA;dO=9N}@(uivzpXt2ELZi~JS73~ukkNB)R*J^ps%tN+86@9 zz&3^-p9B62K2ZkIK>C8l(mWL4Idtey6-}vnQvY6jw~Rhw@g-gtK+EvK`hIbrRkRv#)Vq#k`Ng( zcL^hiS_KRXu9Ox_iMC;9Dr^mLvO4=PtLPYPL#cpLw{@)9US*ptlmv^Y3gReVfAc4d z4GUc|Hfc`2a@0g5yEK97H8#Lzqeg+8>1X$nD{vizsckTv4jEzF(`gFpz71#u9jG9v z;#OdH0O^O2u7}eO$w3vx!E}OydV0_bzH*7-39i%N42N9h1W}hD;ne~h0+UMa9nh?i zx~%oeOfa_XCxhD3ZgFyD*2}1tf87sJHMgh(Ap*4Ci@H?oQi`Ze>DBSt=JegE3~^_C z4afSVbOy^q&9X+}I6p%UK`T1gK10T^Fz(`bhLHjD9YX*|TbZTj zHdk0N1+b`rpAuY&Rg~*1f5>F{n%P>;w@~b{ zBM+e$x_bYqkn_R+5$91xoc8|_=RqRQyaDI6MI0LO9w&!1(}Wq^J%>SR&1k7{JV0ee z=!zZ6wHu8^#Z_4J0$6DQOU}Q8#c-htnLR_{&V#Q#Ugf!D=cbSM)?jY?yue~Ne+qy_rst*rpL6@yb&Ftng3y$#sg%@)^Se)=l@m{OnQ%66y=Cau zF7c`PNlo|Zbh=|n7i;+BUHq+1^43fmHI)uLdwvE;s2VlK#CApvev_2WYcP@kytHUz zt4x~MNt2e`=_)>x^#qc`^13pO1?2tnq;cIq1j84zz;e<_e`De%Oeo>Tvt~F{`4;1; zb%b*mcOk^pT_&U2*~O?;tD^lul`1IV#;s)KatqlD7r`O4n87JqEgRfYan8Fi(XCst znkI}JFg&qx1dC$Mg!ym_Ru*}IUGbG3Wdtxmp*kK&Dh9I)r+jdetO_dX-B%48@hi45 z>$tj(YwRsMe+xN{Sux0Hy}-jKb4DiPb%W}58>#4WDzepOokNv2)hb0!>WQ260Eu0_ zAi!y*6#wPf%U%On3YJ5~wY{cvD5h%Q=q8+LDz`muE5Ywkv&26uiKqd6eekps=qUq^8c52>^}XnO&5OGy?}H5EfEc_A&MeoN}+-&Ed9 z^sODbagd*#BDK2BQs#^h-kEMPC(f+<7x--n&&>EUQ;IkfX8}HwKtD@6Y+V;?zz25*s z18Zsk9g6vPADChI0K$sB`QUp5G@Tr20FFJ-dxkDX=k}$c z9tmZ97vE%XGgqH|YRFje#3GGY40Os`6GM|Hw(9XNf3Gzv^y$~ATsD9_p77`7>vbu zyK)9+%FVH@vT&stw~{d$*>w^yRtfM(CkRd2<@w9fNM;j(${?uHBwq3GVC5;qf2P^S zsb0|@CD?jZDVgkDuX*rgA3 z32}gKeHCX@GtgEbV+}?Z_i794It@yq(%|u~CNgCou(5+_wggz^!--WULlwa-jBOJE z4Qt3MR5hnj7cj8jzb@ceHvMcKf3z-u_Zpz_(a=EcGW=ZT=3@nXGaHD+vtFU}+z?C; z5aJx3urf2-Uey@_lldGR-MxzARUdw5xx8;;f6p)1{FjGZ^VplHul;EQQDHQtGoU7> z+)bhshdb6OEK_Y!!y&hagC^)b!*)$w!Q^Z5ynLrLsKKlgmBMe3Sh#pcehxuDC0o)c%RF}lHZic^t;-(#Ttmw4cgd;MiSx(4UfA`>qg?ntoAyFZ%QT=fX7!Lwy+tr!=08BoBi>}n^e+9?O zQzO`P97v$FtA3K9K_H46tC{P-{HZ-C!p4%$(ZQ7%dX>uXkSS`jzw93Yv^<=&oh`eH zaqC^Ch0YVz-7!v97WGzcR=tKhbvc=goB=b}IBPB(ZC2#29x_6?e~!<3a=^}mF?hil zVJe3lfEj#9{2u;T<53<=#=k0~#&;Y>(8F^zp0Xx@4BL};&9hp9K}c!fR35k4IX|;c z)M8W8Pg41d3(=*;9HasW-8cn*fj=~eWR&TqY@GuRuGtV)tTAjc8AhTgi9%lCgTkW} z{ty#G7_1J&fJu$Bf3f2FiA7`sDVr*>%gptn`0_&;-lFwm)h#tjT$N>Es7~ZQC@@jEq?!E;nq9 zssfof4S47%kVZcE-dTr?mbkRnoxO=$^)VJUZmor4NpurJ8(JpnYr_^W^1k1F{zygZPcI+Cm$4-U(N z!C`qMIDD94;BfXBaCqMXz#8}H^Op_bz`b5h%cEgs25gvZ+~8X7XaM3w83Dh4g^Siv19p;q9l;H_aR4~vcd*JT zaW+@he^y^KZf0o=m_5Ey+Y zDO9zkM@)xr)5(RGVu5cp26bb$2FtqECC~|OMHdU8(R96A(!2Mi)GTWKsbr-$0K_%S?o5vdONvcU@Ndq&4~e;v?AEx`H}_Ii4+XmCmQF(Kx8L^pII%tR^w zAp#>C1~A1fbnqF)e_h}k^}txiRr^0m+lrN5c<&>q#B5YmNw$}7eF+@+CMeuD>Yqtg zfJcL3xB8i@^rGpUu^w*88nf2$e)wGriVV^$PT~9;?5x}Qq=?lcE_|8t+BscxohOMYK$J&?WmIjA=s#vaLJm#U73e~4}WPn_Lbn6rBDk2H)~(d3pZ#}T=m1pi=%jDpjiJ@N}zQ!0@m>#sJ4$Xw(|3URGL6z7zA3M+F5pDd2 zARe@&FRIYTb?|2E4iz3R?aw%YRFCg`wwQr*ufKKN8;^?;&dIy@`zh`xe+C3%uIa~J z=BVQZ&1_)6g&VJNBW{epfn=7+IYSxt!9iGn00M%i=_P6rl9Z2B3bJdCat1-jA3g<- z_)Wz1tk0@=XDxZtKj#EB5!V)$g;hlrUQ3K|+>%R*BwP<U^%EJZ&w<07|WJ(b&Y|Zl&zpvDFPDH;LrO;5(X|$a!^{oc>Y(vc5sKg21%Q$4P z%#myL%?X3Kv*no=W3V3-)g+iD&jGFMIU=p9P{f!dy@9CYeevS9`fI$8h{Q!;9(>I<3k{ zkZLN+h-q2BA&SX|Q3jt(&>!)rz<^o9X~{CpIAIss+ZC{>EP?2$Z%l~MeKQQ%*=UG) z<#~Zr076H8behsbfBbe2Y;B;-?s**g^aO8h;In*W$gY-LTXxg9C+>ds2mMuCe=cf1{Kt3#RAF>8H{I+-hW0 z6BA5OC`SiwsBTk{-1LH6td>D^RkS^t%-qv^m{}AFW z+MSuLjzlRLe}zeZeC>`9l?@L|bK9l|^UmG)2>Q8e`y=Gf!l8@XAVZ+09TNKIQN%bS z&Vz+I+jS~N4Rf_cb_UrZ82~wY`NcePV7X;Ilfyr{8hi}3SJOZh)o&iAv{Ne6e6hd2 zsWKJ57)86iDo8!8%~GruV4;WLND|I%TQE>=+?Bz6&4 zZh00N^W3$`xlKn|wKnwwo<}v_k>RPR_xS@9xYC-4o-!eWtc=H`Pn>kuSPm`Qa9UVaqWOG;p8Zyp%m`Gi zb4@BcbxW}Os$2;%oCyF+JjBK2xNKgQJ(;uhCTs*b&OZSzggXHq&N%@tM2X8xV+1|G zk9FVJ^csEckjBqr(3jH-P=qvG*rXD3!l7h-e~(yLTup`Gw#o$c<-vv+?J$SMkzu6LPR;c)c++m|sBb&Ym4~H&}bnp(qKCUdDMd#rn_NEE7iQ_P)b1LE(174@s6CBEofwEPK7KjXg%fb_96>y z@W8XElex8mBv>_urqK?57=b-0!YkyIe|Adx(c`kZ;n;j-$%+NJV>z<=LKMp|-$3RL z_P-60DB|lI>tg~UNk^E~omCl40c4kti0p(+%>5bzfuwnrTTGq7ZZ}VSS`Qr4Rwi$Av-QX&id|R47i7 zt}KbloSgkmUx;OO=+^=fLs(}gsom_+&Inqx%L z96uVR)o_&-UE)YM*oKvus?(&*fXNuS&5x#FfBw1-r|^wy^F!U9+FX=F=cM0gVR7Eb z00vQv+slBrvF>e)4jn@7!*w2NPq89_7rSDysMYWtjvPI!CBTM8e+eKz6WXsA=86bAnyOgFLwgE#ub zvLOmI?|E*0bN2V<>Fxnt zCOfMWTG;{BshZQ<**Y0{&yL)FnK{AW)5^oI)Z&l~%*-({%$$eTLe!*BQean&VT z1TzE@h3}6$iJFN6Es9C)W-XQjRKnOT|I0MFjKfHe`U(Q2f3_f)QZ3<}5HuN~T-H4gu+?@+n=}XR$m-hFUDw;xi~Qfz z&%3(H=l(3Xe^qkN)pD!w-2o%C``G~mOT}o6lUUV!0g)&dFja@n3~Jpf+A!L+T8cT? zf*EOogIV;P8g3j61im(kbeis0P0Nfqs?iipz!6`}n?>cAJHsjEXjLo4ln0Y2D3o!G znw^5;FCDENqhQuN&EnREsaq$5Ls$K}jmg@2@U+qKf0MCS!-)!jo=-04>Xg7-lrR}V zGkX?vUNwqeis+0|VpzV%IgFy=i)1)%D&bqsHz3|sIX%(##L61`%dJWcluV)3i?IY7 zrsHaP^M4_To3TS#AeG3UE_p?tCeCQQ$Dd3QKfVMwok=HPFCbXCS?(OeSYloF3(TR} zm(=A@e_#!e?V^#$Nz|PJe!#_l>JwmDna|0){8#C-F{P{1Y*c3}*E7uD@51X*l*Z7V znnX=4(iF}uLmpoFNG5(d36A$NwB>ZF5QOR=iw%*$k13wr4L7MC;G%3y!H<045Kk_$Jku;wQLy;p#T?psn zxe4N!uln15GW`SormiZ!i%kBkzuvFSz5L1HQfIUH$^4Qfl{%m$4BN!ZUBS|)jrpwv zRvi=itAI{(N2RO#+A;i_V%eoH6i-<>_?q|Wd=tgz7ddS8z>kh2z*+RMw<%+SRyJbF zf3H`Yte`6fHd{8L-l(I#4#PmbJ<$P7gb5c$J_luNH~XM;9~le@t?cIXg$Y3ctefJV2}#HmSR*^A+Ge0idBAEU$Tq2Vsmtyr4CDP1K|IT zM(gk6uFDa}icCM=pkB`s*j2ulogYS_f0YaX6lK}Q*zENPBZmY1cKXpUxEdVsO`1%X zdG1An5k$s|0tiu73p;Z#Z8OiI#RbLnet=sJz`^yBkY#;+Ai#&Gs7sKQ!#9` z7Mn~42*>C%y(r~eh63h%p;Mb0USMX#s9?GL{gFTfAu--vU0ow-UABG}n5D6Bmq*gtr=y?^@E&f&JWE068X7sopX`={{l_#1dTu3}ln z^0$B3+}buG#NCpT{&H5-i$V@Z*#)*B&4P%3a;wHQPg;i7&}s?wVnmT22BMv;91SWogR(%VE10bGZqd$FAGHrBOMMOw#h)cC)QTs8WEt!tTEEKwhY46_|=c_ zg*oF<#j}XZF5(;Yqa&DAL?PB{+z8VJBCr$HP9EjfWPJVrpz5jN0Hr zsqMM)w`=pS&y|1uzZ#xM0}mLVh~FIp6wc%tpROv<1BNK#cgGktyFlv?T%h%PF3^mq zyZ&0D?f^@2>#%!}p2hj>e}Icc{QPmk=$!IoRELEHTPu^jzDw zkQS}=5+c|&YMdFP2S%kDaxmaAhqd;BWz>Z9lEMDr=8NsqWBC28fPuRQ#+VF&VQ8jN z!ciK?mk(E00So_Y%{KJ+Z)NB^a3T!l;|-lxL5$;neV!~H0F4nDe{ObbYd?m`=7Vl` zw!KTl|1JK`7XRf>FE@{lPB-_rPPdOuR;tw62a+C08Vdf{x_K&<}_ z{guFTO1JT)8*~v*^ReAi+!@cC&2bL7Pl<1?9;p zLrwQ%9b}XKJkAJc)_ve_)v*nmn{zD3PN=Tsooov>bu^2oY-)Ogu&RC;M^~)&W|jWR zXqF!Pau(mjI=*sKuNJK8l(Oo~-f}u5gF>s4Q!xH>@wK83 ze2Yd!YuacSkXUa|a?PKTRP`dHSW=j>HOWh?7x)c43*NAd-mq+WLq(3|856n7diO<@ zAnn&8h&=CKISDjNqV?Az(UjrQEP>v?M}ZdU#!i>&gL{<9ZUX0E{oy^b{+qocZEl?g ze&%0@zF|lpe*|c`;W30BPaOXt+StE&kL+E?(#G_ydt~ZE(T&;*O8=5VGhkEK-+0aPGr@|kak&SUS>3G&UtHqZ z#t#ir)bl)3*U>~FLoH8;b6yv5L0u?tuq@K)u`YDke^aOPGZpc-$8!^c9|GVPh0gcp z$yx91*9U-7L-Yu@pO4`86%@@YZI7yCfP5qyA0`AnP6e%|Y9BrK%GPXSP(4BH1w=-D z4iaQ3vSo?4=6lfwuf7r&mi~9;&g@r19d8UZDzMA#4U2wtTOS;X>}x6B>qF(;W)Q_8 z)~XPce>-0~38qvlq?F5mw%PK6yB{XFirmd84_dEg?sHO*9U|m3hXXC&ffkhiayqKl^1!eb>tJB zI;B@mjI4HacZJvF)nWkMnf?_WFz9KRgO;<49-hExBo4e=MQr55!|ld= ziU^unGj?-6qk9coep2bd?2XIV1AKRie=5p-l4X~?xx(j}@-!C30!jdq=y?+0m-BS4 zB@5oVFAy47JS86An|35NNd0!>ge<1n) ztVU0)nVlT#wKQx(epS6B1!`#5+#E&2=Z}6c&skNFKfUJ4R@)3+fvKR4t!eG%)Y?j{ zSRFvuXi#gK-a6213M-qGHYRSQ9z7B z#MKajn^B2K^GA_dNd=-BO0o1rBwG3Q{3UC-`t1=t-R2w4Bi8*o?4!&bf8P?Re9^5- z@;95S7e#~|LYT|aUr;YW*c@l{V;tuS|MQj(Y`uO-H5H4VzLVgJ^^ z)PoyB2Ryi@c2K1x@|qFZshe+}ORh-SOgKhu5Zul7hV1=0AFwt-ym|r%`w(e$!I$mF z1!Y!ar5{5q+3P;y6a|m(4nz&~BZ|WXlZ@EJkamwM6(P=^C#79~e}GRLWkhgvUUsbU zSzA35i|e8$?Um|}B=QoI?Trjex{)D7u#t5Q($nSl!^OJlQ_sD!Ig>gZ0NefwCiElJ zl5sDQBE&6fPhWKhiLFcAfVriU480`IZ>cr^tRr0?^Y`^p@DHWG6~8<1#6Qs7ZMoi& zGheof5xE@#+@hYsf4^i|W~N2ll@wbL+uLo-C;a1UF0ifLkM_hTh=ETm4Se(+$x6 z#`kw4DhZMsxf4x6@6}rpl0sqkcPp9hqinG#NCBG~g|fU=a5j^n&OpX|7}PYq2RnuY zxB105vdS>Xei^X(#{&dP^(2*JK)I{Qo9(wI@#U2R8e6EiSXGX&e}}o@FWjrbKhg_L zKagNtE`P;}e?_mo(JvfRsplnU7@%bfSeY#K%*mh_Uu|I7Tq=d98ww)EOeKnwc%62c z>*4bpm^$Eiqlzaa=eapOt`rW*F_&f@-L$Dq7?z+VNHzKrS+lgboF~_)K8Csfm1DeGW&JRW_t z`_51?oe%nOvQwbE=s8H)*!yzRyqrEl7$4@>_=ymOH`dbhpvQ^s zj*2kiE2KDG+#)5@ep5FA8KJZ)=rwcfa-~#N93$+XcdwMYIa}tw6p-`_)*kw8`ipk_ z$n55Tq1$C)_jf^9$J+H2Diyo#O<|1nmt7XNf5sJGKhPd(->r$1;a)n|MNRtWOTBD@ z-?r2Kbz8O1(xSwWcf6P#>(c@LA93i%B(3*_q0$7IcMKV;3;qHnv?3u-hsB>=&`3f? zGoOq`V%F;+O63XZT8!dp4Ky#YcZMFaK3Emqu~;Ei7v1q#BSsm3=WnML;KmA^$FIu_ zf3M3drssOLoNJrcWBVDKCNEX^5e^bzi zX)ufcLBPaY_q_-78Vyn|ckEEki7R(c*M2Fu=WI~bh#%pv;&EQjZ z)g~xW8im;K&X2^2jTr4_LQAH=zS%;hFvOoyZfBl^+G3sQDW)_8bzyVH<+wV(Chi^& z$@#Oda$^;d*iII7b$E}VeX!SiwO=*X5PxMs4?k7dhQ@TEsnN85QU?WtM&)-Qf3dKv z8{Bzf*|hR8NJ*je#btRtRMauzbVE`qUgH<+pJC4NUff!J5|-S5M6SUSX~JVyU<(#| za>h4Zh3zXunY~rZM^yYz{?(x>oUm+k{0SQAfa;V<$%Nlr8v5cu33Wsy7zKHX)dJ5w zK3PR31H*A{ei7=RO#r4GPr~{3fBQUIG?c1KdCVy|f_aJHJG2s%p=$1=N~-TJ6nv|Q zg1)B#vFdRp`fI`9V8+`|2b`gKzM$IOcSH8&TC40WREbJJup8F?4xmVr>dKJoj%}kG zhV3L6&3<*mHJ3`0oHg4U>3>a=O46&dYC9bv6o~IUFQX>PJY1Gyqk}Zif2Yq=0iOTf zbYCm`DQmMUWl$`A9Qe4+gfil)?xzi9w?_O*B^_;n`YBm`@IOjiVrVt;Q-#dsM_#e^ySen$eqc+Mwu zLa(?YL!_Eaq)gR>0=^hOx);X%lCJe+s%eAHLToUWr7ljXA2!`9(@Zpzkm zuMD2!cHbB*SBoJ=94tQmRYuCsKR>ARE(6{^-e28Ih$*K~qx(4Me^dOyd3qgy^=+QkrEeqVS3n}(=wbH-p>5?e3 zXe9LuFYIiOhx6?0g%{K*#g$;NIyZS6hfKT{CEPw& zSzle~@;sXjS=Uo4`)h$ZQMbjWPaSayG45#M<24{9^n(L%Am1%31iEt8^I9YJ*`X=L47!)}z z3tu>?eKfd96_YaCbe?M}?@0pglUm7^c^5i6wX%4{e_SQ$9R0shI!P}*hV@Uwy_tD}%e_2w>BxmEOyN{7JY=wpw+?FWI9Saw(RY+*PVwD;2lBsV1g(5^AA# z*OW?)e zO~Tt!;DIiIehO*V)DYr!uz9D3K)Uj3Vdle_f6LarbJ?nCPn-AMpgIh z83&7(39j}Ay%45Gf$827FmzB>V%pMwNO^sFXzw{uK+4|D0ra>fM3C5Z~@n!nc=6* zd4gtu6V);qwj0@55}C1$D&slAIQ@V$WO7|TW$o|SCFhsIz=!g z2#SCtBmRFw8KxoQ6R@{1;vPb3>c(MZc8UM84p1Rr`{6gXlrbB1fPKJwN4Cp6B3XEDmvmDBBL^YR9P`EOBjse%j&f zOhbOIvCu*r(qJZ|@uveT8+bt<@(ykAKrrzz$rk|gxd1Zb$hvYYhI8yr02sK0RGFXG zK!vXFJ}{ZLv3Umlpkr5x8Zu$3f5#jE8$a8l!~vxdiN5MPEc=6ChF_XaNj>*ks& zoL)j0i5er%W|{M*DeNCE%JdAHiAuTT_H|Y?$y{SdPtbZc91hh^ws^i&XnsGbA{+V% zE-y96EDG8D{43}8QLWoF%po`b3ne?F@>AlvOvHZFLYEhiR$`jfod@aze+233haXZt zb#}1b>E-yzwyzPY;rqoFDdUGKCj+ zhcwU5Ino;6nSj9=%~{`0z$`>Sr>~s7F{SPX2UvLuK@C^@dgex{jYh`;!yPx%^MH8V zc{vegHRjY{NO~4pM5SiW;)-K8>o>!BwYq+oR9jm^P_`z$d$n_(e*i{6xxdi+N17Xs zhkwzAGoll8j*!bgsYgL6*bUL>z3{$hsJis$=G4e!O@XBPp-9q2a$jJ0)VR>q3W>OO z4^M1yI+1HG#0vTAL~m8s`hu^m`$nZ#v_00P>22p}QR2)8+K=ZHN?UE(I1@x?EFV$4 zt?0j^bXGRbvfCQl8}Mj0BY%t@BMv0K>(k%aGXR)k(uR~!Jbe^=y!a~bz*qtDJ^vrT z=>P4I!TwG0-Hy4-XTJSVusIA6!);9h;=vkvI6m)SN5t>Z?w7ltO{yxUEVPlpN`4^7 zo&E9AXtMqB?y(ak9K5jjULt2Wg|(axUBjx%X9ldYURc$kE=`RiM}JD#-!VoKEHnn- zZi$gThhqvz3BV=F%Hd(X>!$-!!;fi&D+dthC!rrmjIo+@8_qV?E30uQEgo2p%pq1J zI|le<@%iS_x)R)3zYr+7w0hfT{WfcgI&GSpA@uERrVBg7RvTkB*dN9pA5Jy~GVSC2 zC}}eKboX#?ubTV>9)IYmrfnaO#vfM`cR$&sCw{8w$Gdx9>^|B5?4xSN&h99pe6;`M zus#PX?FV=!X!6DJZj^bjKOO_?AI6i>@uVqpH!jHJ@bJ?gwhup>93MVulpClX9!28p zA5T7xwED%t2p+*4?LPq_BmI2#(f((VLCHFHc6_>>mFBKjFV$ ze6~Mn0C=)H`f_KD%06r;K+Q{Jq%1Yuj=GLk3VDvR6-9Rcfx@=*(rr+UE*5j(W zo^F2s`1hw9#qtC;3rzLK_m5v6z>(_o0)M^&Khs58rb(IQ8w8lnet;jZzVX&uuf6ux zD}x(=xMW11`+xc?@b?;KVhVyIP1r+VcbG#GK83pX(yOm;e{eiHIC^Q6=4xzagb%VM zFM;CwtS`Y6tw898+=uP*e#b9+>xYI}IOEyKFAYp)newf8@IRa6$^z*qi%sV%87hfX ztV)_ylVtm03UkAhZsC5RH$4FAEBZmHJdJ1O4E!=JA%AnpIt)%+1cSw5Ed0fr4)8}& z!kRWv_I`R;!9S#xp-22bwQp5|B&>pHA%XH6DY=j@sMacpCH$o6)DV&N8YG}nDXrQc zke=9&l9GD9yaO-yAe3Oh)CZ2H2)%y44S}2Rjj7NApLqt&FSNX&Xj=mWVI%Z>DKRiZ zF9zj=%71(u%0;=>BJuy6;-q}+1jb}AHP>Cb=1>3ghf8Bqgs-Id=a^!nv0yP8jHQD) z+^WK{`@L0#cdRKjIovtKYZGw4N~x;@8Gj{$s{ixT_!r<3C=v64sw`QqP+LD4xyr*c@cK9jF<*&t4Uvulg&9+5$&pY{p9TxGWK!2*MFe zPXq3cV^V=Wtoo~PP@N?hu;lWxjolO{s8(~LtEYS z!;=WEc)kPYO+1CBLYXw!zpE0ny{eZj=GUr#y`~G=Mq-lFLS>775CR8ab^%<5v|+8GnAaHFiR$(qdyb?}EY4CVG@DEG{% z0LoZ_3KGP)=4pt2wXJ%odtnKvwaJZ0{-Zj@AMQD9k1HRUeK=1LyjC2_=`lbk2`4<} z4A&>@_SA;h@=33lS!^LIQNifgZ49#;xH^dK>zOxOacw+SWh2pO*ke(9j(>>jsKQNL zF4yLzr#{;`xw!bXLZ}VqL5Gec+Bj^w#9|g#J)`k)4sK%|bjk56d;eM`QBIEm zya{l+@#x>XS#%X|Xk!o?cEqY;Ny$ldDyeg(Ak?+MG7%fsITKwJwEkR1^Pfn+4DdR$)s6o0NEC(BuWJY>m3 z*Uf?2Sj^E|curCQ%*KB^9x}O!!4@#^^g}Meg6W2>rVR#2Poo0xg@3+nr~tnn7~!1Z zE9EH1wU*^~t})wytWdrg`vN~n7uwg|E120-*eU;i4j6)vl0;S_5)Nx1mIJG-NeIe| zxz-s&3qLnSQr!`^@qgSKvmX50fBCsri+7&ee5H8qmDgv(=ZfBQMSnvL!eR~_cQB>B zjn#YT2F@%7)g4|C3?rej&eLR`{-y(0p!)bvU@-K*F3#(~#K=h*osYl-2hPU|9>ArA z9<9zzg&`qT>S~vAEC0~g*UBohXF>iBRk!)i zth>zzt-H3G+xk1y+}1y{=C=O)ntP}!_+fIFQ0|%kBe^?7a?d=2|E`GQFuN&+^K<>} z0i2mm|F4H`tZNy#ae8go##!Biwr2uH>ql&>qP0nDw04IW?U~jPjeL*kHeSU$Vi(kF zEUsZPHn+zC|9_kwWAe}JFzUjz$z3~)_CPJHxXr(~;{HWJ+8t}Idt=-Bi|g!P6rSB@ zoxysTxEg|w+0Z2o{&og)UBh2ngS#s#(D!k-s;_6(uC8b3KP{71&$P~2bqRO?%G90b zxpv$T1q&~|O5~cOg>{03K)zc<3vKf|yR8w!-R5_U^nb2dwBD_C_#tlcuD@N&Y_DUG z8-^K}+ntK=x+C6Q`}p>M_J~&lQ@#n|mpr-jw{?}7xq8dq(V`gB-dqygD)NHc8Vtki z5Oj33UkokG?gHpd*$)^1x5Pq_w5-7%qCy0!uyk||l0|aHQf<)6H?AE>BnI|ZUU6Z= zbJy>*Uw{6@_>)Q<;=%T-bVeu4{XH7;S|ra%B?j3YunN^ytqr=>s@H$VoLY{N!(wgP zV%fDjE>ef$#Fu|e*;OwKb9j3OMxUNuD@YcV9$o-aC;vxy6)ToNoHKG~%_Om)HPl|9 z!N9Ap(0D1XA%Eq9P38pKthiCh8!X(i9P_NZ%74Ne789+#K!US)zdys<98A0M?qcM3 z*Lrb%S}0mN`$0`YExI?ssT)ieh(>g)$K6>PbEw-B7riaRkc(Wo_g5;$e3E{`b3>Az z?~^%|PVonn(4($>ZGqd|6j5S7FVyZoFu(EaRA{ZVDgOBa|M&A!+oq7}Ttq3t?4#pT zk$?K|#$x&f%|q%7kA6?2zf0K>YTVk0Hc7W8rdPOkI94gOxSrID)Pvl9x!Ztdmw)ev)@bR08P&cl;v)+?%nAA4s7Gz-`gL3_@v>g%6(H)*eV`{ z;Bm()z1E#O*RX@_AV{~)Hl)(2%MB5lJAYmQwzB&bkZX3rA*$?(MMd7aLk@}DvRe*G zG<43*H5qr*VQxcrEnptD(@q1y8@ul2(tX7Hqh&`fyF*#U-N^12_)3c;o5s|reE?ur zvLEroytNWTw|Zx>fxdeWE@CjXId^5Sgg*T`CeP`2Bfg`HX+#;C3f&f*<^FWaN`E#h zqcw@sEoKYFtVC`yQ^s$?ch|&lLXz4@E|tX#S=B~$AppmAl7)}(#D!|$7|yc%+T{OE z-Re_3k}$Mc!_odR95VfE_j`qZNM)4fm-A$yfm#gyF&wVlK0Ja0t=}8)kM%sA;ze7v z@E;u?e(~83oo)S|;qh+j#VnM+o`2K$ruV^cwFjo_BexPgQWcw+#cJ&Y|f zf=1YeYa!Nf$429g4krqR-8NcUa03nv)Enbs0pBq?7WHHLow_JFBwZUThkpQFBIXc2 zikrhs77A!qvFxcP8A{jT+NfHd(%^01u6CnAPE&Nr2Z5CfIIJ#xWR*;(nq$>Pws&&Yxn7D!^WaQx8{sxwIX6l>Z)wAA%);f9 zCQq^7c$Ox#;{lvEF&TPws(;Hn*-BR?4`eVHcdlbJO8q%zW8|vyE@xG#S#DhOswdIp zhCGOy7yt7OZEB*BPBtd&s>7s>4RO$794D}W6$W8Z?s-P0!)%P@T$z(`=}~1%G+E7+ zOjp63>ZGO~y!yDYCe?>O>XCNb809{EMMU0}9qXh+rE;73b6T(*J%7m2#8bxy71Zkw zopQf#YO9`}Z?At=*AUo7m*MjIl?-}y19a1Z<*V&f{rJOjb=eQwJvgbl_78uOZCSDE zy9bxOvVU+;(sR_q{Mpe+U~=tKD7P{=L-mpQ|1h1A;h4{0+2ElqjQIWC?2CkIurAJA zZCeb}WLX~K&$TNR_kVRlCo|t&1zi`$sF-(2vsc-ozF)k9DK^f03{eQQwgxdD*fx>- z-^(yjqI#>u9BGo9y$H3@9y$9@?pEzTotDpz4#)d=(_r)R*-=)It0pV5;0?=XP4;=O z`&4QLT6-DIQt7;mW)W5|qdBnlWi$(Ui)A#28ZV<+h1_Ww&3_WP!!nv9(Y%b-T$AxK zn#*loMsqL^zl?UFlVX`SETXlPt#vOU{jb+z;^~T8*uip5~c=e{y zb=0inIH~;1ePcPHfR<_FI*tYK>o}f4ypH4d>4Z?ekky>~*|Xzi^vfcWkz5wB@J-7i z!j8g^I^{~Q(|@om5_9w+fX#EuB97Ra%Oc(~nh7DPE^8Y6bfml6&JxU)BBtVh=ZYIWJZME6h@RCWi5!&=Ov()Dg ze+7tI5r)66Lc4B6`wh|Lz^9%@b0hFD?X94#9c;C>gFn~nqDbs<|4!}TZ|7>)YzNlc z)>G+VX@6VomR7a1WL~D_a;BSV?#`yNlbYA+Cf&I`ke!SScWEYnAA5l89zM?|npu0L z53g5OyQ<&L5@~dvna7AvvMUU{^W_4LtlicCs{30ac9P8l);#PBK~~4a=dW`S!Yq8x z#?)kQ9)gaS`DrqxRb>F4L)eYS>4MZ=KuutZa(}DGl9C}6qz#Y1`0T6EH*v=&2}w63 z@;a=DMh+;h;d4#5SKiw0%&m%(6|`6Qh>sbf*I(NJR#yN0gyZRHEwVGQdLE`oz~Uk) z&xZ-PWgYqy}$xqrqP{O-WcnUSuk&u zb$>AK1aEs6DQwiaud=}#naCo4pJ>uTRh)f^#Nh^i?xl4-OE z57sSeZe2+-Pd`0rUP;;xraB*4@P?J7T7OHr@0Fxlf!1D0vQ#>+Bw2*jD@hKleI?04 z)~+P+Q)_H(0@8ixyyLQy!;Y7oy!Pa>Q~Routq(`y4vS8nMDwDPtLXZLCYRg1&?I5X zr1;6M8MT*|sf_iN&Xc*A{1=4iy7S~JNhymjdOz3mOS%fZ%s??3JTBuDes6Z6Eq?*q zgcEat0;!2zB-be8+BJXF=D^(AF-^#_Xz}X|Jm~@%>J*Z|wXSM4!=q(!J^`vX;DxJz zV_kBVf9n@&I6Yf9Ss*ELBy5<7h$`{Tz`tPQ_jyLh1MpJ;&VZ2MWX(YF`4`2XG>^|I zMw7eA^gL3J;>$|F7tGTs7RgRT>3;$VTjlvOd*NIW(V<*H_cSx*Vv6wZCO_{}EKg?X zRa%g3XQy1f@2C+eO3(P4;L()AW4~}l$I?1c z=J9tkeM>SYxYZF3>?&>-SP0l#*NHX^sOGTBQ?^{v-j>g3Yh&ADj~4iweH zDeIKy2~@l_9DmZauP~idRffI-beOAiKK@#wt>F7S?F>fcx7orwV@#@w$@LBt5c1Kt zhw#Si@n~oNi*bwVJj_qhay!kZfwQNyyD5#NvC$1(ua@%Uet&0aMl@wAWvWnhGBt8T z2Zy!bGriBFflQc#zuKC_u|8eudFXsyijM;pI?16WLyKShr1PQrEDK&wT1}q| zYy&YD%B)(d;D7KN;H_rB6*0-+J|@dyCE*46$fRJhA`0H@+kmk?2o||GX8L)Vt{YEY z$5Qq9p{f+n3%w|^yy&;Zoh_lGk&^&EM z18_}#q) zW|`(W4vw>f`l!~vyO`suB zYx`b9(0}>@c8x#pr)U%E_FBAv=^SgkKy8Z_o^uPfQ_~z1dxY3~%K3|_&dVf~a5QVh zZ4T80`SUFI4)8>uCs%2<S-aQ^VE-JI)Tr`h4Mq zseh#K!V7-p_uK>zcEDgj3w|XN^P^J39IO$^PQ$jS$w2R9W2!Vz)lR1Px8*l%L*|zS zze=v{Q2K~p9K~S)WkJ1PQ`{*@8lApY(di-CPB)d-X_WB;g-&6~g*$!kl1$VmaB+fn zZssd_i7{$Pui>=o@e-f_pL-s>CAdY&EPv7Q;qF&7Pqmk8ebWK@@KP^uGUBEklnlBn z@a|PI(+uk!J@#^XO7p(lX)P3hs*I4_tajyjMA1?Qc#vj&O&sxT@>&`(I9&=$npqc# zG$e3hL)f&2fIc<5czQ=khoe zuIY+3y6~ft=}rNO+GK%-bw{);ZgfPeVgAn+rSXuK1@MQoBnyV(9PVxWOZx?FpNFja zE9V4n?&rheM`x=%e0;WQwNhiP#D7cc@!2ZRvF>b@&2vYh9I-XeRyi|iCL}MOivfK0 zFs>a3-G1?0q!Tx&D0nl)&{iaDybN1kNnRjo&NwbIH>A|vfmrD zaT8QZ$g$i0%0JjU*5)>9;9t?CA8_Gf(g*J;OlSgRCea% z*_|>S`BQay35vrmhMyUuJJ1$G`qHPb|0n`l9x@q7MG!21(;ZjT8c|fVln3|uWp(LD z6r-u54~XX&uz@^B6lQ-EE`K*)6mN|2KoGSDd4)eR(B)-&R>FvRn|guap}CKt@Ul;O z`qTd7ADfIEQd&{s_0$}Y0UWI$!^n%B{-w00oGqp~T^4d$w0zD92MU&3zz%Qza$ZbC zNf#&u0L5RIyfR%E&0^X%W2RLv*YGOzOQ;23dtY$#Wk6L^v|=5AwtrpOV|S|6tKC*0 zWz@Auds&eT5^^{Ztm@t?R?on+at=(Wbs z!)cM%#^WZGKjR2OwsHS)*4s12fT&(W%xAFL_;}lnxXq5Zal_pz22OPF&8s##09_(H z&*zPb{$rC#NDs|5Mt>NMu{9S``N&_5whp36bF_cG2SPBacy@eacSOOHuz*t4n|`v}b6vCFOx^Was_#R}1AiF^L4+(Eax_tc77M}5sk0Zt{IkmB4j#7AE!>f) zG4t>z2689-(&&!Xx~zIlE^{xbf62)$(2?3Pc%vlC(Hn<}2?tI4 z9B8_RRDT$^1Puj>7h1d54T6!wmFVFBAna0!GU!c{k?zPBY@xfVdUlBcm%R~W3y)Ks z?Vo;ss=hfs!2@D~JEztw?LM~CtHaWZIE*>igcAuIjhYi=F&W3kKX0bfofjisRmi8e z)z@V^qZO$OeLjZ63_)R5O~FxH9PGMiim^JnaDU-q`pC5jPvkJK8HgMvt7$naTMW9_ zXrX-mOz^`U{oX&KK%6mCcnHfVpjX9*NALmGJ%bt>^&BF~W{dOZx(fTwcwKFioSNl- zm4CB*3TuM-ye(U_fDPSzVNgk-eIEwIVJj$Pk&iiY8SIU@?Y`ng0VH1}BU+gc4J2Fv zG#z?d(IJ2)tuXfuwKj+j9cIq(UTCc zzsniyud4%dOQRI129hTVEabXq8h4c=&3_p_&)SNqF{kP*U1KpAKQzfiA$1MO3zusw zT36Fp9b@3uqHYS^O?AQYiFSb(#vB$^lSRQa7IjUbc4z~r=%TH8$0fJ=nlKQLCxqdMXMIw5Y(tocj{`y zSx-|_(!ep%6$IxFypC6SsbLF8Dt}DNyje99QBF>`t+vx6yH?&V(L0@=;dV68P^ zWLOhfYn*Ehwh-vOj6tmNCQ2zWRE_|Lw3m(!TydpGw!ZL-r&K?ir(?(}AWy}t2oKsx zTMU;|hKF_mKo7?#6lCj3MO2{~o4_G~AlIl^kuAC;hT@g}^-8$M0sZK6vVS-1GCe;y zEI>*@IIo1-ic18u&2xxtQYT(LM7`x26qOFaT9T@`NQH&XJLrfb6fHM^Fki}6AWloN zZq3%MS%1f^*&5fIFs>ypg?KP=K0k5)++B`Diqsdo86L%bTJULG zIzf#C+X`P34G>q~<&7#XE})0$LI;v7cdL>;MM=UXie@;TIT;T|P2KRj3C96DX{6lm zHH>sQM@M))%w@PSDumPE>XK$Z8+9(%dI>2vfhH|7<`CTT3;H+)J%2m{4c)^tSY`D0 zwAj%`4Hy>!I@=z8478LDQv-%dW;)T*K*V8k+CG6&{mm1`C1*#8Ds7x#b}zHT!kJUmuT*cV!}2FIIXu3&o+G%lkpUHV z*cfpO0}Cb%49py2H>iym4q!ICnTyocH96FoZ(KaDrZhPcp?~R#j@KCFTQ>cRpCZ** zmgxuo^@@xua9jxkd`Ki~Mw~@2y3+)&)6XhAJ zKhz>J`EHQTJPWrE5}OO&kf!Slzbo*Fx%Yw!Cupvy+kx2ILP4BsOpROB@_tk)6uX@qmET2WO`WT0q{@Dl78l-BFp6M_;hs{hk zcI{}d$>`mlO-AcZAWOw=;#g(;762Ob$%nRN6mw$k6o2@V^JwR3J`%>8xOp^S|l!sgvv2rhOOi{?i!4npL2Q>OQyZg_Pur!+fqR_dp_~Ec-#%Z%e+$s!^>XIh{B^2y zYa(q;q^*gxHIcR^(uPeW5y3aoig%5JBI}z+n}4j*Gmb>VBBqhZ?=p;dV&kx=vYvp< z7Dto+m4zhO)ny-Xm)esQ|4%Dvy(g&pUE_D%QEzD*wwj1CV~a+{l+BBdCzQ5f@ro8- zC~zC@uIs%L*UQ#jxt(sFC9Qa?wR813vFhBk`IU?@yw0*S@zft)eD_lT5ZMi3 zqoi`a@Sn5?Ol3{@i@MPi9mVTVCC*kT%^j-(6>s(rj!sYCNW&ZrZlpO6Z=~Ut6@Qa) zYSO&N9nQbRUax79;C84n>S79l@}lVO6dcJHP(PNT_r%W&RpEPR{C=bMY@u{Fs_|w! zC8mrXvVTO6OPnHMmrRp1ZW2J&ZFJtAQW4WzHrb(fNA^Pq zr}I;#`FV4?j(TbW28ly%0em-*7l*G*KGbI%Sxt)^UwJAx`;-1wraevM~E3BjA|hOUJaKaO6S$AXk_Hko$*KN zeN_m;f#B59t+uVpr;CzS;MRp!1E;^OR)fnAu4IWMe-@B~!qRy{}5AX8I6YrSfKImdjldDtq*FDOF zzvOYI3nrlBio=t9QZ5=QS<_FR*LmfLk6d3)t1C)kj2qsuLq6@(!heYfXkx;8YrdeM zIF#ho5xL3D%k8+rEp=Q;vrg(0d1u*xZGvTb0%DS}JCYV=MAqlN{XPf#Sg<*0UA*ir zjNMuF0u1S1vb-SyLVAYp`(UZamJcSc-aQ?@?SnYOj@&@Egcmh`eS89|zx$w+v~I!+ z#ZEu;dFC{geDnKE?|09Fn6TXD zNRkEhspn|@3DzZt{#;J;tD@d@?;4@`hMv>I{nK3&JYcOp9aoW`w{%d{(8Y3il#Egc znrXZZ7xKbw-puM@>^^Jeln>Ss9QL{+!qm!;u!91b$qUx@w||V^amh?+JeuVoZ*$li z6)`OP*p@~&MNKpWem5`#d`TZ|p@aYvcK3`1R4cq=8BTv@3In`rM zW_Zv))?_W@o)(N#9np(%z__Md%j}PZoVeVHZHPQrECtXNu(IMDh4u9}w*5_C$|)Hj z+Z?pm^z>$?et&iN<1Wk*XNR$=CONa*X5$=e0X;;~uw=!v#_CsSx7r`!!bcbsnCrJB zro}T-h%Q$z5#?sR!lChI0N{017n5r)S5Srh)+40q|EVqkzP&m##`fAS(G`^k`1gHng+EHY8C`F7T#+rR+K@D7e zaPYSKtk%4Sp(>gY({Jepbi3UIA}MyP-hiS?D4#s3eiSYa(!tT)=6QZuOwi>Wa*lS` zVNXJ?dVe|N^ruh3*R6VXx4I`-Xt<^l>Wwd@jgICN>=T-7AylWmCYCo`I*A}tcP*{e zPi zJxey|EZO$StL>9l@A9quH(}~`uiqN`VE7ron|K532B;AiI)+?PkxkSH)O*|aux|K0 ztcV|#{l6Z|VzGO3>+&0U8sMFJEGz2gZZ4?i1|QPGw5`9l_4l^^-qzpypZa@SuVWKl z$A9)7mSG;%@{?fK@>#l{hb==Q_{>AbqOV>SJV%U8X+K1SG_3NqnuI9r-%W}pMnZ9A)(Ff zH*`0RrwOSwqkg){-|MAvk=>%|$p3ohzusyWUd1&FkwXpV@SAWyC z=Pm|lT8z=Z-uB&%9>g$J_B@giwnRl{1PA%9p2>jBv{$$OyoQW<(;GwAIj|9Ry*6=} z;|8Zy8)veJ9F&DmH&u2x<&wYP)_RNxZdqhvf+8~ zRhsTviZ0Y@$#dXo-LetYBAxsnDt|3{L2$8h$0ah@0V!Md4XklA@$V-sW>51P42pH% zI_r5$Et0YJ#h77Xc|Q|20e6&oUC~6qYg|UR>TIf|Ah=^Pi&NKk?DWGnUV5kxC8<-y zt&Cfgp`@$7OeFu<-4k+U({Re{zF=0kp5Iiptq*HRG|2xrI-rHnYH&aBAvd}oi}%xW>Ji>GKIxYfk3Q08@A zz9=R%2bXh)hP6_^MVZYE<>XB#h3R8D0-|jc%%Ms)xH0C&;#pIO2N{Ip^Qc4Iqa&bZZ*_#z2EXe|4R z(#+*z`l>)taav50;@~P6iQ0q+Fq4}eD%13+M)O|gb)kVF~5*^w~pnsq^mr_3W+PoPf?~z3IwN_GTW& z_gb{p-x4UFwtbWvfITte@$3DQ7Nq>bar>*);+4>H#p|+?^%bq~fTh8v!a6J^f#(Wx? zt1;L?fzl*i!2Qzw*8dn$tLdJK!7!}3dXJc{M15^1(@S;<)Cnig6r4ooyk!pi;-jp52z^n;25YbRMp*r~FTLFPx&07;o3gB8E`JSb%v zH%==1IlODP^fdab*R8ad>euvgD(mo&M$+ZFU4PXIZ7WYtahsORCDy5!&9lQwYl&$) zt28|$No>MNj03sN?8CouSP3@|MgDdlEnEHJUTV-b^0Xzx_x?wj%)qfmIXn1n-Of@j z4-c0Q4GuuatzabVSS&->j(%cR?iqF&&N%@)eoKPZgwBD?lx~8|4IPFMaWXq}B3v%o zS%2_B$4xJm8Y7!|c(zZ)Kf3$L_|rRkAAS1iolicwe{Y$s_7P`poK_bOY{3J^AR~ zatF~UU~=w#I{wuDLpWs%+0|oU-V&7{xPQOUr1jTY9!f4Avx9iL>62W~atKJIBD_-Q+0@BL%%9X;GK1}MnWU&dj zl<5|2dtWn-HND}oRR00H18YkZ4-77mpR~Dn7LZxY0e=dR`A$`ZG;@e0&iWci9e*A8 zcFZV5Vm)QKqP4eKYl*R(tZ?$B?Zlwn#*+d~H3K%;voZ&jIz6w;%T}FpPJaVOn;3wC zF-ZFZM=oPbSspsu6dzecfvaXR?CKk@jO=jgPCCq%Y5-7+S{^41pSyJ=I2QWpGO*RN zL4)mo9qTbXjLa~wHBno3y+mUsuz$1TgX7Pk{+Ct#C)W=ieKj!$=K)Dw7I>?IBWOHM zdDu7*{MZ0t=*8nfyoc)#C7cUKs8HKTtO|>ej>@fn>0t>w?kRhfZ!(Yj(5kXpvQRrBP zxqmWjuUKu1$Bj8?>jZ|gp?_AnG!ZSP6OL^^z06p(c9^>IA}sEfNm)Mh~B_;8f`~L|FE_2Ijz6U*q zetOhf8(Js$EidVo9qutNS#b)PGj0{g6~Mj~;P@?p=_kckpHZ(L9e)4-WBma6cq^`y zb_vy_;^KmA0r;E2`n#Y5tUb=Y#eYAz^ZSb3mrm5$##^~k>A0fDLy)U<20GJwdp5_h zHBS5QXe@_mz&?=o=VKn(BZK>WwR=a5$P`vIvBR{1Sc!1)lYR(GlyS?kQq*--kJOG~ zJhANpqh3i=gp2pN+J6C4MMY-I&OISHq0!Ni^VXg5N!kdc#?6wNJ+ad0$CIxdGKA2U z7G11kH;3}e%W0|C;P?)!pa5uLUPH_zKAwISe4vxE@)vnY#F?u6!;Jlo(25yX9KNJ# ze=VCuKJ}InSHKx$i!8o$Md%pRB5h z#MxDZpM=eQ_J64c;a1fGV&qiFS_wuEl-#sfPeXP453jf5&4H zK7SStzGackmZVCg@F&5b&C1-RHzvtNSrg5ERVdBS+Ov1wWUus(ev9>@>>&sLc~i99 z%n@Ed!9T}PVq8wf(DH046%M##^7!%L{!hn0KKbtW(Sh_VkF$e6fYMH*W=J{mJ;E$-n;agyI5fpupN`JZ(f?kln5#_^v=2rcLJ;aj@rTYnPjuy%P)+HbsOfq#ds#huB)K8Jc(PT)_=J5Y^relAvygJvuV)Z$177W;Ggjm_%#kq zE+49Qc=W=Q-qTzIRhTCFM9>2B7+%pKsbpRx_Yw(@kGYcr>f=AG#Y+8cyTazJUHCHFGoj{@BVkU#sloTU1zTNoS>7_)ZI>kZiFGug`SJ0t3bwvuWD2 z6^FsmYr;q`AY8?HO0C`7QFoXEW)L06C&{D88*hY{!|E40+BbJDk*0hvg>_?Ic4`ym zx%tyiJxX88_x0${MXd`WWrOC=MeCo;)WmstD{jDkyy`a1;0FG;?SIXHjOY@J``ypa zmzN0)w7neGqiRTeE{phTqq*+uN}li9Kk|i&9g(I=Mm>@jk5l*-#7d=hjPdp9Bd@;e z7k{SStJvpef+PbJbhpz9kr(lu0@hBLuamg!_|yPY1Q&-0O?SuG{%z5q5T$btMiy0F z{Vs=l1j)3|D&(AwcYjrutCSp&qtV1;-I~T=Y1hB>YLa<{G60JxO@}0f^)xcJLL28y z8-3A=Ets=y5xbG=Yzd~6JU`!9C7&X~H-L(5NM$jFA{;@Hcm@mcPa_*DQ72w}7z%r= z1Ac##m?z*%>4$f-F*A<6I^td!S4w9*30HgxA4bdiV-P^*S$_stQ;L4dTDI^z_!2E~ zY0j7&));dM$^y7~Yl|==hfsZ>2Aw_$qfV?zr#=A>5~n%`8_N$hQpa9%&WXy8yw5yFXnBEdHKu7$f{zz7twgf0qzqP%S` zYtr6r{xTL}Ri`w9WCn!em=lm%$;%Q@3YH=lstd4wRA|(-I<6j!%pyi+@WTjMPSx); z{>2pfEJLgD>oP5YqPV!$kJ3G|{i(OYL+U~L!<$D6q<_6!sFXI zWi~Y?*njpjJRpkTf7zKw8#Xgj$V?zGuokh&OtFtW>l?#6widHk+-Oq6+AN)e1!-D$ zqZt|C1r7J?T_Cl~4|y`+{A0FH-s4E4W2Ev7dmV}76uMvS{QSjTVTqF0R_ z1B|=mmZU&n#YO}L8q&`)wP=?~W!QG`8$G2b0Jq~5PHT`X zl7H9`Hk^Y@K<#P-rl#0EhvlL_sfpB8fQnGxG8x0;7$;k$=eU+l;fw%)59MzO^!*-< z_kD_Ct2f2NBWjRIwrDGortvycF2X(EP*{1$yuEdM5&3Ezt>Qo9yK^eo!G7H^24rta~ zY1<21uqTFYVVDCZPo4?+!;Go#sfK~}!i~*(yG8r=LEU_sIF0UWdS2LoF=9(n=dXI(pBYfrd+&Xrh2RDRI$JKuXBF@bg{2+V5l4q?18n$x zfq_%Uv7@W|ZD4L#3nR6hFJLS!M54Mlj!1~ZrCQn=mD`|4?)gBlu?|~QqdcnFcm01m z9Aq@Q9$ga*H_|iRB?YA&)v-Kd4aAE&wh&>=AOF%uf*9cRLt1J^iral2353@x#Ri^< z{dBMH=HB)jN-~U!n~BfP(bOs5io2?24p*Q=5+qlu6nN0)5a6v<$lq0vF)XU!x-}+7 z*W>IaBj4DuH6dPmoGJXb+=y*Ie{?Vy862=V#-%StPmZ9yEPFEaipKq~2S<+|*NeY_gG%+X{geLa zNxg9J)qsvV)yq!?kDm=7S;v?4ii1Jl!+bpa<|tf)i`Ex#Tng@~4!p{z!_f#&S(PI)N6zqM{KVtxv!{KysnZ{R14MfKIs9^XIA9W=9XHiJ zc{V;c`tH!<%QyWW1}6YDhW|c09F7|Rz8Unt9jpL=!9IOT`sC@z(HO=`n+CTrJ-4tZa_0Yx1m{sg(+Z~WpNYDd`ZtQ3B$Ru zcp6ePsE9LpDZaZN12lwyRH@{{1Y}$*b(`q?mYdGrSlSfU*;Nv?y ze0G|SUR$sBss{bJ2L68uAzfDvy!L6+o#87~8DKSjz;Ii;Vv$XqhF<3U4u`+XOrU0F z1c8j^Tt%)*F4L=m^_T-xJHA8}9902f0@xsHL<0=E+?RDH&BB7a*f>~i&+-6Y*I;_? z`mJJJ4=cJbGF{uOChC2>MVMd|bTmIm;%PMmN^%l(tj=)`w-A3be~w{Bie%~DwMjEGp`=Rh0N1WzGy*Y9a=7%|ZVY-$vdIb^n z*G#)zr?1?oOG9GDy9zHm3Y0;864lxuAg^=@Zy?z0sdfhX>jzGDxrfJw^PM zV9dKchdZoD8>>U!Pu{A1=3+%#fi#t z=`dyG^E#RAUt7SnRqsXww^976+x{ZW%ZoetZHm!%@eS8wCV&cFs^V`)-Ph;K5J%fz*vE((=2~w9qI-G?z9vm{V)X^_|VEC zrYG3DWjTMf5=Dd8B3Y#P1f1otT(z-$w85D6{z2lsg>P!%lAI>o$p_v+H>x&$KaY$5 zZF(!6Kvw-jY&w(5YPI$_!&*y$Tj-luiu)G#t!Fi|J?mO?I{bwvUa_Tnrw3XpjYOAIjY2AOC<;IVb8yJiGmiDa;H!|fR>^Aa` zvEOxjXhTW-7tJ;b`4-l+h1I?{o4sB?+Gz(KCHP-QTIk4eI?Kv`prTX+{4zcKzvMgF zI<0``!0*q$Z`HdarCZ!&vtVBFHU@r^=*G<;zQ2&Z7Ir=;eUCOKS>{8jz1YbfaLy* z)A~tzoB8&TvwBOaQM(Pek)r(Dl;C(4UnlusUM3);hnVg)VQf{xbe;2m38RF+N#d*I zK_yJWXdz)3)p{Y>i?H0eH|&fl)})G&1uwz%(y6%xC-PZf8$2;wy;@fP?J&sP6#dfB6MINTqX$$6Gvce8mBnvMRl%l> z?YKD9qFG^lY8t5ZRYnSe!KBh~=~|^}?8q;djIoN-LWlSYV8Aqd#}#`5E(F3fi6SIt z47bQ7N$mc+H73P^rh;lVy@O`U>)VdV*N@1f-X@4456QQr9Nz{(R(&V7@9Y#ZBxb%4l0s95T-AH!q?CX5fGEpdvhkgG}R2|q3#S>5%ru3$w?QMzc z$y=|RHLF~HqR~G#55zfX2#TVjQfX zY$Vjlaa>+-wjo=jb1CdpfpXxB19f>zTmVMYP;v;1B&s#$`06zvxS!|o{G48<()ol7 zsL;=mU8J*Vs{|C#gn)Z;AWD?;Xe>>lPK-+y0Gtj|5nM=`1cC`+;B0?HP%f@ciif(` zW^9}BQTG`Zbf8qU@P!{JU8mHe zXI}&rn#-G&8R{DqS=WE<)D=;eH!GoPWi9@VdNo>}BETwa&64CdI*4Zb#Fu%I2KO%} z@#I23{{lD*dnFcXm-8v5dP`l-`KJUk&E{{GY6_IbizLoz=fl7$ph``XqRg}F`il;X zW0axm&abIM-m%e*)r5|LOx5MGC~;>6^O61nzl)5sz%TOb9M^ySv+O*bU=ICs3e6xM zxCWY%f?^5Afj!ZviulqDt^6&W0BuX!;!RC{AM($P(LNwla1-r|X-qC7UI`3kczR%f zep}Y|Y%V!eg8grX5ao{aHG1j3UvQ;2xhi#y6RZLgoMe@HoM`ftO~IRHJi-)WkcQ(m z-fqi232B${5;=cdLPOGjgyRIvBj#W)u)A*5nA?@`2PB}O2~F?HgrqhL`pM98^Q+1j znYy>iS2s7A>S&t=2PD1P-Y9h|gM-7lqrG{Jx4s~XUO#x5Jl=r=3GPRro|d!20|AD) zD@3i!5Vk(Wfignm!K?rLupW*ABdvW5Xr-aAv+0qFSQg zW`^=IJ+k*7Sb~=7i*>Q_e3>Z47~*KGLgXcFi9!(xPg9g@yM__N@#$)1d`eR5P-7B)_V8 z!mw<3z=D$-L=0a^3Pv#8OZ9!-SC|(qcz}f-=l)^VF+FRrdeo}XOi7f$0mqHQ)!RK1`cH)xdu?2domVIdIM6X$lJ$=HyF_U^j?d z*M_VN7Fyl+YmacJh4+b>V)tK?YkmnWDGHgsCb*^0pPQ$=EZMdr8Ah`JeUW%p#|LQ_ zT5q-ya=Q(swQ>0E*8STE!~f}F^*_o(Y!F%9HGbYet^ci&wo>h4ZT;uX`@Z|Ws#5L3 zax;IDjdozM!A2Xf@XvbJjRg$r2jZ*kar=CoQVaGZhL;mTg*PT; zywYNuu7#s@n_6~=od6qFZe&Ti9%2JZscr2*nK{&JXH#x9J^zWjQ7?}#E%*`KnOf^o zS1S0O-ROpnv~l}Hg08ct9yh)7FCcuar?WHqh zo7v2*%>33q^#NUHz;V7~PA2ICuCVAX<5a)kNqJw{ak7!5|GeK-pZ{4&412>6kS9@T%*;XuKq z>u28_s6#m7f1*bH!~S^q;{aP1Mzlv?;47C3-i92U3=a1Pqc>FN67m~4>1!^5;+!RU z0^=@FdAhx~-m?9^-vf;xU<*Y)>LQzRy!B4_FRBBbR|y<_^W>sH>93f}bTm6(&M`JI z(POH^DUFrYY3 zxpQW|p+R*pCJ`lcz^>@>s}|Gid3>2p=vW*=VzB3plMl5Oi}<%Wkl0xk6o8R>kBc?PuzLM=1(%RKuH_)Ec^&@dbajbcX+V<$LWdy)l)ev-ALHrQ01 zUaL7!$FfKsz_lGADRYN?*KWP?liDuIP z+<-TBoUDKiO#FW=oe;}GMN;gzat)j1WXW-(p##CQbgDe>2S7||0 zCOc!HJyLz*NiyZ%e6ehPk}XTdT8)KvcXv_A&;zk85z#fPBl5;$k7q% zjI1c%!M7dgZXL`dMpDcOr;dj>=@A@kn2ITbfW{30Ocv!>93rFY?wJ+ij89x`58<5{~#oMdV(ija1Srdz0?UKHy?q z9X;X3@`itgUu2i3(35R-kYIE~_Jc2!npkC#rFeE`Zk1|2U5)Z&IsYxbZbocy^%ewvp1X+D`bj8uPiOO8a+<8~zh9!E@Td^z z3>A&tn2_F8Is-!sK~V#LYE<8otQ?&b(pdcF% zlY{jw!ik9wpTe3lo7=FA!+aI%&@ac<)^?s=vteD?*EmDQ`aM3iD}IvPC7JHb^u&J? ze=Xh*?*lJtuaB21ovKxF{s9ddP%>Y~8QjG-IK!ysWRT*55s5JGgRTgSyeLo9VyF*m zuTA5oYe$aR4oIP0k<5!MFS_djtESjUQ$|t9cm4g53qWAf12CT3F zfpwgAB`%gS#B3{5oA~KnCuI)1AVU5Gw*r1%7JvXJSP=kDh$0_zTtJY7Oe++7G8?Zl zSgV1K8Pp%D(-=F=@x$dhq~D!v5L=pt9ID(tJeeh>3{EbxtVmRB1`!TTV)}n|S2kjd z#jLzzj1?Zl+5qd0_`LaB2yo^r*F zAW=YZp2xUDLFGjwDu~GHludt3AsAnq+l0$`qn_8LO(-o?6{jnebn>s5w!Z{H0fBx5 zLD4D5Kx{ozEMhF4P6S_(@0YT|>=ncRp(H6Sn(E#Q=+-C$4M;DOg7&w5i{~XTJr>t0 zHf<#d#zOO0*d(Xe%7pu?7Vl3PQFBmax+2C?f3D1oPVE1I@)LTaN^O6(0O2pkGuVZg z$fj?-<#zclwBt1qu?8*NR=FD>?7nFt%m!Q&D>T?aHX=~~I}S3%e>Oez8e5IP8BZ?0 zi?7Xs?l{TOF=N0>RSMSe6njZrnqeOqh8>X(wBwgxmuQIGn!pD$cAw5t=s1WQ;V#}x zZ&C4gA5ZH)!Y#IwB|v{cL$>z#iMfe`OvB01fRj@_&XeS371+@tnd5r*W(5rC;997` zRXj}?$Qf7kCCP-g^Vmbo6@aRY8rfY+HZOMPl;=@|86q|q<}q&zwi~VnZaM5W&@_Aj z>`U?kBS|!1c@j_84R3syog^`PjulYHae+tb4w5s7m6KJFhRT1HK;MER#IJW!kYGGZ zDaY~lw}GSZ}VI17^y#`9|fYCc*g zIcV;bT)5b#qEGS|ctm_sL40^yWV7qbEMLG!A70jRPX*0Nz-GcFk+ZGxWO2L%T)BEY zOV2M#9g0DoL+T-TmXvCCBJb>| zJ~~R(#6Oap+5TOI2`fDM{R8lCvriwFC2Aw<-MTL(}bjG4i1zoq*dBG|J@#uoU zAd>~V8du(PWqYo^`7D__sUK76aRq;ia-TBgK_dG>I&==Aw>i_zPs#IMfZt9xdmh*6 z9EZgvZ!>>Z`Qm3dRVHTRPHN2_(-L>jeRHRtsLB(9Ye11no(zC;5SiK z-J{f1$sKR#C|aoH52u~VoOkJqbxTk_!y-9z-Q|B3*T@}Ft`Q|pBl~v&#<2poH_bj91UP&yhs8E!97cQ~p-km*O4;O0C8w~h%G_kg!+yBdzHPwg zx$v+F=l_>T%x#`F)2$|2J=&KdT3n$F;Y;}M5wT9DW){AJINRxp#LUzg$03xNcR!Dd zi;hCZRSG3*TK|`S(fvG*t~*qfB1k(`yXZWEr1BVZUR-j4ak7w-#Hd+Le(6dvKOIBf0BbwDwnl4?b2 zbdfGr2?cn+O;fpAFx5`!BB_}!&!txNU~BUj9&jG~gaN)8*-q31?oJL+1IL!;CcJ-b zO5hcKHN%gd437yK8EU|8wy$+U?*zY|3)r7t-^jz4)k|!*Q^M+vITm>R-kiKCheg!W z+Q7)7eQAnFrM6okEJ==(mTVR>67E9Qrd9%Uu)KqD*6nxo|9dHXJ*l9j?6Y{1Bd^8m zKvONSPu;0)K60DONK1+i@xOG_t_Od$=egm|`(6Aa0W{7wu9VWNRBdkI@l_AG5a!SQ z^X26!l+XhN^ha@Eo^lq?u7SlSKC7RZj}T5o)sC2+YPE>-NFZVB((J5>d_Hl(y(Lqj zGK6cF+KhvZLwdr(sgU8lZzNSFs)F8Zra)^{h%nPavHBj1jOcu7RZW!~mY#okUqXU> zPyvyu=E^tKGovQ|DD5)6uhJ<5BDEsGaivw$Li!cbC#a~X)EYgKS|r+FnDfTMl zX$X-rbih)8w!FHB{@h%s7^pR(@H?=Df@NwZ{!4Dc`lHl6!&wl%)EMN?nu zqPnH+ji373{PVZf1|H1UaB~>tt+G$93j$qa|)uCyEN25Y|T)~^IiJi z+wcD*qJYNz80q+nfJZN0-*`c`J*iquP5$!Llxf`$7QPSMfVFr&?uvht#_-r%?QBet`p*x_)-z5uMGq$NkQl^tNa?;UODuZ(YO&!P*uhNy5%jQ z*W1`)({J;d&Oms&Bic&^@+(_dKe-PyZ$s;w;0>c!_Olb?0g)qwe`*oh2bmEu8y`5izndXn5`Zuu_kB!ff*)q|e^o$GmqdOkoQ$qs+uD~9?Uv$wE{W~0wk z8ct{R;MdM-{E9GUr_Pw2^)Y6r2V*GNR}8tM;cDvYx{A6wt2TA;rl4d4F6Wb|w3NTQ z71rXj0BxQ`pJL`zu~A?Wz2FTn^G2`Qo~`DbBs7N#cotfs4G5{F2L({bPxQ{=Au{av zFt)^0Jk^(gGCF_Fp40>a_yaT-AD7w$j6G8=!c?*$B}PK`>ae9uRlZ;kqJ1jIQAFta zs9b{y-9Jq@(1!3|EEtN_acNKzqr_p|MvwnA*?3q~|9-)^lb*=yjL%6B_)Vz4>~<$q zx?Ea&yluz=oUg12!TYo!+OMHzGB9qQv2F7-D`(>>YD0gNPkT)DcU@Ccd#8kqT2VJ6 z=(k*x11-B(lFM?vFjq*ZWqCcP&!Rjq+VZaRa+h$zV^2X*zRG8 zvXr@ZXB6=L6C9%JW0QjzWs=L(Ec$1�}E*FvJ?GRMVokT^~~v)EHy9z`uztYyh+# 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 z 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
bv>7odk9 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 DQaU%1 diff --git a/Moose Test Missions/Moose_Test_TASK_DISPATCHER/Moose_Test_TASK_DISPATCHER.lua b/Moose Test Missions/Moose_Test_TASK_DISPATCHER/Moose_Test_TASK_DISPATCHER.lua new file mode 100644 index 000000000..914045274 --- /dev/null +++ b/Moose Test Missions/Moose_Test_TASK_DISPATCHER/Moose_Test_TASK_DISPATCHER.lua @@ -0,0 +1,13 @@ +local FACGroup = GROUP:FindByName( "FAC Group" ) + +local FACDetection = DETECTION_UNITGROUPS:New( FACGroup, 1000, 250 ) + +local SeadClientSet = SET_CLIENT:New():FilterCoalitions( "blue" ):FilterStart() + +local DestroyClientSet = SET_CLIENT:New():FilterCoalitions( "blue" ):FilterStart() + +local Targets_SEAD_Set = SET_UNIT:New():FilterCoalitions( "red" ):FilterPrefixes( "RU Patriot" ):FilterStart() +local Targets_SEAD = TARGETS:New( "SEAD", Targets_SEAD_Set ) + +local TaskAssign = TASK_DISPATCHER:New( CommmandCenter, SeadClientSet, FACDetection, Targets_SEAD ) + 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 66b1ef2511e4b8b21b724d00092e7a1493e3efd2..1535a5faf415739f01250afba9945ec2ff54bd86 100644 GIT binary patch delta 643 zcmZp^!1bh=X~SG8{#~>0dW3&4(l29VU`S_Xn7l?xx_)Y~t^Z*Ifw{t({~tbC>e>D! zdBqhkSug2TURzdrNC>Rbnta1#QgV3T;iez&Z{#(KFf|>$`19W0^7A{D|5)l+h}xCx zx~sS5u|;P>;r^Lx!;2$wpP83;b4)5Jo85G>T!GO!lX3Ou?eg>X$j z&dKw;Ik4VD<~@7;70T4?YM{j*oQ($}2x{qyNo$KlsaGrglep9%O~ z;CJKqf#SJMOyXR#e!P0fw3WG3A;x*GcL4L|%R;>u672sjEKX}u;F)b8th69#$_1a+ zXw7*ldfOvpbGpx+)W52a33~r52>MPmZg+jgguGo8ijH!Q<$$vg~ z^&BQIqez+1tDBpzIkQ#Xy!(BTyfx=OzwoP8#j~!jQry5AzFB3~5}|aJXNF7dG$L>R z%)ULhe{QE)_pxJp7z4bSSwt8ZwkJC=`6r>r%=Cjxm`p{F{P=fG`_e_m$VEB|J{O_% zbnc~0y3DpR4AZTbGQ~1WC^Af+y_Cs_`E5AE^b0@+r%xOMLr}bhk;QbrB}}r@HI^|+ zaejx0nHfXGGJs-C3<=Y%+n8jgFIdK;#avOuF#YT@CP(IXC=_O18)2$XT3Ft8Z0WcK-0dExpLwRCRYDRu(acXgZH!B-RR0s%P LvM?|_tpV`>9y14p delta 142586 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�}E*FvJ?GRMVokT^~~v)EHy9z`uztYyh+# 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 z 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
bv>7odk9 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 AH2?qr diff --git a/Moose Test Missions/Moose_Test_TASK_SEAD/Moose_Test_TASK_SEAD.lua b/Moose Test Missions/Moose_Test_TASK_SEAD/Moose_Test_TASK_SEAD.lua new file mode 100644 index 000000000..f69a08e67 --- /dev/null +++ b/Moose Test Missions/Moose_Test_TASK_SEAD/Moose_Test_TASK_SEAD.lua @@ -0,0 +1,4 @@ + +local Client = CLIENT:FindByName( "Test SEAD" ) + +local Task_SEAD = TASK2_SEAD:New( Client ) diff --git a/Moose Test Missions/Moose_Test_TASK_SEAD/Moose_Test_TASK_SEAD.miz b/Moose Test Missions/Moose_Test_TASK_SEAD/Moose_Test_TASK_SEAD.miz new file mode 100644 index 0000000000000000000000000000000000000000..859ba5ae10fa491930805a6fbd0fe131440f1056 GIT binary patch literal 19313 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 delta 142482 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%0DyE=}xjd$# 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�}E*FvJ?GRMVokT^~~v)EHy9z`uztYyh+# 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 z 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
bv>7odk9 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 delta 142467 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�}E*FvJ?GRMVokT^~~v)EHy9z`uztYyh+# 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 z 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
bv>7odk9 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 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 877249fe953da61b4fb3883f7812cca39d788cbe..65adefd529930261621dd44daaa64e43d6f589f7 100644 GIT binary patch delta 574 zcmccio^$(R#tmwcg1ctl^$7o9q+iC!z>v<&z#ulwkx6v=g;FM#`l-RT{)Y_&<_c^6 zfB0mnXZx4r6<54uy`)!pZCU9dA+Sno@(q(o$>Dv6n|{2%k=H1~)O7UX&wG2z&+kliF3{R@#-PdR_0QL80Wd(0nD2(3-w+|u>ZTTIIT&6XSRW` z(t@BV7kpZyHRq}5ZI6)6={|Q-|EkiCRUIMwzRDRj7O$%Ov+b1G+6h-B91}dZ7Sgwj=> z87{Tch`jwX`}W-axt(U+$Byk`4De=V5n*7M&RE7IzMa{TX{HH3S}aXpUCLxCdgRBy zYucACGDa@aQSiA4rKf)_WzuCjCN-VWkx6s9ZyA#obA$}T^r|u@Bj&jV4Aa+x7{AOI zraviTa$?T1V3@91&g9Dc$ctfmVL6kdN{%-JLwRCRYDRu(acXgZH!B+h5by$FKQMI& H`GI%<^?&kU delta 142511 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 mdU9gLV3mY4(`a{@ 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%0DyE=}xjd$#LSMne zfyRQ#7i;#4uMgr4vnm* zvr=Fjv3l+ftSaYchAL;cQZMHAqIYDi&MYqKdnl$GB;vG*pY=$Qz+bUGtQ1~d;?kTb z&7)+!D(CJS+^%Y*uXll?4pIOV*#Pcs)JZbNPnuPsCwHuz{C}+HACr2(T*WmdDisAk zORDMhHELvldmM$VkE@mi3apB0j`w)%;;zTTOqK>aiwlN4GQ#NBzMXFXa02uqa;Jy6?US?xf7VKa#{^%G8g*n zM*Bx%$x>1{uYWs0!i#e6u9?9_4i1a+oL9kZZ$0*CU+E;fJ?y_590~bzWaakiE6pD4 znhsRGHlQS0OS5hl7Otvct*qq5bv#>eD@D&m1yIcgBc)-8|47di1VCQu9f=!2u5GK1 z0kqWYMM{SH=2ga!MIL`5)?)O!uvR8@GsTCbp{Rqq-G6aLW)Jc7wlAraRx9r=c*f;d z^EOPQ)QBODhT#nTBvw2`A*`SzKGOV%t zHA)CE`hOE|Fm{B>0i>@;pHLr=-hmeGdY{+CcdIR7!2{L}0NaMDrVUyvJbo30l9)u)JL_re3J{7@O!jt4^ z6Mq?VJR=$SGfY`Aie-#^k^`Jv^WV!-{(SP{Kn-8k?>UVfqmQ_9qUK>aSJr%C7dz@vX zr+7y+Da#RVdOv1l+4u-#?_7@Fr;g`@-+9gRTHkzhYG7>Ep3+#d6Dl?;oZ^jD>6_~} zfSr7npHDV>Vfiubo14gF;l~qn=-Z6VT3*eEcxW-??I?Um;&%Bg9@LAr3Qg(8b$?&q zeu-NAwONFsTH{aP!9;pq*o#1jg!66t*wZ;OBX}k1v=I>{ZP9F== zz=|1CawkUn-B{skvBKA5g>NiMWFA(3GX~?WSmE2T!gpeYJKL+_uoI&LOir})HOQbB zCGlfqW}`a9`CX5_(1pvTw)!7!*%)k@to4lWZeWOJGcuG|#p>5I+{kI(KT(R*4C$Ts%X~zPl-Wla z5>-Io3!(PJdI0OEpH#gw+K?)L0QJOZXohulXPaY+w z)2-KDPqy%}#VHuqonO$rLcUc~yC47nPXa4uL+@gpUqB|O$hPRXyvYOtgSO@CSBEgd~c7$+!<@0410RL`DhOqDpzn50XICc*fEN7mUm=WL05 z#NgX9c^am-z|zoG*F(OuNz7YHfIoWhM%Ae46gLd|Kuf)V&hX=m;@|lf)ApDv`(ic; z-s@GGk-MEW-apbis>CyWPfAWMNgINU%eSg%$8D|zod&7SoPT?+cho$=`7+U2GJa;E zwbSJchi1~h&S!ldLMKY;HA;ciRL@#tD=4Ei_M;6=6OFxyhQll8Uqgw1{MdpY%BZ}A zJmP>Q-z3$w!nGNy>2q?^3u0PAu*+UEebz{i-Gl-3-Ov;6j2yu@T-3U(F^&VODNVr~ z_)%r29-pDB@qb^~+NLJ)`XhG*E}qe+LM>w3jcrG;X@=#J~FVlcV9caOU@J}V!o>K8y%ANsEoH~>`5@E_!G z)Bd#%jMj5sEo$odHHWy>0^&FK?zIN^4FYT>nnZ7WK!37z9=SuQQM&@+8;*1kO#|HJfp?MoZ)?qx4yRMo3Q9>)?&k|^YU9>mF_&S`Ag?1fl{eKcZ z91@d-+~T&az0pL71^!$G(q)dbdDBh(YX z@+QnWPJ;z=Q!GPAi=KnsFiF-|Mr+Vl(MQ+SNZWR)8e*G{m#d|>>X&+M)=h7xowmg+ zqM+VFMQz(_prxvwx}v6fYhAT1%6}H-0_5fYw^)6vEdExy@A57spOAY=sL=I~8o+hgX7s!_S0p}n zrZEuqw7sBn#PxJC;rr`k<76XgjDr7@bt2$5=T+)Dh^=A%a?hKcT8c$$M1SC{8k%6S z>j1b>%#TEEID`IdGDz`8+?LMzW>}IH9xmQFH$Hby1=W3!>g{c`-BqoogP{bCE<eu2u5Glg^Cvuo_F zl>@L2U0!x$5ZYZL`i6PR5`T6UJmVFeOK%C)Rv-8zD~ZyD{d_4NrPQJNm-6s3cvD$~ zaegdbaU`f)3zS8P!$4YXv(G8!{&K_=AJdn%CLBzD30fANRjwyid;21-f|=nk?8H&j z9TLHSH57VNy?ezKn84ZRVQ*}|6m;lQ(%owJvr3)2rJL8^nD;=$eSb@Tr-^wIN)U$q zDJ)_R^~xUj)!w`s{qs~F8_>?&*;m!IWJUND8;`tE1{KzQN5vA##fC`2kgq0se z2EP=~@_IEilcW(*hGpG+4kV!CDNp)v0Pueo>72 z!|8ye@}y$xoWA~)UgTa>znJH{A1cd8=y^3p+|+CkEn__Byac)~p(CF|rp!V*3DgE< z_8^pinS3-^2qhf0_OI)}b{cMzaaL2`mtdSdbU#fD`qkkm{qZA6HW|O=|lgfbMD^yU(StJd`(N$SdT(ALL2C`$CJ|45mCqKQ( zCMxk<7sXhjs-TmN^*-11#e*@3G1gSh0pNHBe*mERsz}`VD0#7c>CGD?zhEu&owFno z6c$pcG0+}=vHK0Z z{goghNKhqNi4-1|^h!+^MpRFJ2uO|j*(ZT5@ptghTi>xazo?6XKN^h;_+m6#3H;{| z&!CIt5AfL-*?H)q7IpQu!B6t3FFo~Pp_8}2Fc-y*xuN*9!Ugq?&p9KpsTIf@lQ*R^ zpU|E^4SzkKXuWmpyDNg7Z|=qUyeTPJ@?-Ca0&+;|YEWhEXYc}~@$7WxiSqZITM0GL z+iAaB6>WS5XPw&Il0@#hYL~tI-xciC#&{+795$d}3+sVtp_u3(^{b(P_6Y=&2i{6Z zKp)F6<^OKSGg9iG{AA%Aq)~;`MsER6Xn!|J41Y3ADxNH;3c99n-2xR6&^qcy9F7_R zJ+mEZP$C?KM2%CJLGG4+#j4Cqm07GxHk@$Eg@%uhG0jB12Ah+@Q7#z9w>#h0F>c!| z7=p&w0tywoQ-}b?`PrpURpfGi9hcL}Ih(EC$CMv=dUWz4@0T~Fmzj<%aNq>pS z&4JRb?BMfZ(Vvnt0TbzbQZ7+_34}(F^|aqpI>XSdNbOW+12$-4AEtpv#=oEbRrPTqy}xrviUyW_64eh zg4w4(qc+X0tU4`3Zf+UZ!-dvuwSU5&9kex+No_X!vy`>kR6y(HbX>01`0#)RZJW-5 zrn7&8HuIkMbj8cp4kVai`}vkGi#+$%>s3OtHv$k}#xTK$`sW%* z@w(o9Ut|Nf&xc&1Nv2TB8T~b-kBj3W|%F?pmr2EZRcBhHdOH z?ir>0Lr~%L`5ix2Um@cQT5h}6`-ny@u_qmR zezxam3Gay&nL7&fYS0$BVyIU3Sh@U)l}nM4t~!6jpVT6zY~n`wAr63yrQ-ag^k~iO zQQqqrP-3$Mhwfm>5IpGGCyB6h=6%nBV?!4EuTh^PkGE0Z+&;Inh{#wsroitZf*3m|5v8 zQ42LQTR6*~WxiBusbvMz8g&KHnUaGicgNK3#-_C1lw57LcK))-tfA9xLW4Ps69wnd zPHmtTev}7Eoig)0>wkpWR`p6&g~Y`3)nuL|WmGzOQaFziHH$GS!G6oCJ3?7knQVUH z#a%WE$LPUe`EOeGhBY_q>?M zkn^EL!++;FHR-9QRm2itPi-yFhjEgIQ7l4ByFne}dQz&Z1@bLKIG!TwS)LH)2ZVN- z{h~_bVX~}JT1(lww7z={*}A^oWUSCgU*ot?T`gNUnzymkuK;c?f1xobM|me{-!`0Q z8$`W1?z(LdX1|G4+S&>Og2jO8vRO2cmZ7aC_zBr(C&mB0_?A*hv2amLBL3ON8G`n zEHUmz=$cF3XG2^AQc~uJw5AUoPm?!I&|d><5h>PUP)15%dKu;q{R{^DiiGA|bTLi( zgn#=vwlT46IEalrr|CvW{{6g`a%mk0eahCmZTrbAVW)6Z^V>VSl<#EuG#T1kyVj^$)JF4Jdy%Q6ZgwSXxzK}HA<}-C6G_na zf)3CFUeBa~EeeUM`frl7sh7B5E6E3sKKk(J>qL$ROITlaEh$U!`s4ElveMPHZGYoK z`?jy@Nq}Ptd@No$giD&H&Yl$y*BVE8uIjFb_{WEz9o>KU#o6Hr7+O|teQ%z=x;lZnc#*6xi0H}0o5ihAgT97x`QTQ6jehK$2s|&(_UQ3wY=D}N3tGFv?prT9w#GA;e%SGrbIzqD4bz3n0GwvK4N zFtmVs$@09e&2==V?BblQ=G|sfRky%aaPw|FFZ)mkHtn+j;)Q0$^Bul%)k5_awBckD z9lw{YrQ~wY5SO}GPnNDXtN|#1G`LKekvq$#;$?7OSUO+bcG%69VmEuH*ndeFG3a7M ziD-tCVlo}%IDwS1s|3B1HzkaY&~8xX6({$iOc&G+pLI67ecQ&Q^G@(Tp7Zz8$!7QO zwqR%Nz=|7qqn{5AXpt1>mT`b@v&B6**0tRr4+ZtD+8Lv0nJthL=WE{qr;p+ zjDKg)fzG)?U;cZW716X>-epc9Jrv`x>dw4YlkjO{uWlAoRx~U$Xs?~$VpUiYo{7=S}GM=j6M7StZ|rAe>~NBF&QTs$%4R zf9Gn>TuuD~+QW=mO3g$E2Hne;w+szlW|0W3IwBkg9W!yYC-1NLM3Ux!M00b4h0r$f zv1kn@jz#N1IMN+pw0|JjVpdwQDC(3Ufr>)X72%+yQ)Y&NI5@y(W`s&Ls*R#T6mxnN zju!IKDw~TFS98zZDGNLcourv`AFiQAtB9H`T1Y^%9gd|q#XkZj+LK*fcfz#{__mCD z_pG}v^D?EBfmha%+)gt6zL}TT2ieHh>w|Rr-Aaequ=OhqM1O6mx`TC7pPhu(iuyCU zFtA#`1k8#)(xR7Sl}q(JtvH8gh50M9A!o3w;{F?i_4JG$PEgBkPP9N z$4-=tU&?pElX8rFSuZpGw#Eta5G%Iw->i4jl@R&{MC>@z&WY24X{f098#i;BDaLRw z*?{?MCP0rrvGn3>mB)F7fws>|h#w2rHOEYRl;T%_*d9$8LyZgzi#O(b!A1hvJbQ^5 z3|g9ArGJ7=*JWK`?FS+Zq<|gd1`9Cy%0mp=Xa)i6FKYI-hfk`0iHm|QMw4<--qC8& zgdwtKY_Qel-O68K>ofG7@bh2C&K@@-CD&l)tt|i}ba1Je@_~!~f&cRyYz%tZwm7#9 zaU@zIFg`2Jp>N#6cTx@mcZVy9l4RZCO4?d)C4Uh?!qpUpz8d5c^tFLoPzH%G^;G$he2*etNCB>VMw^n52o z^y#m?qB{H;DAnmw`9pHBOMQ>lc~uOUD;4BxiZP$p(B{;(tH_r}1}9Fn#gR$6aA zs4iW)rh!WYR*aLJGILdli1h{QmIyl0hm7z48c#8HLk|x*aDTAaB?PxDTkiFP>4aCV z1l=c$369DINj)UOVd3>;mFJ0W3#JUG==Ng3j`>*&ge3WQNCZnY+05FChH!zmNPl(r zY}UE$YA^YV7kp^=MQDs*EKe(t0_?7ORy>p@G8BKRDRhQjUphm#OgZC&nI54 ztNta(2pJ5|p?P&fn^fanC)?46d4D!~blpfC_dS_c047_SSV!1iL&RuVJcNu}60KrR zslQ(%g4)X*C3rh9%>57SQ5i^&Jvg^Lq(6=ZPO#ZE1rzvX4udHsGqQZ`=yJD)MWrqn z#Lyq?icI+7`uyG#7^}D4x8^vSKusr$NUed;D`A@>$)5IZy+aTEr87gND1QUOX>t(a z$(8ja>i#c7T$5&KS+)5YmviRA;8F}`IRU~ki&VAimK>aUf05U*EO9?8uJ{Q$XQY{A zqr9AACYv8~dRmq6%kj8@%(!zY8<1b&4`B!!`^nj%iajVA zmN*t17xW;Y*m;~7jvFEc3e*#4`B<>)v7zp(BX}RwALl4iF{o!j+88U6Suw&sllJ z+e$ipPJ;p6;uYBphBN|)mafw|-ETH7&p&q~;O-O6Dy0-ZrsC&UNS8~P{Gm8Q^T2Sv`?<2AQIhHA{@041fWww` z^Bey;IfmN2b>wu?&VRV7+yTr#bQcFO$!yN2@lmenGHFdT*X%@rAF7_Re3!o z{T11syF7N&^7zr|<1b*tE-_Q;{u~2N9{6jr`RFt`%SKNVSAQq@3>1#dURZuy3b!NJ^9YA8)<>)&scqFU#v{Gr=T;ly^~e5sQK0hn|@eeU*v=7Eq_$yhkGt7{x^L z9%2~*>e_4KX1MA(h5IC~7mGwf2bWFa%1!$i-c;K+t@Pn!w5r7?xseS(E6dI3_C5O- ziEY)AIaaPlx_?z(K_Id~FEd=RkVFwhO;v#0#n0@Zo@%d3lYO5;weIiB<4ams!CF9m zVyIZt zCUS7FpfQQ}KrCI9_?efsCVwo)sO_b^aW^I1cZcyHZ-4$hT$aqC2ZI3_^gDRy84glD zgP$_Q#~&P>oPFFgP@HjIAsmj7KM6?H@m1s?J!W%iPs$TX!#9}_D{N_ms89gyt&xQs z_9^R70|(IjNZvo+XIF?T-#U?0rc?y7B+x?XnZ?fTHm~TQpH-8k5~NlXDzBRfq~@Mc zKG&{>tbeH$6UxWV$$w%5>~BLwxavnSf6lo3#ot~2!_%;>KUMCNd1Gg zZpFknUFX9ZMK}$F;NHyrKbMIcPym+e-U2Ek+$;p35$#ae%nAdhM<2_f0w*WsbN1g! zB!B3j+X{xJb*Re_VYXg{w_infvxb(hAiCaPVf~QlWBFRSJF~A$t7rC24v=pQ1pX*F zmsv%XBKS^}i7`u~WjCCgUQ*X}LvK$mkn<8BG5sKb0kz&sw(TW`o6_=0_5=(E6Lb;o z1RW1n`|q>G&%94A#V$(v1?)-HAm0-g)9DePP0S{PZe zlfW98UYUBGe%Vbv9HQyMS&x#=aXBc?3wPU>kH!UpAVlV3D?_&Fs!Rk74i6sGEO1=N zKf!aWGU>n58%n20WRtUN& zB}VPRz7M8QxOk=yJ5aFuMsg#?qj~9T+sO_5-9um>mE`~+)quTL2lh6=+OEUeg<7wB zus#M72C%^DQ-cM+ciyVOq8{JyU>*M4&xb=`HVdnc*J~&dVzAz1SODsV=zoY5C2sdk zF*nIthEL^OUSAalE;?}R3V-Hx3Po!ERzHUf|Ctn&Ih?d0K60=n{=7h+gU+WPZ@mFD zhyT5{^M(8W0sVjXjpHvKL0;^GlVfRDb;&3W-I3-+9v7as1$LB;D~(=??iHXFX8sVw z6XX6R+UD85@}xi;5}%QzFMonSKiV02L%K6Pt-V)1!k=X%y!pEOPPrl|N8G%Qy=MWY z(b@3)gha&7djJ0YFL=>Dpc&08`9i-3%nK(|7eNpw5saWT4a^$INU+0cYeY5Z*2*MCbdNxUR^dh z1tpuP!coWq$rSQF7q|YMUY3rmDJkOk+nE0v4RH_hi5Mrdk;oLz3koo32Wl1|DFmQ( zcT}*)^r8zLTn8%M4Sy@zScY&!MAl&V^}KggF1wiJwfV@}oY9E;s2w{S1qY&_4)2B0 zgOjQIRi0e~N>bDPM8}c={4UP<81fSpvv_4=K?I2DQj5@P%=0B+_-+l$PkqzTE=brR ztX9uSVdL1z&Cjywh?IzZ=Xhj$?b4D8aDmFS6>Pw+68k6{LVwfugO854-fnEo+seYP zUu>{Bjkboo|5U8z-ju>4ECrML1j{cWfvZ`n2gF6|pI98_cX8 z%n9j1$Hi4`e$Z`;b)-($PC6CFAmDYPya*7dFa6q$H6aDsYr{SOj6tdxC=t8OV3@x3 zQguIzHAKBM+J9vJP;VS*SUIgR8q|?hdP@}z=a^Dk|1=txxh9`Rbfk)wiqH@7s#4s& z*V-H`Hp|T~5zGwuW)qA>T784VBN|oMl+)A`P$!?(jz;QnWPsWL0`Lt2g;Tps;{?ikOIoFLN{Bin*|>NcSdjwKb8|;UlFPQH z55L=W=tpJJ0$ISV){;Z_?o1TjyM<7Jzvh>8REb&f0hn)2fxw*_h~8`4+r7;P1zZfn zdg$%K$$xa0BtKmPJ5C+W3|6PpYj9hrKr>;ze}|4|(1xE(RrAk$n8DXY9K*|jqiY}o zQFRs97XA$J)pk0?Kn8WM7^MBlc(@0e4`+by92}+mr<9!lQ>b$A8Jx8qpPn6@9rl9n z;JD*gfFPKMho8?o2!{1-F<=q~_E=mvW&p(iX@B5~7VI27R|Q7`U+w(5Z#M?=0ME)h zHRIZnwI!!+2+Gq-+Sc9uzN=SCOKG8jg4>f1>7#XZn(-zOM;Klc^Wb|8?LNmww&*@P zAnah&Rq%?>=@cmXimeJAs3BVzPg0g>H6tZRm@_bu1;YA-7Cf+1L_YImcDrbu>IUm*p@bm;(?()E zV}WsU_@Gf-tSc?rh>KO_#X90*)LvSQ77L5jWyMOOqFGWj3W_E@!4|0=8IonI6S@o z@Z{{qGtKYU{*tUvL2Y(os}MH1@8Aq)eYTTm*N8_s@)1B|E1O>gT}J6J>-+6!l3X?; zc_l9Q3>j$nQhSWpT|PkXI2? zvTusd02->2D_B45Tb&QEqh9i4N>=C@(dwG7kVq>m$M^vtU0kyNQ+f4-pPxJB9xs|O za#S`^m*5gz&D}IqN}!X22S*PRxPMlDRGBnW>_$G=i?UA0N|N9>0|bFM;~BsJCUUeC zuf-($F)M~-02dnW%`y2L?!zwFw3ntScf4i)Vs@e-I5rw-BU!y3$OJB(Uw(Pxld>3X zJ>m=54@+cjbb|UB7zrnAWAEjcX_j*z@HtM+IaNkR!v@)ta;nYdEC)|1ZGYX=@B70c zFbQ=bmw?Q_GJafPLykRV5vbr$3w$z%h0j6GTFx^_|jaLRT0eY-AwSoWX@r*dsA(q1YZAE;fU?T zU6x=N!23a-SD0pb3L@iTqJIhg+_VDF*W^EB(HItg6&5blG)V^$1I?t4*XN5a65)!j zW`X9)*+?vn#2ggqj4hCbe{ucx(5yY>ja^*A1 zv+)z@Ox zT5d##w?XSw@^?4ma(=GJ;QYHDfqG^ryzu~)TQCE^n4oPH;!~5TxGt}^a9n|0EXQ*T zQa>Zt1emUK;Mw`_UeHPsNW$L08>VqOEywy6E32Lc6KVzlE2PRnYag)Orf*v2p;x7i zFy0JdXqkbbxbT#)2l;i*aTIvHyF07$T&5g~ zJ5PbpN3Tvt^nZT7`D0N{$y0-7Li(T!9L57o(0FZ3_*m)j!!$<}VPaU3=L=sQ?SjAV zX4DirQCLJF!5q37IODc2znsQ8WYv|Hql|@`iQYuxvAU3aLVr4|fDlpc2WZbPQmP?x zNP5fUIi7ZF`ol(~1G+Auo}iU6EmVT4!bS?Dv>=M0x7rza8(wBVJ)QeO+!8e=1uLtn zq(gPmDiJ1HBL#usa0;%h=Kd9ZKd3Hx5|*?hs5{BEj)5gU51X|O&@esLdw3YKS;9gr zpNLn&kliI9B!575!A}Z0(6EbTq0HeYlX^O`Qsoc!j}*@$K&yMOgaf% zz0Sk>A1}&KhK^6IK&E5Swz_eoKL%3JFeP=;#a#D7;+J}BAT+3)>nz6xSa6r)kp z^;?O8&PHXUZiWfG-msizTDuxBr7tEU;{#y zw&I{w!GECAEZzrrb*sqdzhDt4=dRw?bVl~_$|w2dA{kb>Vj394T3LCmemFv+8n6!v zR*(4TfH36R+Q!Opk}iN!O1{n7m+Ib;7Ig7UY*#j`ihYUVfQOD9wqW%VjUWvzBP`Lv znit{0a0DCs4)(9vf*$rD+;v|=ej^+b3!np0vwsO_Akbl0g~`ty^*^Ag+B$hHmE^ z07IPnWOY@;PYNDT*A9MVbM;!S#J>0oI;fl_V42`hh3s*6@RIPC*QiWU;wQA4-udM7 zBY*H4y6%f40#V0)rFgGC9}=O!!sZcTBtdAi^+=&+F2F>F0vU^@q*ytsEyNoe#$N26qyKA1{aNvMEbIhOJs@8sSXi7LF0y4?k9I$xqY+}%T1aNxkbWvj4PNp zF}+Na2wCVd!sE$87$@+PCr)Tr9Dh1pOQVS~F64s|oJ@Im$@L!Ylf{a%>S#$~5HDWw zdB9jxqc$jun*3_kZ94Qcl(3qQjMj~hd?8FzWXR8I_wjCE z3A!D6KYf#r@s=a2&ABRJ-=f)jD(qKT_9ncM03-*F46ib@SKW)%V%!^XCx4)>Ij?{t znnaIs=_CCP@Pv=t@ zu=0*N55OTBc@CgyfRpgsH^gB0ZB&wYX11*khalJr_};-Mr$@&RAH#pApTe(GX~*p( zA*v{yV5rJ~sSi7X&(ZX7=Ed`y?^IIkH1-FLiW+g3D5&l_9*3=KA8vD*+dYl*tdii zps2^Zii~9^_7%kpAw>wkz){!H(hiqp-tl~gIx*%wzT9YS-I2OyN=aFaHW*S1h)wh ztTvz-0il$9iPxIYyU}EdNZ@SwWr~Q^k&B4iMnEcZ0T(eoB)WCsE2g}6oWMZw`f8%k zawYGT%w_;rK&Zbl&JvBjnib8Pw+gLE+#@JP$vR^&C~eZf^4A5LrB;7aHCMPyC!gze z&-J>0qh2SXAr^m~9`gNTF$_^?ku`7hX^80G<67m*TT(H#%x*xyNLz8El?*3VenFM0 zOtBSYIoBVWZwbL=G=cHulM>S$oe9D|ye^gOi%=%>aixB#??JVeq(x3%Zi;W=JNaSb zmBu&R0D$nh2>?5Y-nf5m0W=SHodIqHSk)yv7z|I9PAH(-D9=g1$-c*%c48<7-((9? zb@ZjM?ru|AQQuC#b|(wn-pX?K@VpF<%eoF?wb1hE8OFGq7`kX!cBT)%HS;RnMATkU z>Z?gtl5PF*7!TiE-5zdTc&&d4Aj#Y5AZTBm<_%7nm2!9h#U_7dl94zNxZ0xF#J{p+ zIFq+c7(-=2QHDx#bgwsGas zci{h>-NX*G>@=!6Zz^hRL;L#@7S4aku{lx?`*Y+aF!abR<5%<9GBgIAicikP?bF+m zWYExnt-fO49*BS5pZvm#Kd|xnoSymQ#&i!qD}WIe@JGEB)JH)aHJ;{ZOq|v>|5%Za z;?o$-S2p6ct%>f$QKSaZXPTTj)Ak_s7wuD^UTDYDtv9Aa+^|9NYREM}@?7Ds#gz9^ zGOBV*Tw~JWF>D5*VfiGdnL55M?f2~q1mT2`#u}7g)q{VWt_0!<=IyP>duv7B+nlGl z-q{GY%h5e-x$toiv}PLf&U3Vwg(s&cU0a#P%cF_eo_7&9t>qse7?5Pyw<%(ax2b9y zk-X-KZ<$2x>EmJ+aC}9FU>3dB!8bY2rx=A*O2NIR8{RNJC2RxKr+ zH^tYR-gGR@GiEgP&OeDbfa4;8KFPHcI2%4^>m<|xz0El)X^uX)B7UMVvSI1?ek1Yl zDWh~Ot`b;|B!hF#7ymd$UFAlAG{y96r04X;XP*6TbZrHT=p2nA>Xe=a(WJX%Crpzj z91(wwvK0>@6e>|3<b|eLHtR`36v3xoA4qFHYAt@9L@$+1Ymne-7al)9c2Qi4pLN$o?yEtAlPG^q zUPCRROtqS%K|Q}3+wz2rc*fN+@GOD7SJ?$JfHrwa6{Nk5=}3~zaPkoE0adtXObmIq zd?Q#mr{IT(9s#X9)9^_8O*>`jw0VatoG9!kgLZC~8E5*lqFj_NRjnY3R4}tqixNy| z`Y3t)dE}E$lEP?Jaz&G>BBa?NeM)~b6V5z_1**{u=@*x2Dud@0&bX9)fj-6tsptCG|5_h=l>a2gxQi{SW>v7y zwX_&5P3B{)wkGA**4m_^YHtyR{;OIXBlnM~aq&tV-o2>ajJEc2R(LR96E}a+(W=+9 zpKEE)wY2}MmgXr<-l5<>sV;>V62Z|d9DaWEiOxw);%rM_+TGbuVS4M?(3lRkqahtU z*N9peStpz6(aMrhT9B=x`cE+X@6~*;?SSTk$qt`26(6j5IOmtoXbx?pr>v)|$W_lu z^ek0NIJi}eGU6GGXo+BmBFKOF=@Jg|A?pWwGmj?fK^&#XY;k?O{l$nqMe4YEUNjqc z1eAZ5KY%b?Sctca@M;Aj2i6jqW%DhJ7B|@?d9|%zb|fXF?KRH*34G|ZAC-h=gdR-u ze3Go|vhXM$=UE98g=!Cpko|B25g7J4JBDJ3No`-y+Kh62R|39u7X z@p!3|B&)mp2&yC-cNs*7cKEis3@8%x<}M>1+Tpe?!&SIhzHyg-#oD($%7o&|QD!`1 zNBP?v-Cs8C@`7qhpKqzljADOPml+T3^L50!yV079Zlv2=b8Qexv)Yvef+A9yb&T}c zQev)307YDtDL#+0Q;dJ6oTN)THt>9DM~BZ1m-h8Gi_f52;0^Y3)k++T)ozqpRf3pZ z3Bon41`5O~1`f+L^a8BVtQRz6v=z;uWNgC?MBo?_pjbFcGr-BKXps19>GKv;gJq9z ztIwhuH1-+M&>pwL&>NBI*Z|<|AL7i^x z^T%K|-ki73ptkh*)_5CH?62Z&MMH;Kr0^E?B8@z(uE^m)s3HFrPzk_Bzvdx|4H)d} zQKKR1{H72C8DMADJ4XuP~6WJ+D{F@FHxW1rxytd8(~1$j?qt|)To=Cp~Q_u zhM|mO2ErVqaH)T4bmBD>E_;_o`c=2zOY(IRV_Bi7D-L9ITUlQnyB0#fMwB2=VV z{D#7`tkK8e@TQ#{4*!8(a+nvLiW(ohnOC{MMstm;uAYBul^eeX+sM1SrjB=oS7p*R zmPEH2z}DLnzZ_RL96~UgRD%d6=--1S#${2DCm6R#21A|eYH32ma=cN!cLz%sJRNkN z4=UkGq>v}l)00k_duvSo*a{ z##J^U8rS@r$fjuegcDSNbY!tzpKcIfWId`ug^g$i_5Lo335q_w7!9FT_Hlf)isz;%W@yo2*zE zks*KPs!YtPnPa+UC&d!$MFC&Y@-m zmlfCEGWySK^c&i!&Z*NI&Z$aI{W--*p(0tuOJ|UqLs1m{l3(pOu!J+t@h|9txJE& zry-QFI`N&7EO;fTt0l3udbCo_O_#Gl%e04^3`O7d=}~Q0FCF=|r^ z$3>(>2=RzD@#`Hte5=)CA8fx}POlXf^P*Q;GSDLD-DUwOQGo)vA&O9WA9#aZv?ZOp z4w)L?)$1pIr4kUv?k%1a7Me*(e}jKCg_{0ma~C%Esm(2~z{H60)Zf{$85q5rgO+1t z@$?%fPw+e}J^kv@!=r}}9)Ed!^zhVH%f>U?-ond&TmyYDo{eVnK~A7QK6rHOv6Q2h zGDwv`dq5yd^wUC!B)^G73`$6(c?+AjsN@;)Xz~Wcfl5T0DzjEHBk5AX07`$<_y;Qy z^iM|9^KpK_#Hn{y|p!Q*wf`b&adbI}$n6Bdb54Si@3N*FuP^}6&3SFWz0 z*Gqb>L0LQ0O|t7(F3*98-mQf$MOY+_Hr16|OSFCs zde2Z0;glvI9I7w8q8fF9K~{g2hKNA;agq1qVjp?~x)u!tO6}AoMWCZ?e@c?bi%jq{F1E6uv#bjkk8}v4eV}lLZ2;8R;~?EPlzw64PCU3j%9L zcQP8gz4lGS(s?#{_PB-1nmest`_A@XKWO!w`>>)F7AW*Xv~y zyZogm+^e+G!ytMj=UJlE?hcabot=M@R+B-D>W58`=EoXJh z4wY%MsW3@{vQzEt}OR@5pjf931gigPtqsg%7Ca-_GLa$mW!!>;45Fj?Q z0Kpc?zdCi$ohlW8lKP@Yl|DTq3)Z0=7meC6rJ-k#bo(fTzR^yc-PBlo-?H>xM}kX9 zMi2EszkN(KcFjl;PFm7wS7BEt!s^rO)@N^$Bzj+2FM6_?Py0Lyy;h;=B+UA<^YW}v zu^B9*6tmPLu+4v>Qx%q7Sd^ekZuWNYxT*8%tLCVO#AHx(f~c-7F#jYiaKsPDI;h0( z?W?%5Y|uB>0Na-Y^8Ujm;ZQw;5Q~?#Z?a=g(7#1ctSclc)p;O%6e>lY4dKH1zKHS5 zLK(+YywEA)SCqNn=LDvUUnpkMaLEnDh*mbr8>)Y8uyfjIibaTze}XoDgIMt! z_5};ic91OUGe5{nP_7sJdaAf?%x_270JA?MGNxV@Fq7rXM?!J}mE!DQS5Rl%O@toZ zo@rImfUFT#uw~5{bJ!+Bbo$H=(di~bbb8YvI^B4PPH$<5mM$94qRWFkMd`Qga@KPi zkV>V${nLN5&|Ye~PnfPerTTZ%#oCe!u&V z(1OyyPcwVON$FD`P;T_x9*=;h`LRb2zT}&@>_THM!g{q|6)4T$xFsycoi=VhwzhvN z#C)%nyth*WgyZt`siae6m1c~BNmHT|z4VwD&UKYU4sk*_0N-HXY zg5UJ@iXKB8n{f`F)Yz?AK}jIyFNz6XD;o3NWZP;szPiW&_9a|1Ni&e?dpPvzQ=~Ld z!;<$QK2ww@=cY{x4^kqDCr=!S!D)Yf_G|7QTs|kmLXuG&I_M751U>3U^Rl+cpx8%3 zq?JbROANXPdGR1Wn}Yv&G04aJ0O|<2>$fhz>?N<)L7f+6mwML&LUsXYpiDWMEXzD4 zIG#{Fl0jj<@L{~hwA1F)=7IxA-C1ZFjwCZrBPhX2K{X9}_(ki(uaO1RGoODa0w|+7 z-gT!wWvpPHW$-)WVSzLY&hjThwUl@RAsII1Bw<$-@<$%q0xA$`q{d0}Nj6=Cx-*CM zx}bmr%zp4@!5sWiuf_|^)Hy~DvVDwUb$)@@`}5zfrl7Xx1AXQI1W%dP5P?cCTMROz zQd)-$05TYz^IZqh$35B-j8cE!J5RE6$fUa&qgly#Ra!MK9m`k^aX3-PceUTkxV$M#6|XtoANNdrVzI$0caF~0CUSW;0XXSjVj3-iBo~4s$p;t8#n1LJ9S64E=qDm0UyumA# zDhObAnW zmLu0@sMeGNY5-j6RjjtRu zr7QD+_o9H*-7#Ecd7+}`a(OX2$S?lm&1%Gz6=PJrRu)tC(wTqG7rUy`aaM?Iqj<6` z*H~U_vdTwQW`mZR(*l)YVkn0j(D$wM-2^Y=pm#N^1|)D<=znolCfzSac)tt+^g7n? zBcHPEfo6N)q7+9ws`@#4;klBfwZZt6uQpUz|Fy8aBD7tn-E)^NA8gCkpsdNo)Sz*9 z1qOaSAxF5@p$mVS<4Pd_-^k$s@(eMLD`3m-Y6$<3s;goHdd`$rYJ^*~PMRV|hkf%K zdFcw4+Ok{gXiw~xwU&<0euAzhcTMrMpw!x2H8sp_d6NMHX%hBF<-OlVC0KgAtaLPZ z43guW9sXzRNkNi`WeHDZ_wSD;0}rW|y38tGa+OsiO4ola*(zU; z=wfhmjnA_ZH|g;eJ_D5%?r*GD!AZ^dN`MwV)4f*tuXCW`Xtr2Y=Wa+!FbE;GKk5q3 z18tX^=fk&!;o~*6eWuEtTU-t8tP5H9g3v4spEp`ySZ#16f}|$;ZHm^Ykdrn*i!h+Y z+JK%00kMB>S^*Bs?|8CYyzN7)=XW77 z{euHh;m0-V>I+X5<#Pi-sqqx57ugKtFDyZ7@FaONm~;)+0>rcpp}DP>2T{@msvZyM zAjdaz!vO|QYk!3GN8@v1cK31O;vtHnbP9))ytjYwQDLsv!`~9Jx}k!7brMLjesY%d zL`Bb1ohQke{t&MLAGv(625uT9kj|yq+B84opw6;YWtOHiNn%j)aH2VuMvyUaQun#Z zlld7I5T%(|qBX#zGD2%GO1~KyTzP}UffY5GGNL53AZi+x5)mMS| zZrOj{4>S@2F1pg)*piL_-DMlg?OyZzGXzHJ_+|72)XzHvgS+l5w1Bt2kS0tccHd)s z9xULNEtE9UDsB)e?KQ$#D$@P^rNUmhC8Hf#TUoG|6t8<*+PMQ6c5SDzbU)%j}jGic8e5-`-n zWYEqQb|!ZBM#L6n?&JpNj32yD`B4Gk`VE#%p6!F;0I9 zbWIAaH_19t->_UIfk{L+f zsoXVb+}IVUy;pFk_X%|StFU;d`#0Fb1&KAZ{z|1qq(WX-#y41PAe_9pub`A2ZPaOgk~Ey>zp;EQr@+(q1RMnL(O&k2`{L;2 z0YN|dojNqmPp1GOpWd<6uep9dfjIBb zbP44@&dU7G#|J0(t{L9V{>f9m065$_u|P9V_`=V0!P41MX*%<(zOXVDVlQ^Qriyp<2OSH-rK|fG2+!A2C_#%gUtB zCiA=Kp__-z~D@i>}+JrIu&^&otuk0OI#O^aVf1A0FZ6nhC7M~H&F;n|_SOA2>Z{F+S%r8w-7A8wfn zB3}|zM{}|!3r)ruV1Iv+mwkYKKAvOCxKd`2HwZMyPdd9=P*$o{5bir{{|q-C98`8T z{CPCSRxRyUK&euIrZkWG{CuW8zcmXiTtvHdFkuR*A5(ZybSZJ(MWM^zyZ zkbCSV@RFSpTQ51DVAT_NR6DBla0ta^IBX3?ie?UwCxn!a`OKASX!Eqd;NOB=*<1~v z6Cz9^9||k2F@S%H347-%!I>EhtBy*il=2g7wdMq-k~O-&l5J=lO|JXov^Y6mBuA6; zDLy5OK=?aL^=44XP%4v@1v=!;6|Sj`!(7`q%(v18HgJIAp^297+S;?hvkDCL-t!+YKHY!)}uQ$e%VI8W+xP=*l&oOHCofQqn{Lpe0k zd5I*Kciex*YUBKud@Pp`*s$68l0-;{wvP<_vH*a^)b5tbi-Jy!frMqAR)&1f8}boU zAHjdt?rC;|L3i*E!nBvS-)R#x7!8LxzMVc^;N>~oATtf-wCokbW{kL%Fe4m6CDFl; zC$KUATb!U-^lYK8tY0i&j9>1`xr!Ul{9 zEohL`CrszzlA2W|ni(__tH|y*Ah;nZmWqGxbw#Cyr7lkM6|}4dOm)~`u;L~C76e&g zrjcr=2`P#)yUPo5zbHb(6*nT>HfX1@EV)!x%jf~%Hdq;rW_{L8*KLXv#mE+X{ZUzt zTO3BTh?-tJM>_@Z#;wx9g|vAh>0 zH93L;a59_!oF(1EY%*E&UV9BJFT`MU?X!e_onMHYyqDn(^~1#^yBwY4_3!EY(oKSI ziYYI0#giP(DLjh^CTWV(yacl8vJ*7UGNxLoyr7ke-uoWFT&AT*TfpTM%~tLmSXcd2 z@?{=F7vFyGUGP_!&PX%KGk9>UkJW!?bdRtRA71L76tI7r0}-yso)7ED5Z2){5F;-s zbw6?jXlps*tZWX#b(-8C<4s-{l3A~!oi;Sib;-@lW^=}Hl#d6Dps`-k zJiP$f6E=O8`3zmE!4gqhhI?rz(5ou0=@*cWX!-sRO5IMa!H$c%4Vn~n=}x7l1yAG> z1!iRvQV3wzG3$8{j~kzKwJ?9x)+t~uM)F>OP5YfXWzL+84wkrazYbsq*=wRU9Bvsm zI>ch+JoIF;tsDv|6g3n^X^iSR+w26mg%aIq)9k7N(SmI4i$#%3Zy8G+njo5yY+bQ6 zZwbFvwx)uyyj?YDZyCWB0*ZiL z{H7vt(wmFkOkfaJ_(fn_An|0-P60$0it%~{db>Mu`0eg&9l_n5I1D2x zxVwE4?#9t@FOr6P+o$24M?-bh9t}Mid5Rpwe?cnz~Od%bXJ_9oi`g@NCWWUV4=WoI{O3&Vrw z#cN5nEX$HC+e#m}O6!ZwDCTR+ou=q|5T#x_=It`jVAXGY`;WbGIsE82|52S>{r>S6 zpobqFpMHOKcm`AA$-|Q+B>I#Lf-~|zfq-Ly1fB&o$H@V=gwKhcaD&zYTJAkT?S|Kl zJ*xoH?dq6<#@j*NfLqM&%z{H8XFwi9%o(;$9>bPA9pBMc)B}tFlq%Ro(z$2u2la}o zx-p|a*e*USN%6TI5&*f0Lk{R{*~G>Tl(hzb2}gflDjQm9Vfit6BlbW${o-n&o=6rh z{nddUq^?$hfA&8y8f+l_(HE3ZNZI=w3>})U3Rphc$j-n+ZG$25Njuf{vp9;;mMbSE zgeC48@No>;X{q6k+B6D$Z}?uYtIoLGGr@R%2LIE=|LT`09E`UhC&$6e4iE*|i95Yz z&PIRJ74nBXUu5Z0?+G~O0Xmi;Sy6%r{#g}VV7nZ5~pIol)*Z~V1cGuz6A(kgc<7YcJr6H;x(|!A@Y{3!Vg^p|b^>1dkH$WdQ)=KOUZgG&CtpcY4(7~ayS;xK z#9c4aO!orYX$PQ_+|jIAx3^`xpk`0_^CtT+_ThDlil5 zCRBgzdMz2Sw_Tjq9@;(F_7&VMLri~Un*UFM{Jz|&| z%9C$E)=P58@@;~#rWMLm+1LhcP}QSpNEjER1_G{D>?Wvc$@8YVrKx|n-y?uQg$sl4 zZi946QSv^D%!R!<;v?88&_jspRkOF|(%qN^_6yd_)5D~gGfiq#2mbu7Nf2tS`>e7w~f@A48JQ0~Iv*&+Ro zFWZvG(4wk|eh|Mb{9S*oDSQU(G{0V*XK-B{UCT;!@tkQ{6bImqeg!1O2Jp))eF2T< z+T~9Sj?dut{3+cQ_p>XeOr{75MO2Dj0#vjtGZK2oMUv7a+{ljM4Dg`DSpq?3(Fp-z zmV$Z+pQu7>Uw6wDMv!Sn;vYK~wG}fVSK$Q#Bef`LF5_=^lU;O7%{9Y;c)FsP`2lmYhRo4i+eB5XC`|$h2+03m} zlDewkDpkvMC0c*EouJ+(?oiZdPdFTmCF{$OnO&mt{RgY!JKa6z%VkC-|c^3DZI zBMB%qSR)xI>u#2UveMrv2l8@w1+Z<%|6UOu^H@4P(B4Rp+;i=X#K*nn-b`qI54P?J z8t%&ikbr-5JnMjZSoT}h#&>>go1$MtjaXzB|LgAUYZ#uw*=LZX^Xw>Jm6cl6VcBQP z!5}gZem5iDPhO)AzL?AM72?OE>|&K=AuNEQH-U2^f`<@@EQe>?E3;%qNa2T}6P$R0 zQl?&f^69iq|8?v>{_y6VyQY!NFiED3m}qR8*_?m!*Q03^+98w!OizC< z-{)jfFHXR_Qnho6XUF!lsRF>kEVh{b5%WU*Y&bz~Jw0f0#0|Ly?~d#JDQ#AZJU0^e z_(1}c?GsEcnB}zRL)TeTeVxD~r;j<;#~pu`2gJdvIr`}M)Az-&=P&P-8SrpJI^Hl` z9Mw7e+*Cw7=^xRUP`<+BF6fZ5%K#m}OzZ2hwNHzC= z8hAi}QqcN%^y7IHRf<<5eZqC*u{FiW!ZL-}!rf)Y@b8^ivxPs$xHfonbzXlR)4dbl z?iT*t9r$>6=;z(BulKL;_x#Sp*AA|2?G(vDs(zO*fp}R0x4<^B@MQ>99g%U}dZo&+ z^?D9VKP+5a#i0HOKsM1$r98Qn@T>g#;kV0DTN%@1E4&*%b~+y8gS(UhyTgWM9o!!G zu*NKFez>*KP$8%ur)DFCaC(23)Dm9sfHfMj4J2Y;{`TQYS}w7p-tA4WRsxmxo62zQ z1H+r13D&E%i<5{QCmI(^LspSFC`$I)3ph6n|DUzp0W}1^1naDc5};>^^Hp>p|L~-* zi6>Vxha+Sl)}TGA##{Ji_W|cwqsKqtQkW+vAAf!F>EqbLpNYKu`B{I8cd|ban0tBc zlMn80Ac&7JEwW2Az{#5c*IN>f-R*P^GD!i+*I;-5PW_Tsbp)lnsFSbi-&AoGxM7Id zYn*%PrnO&v>_#e-ms^!>k>_6W8E1Y;T{&{R)k`nTJbB)c@9@xXG9r&Ig{}~Dr#)?( zsSWZVQj`a$8NDU!7y*Aj9QwoKglZ@5Tc;VG(-+`pDm>+=7We@hO1RtW2PT&whh?RP zG!7S6^Q-GwwkDI71&z>`V>o~@OqXeSqdjbqBJk7e%$-Nq!@A8_@?Ub%nZxDiBOlSL z^r^Lz`4tx7P9CNX(rsrXgc^!&@d8!pzbKY3W~v&#Yr)!t9N>Rv`DNzvJv%IBD+k^# z^GHREocd1Ht7!RC^){Bl>0EQ-+SMv6oZ}K#UG{HQ{ zA)ox`I9!(>y#M6n^Uo9$Na>UMD2HT0H~k5$>og+#9v2y}r3lU1Uf#AW(WsDB_Dgnt zO#&r&A>$FUYsgc9|85I9(InWF(}H7i6>$Yp&@HD`YcUIQA@I?CqQUq$U1u>7vb zIfa^(#6FoX>Gzq7h%NEGHLY2BD3Ijy%Qv4jL7M*JAx(d2j5P2Di^xv!{T2C)e&+8i zj5TX-n_rnrr6u$wNef?tbzB#mj4I(t(Z$x8>_ViP#eNUc>hS(W(&}jab<*m{-L(&7=UN4Y1AEFT90kOFHIfM0U z0K3s{sU71Vh|#*Jz|?easun@(^=T`CZ|hXSL@4U}d8RM!PkPc!Ci&8hmM z;%ZX4YfDJ+ipd6Bg^jiAZgxau@`lBV-5DjN>cp>_4}Pss4L)OnQ$^R7O%jGffuRad zz{r1hAM};YjQQmH>f|Y!eV@=nqY|jtRLkBXxtxOw@qPJuU7fF;glX{`$@uRsP|@pm z={iXvbowIwd8zpUx6Xd~sYAb+7txc&Nn)=XXgSYyp5aU7vK*jR3u|!_fyQF>k6wWy zLhPut8YntRJ57G8sm{B3cdtb%15W-Psylx-#^Ko4(iDH>CglB9}y`LH7J(in6v_wGVe_R|r5DSOE6ual)X_ zj|Aj{T`^=Pu_?-)5lM|p=*L^z%X`mNY~gqDhA79H-)3wu#kP_|+w5xkyYNx!tw0xuBChSdB+%fgI~q+A@k6}X*T;&Es&+0&aBnDHubWpFFK3WuVe zLXr)9)9Rif5EW;!a0t`+wHyai=`%EZ1mkK;o(9%%X}JC5ZNnQsO&2&E1m!st1gCwZ zR&O8w$Th==Bp(<>|Ku1R1^MFf(ZGKh1%5N($V`=VTYbMt!uXvuI3mg0hUP>0dN^OT z)P3jDn2uL#;j-R3?;bumY1dbGbh6ZsJK7K_V6Hb_=anm}s zAE(2{Qow{Vy)|&*?w5o1e)Io!|&_sYh`F&Pttle#Amr~4o~$E3){BljcvJv z`I6MvfM^H0s54|*ZD^>kF4TXA4LV~hjj_GH*hO1x)D>D&&`+{j>h(jIR|G2?&xln| z8lKWJpRXjwN#WGPV_5-t!82>;uQLC4R2w|zl<=^P!r%#{fQfNURfHyfAId>fa19Bg z*WO#u_p0{$x5l7tX#qQfJZQI7FS>)96bsi8rJ~v1)-`UVjaw=b-6VgdLb$M2eQcpT zwpAV5D-JbyQY;Fi$|~E<)64vM_5{KTjTK9kd)2}C6!La{&Rzu{_adiv2rwJH$Z_Kn ze$(aa>7re&1Y?8Ya`r8pjQN&%O2yV7?{sK99C1QqXS-whFH!iO4QaIv`KV_#d@E;y;}a z(IB|T?;{XSjANgbtoba1oNUN|yP#+rbIj#N$fp)>m$}U{On-m-IV^B4eQZ91BTHRv>wxLFW`1Hqq#?;0>FFm z`m`K``HK^)Nzi}JH^2~ieLTtutz19ifZl2#W=v7&oxpb?6QHcC2ZklmTK+7N3XO>b z6xHwBl}0?oQuq02zB*rIt-Ek6+99*w1S4R+%xW4|CWoP@NFUmfnlrjx0QVjJe>cu$ ztdZznR7^5?sy78zrOO)uC#2a7zg)ShU?39wDH;TV z4kP|tyPAJXE*+3ua(O(ldB!hRB!85REWym~fio;AuHrGyWu7Z~914CdP_dezE}tU_ z>QbRxR0=3U`vTlsG%vQwP}lCPQ(b}|1pcj<|%c9wqtmUG!4 z=pvQ!T=1=H057WnmM2b{J9W4}%~Dt{uDHKZ{7ZkT2M*{Q#By;Hprtd%6?0Qe*=OF8 z3C{10onu&ROGX=}e_lkV9_GS}V@UbKCGDFeb;Ko25nIS9iY6c4s+glEj~^YMot7U& z6TJ4?qwA~lXWze@u3)ybJ_G}%*njOcaB1@7rj(BY7<&GUuNQutUVxr^L>i&MBi`4S zMd^PB<*V}P!ix;2GR+i+6XXiLq2hW0{t3q=&sQ1yVPSnqZ5IT^vlMN7)VE;nLjl14 z;1~&H0o)P9h*5Hl7tOYvc_XdC^bUNL4R7@=@bc$kez7c{Ip@w^7a&0p0(tlbZRwO; zI{ozUz0Y5J&Hefyb$%qQFN@4wb%n>(MJsS&v2Y|t-zgUN6 z-#DibOEn4nszN*3#MJm zXFA?180q0+ECkLw6NpPBJG*A#f%wbyeBqY!w0yJQ%_bDCMZUbC3GOC9x^TuL%(HXA zc#(s`#XqC-On*cXfJs^^f|-lj&)|O`1pMKbWQo&SJLl4vYA``$Bsug=0&261DoIQw zEd^fH;au)ZvgNW_IW2GKP}YJTX{1YU@GTFz;DsOf*jEiLjwh$)o(hYY@+TachySrQD+$Mk4;~E_i zYS7cR)WJIj`|#Wjs*TdkkbE?g?U=J zo;wu$oG&F_%Xq-~nPac$a0q{9Ni8yl%F9wGWuU2euD`t3;Fzv!c6IqMPvg@nAR1n3 z2$I9&(nI8+%jSp_O&S+tslcryCPg7BH}N(^l5T4QH_*I|7Di0SBJXXEd1}Dq>=LO` zS09ij{#~q*AQBM*K1OjR8`h|qnG3p?HJz)q0-QSx6+nIfRi*atZry*#@X6lvs15So2+jYlZAmupxAv5RLI*=ekGZCY)WEn_d=f&o#Xu6tB6 z%eS>3FC7u*Abo!U*2~&%O@0pwhJLNXJB9lFlfy^HpP!b8QTZ!QOdfWf$li{2Smv-$ zw>}J0*j!znmtt*7-EOH`TCbuKc!19>@rxXVxd=}wSzWCyEn9cJt(h$?w%z(oS8Xfg zqM$q~9sCcLNnW46sY{_ieM|}9iiNcoesTNu=1Ui1E{a=zGe*4HSq;-KS_u)&Rjy_9-g{qY)x+Z<6GRG zr#G0E>8xtRT7ZDl-7~HQK;Zm&#l>+%dChdQR&U63V${w~9-TZ)=1i;Hus|qDgzYCT zWwf(t0Fi^79xi~i*o4;?$T5z6xk)VBw0WEt%8!2zdc*E21#KL?2f~kt zcIf|3r{6|e+=YS~wH#fCPkUi0vMc@ByL^g|$-3X{&6c<;-KcB2%;6F@liA$iCt2aL zJB%vZzom+=7ByJM6-c!KjjmV>+@&9Kit<&Ul$Gx;z7lF*-C+G^tuQ`n(@q8L1(Crl zhXa2&qDwJVcY)PU^O-X{E0V-j*XrDl2uEulFK5{=`qTt!W{qsW*3~Pkf8%5QPEv)8 zq&bU&Gg-<#Fu5qj=(wteV?&K}8_qNjsK)t}i546c$-wuWBL=AkOUjghHaSf{&p}=m z830|C_YS%wVmAkM8xgIJgap>>YK`KX2i1QPI8b0Ok`W|9G~OTE&8qqdbWLH()VeL9 zIOVQs_3{i(V_gwqyh+J57SwiQ@|{WF=7{K^JiT?BwI)qw-F_tR{hwR_D+1#r%If zd!XR)=Ck{`C^nK^*t|Kss<>WbDh)?DP}A{dJqJ~O$RIs!o?ovpM=*5+m?@kwSUkfN z8eDIoHf3{Vvugg@YssU0`6`6U;rKr+wFT@6;O6}@8OnWJy595bjr{4;BwsohIMh@~ zox`8<`OI1I^D9!um^1(aS*A>JO9g-80s-_2}^Pqr=nB zPpbplg!y+g-gTmY7dHzBgd^wa^?6!cV=kyW)T0wK_$rKf;io4ZKXpl3Kc~wpPc$Ss zk7=~A8n4=bE8|>E%Z5%Fug6?FlDamfgSip+HkMb6owHWV6~FX>`{FiP9*Td2EYlb1 z7xSx|^w;dCT%_>b^y>O@?)}aR5FGjaezt%C{q@=WxmR{QgIugs3O>qzxW;!Ey^;Y? zDzDX5S}gNfx;o01DBAYJXKC^5dHz%J{Ko%yb6Gt1eglkBEke*O$N`EL5dHRcFPuH%W`k+eNC`;oSWNz!7Xcb}ytv1a^}qz<)1 zWid*6kBJ899jtL+2!DOkF&)0EljF8;TRkc*3W1+e(<=sKfT_672 z>5d4kO}ndG^!*TTnFqhXw<+IxKo2y%!w9&IlDnu)%&k|{2Q`gJ^pC_fD}Sns#jftq zzV^KEFQA(j&O&g(3G}Uh#IDE1S}n(Sv2d0=YN}W5R6%t+MXjB@1Y-NRc{6z-;hhPI<5Tvr!_(N-dGa&EDq(2lbA6e&@{p9t?rY%1fc{v*}w z+W8Hqo88H-qC{1O9yxyda&n4Mf?57EUajLohHS&oL(?Q>PF1+9D13YPT@XLE8ShUHmtbkzs4?X0T^iTePoN^IV#wmL&RJy*=70 zcMYdTn70gnUGwEYs%EH!V%o{5ISf72qHN4iP!4#)&y&~i=6&8| z+UL~NT97R~o2D3iPe-5w%6+?xpW8@0oLnxGjqX&Y53eAQiG%lY;skdaE(xEVj@lMn zm`ozxn8n24=7gHbLxX05EHqDHsegxm_xA4A*4^!YIkDJqq#GM-AgAtj3fwWgSV6H| zbhe_Uxr0X8&*|LTusg@Jc|2PLA8%)rA@iD8Wep!;-EaDIsE#;y6s>{^fh zXf)^zxOfzkJCM%aq{rje7w91lOj$ZLf+x`3Zjg4bKk4uo#3TGP;7?Yy<9RK{gI9QK8ULbE$HoDGi5WH{=sr=Zu-QNLe* z1sfK2GjQZuLT^Wd*n(k}gF2PHij z_Pdk5nasW6WH=nvDrryzo>2BZ=<#4G#ac;gXdmbRR#%xwS~m+2tghWagQvamB(g4y zJm^9HK(vJq-H*{8D`p)8y9+8PU=0X|ML{SI3(31x@j$cJ9R^2rEWBfy;c*3jeuTyq zX0B233QSu~JhC9M0nIKPnu-!qY>lhNQKh$)PBPfvF&icMY=;@ypB{jEG}hy&*Bi0w zF#_KApr_s8&>GFt0~nYtBegS_d;IA+B}7IOvBBz5~sFb48nZKKA;3w{sL}f?F0CXRwln^=25rAHagFMw)sI zdeCq?IM&mlg$HW{u-ZQJXe;=s*zvxkiJdVrvsU+CmKfE4f&W{kFXf5uFn7Tc=?hOq z@3MG>=dM7H4~A1?Ucj8{9@M)$qu%IXB;KhsDa4$&Tu1~KS=kqOCC%`nyas>A+$~eOcZydGz_biFsNi@_>nHDcFzOD( z%oAvslngyEb60>TV`Y|qGVov!3zZB#Xju9}4TtcUEarCZGBnf((w;`cG-ID>7*S)9 z5om~Tu_TyCnP$16%`Cqc(-=sCw-y@Z0k|x-!FHU-2f*ymI73{re%VF%Y1aok5JTI{ zSk>%7Pm$$jgLaRt)*~NYDO25TrvJChSbgMThlx8FkH-_!H?ZA*D6T`rcHRoGn1}+5 z{*ML@3?_^v*gG;w7`QtT#UXYP`k|B$@pNz13Dfah~Rez(Fr@5_N)Lx z>|LhZa2%bmlgVUYfT!I_obu2EhIO`Ao$Ut)U6K6BG&*BpzIKO95EfUKXNX5dCn~hn z)6PtApjsQ9sIW44yxjmZ5g7P-AVDeSt=M|Dhf|+DVEwLt8`(2GRAFTS8d!?3M8+xh zwETeQz_UXH$&-aUHvNG`Ab?5;TnMTc=C4SvfZNR%Xl1a!R(^rdq-#11^0Zbay@L(P z2x#{wRq-DK7e$p>Wpsp8rcuVX-AdIsYgSJHj0NK9lFc3gGG;%uFEg)gF0ykP&q zXcJo}5c(2->I@DxY+NQrm97hQ>3Tg|?^(&ixz^ocnBcceOl%8nT?uU+#ABGF9;~=# z>wbvgGR7H?VWJal<4R+vNx5_wk6{jbqkc7G0rYUZ;Um@Up(PCgn6X6U`gg03fF=ap z1FVKQZCWhMR`3T(^a&pJx-7H9?1qq+p$}uwGno>9!f!R!ll3GW2>5Ul`H}9vib8Vt zCldDkTejrr5cp1khzXc{*2RRi46+v@(X_q?4H3H#G+3fB=z$LnQ$S2hp$*~Y`bfkC z*7^W6Y#Vh)^^pkZcbN95FSPG=`T))GU@i4Pq2KK{$$@})uG%n=rglx(Bg|$mOh5MF z51Isj@UYnbt@vy;`8FgDK>i#qRzhm0yyApN@!Vh8YgC}A7b}%;E%XVOq|J|-P zX{KiD%8n+aV1P4k1s66SCE zKq=qPlmixbyD}0!&57A~3Jwt(Yj*C8dd)U}z5rgOJP5yg<2d|KwSU}|W&?m>v<#H) z_Atom>EFBGrLG~_#f=B^6dG@~o<`k%UsiDwffH!(Xl-f|*nmBWu-FAlpwZm3&}c34 zXin|iV`wnay8;B$AqF&3B;C~10tj|Uyt`u$8rET%ass`9_JIctJqyt8K|j_~IEndx z_qgk$r#q*$##uep!z_!A9%gR&9moEFCL}ZnDX{j8Mh(go8r^n7pA8HRAC{^>)-$RI z%c!7Sfej`ep|l@TUE=gdy4!u-ZI-ORB}(t^B-+Il1lOt8xBFsXjdr7JW8Z@YKSIV) zpuxI|iTl8Z9)c5Xpdm)mtzVa+<)DFoOv@o{D-J#Kp&{+bNC2iZiMEPvi9-hgx1kND zy(Gh!$e(7pA&u#?q9bmfe_kEtepiKtn5KC01G}gz_?}&qCtyJdvjYaTzyrU!cBml^ zA?&u1F$LeVMg@-II8J}0``-<#{A&$HEW_?6W9` z9oWcjUVcL2pnEEPPOzcVNr+&2tYG&}q!ACh+leh8dp>r%AHs%l_q1_O?c})K=?4xy z;=~+l``A}juNRUV{Ib`0h{dUYI@mUxhuYC0QRMh2$nlXKWW>@6KdfyqgYlEFt=q>T zPwBRe#=_Qy5lvi5@YSY?>9R`xV-2SfawwN=+|^PM(MoQT~M`+L}jeOYrv^R_)$ zGIRn7y|#DyGoH8Yxh#Z#O(!09#8G?EyloHnsf9(s?w&}%X?mbw!?G-p3Wd{zG0so4 z&V!tvoC@dL?Z4QjH#+!jc9nUpfscajaojZq4w@M6zKA{r|Fmb+EJjxN-5@?3s7Sd$ zhhhiK4EdYCHD}E4+-`Jw45bRF)m?Xs^}CLT-8t=8UjUOrM!0c*x1|TC0o93b!4{L+ zQ|#;Z`k`B4xXFEmDirNgm?Bb`;nR~XAJc%QPW5?7 zW)#j(m_Dk|RDw+8J2I=6h(UE9VS}FZyHWg}!VewnhT^`_uNXB&Y;X0o;Sr7hb-KPz zcRcRVW8NE#dZ&GV2<+Q|lh<(G@H8@KcRXwuGPO$i)Hf7|$BwR#-R_6lKJ9ny!3<%z zeb^73yN38EGE5(7am9y}xI4Rq32g%LP@Bg}OrzWGvG}#G+iuTTCa7Jw1Q^0UX?GH~ zmVxcwv4?ijw$VvM!yTD7l(eGwzonPx7w$LNQa*yYvUg~IWAnp4#IB83Lje1@AH;?e znvE&3qhpBL)EP&{K9Zo@tgQtb8V_uCcHjhZ^D%S4ZhO0v9yVMEZNArq5r$IM$&%qM zU#3JApZZOmoR~o&Y#A@}aOmS7+AgNl(hHcR0}CFb)UZ+7dPZV==z1yFubi~jsJLSK zdsA5IqY;~btf5c)c%LsYH}v2{LgVQT!0vVh%)^G?8haXGs~gCI4a@rIyacY+4Iv%D zVV=eg2H5@fVQ7x%oHhsHfUW#Mu;bS*PqeB z7z`6)Nwn5sP~UKHDnO!SzkQ6eQ4jD3ChowVNLd0qovkut_+}-k96!x4|Dm;}IMVk3BbX>|-DG zJRS9c=V!uNSbX*+NeTSbnDvw(AEilB12;be$;6w;Rj4N8OC*u5`6!2`0(14l>2EHIn&) zktbRQKHKHuuP7EvWgVn{Cn$-ptxD+D`bb_Hnq;rq4EgM`2FI3%s zC~$(|1v<(20pd#J-8ccgGG+8Z#SP{spd{N9Xo}(ML~~|l+a@Qf*4|daBx4h3nx$)G zMaG@jm|r8RYkSDLPBM+(=rCE?f z9}d5HO4`INMf=2rs0mTw8#dj1t?F07xY_*sHlI%}(?^8~eY)>lhs zm0CI*sU_O|=&1{Z%n!nDxKfhI;?b+RnuZsIQeW`J2z z>FS21l?F~)Vri6=rB<|&yvFRdmtLAWFM856k>Dd5C2dI-YsTneH%l~q`Q7MC)vop& z1)CITDU6gDE7nA=8QpedrHFHXSdyfK6rb@i(n6_7BXu=ADS(PP4Bdn_DsrU_4uUXA zk%EIvi4^K2b7ExMkpdBAb;gBDiWD4VTBJ}T%Hr)NQlN{n#{#%n0)Rtxb0*!-G#-RRkN*!tZ8%A@|FSa=4};o6B%%iCl(G%Hf7c=S#-6p1Bpm3spA?oZ<=# z=)_cQh`5OSv;=Kj(oU*>q@DF8?IcUu*_xzLcjs$GRv}d0K=I8{Qb(O0*%XkliFw^wp2L(sb==7gDfEQIx_+iKAjo~Gh259qH64KB}_BC15LDeoh-|^ zO&jxxW*QdCyZbR5MW-Ux0GF<|GDBH2*Hyrf30Ag5^Cdf5va^tVRdAet2YcZ*EM&z+?IgRt|g{B;hkRsi}IC}z*q5v`5?06Owt zHaDLQ%WKFnlVF4Ctjze1fxFO94DVpLtnmEE&=D$!eBYse<;mFsNi})YST&zL4B#$= zgL!539|!X``~#7L!4lJyfH~O*UUCUke=PkNtz}uAJXahl<(Gfu%f}kBaf= zw*o1p@XIW}^@tiQ9>#DLV#ut}RT1(nqc^CW-)02>pa6nXm6K{ZtFq$fVl*y(7?;HJ z`_o^_pUYW)o;^+vvlI2|z8s9MM*|_h&_mTCC0tx1Jy0aj zn3Q}Y<%be3sxV}ZMRl2ena+NsCZtlRbGzk2-(L~Si{eM;Q1|!a$LtRDHM$>L3cgo; zUX`vDx<3OJ*RDA$@29i5Qp0F2+7=&KP|m&>RS(5~IL|)0pN|Ik!)L{?0L5N>c6kNA zeEC_PJ^S$D;}6b+g)Dn%m5W_~+fXIZ27f!to@oxKrnMe9Vlhb1Rjp0Xi5ep3D%K>1 z3JcM~@-<0;)$R6B4qd~gD{sa9I2b0+d1_JBYtMv0;IcIeM*$VVSnz#~d zf2b<5F^u)u{v3y&17Nex4znGb@H(*x@AHo@u3WTmX{Nm}!Zv2XO{PY}C@F}{ls!yF zivfHzp%Jr~&tVw*Z92hmY6cp7_szGno7wb#;XWso6cf@h`M^pQW7~gJ9BarF_c^q> zN0s6)EXRV&QAMpf6b91#B9j0$`ng0)vtPLAtC-xBnY#!HrHkRZ|&qh?~yeKm=P@w{)7`d%B=#;v5UU@Bl zVMEwAc$#p$kM2O)yK;g}g66cVysdl``9s!~LWSC>su64UJ5i9*jpZ0^v-v;(26j%! zR^&k-;F1exn}Q{W<*b^s$i*Fm9CO4#OR*c|7*=e=*V{-Ac+)}3F9oy#6aJJ2?Lwj( zXq7IsVq?C1o3j9|F9NhhPZ@#8zeY@df?fWuMCxetH*np;ow$I1L8BG)9FDGBhk#xk z@1i6JGrH`V8%eVufTnIXA9m-b*>BO@x)#KStqGCRW;R@~(P+iPR_`EtcZ_`#|d4~L^Yr!x$HTHLR0W~8FUX!P!M_DeAvW{|eY7EIyh9sI9s`P81h zeR&1#ReR4yv`7~{P;`NmXYQxDTS(rH2DhNr*^QgyF=iN`R?4A!M?oy3TB-MYf6UL+ zFK<$uWkOgJU&-Qel9dJURF(YR14J@9KF=_7<%fln>73#^?MxL;K~OP&C#Z2*xcQ=R zgCIf9U|1UJ{Lvd65px;{%%$b!w@cneG)%Zb!SfpA`5XY0D)`9_DgA^bmI^jMluSlr zffegf1;58(y~~<|L~=%W%{Rd7NFhrgf<0GJ!Gb-UW0{WW0)Em-zXGD$pnRXyZ>=vl zYCG=>6sU!Tk|#oRE#*;vS+=~!(bHcFS+;RN`Cj;s^1b3)%hs25#>sSnPv@+jYuV4P zi*W^<3xrOeL_s7WVgXcU!dB}XNTgo!5emSho4r&s;Vg1RYkBV84^wbI$PxIud4ii5 zH7mm8Ct^LRI9G5X;ha&PCY>X(CGprtG-(v@IcLguJNs5xhB{Y&SV3{o!PXmuL|F0A zt%yp#?voXlwQ>s3xsMW(5j(+CL`3|pNJza=er}MDV9q^+kaREtJViJ_-->KF5DCe+ zWCC(7;32u((DW3^9D%LKMx&%pwn;t$I`>hOjIa`PNhry~B}z(?_>n+^6wne+X#0Ut zgXrlwu+FK98cm>ox*p@nq47$Id_X4&&;2qrQ%uP=5pWS&!y2J=>H*}X^hbT8Y+d;$ z4|hM55SSt1R2dy`L{6>-S@%+fbqGe_0)+%wjf9I_J|`(a0tl%Fl&naUp6Xfn3&d1v z@m(raEBizzi|Qq0{;wU*w}>#hR?ukh36=*{h83tU9U)DBMm(vqB0nl%$zIe5yKPe1 zsAtiZ>C7qYn$AYUq09c%R$Z{@TGzeS8sX@*Le&jIV}$$l9XQ_b&TKZF<-lifIp1ov z+$jp>SeJv_67vlxnOy<7W)me;E(8i57mrt?J6fd-@i*kFDuMFQZM^-D2Qm5X#qRG#q%L9MA}(hR5w+QEDKB zT?5%C3V{_`&NXH^!&P<#AQd`vmU0z%a5a?`>M{teDOF)K{Prcm?a}{y=FhG=`$C8~7v9nQQi~ga^4r;{dgs?s1wn-_ zZ;giEXRl>PZThqD5~3HhIiZo$c;s)`VG@u(omM04L|>GHZk>pGB$?gLI;%ppZb#@? z8DfOfUVylt?XTvm^=tNuw5lr(zUyQ!3-PRfk=A33*5mrLev8ri4Qct54zlmEcIzm6 zH9G{$vO2_-V0co4Kpr-8E_(ZeLofC=se0`^m^u@85+uw{2Zz6}gYAFIBbWSH3)>Bk zf=xl)Mx0~v+6e;aNyerSVCnVGUoK+V8e2r;?D;&% zG)FJlVtrEqk+69Aa@Dh+6|muy9V}0Oayi%Gnu@6x>fIbOZ(>GdXs;zMwR_6t8~5qL1~eD4J?8Q^bw8vKCnIKz`OV%RwJ9k z7Lc}x?b?R6cN@Gew!^ymOvb-_!?m%MU3DND&C`@Ci|GK&>h0g$N)q1^7V^oP!|QED z%i6wW*@6~Sq1`B!JkMb}&${h@%qHX;^6;iJD>rCzaB64$;iSoez^8&&X=~G+ZT>=Z zpn#k5^Hv*fMAakLW*TbD*vF-JIB^Xu6Zgq#_zN=kBF!54d#(I6wG>I@3qZ(GOeSBd zOeSB|HfQo(-a2wTaUG>CNN+wG+EbMK(bVtv78uk9b6~k@RKeqmf4i7}$V9T32)wqK zm*JC?f32A2z-O{G5jaIm)Xm>6CNhyMCIYV|=3l(awi^}MS^COK&)=dlyD3GU{(l+^Zp&-cbM0PjR0@z_53RT#>YI=U2fqXqf`pHrj zM#KIW+sZeDz6JMFM+t;(dRP&rsskLIhpfBvg){WNZcDt|s)`+daz0&CS6N+85l_%a z+V(iwrerozQiZv28d0x&A1=*?u?>OKbmZpz1bMB%SXKDUf>(^@&Xtpn= zPP14xTH;<#i1G#hd0D}*S=~+_#zV?F|4^0_x-~%A=sTQqtLa@y_fl{ir>iP>@Pnvs zJaTNm&u_oCn{h3FrJL5fC!~trfh3?aAsgwHW#l1Kr$S^v$)a21uQzF8UyjDprb8=g z4jx`85#P0=goLo`P)7JTW%-e+r5zJP>UR7Z;+{t574OSnJ|+i;pWn7-;O5i2{j8n$ z+nnA0Mx3eEtP8S4j`Qyju+R0Cp#TkG=3UW@%=PM_uTQmC0#f z)xdq#bs^Vhd=_i@3c(O`OQ*IV>@UV($;qUgRk<6ppvR0V$ZJL}IiX3JPXIyHmScV9 z3z~otax{II)gPB(L_hz0)_DI=o{$hN$ujRl#1VKs= zWY&gTKoO;Xs+J=#PdwE5C&RGogDA8*V`#o`4wUYv>kq4M!D=lb2uUvJd-!Q z*5+X^z?+OWp(j@Ae8Rv?tn$e-$0{`pzD5~+_n6IiirF-23Mf`paRYo+xWjr6C)xO7 za;%MK2u26quo>HU3@t`TWT3K&In0|e9*3fu{4zsaoS1+-1hTLkI%9hCCrfIhn{TQGbX- z@wwhW3x8G#t>5Cx2I^bxx>-H=X4#61*3eAwigk`xrLVt#A5<`y!>{^E_0}(7>yf=B zJMvVcZ(UPBE#H@?uc$*Is*Y!07-DGSki!jsf3ko|wQU{SB$f(CT34#?+K(#i(nI~G zmWdAHca&Mo;082T(x$VB8@Op~FBt=J{7NrTwkO%6D)wL!w5BtX(wNRda=BY{N>jPe z+3wX^B;$8wb;{Y(uCQYFQvEGdwR38w>wO%KC4U;4YWHCPZrWi5JUvk9kR#Eoyho;g zSp??}1~2@S1GVWUe(YBq#J1KnuT>54k#Ke3`x@YR4U<)+m1QSB6=iIsGtX?GHcjv^ zP@VD`Q`D$HANJhh>%H6UD3N5`l@_h4LLsN!zmT40)nipbwUr*zVHJGmxS`-ckC=Zn z>P3&USgB8NUHNTY^3zcCz+U{>PW8lp+`3+-mqh!DpU|c56}PF7sCZ7IGInu&YC7BP z^{Gas2Cq!naqqccuWh_C#h|H!>yk7~fN7Vd2+&-Uf?~WN72`Aa`&GiFDd}a>$;@pj za~{#}2H^aWZV>CE`b<)SDNz?&x=cl(g_m@t0!+K=q$`#0sW^;)B;iV>YS)o}ih{eB zHUVvJBO_URlbO+#1R2Dch+7=x`G zQWjYU`o$YKF#@AgJ0=LbnYR9au1JQT()dgUjcg>(B$`5^l#azH3;RA#pRX2R;%N(e=q|2PDNL}UBZPxZHWuLN6K(-`#15v)| zdF8lqpEO+r`&TgP)akk-+)KU<=ZbB65QtgB83tcUI1t_=CwvSsbCSn@@~5$|F;^@% zh2?^u$n-V;RJ)QDg20VqbA}}j94e*r1$Jf>tuiQTlz$dY3Qb>yV8yTZKDv7O&~Ftt zf}h9T2)89HWTj29G20$Z4>nk6H?cH~5d6SgvNpp!{U=$@R57bp{|mw?>oe>3;U&OE0~Yee}sEFsfdB z{Pu^RKYJ&8=i_G?mcE!BfPVf2P)h>@6aWAK2mk>9006)X+E`Pw>>3p`4>@1lNG6CD zBb6rt0DZ{}lMqie6~~@}h9l9@0q}@7A|BDv0q}@7A|8`kPb~xZKmwDBPf!DnLIRWB zPcj2QRsxd}P%;CZTmq9vP(lL@UILShP(=fUZ~~LmP(dUQaRLB$VRB_?Z*_BJb5KhK W1^@s601W^Q0F46x0JU=h0002^t~uBM

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 VsRFZgRwyh3_AlM4{-oYoQN5>Bz!+)or!mm?l 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 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 50b0984b442a9c194f526e88c85228b5da8613ac..2789eb60bd12764749abe846756f6e4838ef2d74 100644 GIT binary patch delta 570 zcmccdj&tWC#toK|Lc3<)^$7o9q+iC!z>v<&z#zsj-Jz68qJCe>D!dBqhkSug2TURzdrNC>Rbnta1#QgV3T;iez&Z{#(KFf|>$`19W0^7A{D|5)l+ zh}xCxx~sS5u|;P>;r^Lx!;2$wpP83;b4)5Jo85G>T!GO!lX3Ou?e zg>X$j&dKw;Ik4VD<~@7;70T4?YM{j*oQ($}2x{qyNo$KlsaGrgle zp9%O~;CJKqf#SJMOyXR#e!P0fw3WG3A;x*GcL4L|%R;>u672sjEKX}u;F)b8th69# z$_1a+Xw7*ldfOvpbGpx+)W52a33~r52>MPmZg+jgguGo8ijH!Q< z$$vg~^&BQIqez+1tDBpzIkQ#Xy!(BTyfx=OzwoP8#j~!jQry5AzFB3~5}|aJXNF7d zG$L>R%)ULhe{QE)_pxJp7z4bSSwt8Zw*PlvQZ(U5i=FBErA(%xM}GXfrhVxmW8@+o z1)qyhdU|CklP=RuDNyW*Oy5(=WXqf{!!Z3%DU%Viq5;En!!jVF&WvGtS{aiQ^E-2f z>8s0_T$$3mrY|gDl9RJh3P>BfqpbwK%|=m5l)ic!97Nm@=mMf_MOS C@$uCF delta 142504 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