diff --git a/Embedded/Moose_Embedded.lua b/Embedded/Moose_Embedded.lua index 721e46db9..0993bef6d 100644 --- a/Embedded/Moose_Embedded.lua +++ b/Embedded/Moose_Embedded.lua @@ -3683,7 +3683,7 @@ end --- Holding weapons. -- @param self -- @return #GROUP self -function GROUP:HoldFire() +function GROUP:OptionROEHoldFire() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -3695,7 +3695,7 @@ end --- Return fire. -- @param self -- @return #GROUP self -function GROUP:ReturnFire() +function GROUP:OptionROEReturnFire() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -3707,7 +3707,7 @@ end --- Openfire. -- @param self -- @return #GROUP self -function GROUP:OpenFire() +function GROUP:OptionROEOpenFire() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -3719,7 +3719,7 @@ end --- Weapon free. -- @param self -- @return #GROUP self -function GROUP:WeaponFree() +function GROUP:OptionROEWeaponFree() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -3731,7 +3731,7 @@ end --- No evasion on enemy threats. -- @param self -- @return #GROUP self -function GROUP:EvasionNoReaction() +function GROUP:OptionEvasionNoReaction() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -3743,7 +3743,7 @@ end --- Evasion passive defense. -- @param self -- @return #GROUP self -function GROUP:EvasionPassiveDefense() +function GROUP:OptionROTPassiveDefense() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -3755,7 +3755,7 @@ end --- Evade fire. -- @param self -- @return #GROUP self -function GROUP:EvasionEvadeFire() +function GROUP:OptionROTEvadeFire() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -3767,7 +3767,7 @@ end --- Vertical manoeuvres. -- @param self -- @return #GROUP self -function GROUP:EvasionVertical() +function GROUP:OptionROTVertical() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -11167,7 +11167,7 @@ function ESCORT:New( EscortClient, EscortGroup, EscortName ) self.EscortMenuEvasionNoReaction = MENU_CLIENT_COMMAND:New( self.EscortClient, "Fight until death", self.EscortMenuEvasion, ESCORT._EvasionNoReaction, { ParamSelf = self, } ) self.EscortMenuEvasionPassiveDefense = MENU_CLIENT_COMMAND:New( self.EscortClient, "Use flares, chaff and jammers", self.EscortMenuEvasion, ESCORT._EvasionPassiveDefense, { ParamSelf = self, } ) self.EscortMenuEvasionEvadeFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Evade enemy fire", self.EscortMenuEvasion, ESCORT._EvasionEvadeFire, { ParamSelf = self, } ) - self.EscortMenuEvasionVertical = MENU_CLIENT_COMMAND:New( self.EscortClient, "Go below radar and evade fire", self.EscortMenuEvasion, ESCORT._EvasionVertical, { ParamSelf = self, } ) + self.EscortMenuOptionEvasionVertical = MENU_CLIENT_COMMAND:New( self.EscortClient, "Go below radar and evade fire", self.EscortMenuEvasion, ESCORT._OptionEvasionVertical, { ParamSelf = self, } ) self.ScanForTargetsFunction = routines.scheduleFunction( self._ScanForTargets, { self }, timer.getTime() + 1, 30 ) @@ -11194,49 +11194,49 @@ end function ESCORT._ROEHoldFire( MenuParam ) - MenuParam.ParamSelf.EscortGroup:HoldFire() + MenuParam.ParamSelf.EscortGroup:OptionROEHoldFire() MESSAGE:New( "Holding weapons.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/AttackUnit" ):ToClient( MenuParam.ParamSelf.EscortClient ) end function ESCORT._ROEReturnFire( MenuParam ) - MenuParam.ParamSelf.EscortGroup:ReturnFire() + MenuParam.ParamSelf.EscortGroup:OptionROEReturnFire() MESSAGE:New( "Returning enemy fire.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/AttackUnit" ):ToClient( MenuParam.ParamSelf.EscortClient ) end function ESCORT._ROEOpenFire( MenuParam ) - MenuParam.ParamSelf.EscortGroup:OpenFire() + MenuParam.ParamSelf.EscortGroup:OptionROEOpenFire() MESSAGE:New( "Open fire on ordered targets.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/AttackUnit" ):ToClient( MenuParam.ParamSelf.EscortClient ) end function ESCORT._ROEWeaponFree( MenuParam ) - MenuParam.ParamSelf.EscortGroup:WeaponFree() + MenuParam.ParamSelf.EscortGroup:OptionROEWeaponFree() MESSAGE:New( "Engaging targets.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/AttackUnit" ):ToClient( MenuParam.ParamSelf.EscortClient ) end function ESCORT._EvasionNoReaction( MenuParam ) - MenuParam.ParamSelf.EscortGroup:EvasionNoReaction() + MenuParam.ParamSelf.EscortGroup:OptionEvasionNoReaction() MESSAGE:New( "We'll fight until death.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/AttackUnit" ):ToClient( MenuParam.ParamSelf.EscortClient ) end function ESCORT._EvasionPassiveDefense( MenuParam ) - MenuParam.ParamSelf.EscortGroup:EvasionPassiveDefense() + MenuParam.ParamSelf.EscortGroup:OptionROTPassiveDefense() MESSAGE:New( "We will use flares, chaff and jammers.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/AttackUnit" ):ToClient( MenuParam.ParamSelf.EscortClient ) end function ESCORT._EvasionEvadeFire( MenuParam ) - MenuParam.ParamSelf.EscortGroup:EvasionEvadeFire() + MenuParam.ParamSelf.EscortGroup:OptionROTEvadeFire() MESSAGE:New( "We'll evade enemy fire.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/AttackUnit" ):ToClient( MenuParam.ParamSelf.EscortClient ) end -function ESCORT._EvasionVertical( MenuParam ) +function ESCORT._OptionEvasionVertical( MenuParam ) - MenuParam.ParamSelf.EscortGroup:EvasionVertical() + MenuParam.ParamSelf.EscortGroup:OptionROTVertical() MESSAGE:New( "We'll perform vertical evasive manoeuvres.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/AttackUnit" ):ToClient( MenuParam.ParamSelf.EscortClient ) end diff --git a/Moose/Base.lua b/Moose/Base.lua index 80f3f50e6..268156f5c 100644 --- a/Moose/Base.lua +++ b/Moose/Base.lua @@ -16,7 +16,7 @@ local _TraceClass = { --ZONE = true, --GROUP = true, --UNIT = true, - --CLIENT = true, + --CLIENT = true, --CARGO = true, --CARGO_GROUP = true, --CARGO_PACKAGE = true, @@ -25,7 +25,7 @@ local _TraceClass = { --CLEANUP = true, --MENU_CLIENT = true, --MENU_CLIENT_COMMAND = true, - ESCORT = true, + --ESCORT = true, } --- The BASE Class @@ -256,6 +256,7 @@ end -- Trace section -- Log a trace (only shown when trace is on) +-- TODO: Make trace function using variable parameters. function BASE:F( Arguments ) diff --git a/Moose/Client.lua b/Moose/Client.lua index ca8a03f21..d91618860 100644 --- a/Moose/Client.lua +++ b/Moose/Client.lua @@ -71,35 +71,44 @@ end function CLIENT:Alive( CallBack ) self:F() - self.ClientAlive = false + self.ClientAlive2 = false self.ClientCallBack = CallBack - self.AliveCheckFunction = routines.scheduleFunction( self._AliveCheckCallBack, { self }, timer.getTime() + 1, 1 ) + self.AliveCheckFunction = routines.scheduleFunction( self._AliveCheckCallBack, { self }, timer.getTime() + 1, 5 ) + + return self end --- Checks if client is alive and returns true or false. -- @param #CLIENT self -- @param #boolean Returns true if client is alive. function CLIENT:IsAlive() - self:F() + self:F( self.ClientName ) local ClientDCSGroup = self:GetDCSGroup() if ClientDCSGroup then + self:T("true") return true end + self:T( "false" ) return false end --- @param #CLIENT self function CLIENT:_AliveCheckCallBack() + self:F( { self.ClientName, self.ClientAlive2 } ) if self:IsAlive() then - if self.ClientAlive == false then + if self.ClientAlive2 == false then + self:T("Calling Callback function") self.ClientCallBack( self ) - self.ClientAlive = true - routines.removeFunction( self.AliveCheckFunction ) + self.ClientAlive2 = true + end + else + if self.ClientAlive2 == true then + self.ClientAlive2 = false end end end diff --git a/Moose/Escort.lua b/Moose/Escort.lua index ea9d9d1bc..71c76ea3b 100644 --- a/Moose/Escort.lua +++ b/Moose/Escort.lua @@ -8,7 +8,7 @@ -- * Report identified targets -- * Perform tasks per identified target: Report vector to target, paint target, kill target -- --- @module ESCORT +-- @module Escort -- @author FlightControl Include.File( "Routines" ) @@ -24,6 +24,9 @@ Include.File( "Zone" ) -- @field Group#GROUP EscortGroup -- @field #string EscortName -- @field #number FollowScheduler The id of the _FollowScheduler function. +-- @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. ESCORT = { ClassName = "ESCORT", EscortName = nil, -- The Escort Name @@ -31,6 +34,9 @@ ESCORT = { EscortGroup = nil, 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 } --- MENUPARAM type @@ -48,10 +54,9 @@ function ESCORT:New( EscortClient, EscortGroup, EscortName ) local self = BASE:Inherit( self, BASE:New() ) self:F( { EscortClient, EscortGroup, EscortName } ) - self.EscortClient = EscortClient - self.EscortGroup = EscortGroup + self.EscortClient = EscortClient -- Client#CLIENT + self.EscortGroup = EscortGroup -- Group#GROUP self.EscortName = EscortName - self.ReportTargets = true self.EscortMenu = MENU_CLIENT:New( self.EscortClient, "Escort" .. self.EscortName ) @@ -88,25 +93,39 @@ function ESCORT:New( EscortClient, EscortGroup, EscortName ) -- Reaction to Threats self.EscortMenuEvasion = MENU_CLIENT:New( self.EscortClient, "Evasion", self.EscortMenu ) - self.EscortMenuEvasionNoReaction = MENU_CLIENT_COMMAND:New( self.EscortClient, "Fight until death", self.EscortMenuEvasion, ESCORT._EvasionNoReaction, { ParamSelf = self, } ) - self.EscortMenuEvasionPassiveDefense = MENU_CLIENT_COMMAND:New( self.EscortClient, "Use flares, chaff and jammers", self.EscortMenuEvasion, ESCORT._EvasionPassiveDefense, { ParamSelf = self, } ) - self.EscortMenuEvasionEvadeFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Evade enemy fire", self.EscortMenuEvasion, ESCORT._EvasionEvadeFire, { ParamSelf = self, } ) - self.EscortMenuEvasionVertical = MENU_CLIENT_COMMAND:New( self.EscortClient, "Go below radar and evade fire", self.EscortMenuEvasion, ESCORT._EvasionVertical, { ParamSelf = self, } ) + self.EscortMenuEvasionNoReaction = MENU_CLIENT_COMMAND:New( self.EscortClient, "Fight until death", self.EscortMenuEvasion, ESCORT._OptionROTNoReaction, { ParamSelf = self, } ) + self.EscortMenuEvasionPassiveDefense = MENU_CLIENT_COMMAND:New( self.EscortClient, "Use flares, chaff and jammers", self.EscortMenuEvasion, ESCORT._OptionROTPassiveDefense, { ParamSelf = self, } ) + self.EscortMenuEvasionEvadeFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Evade enemy fire", self.EscortMenuEvasion, ESCORT._OptionROTEvadeFire, { ParamSelf = self, } ) + self.EscortMenuOptionEvasionVertical = MENU_CLIENT_COMMAND:New( self.EscortClient, "Go below radar and evade fire", self.EscortMenuEvasion, ESCORT._OptionROTVertical, { ParamSelf = self, } ) -- Cancel current Task - self.EscortMenuCancelTask = MENU_CLIENT_COMMAND:New( self.EscortClient, "Cancel current task", self.EscortMenu, ESCORT._CancelCurrentTask, { ParamSelf = self, } ) + self.EscortMenuResumeMission = MENU_CLIENT:New( self.EscortClient, "Resume Mission", self.EscortMenu ) + self.EscortMenuResumeWayPoints = {} + local TaskPoints = self:RegisterRoute() + for WayPointID, WayPoint in pairs( TaskPoints ) do + self.EscortMenuResumeWayPoints[WayPointID] = MENU_CLIENT_COMMAND:New( self.EscortClient, "Resume from waypoint " .. WayPointID, self.EscortMenuResumeMission, ESCORT._ResumeMission, { ParamSelf = self, ParamWayPoint = WayPointID } ) + end + -- Initialize the EscortGroup - self.ScanForTargetsScheduler = routines.scheduleFunction( self._ScanForTargets, { self }, timer.getTime() + 1, 30 ) + self.EscortGroup:OptionROTVertical() + self.EscortGroup:OptionROEOpenFire() + + self.EscortGroup:PushTask( EscortGroup:TaskRoute( TaskPoints ) ) + + self.ReportTargetsScheduler = routines.scheduleFunction( self._ReportTargetsScheduler, { self }, timer.getTime() + 1, 30 ) end --- @param #MENUPARAM MenuParam function ESCORT._HoldPosition( MenuParam ) - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + routines.removeFunction( self.FollowScheduler ) + EscortGroup:PushTask( EscortGroup:TaskHoldPosition( 300 ) ) MESSAGE:New( "Holding Position at ... for 5 minutes.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/TaskHoldPosition" ):ToClient( EscortClient ) end @@ -114,10 +133,13 @@ end --- @param #MENUPARAM MenuParam function ESCORT._HoldPositionNearBy( MenuParam ) - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient --MenuParam.ParamSelf.EscortGroup:TaskOrbitCircleAtVec2( MenuParam.ParamSelf.EscortClient:GetPointVec2(), 300, 30, 0 ) + + routines.removeFunction( self.FollowScheduler ) local PointFrom = {} local GroupPoint = EscortGroup:GetPointVec2() @@ -141,8 +163,7 @@ function ESCORT._HoldPositionNearBy( MenuParam ) local Points = { PointFrom, PointTo } - - EscortGroup:PushTask( EscortGroup:TaskMission( Points ) ) + EscortGroup:PushTask( EscortGroup:TaskRoute( Points ) ) MESSAGE:New( "Rejoining to your location. Please hold at your location.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/HoldPositionNearBy" ):ToClient( EscortClient ) end @@ -150,8 +171,8 @@ end function ESCORT._JoinUpAndFollow( MenuParam ) local self = MenuParam.ParamSelf - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient local Distance = MenuParam.ParamDistance @@ -167,18 +188,32 @@ end function ESCORT._ReportNearbyTargets( MenuParam ) - MenuParam.ParamSelf:T() - - MenuParam.ParamSelf.ReportTargets = MenuParam.ParamReportTargets + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + self.ReportTargets = MenuParam.ParamReportTargets + + if self.ReportTargets then + if not self.ReportTargetsScheduler then + self.ReportTargetsScheduler = routines.scheduleFunction( self._ReportTargetsScheduler, { self }, timer.getTime() + 1, 30 ) + end + else + routines.removeFunction( self.ReportTargetsScheduler ) + self.ReportTargetsScheduler = nil + end end --- @param #MENUPARAM MenuParam function ESCORT._ScanTargets30Seconds( MenuParam ) MenuParam.ParamSelf:T() - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + routines.removeFunction( self.FollowScheduler ) EscortGroup:PushTask( EscortGroup:TaskControlled( @@ -193,8 +228,11 @@ end function ESCORT._ScanTargets60Seconds( MenuParam ) MenuParam.ParamSelf:T() - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + routines.removeFunction( self.FollowScheduler ) EscortGroup:PushTask( EscortGroup:TaskControlled( @@ -208,12 +246,16 @@ end --- @param #MENUPARAM MenuParam function ESCORT._AttackTarget( MenuParam ) - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient local AttackUnit = MenuParam.ParamUnit - - EscortGroup:OpenFire() - EscortGroup:EvasionVertical() + + routines.removeFunction( self.FollowScheduler ) + self.FollowScheduler = nil + + EscortGroup:OptionROEOpenFire() + EscortGroup:OptionROTVertical() EscortGroup:PushTask( EscortGroup:TaskAttackUnit( AttackUnit ) ) MESSAGE:New( "Attacking Unit", MenuParam.ParamSelf.EscortName, 10, "ESCORT/AttackTarget" ):ToClient( EscortClient ) end @@ -221,91 +263,131 @@ end --- @param #MENUPARAM MenuParam function ESCORT._ROEHoldFire( MenuParam ) - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient - EscortGroup:HoldFire() + EscortGroup:OptionROEHoldFire() MESSAGE:New( "Holding weapons.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/ROEHoldFire" ):ToClient( EscortClient ) end --- @param #MENUPARAM MenuParam function ESCORT._ROEReturnFire( MenuParam ) - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient - EscortGroup:ReturnFire() + EscortGroup:OptionROEReturnFire() MESSAGE:New( "Returning enemy fire.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/ROEReturnFire" ):ToClient( EscortClient ) end --- @param #MENUPARAM MenuParam function ESCORT._ROEOpenFire( MenuParam ) - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient - EscortGroup:OpenFire() + EscortGroup:OptionROEOpenFire() MESSAGE:New( "Open fire on ordered targets.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/ROEOpenFire" ):ToClient( EscortClient ) end --- @param #MENUPARAM MenuParam function ESCORT._ROEWeaponFree( MenuParam ) - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient - EscortGroup:WeaponFree() + EscortGroup:OptionROEWeaponFree() MESSAGE:New( "Engaging targets.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/ROEWeaponFree" ):ToClient( EscortClient ) end --- @param #MENUPARAM MenuParam -function ESCORT._EvasionNoReaction( MenuParam ) +function ESCORT._OptionROTNoReaction( MenuParam ) - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient - EscortGroup:EvasionNoReaction() - MESSAGE:New( "We'll fight until death.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/EvasionNoReaction" ):ToClient( EscortClient ) + EscortGroup:OptionEvasionNoReaction() + MESSAGE:New( "We'll fight until death.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/OptionEvasionNoReaction" ):ToClient( EscortClient ) end --- @param #MENUPARAM MenuParam -function ESCORT._EvasionPassiveDefense( MenuParam ) +function ESCORT._OptionROTPassiveDefense( MenuParam ) - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient - EscortGroup:EvasionPassiveDefense() - MESSAGE:New( "We will use flares, chaff and jammers.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/EvasionPassiveDefense" ):ToClient( EscortClient ) + EscortGroup:OptionROTPassiveDefense() + MESSAGE:New( "We will use flares, chaff and jammers.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/OptionROTPassiveDefense" ):ToClient( EscortClient ) end --- @param #MENUPARAM MenuParam -function ESCORT._EvasionEvadeFire( MenuParam ) +function ESCORT._OptionROTEvadeFire( MenuParam ) - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient - EscortGroup:EvasionEvadeFire() - MESSAGE:New( "We'll evade enemy fire.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/EvasionEvadeFire" ):ToClient( EscortClient ) + EscortGroup:OptionROTEvadeFire() + MESSAGE:New( "We'll evade enemy fire.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/OptionROTEvadeFire" ):ToClient( EscortClient ) end --- @param #MENUPARAM MenuParam -function ESCORT._EvasionVertical( MenuParam ) +function ESCORT._OptionROTVertical( MenuParam ) - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient - EscortGroup:EvasionVertical() - MESSAGE:New( "We'll perform vertical evasive manoeuvres.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/EvasionVertical" ):ToClient( EscortClient ) + EscortGroup:OptionROTVertical() + MESSAGE:New( "We'll perform vertical evasive manoeuvres.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/OptionROTVertical" ):ToClient( EscortClient ) end --- @param #MENUPARAM MenuParam -function ESCORT._CancelCurrentTask( MenuParam ) +function ESCORT._ResumeMission( MenuParam ) - local EscortGroup = MenuParam.ParamSelf.EscortGroup - local EscortClient = MenuParam.ParamSelf.EscortClient + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + local WayPoint = MenuParam.ParamWayPoint + + routines.removeFunction( self.FollowScheduler ) + self.FollowScheduler = nil + local WayPoints = EscortGroup:GetTaskRoute() + self:T( WayPoint, WayPoints ) + + for WayPointIgnore = 1, WayPoint do + table.remove( WayPoints, 1 ) + end + EscortGroup:PopCurrentTask() - MESSAGE:New( "Cancelling with current orders, continuing our mission.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/CancelCurrentTask" ):ToClient( EscortClient ) + EscortGroup:PushTask( EscortGroup:TaskRoute( WayPoints ) ) + MESSAGE:New( "Resuming mission.", MenuParam.ParamSelf.EscortName, 10, "ESCORT/ResumeMission" ):ToClient( EscortClient ) +end + +function ESCORT:RegisterRoute() + + local EscortGroup = self.EscortGroup -- Group#GROUP + + local TaskPoints = EscortGroup:GetTaskRoute() + self:T( TaskPoints ) + + for TaskPointID, TaskPoint in pairs( TaskPoints ) do + self:T( TaskPointID ) + TaskPoint.task.params.tasks[#TaskPoint.task.params.tasks+1] = EscortGroup:TaskRegisterWayPoint( TaskPointID ) + self:T( TaskPoint.task.params.tasks[#TaskPoint.task.params.tasks] ) + end + + self:T( TaskPoints ) + + return TaskPoints end --- @param Escort#ESCORT self @@ -355,46 +437,49 @@ function ESCORT:_FollowScheduler( FollowDistance ) 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 = GV2.y, z = CV2.z } + 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.y, GV.x ) + 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(CV2) + FollowDistance sin(alpha), z(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 = CV2.y + FollowDistance * math.sin(alpha), - z = GH2.z - } + 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 * 2 + CVI.x, y = CVI.y, z = DVu.z * CS * 2 + CVI.z } + self:T2( { "CV2:", CV2 } ) + self:T2( { "CVI:", CVI } ) + self:T2( { "GDV:", GDV } ) -- Measure distance between client and group - local CatchUpDistance = ( ( CVI.x - GV2.x )^2 + ( CVI.y - GV2.y )^2 + ( CVI.z - GV2.z )^2 ) ^ 0.5 - local Distance = CatchUpDistance - FollowDistance + 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 = 1600 / FollowDistance - local CatchUpSpeed = ( Distance / Time ) * ( CatchUpDistance / 1000 ) - - -- Follow speed required = Client Speed - Group Speed + Speed to overcome distance. - local BreakSpeed = ( GS * ( ( 1 ) / Distance ) ) - if BreakSpeed < 0 then - BreakSpeed = 0 - end + local Time = 30 + local CatchUpSpeed = ( CatchUpDistance - ( CS * 2 ) ) / Time - if BreakSpeed > CS then - BreakSpeed = CS - end - - local Speed = CS + CatchUpSpeed --- - BreakSpeed + local Speed = CS + CatchUpSpeed if Speed < 0 then Speed = 0 end - self:T( { "Client Speed, Client Time, Escort Speed, Speed, CatchUpSpeed, BreakSpeed, Distance, Time:", CS, CT, GS, Speed, CatchUpSpeed, BreakSpeed, Distance, Time } ) + self:T( { "Client Speed, Escort Speed, Speed, FlyDistance, Time:", CS, GS, Speed, Distance, Time } ) -- Now route the escort to the desired point with the desired speed. - self.EscortGroup:TaskRouteToVec3( CVI, Speed / 3.6 ) -- DCS models speed in Mps (Miles per second) + self.EscortGroup:TaskRouteToVec3( GDV, Speed / 3.6 ) -- DCS models speed in Mps (Miles per second) end else routines.removeFunction( self.FollowScheduler ) @@ -403,7 +488,7 @@ function ESCORT:_FollowScheduler( FollowDistance ) end -function ESCORT:_ScanForTargets() +function ESCORT:_ReportTargetsScheduler() self:F() self.Targets = {} @@ -511,6 +596,7 @@ function ESCORT:_ScanForTargets() end else - routines.removeFunction( self.ScanForTargetsScheduler ) + routines.removeFunction( self.ReportTargetsScheduler ) + self.ReportTargetsScheduler = nil end end diff --git a/Moose/Group.lua b/Moose/Group.lua index 7754f9e01..98399764c 100644 --- a/Moose/Group.lua +++ b/Moose/Group.lua @@ -26,7 +26,8 @@ GROUP = { -- @type DCSGroup -- @field id_ The ID of the group in DCS -GROUPS = {} +--- The GROUPS structure contains references to all the created GROUP instances. +local GROUPS = {} --- Create a new GROUP from a DCSGroup -- @param self @@ -44,6 +45,8 @@ function GROUP:New( DCSGroup ) else self:E( { "DCSGroup is nil or does not exist, cannot initialize GROUP!", self.DCSGroup } ) end + + GROUPS[self.GroupID] = self return self end @@ -64,6 +67,8 @@ function GROUP:NewFromName( GroupName ) self.Controller = self.DCSGroup:getController() end + GROUPS[self.GroupID] = self + return self end @@ -82,6 +87,8 @@ function GROUP:NewFromDCSUnit( DCSUnit ) self.Controller = self.DCSGroup:getController() end + GROUPS[self.GroupID] = self + return self end @@ -556,13 +563,27 @@ function GROUP:TaskEmbarkToTransportAtVec2( Point, Radius ) return DCSTask end ---- Return a Misson task to follow a given route. +--- Return a Misson task from a mission template. -- @param #GROUP self --- @param #table Points A table of Route Points. +-- @param #table TaskMission A table containing the mission task. -- @return #DCSTask -function GROUP:TaskMission( Points ) +function GROUP:TaskMission( TaskMission ) self:F( Points ) + local DCSTask + DCSTask = { id = 'Mission', params = { TaskMission, }, } + + self:T( { DCSTask } ) + return DCSTask +end + +--- Return a Misson task to follow a given route defined by Points. +-- @param #GROUP self +-- @param #table Points A table of route points. +-- @return #DCSTask +function GROUP:TaskRoute( Points ) + self:F( Points ) + local DCSTask DCSTask = { id = 'Mission', params = { route = { points = Points, }, }, } @@ -622,6 +643,33 @@ function GROUP:Route( GoPoints ) return self end +function GROUP:TaskRegisterWayPoint( WayPoint ) + + local DCSTask + + DCSTask = { id = "WrappedAction", + enabled = true, + auto = false, + number = 1, + params = + { + action = + { + id = "Script", + params = + { + command = "local MissionGroup = GROUP.FindGroup( ... ) " .. + "env.info( MissionGroup:GetName() ) " .. + "MissionGroup:RegisterWayPoint ( " .. WayPoint .. " )", + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + } + self:T( DCSTask ) + + return DCSTask +end + --- Route the group to a given zone. -- The group final destination point can be randomized. -- A speed can be given in km/h. @@ -678,6 +726,24 @@ function GROUP:TaskRouteToZone( Zone, Randomize, Speed, Formation ) return self end +--- Return the mission template of the group. +-- @param #GROUP self +-- @return #table The MissionTemplate +function GROUP:GetTaskMission() + self:F( self.GroupName ) + + return _Database.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:F( self.GroupName ) + + return _Database.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. @@ -757,7 +823,7 @@ end --- Holding weapons. -- @param #GROUP self -- @return #GROUP self -function GROUP:HoldFire() +function GROUP:OptionROEHoldFire() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -769,7 +835,7 @@ end --- Return fire. -- @param #GROUP self -- @return #GROUP self -function GROUP:ReturnFire() +function GROUP:OptionROEReturnFire() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -781,7 +847,7 @@ end --- Openfire. -- @param #GROUP self -- @return #GROUP self -function GROUP:OpenFire() +function GROUP:OptionROEOpenFire() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -793,7 +859,7 @@ end --- Weapon free. -- @param #GROUP self -- @return #GROUP self -function GROUP:WeaponFree() +function GROUP:OptionROEWeaponFree() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -805,7 +871,7 @@ end --- No evasion on enemy threats. -- @param #GROUP self -- @return #GROUP self -function GROUP:EvasionNoReaction() +function GROUP:OptionEvasionNoReaction() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -817,7 +883,7 @@ end --- Evasion passive defense. -- @param #GROUP self -- @return #GROUP self -function GROUP:EvasionPassiveDefense() +function GROUP:OptionROTPassiveDefense() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -829,7 +895,7 @@ end --- Evade fire. -- @param #GROUP self -- @return #GROUP self -function GROUP:EvasionEvadeFire() +function GROUP:OptionROTEvadeFire() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -841,7 +907,7 @@ end --- Vertical manoeuvres. -- @param #GROUP self -- @return #GROUP self -function GROUP:EvasionVertical() +function GROUP:OptionROTVertical() self:F( { self.GroupName } ) local Controller = self:_GetController() @@ -908,3 +974,25 @@ function GROUP:MessageToClient( Message, Duration, Client ) self:Message( Message, Duration ):ToClient( Client ) end +function GROUP:RegisterWayPoint( WayPoint ) + + self:Message( "Moving over wayPoint " .. WayPoint, 20 ):ToAll() + self.WayPoint = WayPoint +end + + + + +--- Find the created GROUP using the DCSGroup ID. If a GROUP was created with the DCSGroupID, the the GROUP instance will be returned. +-- Otherwise nil will be returned. +-- @param DCSGroup#Group Group +-- @return #GROUP +function GROUP.FindGroup( DCSGroup ) + + local self = GROUPS[DCSGroup:getID()] -- Group#GROUP + self:T( self:GetClassNameAndID() ) + return self + +end + + diff --git a/Test Missions/miz/MOOSE_Escort_Test_Follow.miz b/Test Missions/miz/MOOSE_Escort_Test_Follow.miz index a7692717e..9c73feb62 100644 Binary files a/Test Missions/miz/MOOSE_Escort_Test_Follow.miz and b/Test Missions/miz/MOOSE_Escort_Test_Follow.miz differ diff --git a/Test Missions/miz/MOOSE_Escort_Test_Follow/l10n/DEFAULT/MOOSE_Escort_Test_Follow.lua b/Test Missions/miz/MOOSE_Escort_Test_Follow/l10n/DEFAULT/MOOSE_Escort_Test_Follow.lua index e6aaa973d..5bcce439c 100644 --- a/Test Missions/miz/MOOSE_Escort_Test_Follow/l10n/DEFAULT/MOOSE_Escort_Test_Follow.lua +++ b/Test Missions/miz/MOOSE_Escort_Test_Follow/l10n/DEFAULT/MOOSE_Escort_Test_Follow.lua @@ -1,18 +1,27 @@ Include.File( "Mission" ) Include.File( "Client" ) +Include.File( "Spawn" ) Include.File( "Escort" ) do local function EventAliveHelicopter( Client ) - local EscortGroupHeli = GROUP:NewFromName( "Escort Helicopter" ) - local EscortHeli = ESCORT:New( Client, EscortGroupHeli, "Escort Test Helicopter" ) + local SpawnEscortHeli = SPAWN:New( "Escort Helicopter" ) + local EscortGroupHeli1 = SpawnEscortHeli:Spawn() + local EscortGroupHeli2 = SpawnEscortHeli:Spawn() + local EscortGroupHeli3 = SpawnEscortHeli:Spawn() + local EscortGroupHeli4 = SpawnEscortHeli:Spawn() + local EscortHeli1 = ESCORT:New( Client, EscortGroupHeli1, "Escort Alpha" ) + local EscortHeli2 = ESCORT:New( Client, EscortGroupHeli2, "Escort Bravo" ) + local EscortHeli3 = ESCORT:New( Client, EscortGroupHeli3, "Escort Delta" ) + local EscortHeli4 = ESCORT:New( Client, EscortGroupHeli4, "Escort Gamma" ) end local function EventAlivePlane( Client ) - local EscortGroupPlane = GROUP:NewFromName( "Escort Plane" ) - local EscortPlane = ESCORT:New( EscortClientPlane, EscortGroupPlane, "Escort Test Plane" ) + local SpawnEscortPlane = SPAWN:New( "Escort Plane" ) + local EscortGroupPlane = SpawnEscortPlane:Spawn() + local EscortPlane = ESCORT:New( Client, EscortGroupPlane, "Escort Test Plane" ) end local EscortClientHeli = CLIENT:New( "Lead Helicopter", "Fly around and observe the behaviour of the escort helicopter" ):Alive( EventAliveHelicopter ) diff --git a/Test Missions/miz/MOOSE_Escort_Test_Follow/l10n/DEFAULT/dictionary b/Test Missions/miz/MOOSE_Escort_Test_Follow/l10n/DEFAULT/dictionary index a731c15a0..50ee177b8 100644 --- a/Test Missions/miz/MOOSE_Escort_Test_Follow/l10n/DEFAULT/dictionary +++ b/Test Missions/miz/MOOSE_Escort_Test_Follow/l10n/DEFAULT/dictionary @@ -3,23 +3,31 @@ dictionary = ["DictKey_GroupName_19"] = "Escort Plane", ["DictKey_WptName_11"] = "", ["DictKey_UnitName_20"] = "Escort Plane", - ["DictKey_GroupName_15"] = "Lead Plane", + ["DictKey_GroupName_12"] = "Escort Helicopter", + ["DictKey_WptName_30"] = "", ["DictKey_sortie_4"] = "", + ["DictKey_WptName_28"] = "", + ["DictKey_WptName_14"] = "", + ["DictKey_WptName_29"] = "", ["DictKey_WptName_23"] = "", + ["DictKey_GroupName_15"] = "Lead Plane", ["DictKey_descriptionRedTask_2"] = "", - ["DictKey_descriptionBlueTask_3"] = "", ["DictKey_GroupName_9"] = "Lead Helicopter", + ["DictKey_GroupName_31"] = "Test Attack", ["DictKey_descriptionText_1"] = "", - ["DictKey_UnitName_10"] = "Lead Helicopter", + ["DictKey_UnitName_13"] = "Escort Helicopter", + ["DictKey_UnitName_32"] = "Unit #1", + ["DictKey_WptName_21"] = "", + ["DictKey_descriptionBlueTask_3"] = "", ["DictKey_WptName_22"] = "", ["DictKey_WptName_18"] = "", - ["DictKey_WptName_14"] = "", + ["DictKey_UnitName_10"] = "Lead Helicopter", ["DictKey_WptName_17"] = "", - ["DictKey_UnitName_13"] = "Escort Helicopter", + ["DictKey_WptName_33"] = "", ["DictKey_WptName_26"] = "", ["DictKey_WptName_25"] = "", ["DictKey_UnitName_16"] = "Lead Plane", - ["DictKey_WptName_21"] = "", ["DictKey_WptName_24"] = "", - ["DictKey_GroupName_12"] = "Escort Helicopter", + ["DictKey_WptName_34"] = "", + ["DictKey_WptName_27"] = "", } -- end of dictionary diff --git a/Test Missions/miz/MOOSE_Escort_Test_Follow/mission b/Test Missions/miz/MOOSE_Escort_Test_Follow/mission index 6c1f6e2bf..25ec48b82 100644 --- a/Test Missions/miz/MOOSE_Escort_Test_Follow/mission +++ b/Test Missions/miz/MOOSE_Escort_Test_Follow/mission @@ -83,7 +83,7 @@ mission = }, -- end of ["func"] }, -- end of ["red"] }, -- end of ["result"] - ["maxDictId"] = 26, + ["maxDictId"] = 34, ["groundControl"] = { ["isPilotControlVehicles"] = false, @@ -222,9 +222,9 @@ mission = }, -- end of ["needModules"] ["map"] = { - ["centerY"] = 633185.71428572, - ["zoom"] = 50000, - ["centerX"] = -286145.14285714, + ["centerY"] = 649668.57142857, + ["zoom"] = 100000, + ["centerX"] = -285813.71428571, }, -- end of ["map"] ["coalitions"] = { @@ -302,7 +302,6 @@ mission = { }, -- end of ["rules"] ["eventlist"] = "", - ["predicate"] = "triggerOnce", ["actions"] = { [1] = @@ -316,6 +315,7 @@ mission = }, -- end of ["ai_task"] }, -- end of [1] }, -- end of ["actions"] + ["predicate"] = "triggerOnce", ["comment"] = "MOOSE Load Method", }, -- end of [1] [2] = @@ -331,7 +331,6 @@ mission = }, -- end of [1] }, -- end of ["rules"] ["eventlist"] = "", - ["predicate"] = "triggerOnce", ["actions"] = { [1] = @@ -345,6 +344,7 @@ mission = }, -- end of ["ai_task"] }, -- end of [1] }, -- end of ["actions"] + ["predicate"] = "triggerOnce", ["comment"] = "MOOSE Load Dynamic", }, -- end of [2] [3] = @@ -360,7 +360,6 @@ mission = }, -- end of [1] }, -- end of ["rules"] ["eventlist"] = "", - ["predicate"] = "triggerOnce", ["actions"] = { [1] = @@ -374,6 +373,7 @@ mission = }, -- end of ["ai_task"] }, -- end of [1] }, -- end of ["actions"] + ["predicate"] = "triggerOnce", ["comment"] = "MOOSE Load Embedded", }, -- end of [3] [4] = @@ -382,7 +382,6 @@ mission = { }, -- end of ["rules"] ["eventlist"] = "", - ["predicate"] = "triggerOnce", ["actions"] = { [1] = @@ -396,6 +395,7 @@ mission = }, -- end of ["ai_task"] }, -- end of [1] }, -- end of ["actions"] + ["predicate"] = "triggerOnce", ["comment"] = "MOOSE Load Mission", }, -- end of [4] }, -- end of ["trigrules"] @@ -603,7 +603,7 @@ mission = }, -- end of [1] [2] = { - ["lateActivation"] = false, + ["lateActivation"] = true, ["tasks"] = { }, -- end of ["tasks"] @@ -612,7 +612,7 @@ mission = ["uncontrolled"] = false, ["route"] = { - ["routeRelativeTOT"] = false, + ["routeRelativeTOT"] = true, ["points"] = { [1] = @@ -643,24 +643,6 @@ mission = { ["tasks"] = { - [1] = - { - ["number"] = 1, - ["key"] = "CAS", - ["id"] = "EngageTargets", - ["enabled"] = true, - ["auto"] = true, - ["params"] = - { - ["targetTypes"] = - { - [1] = "Helicopters", - [2] = "Ground Units", - [3] = "Light armed ships", - }, -- end of ["targetTypes"] - ["priority"] = 0, - }, -- end of ["params"] - }, -- end of [1] }, -- end of ["tasks"] }, -- end of ["params"] }, -- end of ["task"] @@ -681,9 +663,9 @@ mission = ["vangle"] = 0, ["steer"] = 2, }, -- end of ["properties"] - ["ETA"] = 23.784032372968, - ["y"] = 631664.28571429, - ["x"] = -285595.14285714, + ["ETA"] = 48.824518671544, + ["y"] = 634468.57142857, + ["x"] = -283642.28571428, ["name"] = "DictKey_WptName_22", ["speed"] = 138.88888888889, ["ETA_locked"] = false, @@ -714,13 +696,66 @@ mission = ["vangle"] = 0, ["steer"] = 2, }, -- end of ["properties"] - ["ETA"] = 37.530380607896, - ["y"] = 633007.14285715, - ["x"] = -284238, + ["ETA"] = 231.0526539667, + ["y"] = 659754.28571428, + ["x"] = -284642.28571428, ["name"] = "DictKey_WptName_23", ["speed"] = 138.88888888889, ["ETA_locked"] = false, ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = false, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "SwitchWaypoint", + ["params"] = + { + ["goToWaypointIndex"] = 2, + ["fromWaypointIndex"] = 3, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [3] + [4] = + { + ["alt"] = 13, + ["type"] = "Land", + ["action"] = "Landing", + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["ETA"] = 322.67941016458, + ["airdromeId"] = 23, + ["y"] = 647369.87369832, + ["x"] = -281713.83114196, + ["name"] = "DictKey_WptName_34", + ["speed"] = 138.88888888889, + ["ETA_locked"] = false, + ["task"] = { ["id"] = "ComboTask", ["params"] = @@ -731,7 +766,7 @@ mission = }, -- end of ["params"] }, -- end of ["task"] ["speed_locked"] = true, - }, -- end of [3] + }, -- end of [4] }, -- end of ["points"] }, -- end of ["route"] ["groupId"] = 4, @@ -747,7 +782,7 @@ mission = ["speed"] = 138.88888888889, ["type"] = "Su-25T", ["unitId"] = 4, - ["psi"] = -1.1260144038135, + ["psi"] = -1.0438895175357, ["y"] = 628607.14285715, ["x"] = -287052.28571429, ["name"] = "DictKey_UnitName_20", @@ -761,7 +796,7 @@ mission = ["chaff"] = 128, ["gun"] = 100, }, -- end of ["payload"] - ["heading"] = 1.1260144038135, + ["heading"] = 1.0438895175357, ["callsign"] = { [1] = 1, @@ -870,10 +905,10 @@ mission = ["steer"] = 2, }, -- end of ["properties"] ["ETA"] = 0, - ["y"] = 630514.28571429, - ["x"] = -283495.14285714, + ["y"] = 628382.85714286, + ["x"] = -290099.42857143, ["name"] = "DictKey_WptName_11", - ["speed"] = 55.555555555556, + ["speed"] = 27.777777777778, ["ETA_locked"] = true, ["task"] = { @@ -920,9 +955,9 @@ mission = ["vangle"] = 0, ["steer"] = 2, }, -- end of ["properties"] - ["ETA"] = 33.043857683573, - ["y"] = 630528.57142858, - ["x"] = -281659.42857143, + ["ETA"] = 243.18972185585, + ["y"] = 641840, + ["x"] = -288899.42857143, ["name"] = "DictKey_WptName_26", ["speed"] = 55.555555555556, ["ETA_locked"] = false, @@ -951,7 +986,7 @@ mission = ["livery_id"] = "us army", ["skill"] = "Client", ["ropeLength"] = 15, - ["speed"] = 55.555555555556, + ["speed"] = 27.777777777778, ["type"] = "Ka-50", ["Radio"] = { @@ -975,12 +1010,12 @@ mission = { ["channels"] = { - [15] = 0.995, + [4] = 0.591, [13] = 0.583, [7] = 0.443, - [14] = 0.283, + [1] = 0.625, [2] = 0.303, - [4] = 0.591, + [15] = 0.995, [8] = 0.215, [16] = 1.21, [9] = 0.525, @@ -990,14 +1025,14 @@ mission = [11] = 0.718, [6] = 0.803, [12] = 0.35, - [1] = 0.625, + [14] = 0.283, }, -- end of ["channels"] }, -- end of [2] }, -- end of ["Radio"] ["unitId"] = 1, - ["psi"] = -0.0077819440762977, - ["y"] = 630514.28571429, - ["x"] = -283495.14285714, + ["psi"] = -1.481859585505, + ["y"] = 628382.85714286, + ["x"] = -290099.42857143, ["name"] = "DictKey_UnitName_10", ["payload"] = { @@ -1009,7 +1044,7 @@ mission = ["chaff"] = 0, ["gun"] = 100, }, -- end of ["payload"] - ["heading"] = 0.0077819440762977, + ["heading"] = 1.481859585505, ["callsign"] = { [1] = 1, @@ -1020,8 +1055,8 @@ mission = ["onboard_num"] = "050", }, -- end of [1] }, -- end of ["units"] - ["y"] = 630514.28571429, - ["x"] = -283495.14285714, + ["y"] = 628382.85714286, + ["x"] = -290099.42857143, ["name"] = "DictKey_GroupName_9", ["communication"] = true, ["start_time"] = 0, @@ -1029,7 +1064,7 @@ mission = }, -- end of [1] [2] = { - ["lateActivation"] = false, + ["lateActivation"] = true, ["tasks"] = { }, -- end of ["tasks"] @@ -1038,7 +1073,7 @@ mission = ["uncontrolled"] = false, ["route"] = { - ["routeRelativeTOT"] = false, + ["routeRelativeTOT"] = true, ["points"] = { [1] = @@ -1057,8 +1092,8 @@ mission = ["steer"] = 2, }, -- end of ["properties"] ["ETA"] = 0, - ["y"] = 630514.28571429, - ["x"] = -283788, + ["y"] = 630782.85714286, + ["x"] = -290756.57142857, ["name"] = "DictKey_WptName_14", ["speed"] = 55.555555555556, ["ETA_locked"] = true, @@ -1069,24 +1104,6 @@ mission = { ["tasks"] = { - [1] = - { - ["number"] = 1, - ["key"] = "CAS", - ["id"] = "EngageTargets", - ["enabled"] = true, - ["auto"] = true, - ["params"] = - { - ["targetTypes"] = - { - [1] = "Helicopters", - [2] = "Ground Units", - [3] = "Light armed ships", - }, -- end of ["targetTypes"] - ["priority"] = 0, - }, -- end of ["params"] - }, -- end of [1] }, -- end of ["tasks"] }, -- end of ["params"] }, -- end of ["task"] @@ -1107,11 +1124,115 @@ mission = ["vangle"] = 0, ["steer"] = 2, }, -- end of ["properties"] - ["ETA"] = 23.658540331395, - ["y"] = 630528.57142858, - ["x"] = -282473.71428571, + ["ETA"] = 73.425880995736, + ["y"] = 631182.85714286, + ["x"] = -292756.57142857, ["name"] = "DictKey_WptName_25", - ["speed"] = 55.555555555556, + ["speed"] = 27.777777777778, + ["ETA_locked"] = false, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["enabled"] = true, + ["auto"] = false, + ["id"] = "WrappedAction", + ["number"] = 1, + ["params"] = + { + ["action"] = + { + ["id"] = "Script", + ["params"] = + { + ["command"] = "local DCSGroup = GROUP.FindGroup( ... )\ +DCSGroup:RegisterWayPoint ( 2 )", + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [2] + [3] = + { + ["alt"] = 500, + ["type"] = "Turning Point", + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["ETA"] = 138.35636187296, + ["y"] = 632354.28571429, + ["x"] = -294128, + ["name"] = "DictKey_WptName_27", + ["speed"] = 27.777777777778, + ["ETA_locked"] = false, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["enabled"] = true, + ["auto"] = false, + ["id"] = "WrappedAction", + ["number"] = 1, + ["params"] = + { + ["action"] = + { + ["id"] = "Script", + ["params"] = + { + ["command"] = "local DCSGroup = GROUP.FindGroup( ... )\ +DCSGroup:RegisterWayPoint ( 3 )", + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [3] + [4] = + { + ["alt"] = 500, + ["type"] = "Turning Point", + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["ETA"] = 338.52413460414, + ["y"] = 635240, + ["x"] = -294699.42857143, + ["name"] = "DictKey_WptName_28", + ["speed"] = 27.777777777778, ["ETA_locked"] = false, ["task"] = { @@ -1124,7 +1245,91 @@ mission = }, -- end of ["params"] }, -- end of ["task"] ["speed_locked"] = true, - }, -- end of [2] + }, -- end of [4] + [5] = + { + ["alt"] = 500, + ["type"] = "Turning Point", + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["ETA"] = 513.40850223263, + ["y"] = 640097.14285714, + ["x"] = -294613.71428571, + ["name"] = "DictKey_WptName_29", + ["speed"] = 27.777777777778, + ["ETA_locked"] = false, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["enabled"] = true, + ["auto"] = false, + ["id"] = "EngageTargetsInZone", + ["number"] = 1, + ["params"] = + { + ["targetTypes"] = + { + [1] = "Ground Units", + }, -- end of ["targetTypes"] + ["x"] = -288242.28571428, + ["priority"] = 0, + ["y"] = 641982.85714286, + ["zoneRadius"] = 5000, + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [5] + [6] = + { + ["alt"] = 500, + ["type"] = "Turning Point", + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["ETA"] = 467.11155297145, + ["y"] = 642132.85714286, + ["x"] = -281992.28571428, + ["name"] = "DictKey_WptName_30", + ["speed"] = 27.777777777778, + ["ETA_locked"] = false, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [6] }, -- end of ["points"] }, -- end of ["route"] ["groupId"] = 2, @@ -1141,9 +1346,9 @@ mission = ["speed"] = 55.555555555556, ["type"] = "Ka-50", ["unitId"] = 2, - ["psi"] = -0.010869137177245, - ["y"] = 630514.28571429, - ["x"] = -283788, + ["psi"] = -2.9441970937399, + ["y"] = 630782.85714286, + ["x"] = -290756.57142857, ["name"] = "DictKey_UnitName_13", ["payload"] = { @@ -1155,7 +1360,7 @@ mission = ["chaff"] = 0, ["gun"] = 100, }, -- end of ["payload"] - ["heading"] = 0.010869137177245, + ["heading"] = 2.9441970937399, ["callsign"] = { [1] = 2, @@ -1166,8 +1371,8 @@ mission = ["onboard_num"] = "051", }, -- end of [1] }, -- end of ["units"] - ["y"] = 630514.28571429, - ["x"] = -283788, + ["y"] = 630782.85714286, + ["x"] = -290756.57142857, ["name"] = "DictKey_GroupName_12", ["communication"] = true, ["start_time"] = 0, @@ -1225,6 +1430,79 @@ mission = [7] = { ["id"] = 0, + ["vehicle"] = + { + ["group"] = + { + [1] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 9, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 641868.57142857, + ["x"] = -288928, + ["name"] = "DictKey_WptName_33", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 5, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "BTR-80", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 5, + ["skill"] = "Average", + ["y"] = 641868.57142857, + ["x"] = -288928, + ["name"] = "DictKey_UnitName_32", + ["playerCanDrive"] = true, + ["heading"] = 0, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 641868.57142857, + ["x"] = -288928, + ["name"] = "DictKey_GroupName_31", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [1] + }, -- end of ["group"] + }, -- end of ["vehicle"] ["name"] = "Russia", }, -- end of [7] [8] = @@ -1255,7 +1533,7 @@ mission = ["goals"] = { }, -- end of ["goals"] - ["currentKey"] = 452, + ["currentKey"] = 1192, ["start_time"] = 43200, ["forcedOptions"] = { @@ -1703,15 +1981,15 @@ mission = ["id"] = "sas_yaw_left", ["mm"] = 0, }, -- end of ["sas_yaw_left"] - ["DEFECTIVE_MECHANISM"] = + ["BOMBS_ARMING_NO_VOLATAGE_LEFT"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "DEFECTIVE_MECHANISM", + ["id"] = "BOMBS_ARMING_NO_VOLATAGE_LEFT", ["mm"] = 0, - }, -- end of ["DEFECTIVE_MECHANISM"] + }, -- end of ["BOMBS_ARMING_NO_VOLATAGE_LEFT"] ["PITOT_HEAT_ELEMENT"] = { ["hh"] = 0, @@ -1810,15 +2088,15 @@ mission = ["id"] = "asc_p", ["mm"] = 0, }, -- end of ["asc_p"] - ["sas_pitch_left"] = + ["COOLANT_SHORT_CIRCUIT"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "sas_pitch_left", + ["id"] = "COOLANT_SHORT_CIRCUIT", ["mm"] = 0, - }, -- end of ["sas_pitch_left"] + }, -- end of ["COOLANT_SHORT_CIRCUIT"] ["GUN_LEFT_IN_AMMUN_FAULT"] = { ["hh"] = 0, @@ -1882,24 +2160,24 @@ mission = ["id"] = "ecm", ["mm"] = 0, }, -- end of ["ecm"] - ["TGP_FAILURE_RIGHT"] = + ["CLOCK_FAILURE"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "TGP_FAILURE_RIGHT", + ["id"] = "CLOCK_FAILURE", ["mm"] = 0, - }, -- end of ["TGP_FAILURE_RIGHT"] - ["BOMBS_ARMING_BROKEN_WIRING_LEFT"] = + }, -- end of ["CLOCK_FAILURE"] + ["TURNIND_INCORRECT_SENS_VAC_HIGH"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "BOMBS_ARMING_BROKEN_WIRING_LEFT", + ["id"] = "TURNIND_INCORRECT_SENS_VAC_HIGH", ["mm"] = 0, - }, -- end of ["BOMBS_ARMING_BROKEN_WIRING_LEFT"] + }, -- end of ["TURNIND_INCORRECT_SENS_VAC_HIGH"] ["OIL_RADIATOR_WIRING"] = { ["hh"] = 0, @@ -1936,15 +2214,15 @@ mission = ["id"] = "PILOT_KILLED_FAILURE", ["mm"] = 0, }, -- end of ["PILOT_KILLED_FAILURE"] - ["GUN_LEFT_CENTER_MOUNT_LOOSE"] = + ["BOMBS_ARMING_BROKEN_WIRING_RIGHT"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "GUN_LEFT_CENTER_MOUNT_LOOSE", + ["id"] = "BOMBS_ARMING_BROKEN_WIRING_RIGHT", ["mm"] = 0, - }, -- end of ["GUN_LEFT_CENTER_MOUNT_LOOSE"] + }, -- end of ["BOMBS_ARMING_BROKEN_WIRING_RIGHT"] ["VHF_VT_BURNED_OUT"] = { ["hh"] = 0, @@ -1990,15 +2268,15 @@ mission = ["id"] = "GUN_LEFT_CENTER_BARREL_WORN", ["mm"] = 0, }, -- end of ["GUN_LEFT_CENTER_BARREL_WORN"] - ["TURNIND_POINTER_VIBRATES"] = + ["abris_software"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "TURNIND_POINTER_VIBRATES", + ["id"] = "abris_software", ["mm"] = 0, - }, -- end of ["TURNIND_POINTER_VIBRATES"] + }, -- end of ["abris_software"] ["GUN_FAIL_LEFT_OUT_GUN"] = { ["hh"] = 0, @@ -2008,15 +2286,15 @@ mission = ["id"] = "GUN_FAIL_LEFT_OUT_GUN", ["mm"] = 0, }, -- end of ["GUN_FAIL_LEFT_OUT_GUN"] - ["SAR_1_101"] = + ["PUMP_FAILS"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "SAR_1_101", + ["id"] = "PUMP_FAILS", ["mm"] = 0, - }, -- end of ["SAR_1_101"] + }, -- end of ["PUMP_FAILS"] ["ROCKETS_INTERVALOMETER_WIRING"] = { ["hh"] = 0, @@ -2026,15 +2304,15 @@ mission = ["id"] = "ROCKETS_INTERVALOMETER_WIRING", ["mm"] = 0, }, -- end of ["ROCKETS_INTERVALOMETER_WIRING"] - ["GUN_RIGHT_OUT_AMMUN_FAULT"] = + ["MainReductor_LowOilPressure"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "GUN_RIGHT_OUT_AMMUN_FAULT", + ["id"] = "MainReductor_LowOilPressure", ["mm"] = 0, - }, -- end of ["GUN_RIGHT_OUT_AMMUN_FAULT"] + }, -- end of ["MainReductor_LowOilPressure"] ["GUN_RIGHT_IN_AMMUN_FAULT"] = { ["hh"] = 0, @@ -2071,15 +2349,15 @@ mission = ["id"] = "BOMBS_RUST_LEFT", ["mm"] = 0, }, -- end of ["BOMBS_RUST_LEFT"] - ["GUN_RIGHT_CENTER_BARREL_WORN"] = + ["ARN_83_ADF_DAMAGE"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "GUN_RIGHT_CENTER_BARREL_WORN", + ["id"] = "ARN_83_ADF_DAMAGE", ["mm"] = 0, - }, -- end of ["GUN_RIGHT_CENTER_BARREL_WORN"] + }, -- end of ["ARN_83_ADF_DAMAGE"] ["asc"] = { ["hh"] = 0, @@ -2619,15 +2897,15 @@ mission = ["id"] = "AN_ALE_40V_FAILURE_CONTAINER_RIGHT_WING", ["mm"] = 0, }, -- end of ["AN_ALE_40V_FAILURE_CONTAINER_RIGHT_WING"] - ["GUN_LEFT_CENTER_OPEN_CIRCUIT"] = + ["TACH_POOR_CONNECTION"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "GUN_LEFT_CENTER_OPEN_CIRCUIT", + ["id"] = "TACH_POOR_CONNECTION", ["mm"] = 0, - }, -- end of ["GUN_LEFT_CENTER_OPEN_CIRCUIT"] + }, -- end of ["TACH_POOR_CONNECTION"] ["GUN_RIGHT_IN_MOUNT_LOOSE"] = { ["hh"] = 0, @@ -2835,15 +3113,15 @@ mission = ["id"] = "es_damage_GeneratorLeft", ["mm"] = 0, }, -- end of ["es_damage_GeneratorLeft"] - ["SUPERCHARGER_SOLENOID"] = + ["ILS_FAILURE_ANT_GLIDESLOPE"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "SUPERCHARGER_SOLENOID", + ["id"] = "ILS_FAILURE_ANT_GLIDESLOPE", ["mm"] = 0, - }, -- end of ["SUPERCHARGER_SOLENOID"] + }, -- end of ["ILS_FAILURE_ANT_GLIDESLOPE"] ["engine_chip"] = { ["hh"] = 0, @@ -2853,15 +3131,15 @@ mission = ["id"] = "engine_chip", ["mm"] = 0, }, -- end of ["engine_chip"] - ["ARN_83_TOTAL_FAILURE"] = + ["GUN_LEFT_CENTER_AMMUN_FAULT"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "ARN_83_TOTAL_FAILURE", + ["id"] = "GUN_LEFT_CENTER_AMMUN_FAULT", ["mm"] = 0, - }, -- end of ["ARN_83_TOTAL_FAILURE"] + }, -- end of ["GUN_LEFT_CENTER_AMMUN_FAULT"] ["CADC_FAILURE_MACH"] = { ["hh"] = 0, @@ -2916,15 +3194,15 @@ mission = ["id"] = "laser_failure", ["mm"] = 0, }, -- end of ["laser_failure"] - ["ARN_83_ADF_DAMAGE"] = + ["RADAR_ALTIMETR_RIGHT_ANT_FAILURE"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "ARN_83_ADF_DAMAGE", + ["id"] = "RADAR_ALTIMETR_RIGHT_ANT_FAILURE", ["mm"] = 0, - }, -- end of ["ARN_83_ADF_DAMAGE"] + }, -- end of ["RADAR_ALTIMETR_RIGHT_ANT_FAILURE"] ["AN_ALR69V_FAILURE_SENSOR_TAIL_LEFT"] = { ["hh"] = 0, @@ -2934,42 +3212,33 @@ mission = ["id"] = "AN_ALR69V_FAILURE_SENSOR_TAIL_LEFT", ["mm"] = 0, }, -- end of ["AN_ALR69V_FAILURE_SENSOR_TAIL_LEFT"] - ["PUMP_FAILS"] = + ["COMPASS_ERRATIC_OPERATION"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "PUMP_FAILS", + ["id"] = "COMPASS_ERRATIC_OPERATION", ["mm"] = 0, - }, -- end of ["PUMP_FAILS"] - ["AN_ALE_40V_FAILURE_CONTAINER_RIGHT_GEAR"] = + }, -- end of ["COMPASS_ERRATIC_OPERATION"] + ["BOMBS_ARMING_BROKEN_WIRING_LEFT"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "AN_ALE_40V_FAILURE_CONTAINER_RIGHT_GEAR", + ["id"] = "BOMBS_ARMING_BROKEN_WIRING_LEFT", ["mm"] = 0, - }, -- end of ["AN_ALE_40V_FAILURE_CONTAINER_RIGHT_GEAR"] - ["TACH_BREAK_IN_INDICATOR"] = + }, -- end of ["BOMBS_ARMING_BROKEN_WIRING_LEFT"] + ["VHF_SHORTED_CTL_BOX"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "TACH_BREAK_IN_INDICATOR", + ["id"] = "VHF_SHORTED_CTL_BOX", ["mm"] = 0, - }, -- end of ["TACH_BREAK_IN_INDICATOR"] - ["BATTERY_OVERHEAT"] = - { - ["hh"] = 0, - ["prob"] = 100, - ["enable"] = false, - ["mmint"] = 1, - ["id"] = "BATTERY_OVERHEAT", - ["mm"] = 0, - }, -- end of ["BATTERY_OVERHEAT"] + }, -- end of ["VHF_SHORTED_CTL_BOX"] ["CARBAIR_SHORT_CIRCUIT_LEADS"] = { ["hh"] = 0, @@ -2979,6 +3248,15 @@ mission = ["id"] = "CARBAIR_SHORT_CIRCUIT_LEADS", ["mm"] = 0, }, -- end of ["CARBAIR_SHORT_CIRCUIT_LEADS"] + ["BATTERY_OVERHEAT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BATTERY_OVERHEAT", + ["mm"] = 0, + }, -- end of ["BATTERY_OVERHEAT"] ["NOSE_AIRSPEED_INDICATOR_FAILURE"] = { ["hh"] = 0, @@ -2988,42 +3266,33 @@ mission = ["id"] = "NOSE_AIRSPEED_INDICATOR_FAILURE", ["mm"] = 0, }, -- end of ["NOSE_AIRSPEED_INDICATOR_FAILURE"] - ["GUN_FAIL_RIGHT_IN_GUN"] = + ["es_damage_GeneratorRight"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "GUN_FAIL_RIGHT_IN_GUN", + ["id"] = "es_damage_GeneratorRight", ["mm"] = 0, - }, -- end of ["GUN_FAIL_RIGHT_IN_GUN"] - ["abris_software"] = + }, -- end of ["es_damage_GeneratorRight"] + ["GUN_RIGHT_OUT_AMMUN_FAULT"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "abris_software", + ["id"] = "GUN_RIGHT_OUT_AMMUN_FAULT", ["mm"] = 0, - }, -- end of ["abris_software"] - ["ILS_FAILURE_ANT_GLIDESLOPE"] = + }, -- end of ["GUN_RIGHT_OUT_AMMUN_FAULT"] + ["BOMBS_NO_VOLATAGE_BOTH"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "ILS_FAILURE_ANT_GLIDESLOPE", + ["id"] = "BOMBS_NO_VOLATAGE_BOTH", ["mm"] = 0, - }, -- end of ["ILS_FAILURE_ANT_GLIDESLOPE"] - ["COPILOT_KILLED_FAILURE"] = - { - ["hh"] = 0, - ["prob"] = 100, - ["enable"] = false, - ["mmint"] = 1, - ["id"] = "COPILOT_KILLED_FAILURE", - ["mm"] = 0, - }, -- end of ["COPILOT_KILLED_FAILURE"] + }, -- end of ["BOMBS_NO_VOLATAGE_BOTH"] ["CADC_FAILURE_IAS"] = { ["hh"] = 0, @@ -3033,33 +3302,42 @@ mission = ["id"] = "CADC_FAILURE_IAS", ["mm"] = 0, }, -- end of ["CADC_FAILURE_IAS"] - ["COOLANT_RADIATOR_SENSOR"] = + ["BOMBS_DAMAGE_ELINKAGE_RIGHT"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "COOLANT_RADIATOR_SENSOR", + ["id"] = "BOMBS_DAMAGE_ELINKAGE_RIGHT", ["mm"] = 0, - }, -- end of ["COOLANT_RADIATOR_SENSOR"] - ["GUN_LEFT_CENTER_AMMUN_FAULT"] = + }, -- end of ["BOMBS_DAMAGE_ELINKAGE_RIGHT"] + ["ROOF_AIRSPEED_INDICATOR_FAILURE"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "GUN_LEFT_CENTER_AMMUN_FAULT", + ["id"] = "ROOF_AIRSPEED_INDICATOR_FAILURE", ["mm"] = 0, - }, -- end of ["GUN_LEFT_CENTER_AMMUN_FAULT"] - ["BOMBS_ARMING_NO_VOLATAGE_LEFT"] = + }, -- end of ["ROOF_AIRSPEED_INDICATOR_FAILURE"] + ["AAR_47_FAILURE_SENSOR_BOTTOM"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "BOMBS_ARMING_NO_VOLATAGE_LEFT", + ["id"] = "AAR_47_FAILURE_SENSOR_BOTTOM", ["mm"] = 0, - }, -- end of ["BOMBS_ARMING_NO_VOLATAGE_LEFT"] + }, -- end of ["AAR_47_FAILURE_SENSOR_BOTTOM"] + ["DEFECTIVE_MECHANISM"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "DEFECTIVE_MECHANISM", + ["mm"] = 0, + }, -- end of ["DEFECTIVE_MECHANISM"] ["AN_ALR69V_FAILURE_SENSOR_NOSE_RIGHT"] = { ["hh"] = 0, @@ -3087,15 +3365,15 @@ mission = ["id"] = "hydro_main_irreversible_valve", ["mm"] = 0, }, -- end of ["hydro_main_irreversible_valve"] - ["TAIL_GEAR_D_LOCK"] = + ["CADC_FAILURE_DYNAMIC"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "TAIL_GEAR_D_LOCK", + ["id"] = "CADC_FAILURE_DYNAMIC", ["mm"] = 0, - }, -- end of ["TAIL_GEAR_D_LOCK"] + }, -- end of ["CADC_FAILURE_DYNAMIC"] ["hud"] = { ["hh"] = 0, @@ -3168,15 +3446,15 @@ mission = ["id"] = "es_damage_MainGenerator", ["mm"] = 0, }, -- end of ["es_damage_MainGenerator"] - ["MainReductor_LowOilPressure"] = + ["RIGHT_WING_TANK_LEAK"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "MainReductor_LowOilPressure", + ["id"] = "RIGHT_WING_TANK_LEAK", ["mm"] = 0, - }, -- end of ["MainReductor_LowOilPressure"] + }, -- end of ["RIGHT_WING_TANK_LEAK"] ["IGNITION_TERM_CONNECT"] = { ["hh"] = 0, @@ -3222,24 +3500,24 @@ mission = ["id"] = "VHF_SQUELCH_RELAY", ["mm"] = 0, }, -- end of ["VHF_SQUELCH_RELAY"] - ["COMPASS_ERRATIC_OPERATION"] = + ["SAR_1_101"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "COMPASS_ERRATIC_OPERATION", + ["id"] = "SAR_1_101", ["mm"] = 0, - }, -- end of ["COMPASS_ERRATIC_OPERATION"] - ["TACAN_FAILURE_RECEIVER"] = + }, -- end of ["SAR_1_101"] + ["GUN_LEFT_CENTER_OPEN_CIRCUIT"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "TACAN_FAILURE_RECEIVER", + ["id"] = "GUN_LEFT_CENTER_OPEN_CIRCUIT", ["mm"] = 0, - }, -- end of ["TACAN_FAILURE_RECEIVER"] + }, -- end of ["GUN_LEFT_CENTER_OPEN_CIRCUIT"] ["sas_pitch_right"] = { ["hh"] = 0, @@ -3258,24 +3536,24 @@ mission = ["id"] = "BOMBS_NO_VOLATAGE_AT_RACK_LEFT", ["mm"] = 0, }, -- end of ["BOMBS_NO_VOLATAGE_AT_RACK_LEFT"] - ["TransitionalReductor_ShaveInOil"] = + ["TURNIND_POINTER_VIBRATES"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "TransitionalReductor_ShaveInOil", + ["id"] = "TURNIND_POINTER_VIBRATES", ["mm"] = 0, - }, -- end of ["TransitionalReductor_ShaveInOil"] - ["TACH_POOR_CONNECTION"] = + }, -- end of ["TURNIND_POINTER_VIBRATES"] + ["TACAN_FAILURE_RECEIVER"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "TACH_POOR_CONNECTION", + ["id"] = "TACAN_FAILURE_RECEIVER", ["mm"] = 0, - }, -- end of ["TACH_POOR_CONNECTION"] + }, -- end of ["TACAN_FAILURE_RECEIVER"] ["VHF_AM_RADIO_FAILURE_TOTAL"] = { ["hh"] = 0, @@ -3303,24 +3581,24 @@ mission = ["id"] = "VHF_CRYSTAL", ["mm"] = 0, }, -- end of ["VHF_CRYSTAL"] - ["COOLANT_SHORT_CIRCUIT"] = + ["GUN_FAIL_RIGHT_IN_GUN"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "COOLANT_SHORT_CIRCUIT", + ["id"] = "GUN_FAIL_RIGHT_IN_GUN", ["mm"] = 0, - }, -- end of ["COOLANT_SHORT_CIRCUIT"] - ["BOMBS_ARMING_BROKEN_WIRING_RIGHT"] = + }, -- end of ["GUN_FAIL_RIGHT_IN_GUN"] + ["sas_pitch_left"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "BOMBS_ARMING_BROKEN_WIRING_RIGHT", + ["id"] = "sas_pitch_left", ["mm"] = 0, - }, -- end of ["BOMBS_ARMING_BROKEN_WIRING_RIGHT"] + }, -- end of ["sas_pitch_left"] ["F2_TOP_CYLINDER"] = { ["hh"] = 0, @@ -3348,15 +3626,15 @@ mission = ["id"] = "MANIFOLD_LINE_LEAK", ["mm"] = 0, }, -- end of ["MANIFOLD_LINE_LEAK"] - ["CADC_FAILURE_DYNAMIC"] = + ["COPILOT_KILLED_FAILURE"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "CADC_FAILURE_DYNAMIC", + ["id"] = "COPILOT_KILLED_FAILURE", ["mm"] = 0, - }, -- end of ["CADC_FAILURE_DYNAMIC"] + }, -- end of ["COPILOT_KILLED_FAILURE"] ["CADC_FAILURE_PRESSURE_ALT"] = { ["hh"] = 0, @@ -3375,24 +3653,24 @@ mission = ["id"] = "K14_NO_POWER_SUPPLY", ["mm"] = 0, }, -- end of ["K14_NO_POWER_SUPPLY"] - ["RADAR_ALTIMETR_RIGHT_ANT_FAILURE"] = + ["COOLANT_RADIATOR_SENSOR"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "RADAR_ALTIMETR_RIGHT_ANT_FAILURE", + ["id"] = "COOLANT_RADIATOR_SENSOR", ["mm"] = 0, - }, -- end of ["RADAR_ALTIMETR_RIGHT_ANT_FAILURE"] - ["es_damage_GeneratorRight"] = + }, -- end of ["COOLANT_RADIATOR_SENSOR"] + ["INSUF_FUEL_PRES"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "es_damage_GeneratorRight", + ["id"] = "INSUF_FUEL_PRES", ["mm"] = 0, - }, -- end of ["es_damage_GeneratorRight"] + }, -- end of ["INSUF_FUEL_PRES"] ["BOMBS_DAMAGE_LINKAGE_RIGHT"] = { ["hh"] = 0, @@ -3411,15 +3689,15 @@ mission = ["id"] = "fs_damage_engine_pump", ["mm"] = 0, }, -- end of ["fs_damage_engine_pump"] - ["VHF_SHORTED_CTL_BOX"] = + ["GUN_RIGHT_OUT_OPEN_CIRCUIT"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "VHF_SHORTED_CTL_BOX", + ["id"] = "GUN_RIGHT_OUT_OPEN_CIRCUIT", ["mm"] = 0, - }, -- end of ["VHF_SHORTED_CTL_BOX"] + }, -- end of ["GUN_RIGHT_OUT_OPEN_CIRCUIT"] ["CADC_FAILURE_STATIC"] = { ["hh"] = 0, @@ -3456,51 +3734,51 @@ mission = ["id"] = "IFFCC_FAILURE_TOTAL", ["mm"] = 0, }, -- end of ["IFFCC_FAILURE_TOTAL"] - ["CLOCK_FAILURE"] = + ["UNLOAD_VALVE_NOT_UNLOAD"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "CLOCK_FAILURE", + ["id"] = "UNLOAD_VALVE_NOT_UNLOAD", ["mm"] = 0, - }, -- end of ["CLOCK_FAILURE"] - ["GUN_LEFT_OUT_AMMUN_FAULT"] = + }, -- end of ["UNLOAD_VALVE_NOT_UNLOAD"] + ["TAIL_GEAR_D_LOCK"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "GUN_LEFT_OUT_AMMUN_FAULT", + ["id"] = "TAIL_GEAR_D_LOCK", ["mm"] = 0, - }, -- end of ["GUN_LEFT_OUT_AMMUN_FAULT"] - ["BOMBS_NO_VOLATAGE_BOTH"] = + }, -- end of ["TAIL_GEAR_D_LOCK"] + ["TACH_BREAK_IN_INDICATOR"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "BOMBS_NO_VOLATAGE_BOTH", + ["id"] = "TACH_BREAK_IN_INDICATOR", ["mm"] = 0, - }, -- end of ["BOMBS_NO_VOLATAGE_BOTH"] - ["BOMBS_DAMAGE_ELINKAGE_RIGHT"] = + }, -- end of ["TACH_BREAK_IN_INDICATOR"] + ["GMC_TOTAL_FAILURE"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "BOMBS_DAMAGE_ELINKAGE_RIGHT", + ["id"] = "GMC_TOTAL_FAILURE", ["mm"] = 0, - }, -- end of ["BOMBS_DAMAGE_ELINKAGE_RIGHT"] - ["GUN_LEFT_OUT_BARREL_WORN"] = + }, -- end of ["GMC_TOTAL_FAILURE"] + ["GUN_RIGHT_CENTER_BARREL_WORN"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "GUN_LEFT_OUT_BARREL_WORN", + ["id"] = "GUN_RIGHT_CENTER_BARREL_WORN", ["mm"] = 0, - }, -- end of ["GUN_LEFT_OUT_BARREL_WORN"] + }, -- end of ["GUN_RIGHT_CENTER_BARREL_WORN"] ["EXT_HYDRO_LEAK"] = { ["hh"] = 0, @@ -3645,15 +3923,15 @@ mission = ["id"] = "TACAN_FAILURE_TRANSMITTER", ["mm"] = 0, }, -- end of ["TACAN_FAILURE_TRANSMITTER"] - ["engine_surge_failure"] = + ["AN_ALE_40V_FAILURE_CONTAINER_RIGHT_GEAR"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "engine_surge_failure", + ["id"] = "AN_ALE_40V_FAILURE_CONTAINER_RIGHT_GEAR", ["mm"] = 0, - }, -- end of ["engine_surge_failure"] + }, -- end of ["AN_ALE_40V_FAILURE_CONTAINER_RIGHT_GEAR"] ["l_gen"] = { ["hh"] = 0, @@ -3663,15 +3941,15 @@ mission = ["id"] = "l_gen", ["mm"] = 0, }, -- end of ["l_gen"] - ["RIGHT_WING_TANK_LEAK"] = + ["TransitionalReductor_ShaveInOil"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "RIGHT_WING_TANK_LEAK", + ["id"] = "TransitionalReductor_ShaveInOil", ["mm"] = 0, - }, -- end of ["RIGHT_WING_TANK_LEAK"] + }, -- end of ["TransitionalReductor_ShaveInOil"] ["GUN_LEFT_IN_BARREL_WORN"] = { ["hh"] = 0, @@ -3690,15 +3968,15 @@ mission = ["id"] = "r_gen", ["mm"] = 0, }, -- end of ["r_gen"] - ["l_conv"] = + ["GUN_LEFT_OUT_BARREL_WORN"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "l_conv", + ["id"] = "GUN_LEFT_OUT_BARREL_WORN", ["mm"] = 0, - }, -- end of ["l_conv"] + }, -- end of ["GUN_LEFT_OUT_BARREL_WORN"] ["AAR_47_FAILURE_SENSOR_RIGHT"] = { ["hh"] = 0, @@ -3753,15 +4031,15 @@ mission = ["id"] = "BOOSTER_COIL", ["mm"] = 0, }, -- end of ["BOOSTER_COIL"] - ["INSUF_FUEL_PRES"] = + ["engine_surge_failure"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "INSUF_FUEL_PRES", + ["id"] = "engine_surge_failure", ["mm"] = 0, - }, -- end of ["INSUF_FUEL_PRES"] + }, -- end of ["engine_surge_failure"] ["FAULTY_ROCKET_RIGHT"] = { ["hh"] = 0, @@ -3834,15 +4112,15 @@ mission = ["id"] = "CLOGGED_FUEL_STRAINER", ["mm"] = 0, }, -- end of ["CLOGGED_FUEL_STRAINER"] - ["TURNIND_INCORRECT_SENS_VAC_HIGH"] = + ["GUN_LEFT_OUT_AMMUN_FAULT"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "TURNIND_INCORRECT_SENS_VAC_HIGH", + ["id"] = "GUN_LEFT_OUT_AMMUN_FAULT", ["mm"] = 0, - }, -- end of ["TURNIND_INCORRECT_SENS_VAC_HIGH"] + }, -- end of ["GUN_LEFT_OUT_AMMUN_FAULT"] ["r_engine"] = { ["hh"] = 0, @@ -3888,15 +4166,14 @@ mission = ["id"] = "D2_RIGHT_CYLINDER", ["mm"] = 0, }, -- end of ["D2_RIGHT_CYLINDER"] - ["UNLOAD_VALVE_NOT_UNLOAD"] = + ["ecf"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "UNLOAD_VALVE_NOT_UNLOAD", ["mm"] = 0, - }, -- end of ["UNLOAD_VALVE_NOT_UNLOAD"] + }, -- end of ["ecf"] ["AN_ALR69V_FAILURE_TOTAL"] = { ["hh"] = 0, @@ -3906,15 +4183,6 @@ mission = ["id"] = "AN_ALR69V_FAILURE_TOTAL", ["mm"] = 0, }, -- end of ["AN_ALR69V_FAILURE_TOTAL"] - ["GMC_TOTAL_FAILURE"] = - { - ["hh"] = 0, - ["prob"] = 100, - ["enable"] = false, - ["mmint"] = 1, - ["id"] = "GMC_TOTAL_FAILURE", - ["mm"] = 0, - }, -- end of ["GMC_TOTAL_FAILURE"] ["BOMBS_ARMING_BROKEN_SOLENOID_LEFT"] = { ["hh"] = 0, @@ -3924,15 +4192,24 @@ mission = ["id"] = "BOMBS_ARMING_BROKEN_SOLENOID_LEFT", ["mm"] = 0, }, -- end of ["BOMBS_ARMING_BROKEN_SOLENOID_LEFT"] - ["GUN_RIGHT_OUT_OPEN_CIRCUIT"] = + ["SUPERCHARGER_SOLENOID"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "GUN_RIGHT_OUT_OPEN_CIRCUIT", + ["id"] = "SUPERCHARGER_SOLENOID", ["mm"] = 0, - }, -- end of ["GUN_RIGHT_OUT_OPEN_CIRCUIT"] + }, -- end of ["SUPERCHARGER_SOLENOID"] + ["ARN_83_TOTAL_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ARN_83_TOTAL_FAILURE", + ["mm"] = 0, + }, -- end of ["ARN_83_TOTAL_FAILURE"] ["l_engine"] = { ["hh"] = 0, @@ -3942,24 +4219,24 @@ mission = ["id"] = "l_engine", ["mm"] = 0, }, -- end of ["l_engine"] - ["ROOF_AIRSPEED_INDICATOR_FAILURE"] = + ["GUN_LEFT_CENTER_MOUNT_LOOSE"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "ROOF_AIRSPEED_INDICATOR_FAILURE", + ["id"] = "GUN_LEFT_CENTER_MOUNT_LOOSE", ["mm"] = 0, - }, -- end of ["ROOF_AIRSPEED_INDICATOR_FAILURE"] - ["AAR_47_FAILURE_SENSOR_BOTTOM"] = + }, -- end of ["GUN_LEFT_CENTER_MOUNT_LOOSE"] + ["TGP_FAILURE_RIGHT"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, - ["id"] = "AAR_47_FAILURE_SENSOR_BOTTOM", + ["id"] = "TGP_FAILURE_RIGHT", ["mm"] = 0, - }, -- end of ["AAR_47_FAILURE_SENSOR_BOTTOM"] + }, -- end of ["TGP_FAILURE_RIGHT"] ["COOLANT_DEFECTIVE_IND"] = { ["hh"] = 0, @@ -3969,14 +4246,15 @@ mission = ["id"] = "COOLANT_DEFECTIVE_IND", ["mm"] = 0, }, -- end of ["COOLANT_DEFECTIVE_IND"] - ["ecf"] = + ["l_conv"] = { ["hh"] = 0, ["prob"] = 100, ["enable"] = false, ["mmint"] = 1, + ["id"] = "l_conv", ["mm"] = 0, - }, -- end of ["ecf"] + }, -- end of ["l_conv"] ["JADRO_1A_FAILURE_TOTAL"] = { ["hh"] = 0, diff --git a/Test Missions/miz/MOOSE_Escort_Test_Follow/warehouses b/Test Missions/miz/MOOSE_Escort_Test_Follow/warehouses index 68ca70eb9..4da4b8597 100644 --- a/Test Missions/miz/MOOSE_Escort_Test_Follow/warehouses +++ b/Test Missions/miz/MOOSE_Escort_Test_Follow/warehouses @@ -442,7 +442,7 @@ warehouses = ["suppliers"] = { }, -- end of ["suppliers"] - ["coalition"] = "NEUTRAL", + ["coalition"] = "BLUE", ["jet_fuel"] = { ["InitFuel"] = 100,