diff --git a/Moose Development/Moose/Controllable.lua b/Moose Development/Moose/Controllable.lua index c1c899bd5..4c42cc639 100644 --- a/Moose Development/Moose/Controllable.lua +++ b/Moose Development/Moose/Controllable.lua @@ -353,8 +353,20 @@ end -- @param #number FromWayPoint -- @param #number ToWayPoint -- @return DCSTask#Task -function CONTROLLABLE:CommandSwitchWayPoint( FromWayPoint, ToWayPoint, Index ) - self:F2( { FromWayPoint, ToWayPoint, Index } ) +-- @usage +-- --- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class. +-- HeliGroup = GROUP:FindByName( "Helicopter" ) +-- +-- --- Route the helicopter back to the FARP after 60 seconds. +-- -- We use the SCHEDULER class to do this. +-- SCHEDULER:New( nil, +-- function( HeliGroup ) +-- local CommandRTB = HeliGroup:CommandSwitchWayPoint( 2, 8 ) +-- HeliGroup:SetCommand( CommandRTB ) +-- end, { HeliGroup }, 90 +-- ) +function CONTROLLABLE:CommandSwitchWayPoint( FromWayPoint, ToWayPoint ) + self:F2( { FromWayPoint, ToWayPoint } ) local CommandSwitchWayPoint = { id = 'SwitchWaypoint', @@ -392,7 +404,7 @@ end --- (AIR) Attack a Controllable. -- @param #CONTROLLABLE self --- @param Controllable#CONTROLLABLE AttackControllable The Controllable to be attacked. +-- @param Controllable#CONTROLLABLE AttackGroup 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. @@ -400,8 +412,8 @@ end -- @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 } ) +function CONTROLLABLE:TaskAttackGroup( AttackGroup, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit ) + self:F2( { self.ControllableName, AttackGroup, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit } ) -- AttackControllable = { -- id = 'AttackControllable', @@ -431,7 +443,7 @@ function CONTROLLABLE:TaskAttackControllable( AttackControllable, WeaponType, We local DCSTask DCSTask = { id = 'AttackControllable', params = { - controllableId = AttackControllable:GetID(), + controllableId = AttackGroup:GetID(), weaponType = WeaponType, expend = WeaponExpend, attackQty = AttackQty, @@ -923,13 +935,13 @@ end -- 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 Controllable#CONTROLLABLE AttackGroup 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 } ) +function CONTROLLABLE:TaskFAC_AttackGroup( AttackGroup, WeaponType, Designation, Datalink ) + self:F2( { self.ControllableName, AttackGroup, WeaponType, Designation, Datalink } ) -- FAC_AttackControllable = { -- id = 'FAC_AttackControllable', @@ -944,7 +956,7 @@ function CONTROLLABLE:TaskFAC_AttackControllable( AttackControllable, WeaponType local DCSTask DCSTask = { id = 'FAC_AttackControllable', params = { - controllableId = AttackControllable:GetID(), + controllableId = AttackGroup:GetID(), weaponType = WeaponType, designation = Designation, datalink = Datalink, @@ -1027,7 +1039,7 @@ 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 Controllable#CONTROLLABLE AttackGroup 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. @@ -1036,8 +1048,8 @@ end -- @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 } ) +function CONTROLLABLE:EnRouteTaskEngageGroup( AttackGroup, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit ) + self:F2( { self.ControllableName, AttackGroup, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit } ) -- EngageControllable = { -- id = 'EngageControllable ', @@ -1068,7 +1080,7 @@ function CONTROLLABLE:EnRouteTaskEngageControllable( AttackControllable, Priorit local DCSTask DCSTask = { id = 'EngageControllable', params = { - controllableId = AttackControllable:GetID(), + controllableId = AttackGroup:GetID(), weaponType = WeaponType, expend = WeaponExpend, attackQty = AttackQty, @@ -1211,14 +1223,14 @@ end -- 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 Controllable#CONTROLLABLE AttackGroup 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 } ) +function CONTROLLABLE:EnRouteTaskFAC_EngageGroup( AttackGroup, Priority, WeaponType, Designation, Datalink ) + self:F2( { self.ControllableName, AttackGroup, WeaponType, Priority, Designation, Datalink } ) -- FAC_EngageControllable = { -- id = 'FAC_EngageControllable', @@ -1234,7 +1246,7 @@ function CONTROLLABLE:EnRouteTaskFAC_EngageControllable( AttackControllable, Pri local DCSTask DCSTask = { id = 'FAC_EngageControllable', params = { - controllableId = AttackControllable:GetID(), + controllableId = AttackGroup:GetID(), weaponType = WeaponType, designation = Designation, datalink = Datalink, diff --git a/Moose Development/Moose/Group.lua b/Moose Development/Moose/Group.lua index 57375b510..791306273 100644 --- a/Moose Development/Moose/Group.lua +++ b/Moose Development/Moose/Group.lua @@ -31,7 +31,8 @@ -- 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. +-- These methods return a string consisting of the task description, which can then be given to either a +-- @{Controllable#CONTROLLABLE.PushTask} or @{Controllable#CONTROLLABLE.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. @@ -43,63 +44,63 @@ -- -- 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. +-- * @{Controllable#CONTROLLABLE.TaskAttackGroup}: (AIR) Attack a Group. +-- * @{Controllable#CONTROLLABLE.TaskAttackMapObject}: (AIR) Attacking the map object (building, structure, e.t.c). +-- * @{Controllable#CONTROLLABLE.TaskAttackUnit}: (AIR) Attack the Unit. +-- * @{Controllable#CONTROLLABLE.TaskBombing}: (Controllable#CONTROLLABLEDelivering weapon at the point on the ground. +-- * @{Controllable#CONTROLLABLE.TaskBombingRunway}: (AIR) Delivering weapon on the runway. +-- * @{Controllable#CONTROLLABLE.TaskEmbarking}: (AIR) Move the group to a Vec2 Point, wait for a defined duration and embark a group. +-- * @{Controllable#CONTROLLABLE.TaskEmbarkToTransport}: (GROUND) Embark to a Transport landed at a location. +-- * @{Controllable#CONTROLLABLE.TaskEscort}: (AIR) Escort another airborne group. +-- * @{Controllable#CONTROLLABLE.TaskFAC_AttackGroup}: (AIR + GROUND) The task makes the group/unit a FAC and orders the FAC to control the target (enemy ground group) destruction. +-- * @{Controllable#CONTROLLABLE.TaskFireAtPoint}: (GROUND) Fire at a VEC2 point until ammunition is finished. +-- * @{Controllable#CONTROLLABLE.TaskFollow}: (AIR) Following another airborne group. +-- * @{Controllable#CONTROLLABLE.TaskHold}: (GROUND) Hold ground group from moving. +-- * @{Controllable#CONTROLLABLE.TaskHoldPosition}: (AIR) Hold position at the current position of the first unit of the group. +-- * @{Controllable#CONTROLLABLE.TaskLand}: (AIR HELICOPTER) Landing at the ground. For helicopters only. +-- * @{Controllable#CONTROLLABLE.TaskLandAtZone}: (AIR) Land the group at a @{Zone#ZONE_RADIUS). +-- * @{Controllable#CONTROLLABLE.TaskOrbitCircle}: (AIR) Orbit at the current position of the first unit of the group at a specified alititude. +-- * @{Controllable#CONTROLLABLE.TaskOrbitCircleAtVec2}: (AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed. +-- * @{Controllable#CONTROLLABLE.TaskRefueling}: (AIR) Refueling from the nearest tanker. No parameters. +-- * @{Controllable#CONTROLLABLE.TaskRoute}: (AIR + GROUND) Return a Misson task to follow a given route defined by Points. +-- * @{Controllable#CONTROLLABLE.TaskRouteToVec2}: (AIR + GROUND) Make the Group move to a given point. +-- * @{Controllable#CONTROLLABLE.TaskRouteToVec3}: (AIR + GROUND) Make the Group move to a given point. +-- * @{Controllable#CONTROLLABLE.TaskRouteToZone}: (AIR + GROUND) Route the group to a given zone. +-- * @{Controllable#CONTROLLABLE.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. +-- * @{Controllable#CONTROLLABLE.EnRouteTaskAWACS}: (AIR) Aircraft will act as an AWACS for friendly units (will provide them with information about contacts). No parameters. +-- * @{Controllable#CONTROLLABLE.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. +-- * @{Controllable#CONTROLLABLE.EnRouteTaskEngageTargets}: (AIR) Engaging targets of defined types. +-- * @{Controllable#CONTROLLABLE.EnRouteTaskEWR}: (AIR) Attack the Unit. +-- * @{Controllable#CONTROLLABLE.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. +-- * @{Controllable#CONTROLLABLE.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. +-- * @{Controllable#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: -- --- * @{#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. +-- * @{Controllable#CONTROLLABLE.TaskWrappedAction}: Return a WrappedAction Task taking a Command. +-- * @{Controllable#CONTROLLABLE.TaskCombo}: Return a Combo Task taking an array of Tasks. +-- * @{Controllable#CONTROLLABLE.TaskCondition}: Return a condition section for a controlled task. +-- * @{Controllable#CONTROLLABLE.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. +-- * @{Controllable#CONTROLLABLE.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 **command methods** prepare the execution of commands using the @{Controllable#CONTROLLABLE.SetCommand} method: -- --- * @{#GROUP.CommandDoScript}: Do Script command. --- * @{#GROUP.CommandSwitchWayPoint}: Perform a switch waypoint command. +-- * @{Controllable#CONTROLLABLE.CommandDoScript}: Do Script command. +-- * @{Controllable#CONTROLLABLE.CommandSwitchWayPoint}: Perform a switch waypoint command. -- -- 1.4) GROUP Option methods -- ------------------------- @@ -107,31 +108,31 @@ -- -- ### 1.4.1) Rule of Engagement: -- --- * @{#GROUP.OptionROEWeaponFree} --- * @{#GROUP.OptionROEOpenFire} --- * @{#GROUP.OptionROEReturnFire} --- * @{#GROUP.OptionROEEvadeFire} +-- * @{Controllable#CONTROLLABLE.OptionROEWeaponFree} +-- * @{Controllable#CONTROLLABLE.OptionROEOpenFire} +-- * @{Controllable#CONTROLLABLE.OptionROEReturnFire} +-- * @{Controllable#CONTROLLABLE.OptionROEEvadeFire} -- -- To check whether an ROE option is valid for a specific group, use: -- --- * @{#GROUP.OptionROEWeaponFreePossible} --- * @{#GROUP.OptionROEOpenFirePossible} --- * @{#GROUP.OptionROEReturnFirePossible} --- * @{#GROUP.OptionROEEvadeFirePossible} +-- * @{Controllable#CONTROLLABLE.OptionROEWeaponFreePossible} +-- * @{Controllable#CONTROLLABLE.OptionROEOpenFirePossible} +-- * @{Controllable#CONTROLLABLE.OptionROEReturnFirePossible} +-- * @{Controllable#CONTROLLABLE.OptionROEEvadeFirePossible} -- -- ### 1.4.2) Rule on thread: -- --- * @{#GROUP.OptionROTNoReaction} --- * @{#GROUP.OptionROTPassiveDefense} --- * @{#GROUP.OptionROTEvadeFire} --- * @{#GROUP.OptionROTVertical} +-- * @{Controllable#CONTROLLABLE.OptionROTNoReaction} +-- * @{Controllable#CONTROLLABLE.OptionROTPassiveDefense} +-- * @{Controllable#CONTROLLABLE.OptionROTEvadeFire} +-- * @{Controllable#CONTROLLABLE.OptionROTVertical} -- -- To test whether an ROT option is valid for a specific group, use: -- --- * @{#GROUP.OptionROTNoReactionPossible} --- * @{#GROUP.OptionROTPassiveDefensePossible} --- * @{#GROUP.OptionROTEvadeFirePossible} --- * @{#GROUP.OptionROTVerticalPossible} +-- * @{Controllable#CONTROLLABLE.OptionROTNoReactionPossible} +-- * @{Controllable#CONTROLLABLE.OptionROTPassiveDefensePossible} +-- * @{Controllable#CONTROLLABLE.OptionROTEvadeFirePossible} +-- * @{Controllable#CONTROLLABLE.OptionROTVerticalPossible} -- -- 1.5) GROUP Zone validation methods -- ---------------------------------- diff --git a/Moose Test Missions/MOOSE_Test_Template.miz b/Moose Test Missions/MOOSE_Test_Template.miz new file mode 100644 index 000000000..2f66b14cb Binary files /dev/null and b/Moose Test Missions/MOOSE_Test_Template.miz differ 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 82dfa9b63..333460c2b 100644 Binary files a/Moose Test Missions/Moose_Test_AIBALANCER/Moose_Test_AIBALANCER.miz and b/Moose Test Missions/Moose_Test_AIBALANCER/Moose_Test_AIBALANCER.miz differ 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 97cc0c051..147202c01 100644 Binary files a/Moose Test Missions/Moose_Test_AIRBASEPOLICE/Moose_Test_AIRBASEPOLICE.miz and b/Moose Test Missions/Moose_Test_AIRBASEPOLICE/Moose_Test_AIRBASEPOLICE.miz differ 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 a90134571..391b36cdb 100644 Binary files a/Moose Test Missions/Moose_Test_BASE/Moose_Test_AIRBLANCER_with_Moose.miz and b/Moose Test Missions/Moose_Test_BASE/Moose_Test_AIRBLANCER_with_Moose.miz differ 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 ba38df7e0..e6aa23213 100644 Binary files a/Moose Test Missions/Moose_Test_BASE/Moose_Test_AIRBLANCER_without_Moose.miz and b/Moose Test Missions/Moose_Test_BASE/Moose_Test_AIRBLANCER_without_Moose.miz differ 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 235d72e4c..b5d6e7550 100644 Binary files a/Moose Test Missions/Moose_Test_BASE/Moose_Test_BASE.miz and b/Moose Test Missions/Moose_Test_BASE/Moose_Test_BASE.miz differ 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 f719ccfba..c28c8dc07 100644 Binary files a/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz and b/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz differ 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 07c39c760..d6160e4e8 100644 Binary files a/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz and b/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz differ diff --git a/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION.miz b/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION.miz index d6aaa7d8e..94199792d 100644 Binary files a/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION.miz and b/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION.miz differ 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 377cbbc61..b34f2c685 100644 Binary files a/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION_Laser.miz and b/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION_Laser.miz differ 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 f4ee418bc..18fe80541 100644 Binary files a/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz and b/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz differ 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 5ddfc23d4..2127fc339 100644 Binary files a/Moose Test Missions/Moose_Test_FAC/Moose_Test_FAC.miz and b/Moose Test Missions/Moose_Test_FAC/Moose_Test_FAC.miz differ diff --git a/Moose Test Missions/Moose_Test_GROUP_SwitchWayPoint/MOOSE_Test_GROUP_SwitchWayPoint.miz b/Moose Test Missions/Moose_Test_GROUP_SwitchWayPoint/MOOSE_Test_GROUP_SwitchWayPoint.miz new file mode 100644 index 000000000..8618b2776 Binary files /dev/null and b/Moose Test Missions/Moose_Test_GROUP_SwitchWayPoint/MOOSE_Test_GROUP_SwitchWayPoint.miz differ diff --git a/Moose Test Missions/Moose_Test_GROUP_SwitchWayPoint/Moose_Test_GROUP_SwitchWayPoint.lua b/Moose Test Missions/Moose_Test_GROUP_SwitchWayPoint/Moose_Test_GROUP_SwitchWayPoint.lua new file mode 100644 index 000000000..03258b2cf --- /dev/null +++ b/Moose Test Missions/Moose_Test_GROUP_SwitchWayPoint/Moose_Test_GROUP_SwitchWayPoint.lua @@ -0,0 +1,12 @@ +--- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class. + +HeliGroup = GROUP:FindByName( "Helicopter" ) + +--- Route the helicopter back to the FARP after 60 seconds. +-- We use the SCHEDULER class to do this. +SCHEDULER:New( nil, + function( HeliGroup ) + local CommandRTB = HeliGroup:CommandSwitchWayPoint( 2, 8 ) + HeliGroup:SetCommand( CommandRTB ) + end, { HeliGroup }, 90 +) 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 2b1135fcc..48a0963eb 100644 Binary files a/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz and b/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz differ diff --git a/Moose Test Missions/Moose_Test_PATROLZONE/MOOSE_Test_PATROLZONE.miz b/Moose Test Missions/Moose_Test_PATROLZONE/MOOSE_Test_PATROLZONE.miz index a6cab4004..2a3afcdf6 100644 Binary files a/Moose Test Missions/Moose_Test_PATROLZONE/MOOSE_Test_PATROLZONE.miz and b/Moose Test Missions/Moose_Test_PATROLZONE/MOOSE_Test_PATROLZONE.miz differ 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 4ca74564d..6e8d1898e 100644 Binary files a/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz and b/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz differ 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 013ed9998..d733c5333 100644 Binary files a/Moose Test Missions/Moose_Test_SET_AIRBASE/Moose_Test_SET_AIRBASE.miz and b/Moose Test Missions/Moose_Test_SET_AIRBASE/Moose_Test_SET_AIRBASE.miz differ diff --git a/Moose Test Missions/Moose_Test_SET_CLIENT/Moose_Test_SET_CLIENT.miz b/Moose Test Missions/Moose_Test_SET_CLIENT/Moose_Test_SET_CLIENT.miz index 9f104893b..dfb82801f 100644 Binary files a/Moose Test Missions/Moose_Test_SET_CLIENT/Moose_Test_SET_CLIENT.miz and b/Moose Test Missions/Moose_Test_SET_CLIENT/Moose_Test_SET_CLIENT.miz differ diff --git a/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz b/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz index 5e7570608..5f5374341 100644 Binary files a/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz and b/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz differ diff --git a/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz b/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz index ee060868d..d9bad1919 100644 Binary files a/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz and b/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz differ diff --git a/Moose Test Missions/Moose_Test_SPAWN_CleanUp/MOOSE_Test_SPAWN_CleanUp.lua b/Moose Test Missions/Moose_Test_SPAWN_CleanUp/MOOSE_Test_SPAWN_CleanUp.lua new file mode 100644 index 000000000..c0ff838b5 --- /dev/null +++ b/Moose Test Missions/Moose_Test_SPAWN_CleanUp/MOOSE_Test_SPAWN_CleanUp.lua @@ -0,0 +1,8 @@ +-- Tests Kutaisi +-- ------------- +-- Tests the CleanUp functionality. +-- Limited spawning of groups, scheduled every 10 seconds, who are engaging into combat. Some helicopters may crash land on the ground. +-- Observe when helicopters land but are not dead and are out of the danger zone, that they get removed after a while (+/- 180 seconds) and ReSpawn. +Spawn_Helicopter_Scheduled_CleanUp = SPAWN:New( "Spawn Helicopter Scheduled CleanUp" ):Limit( 3, 100 ):RandomizeRoute( 1, 1, 1000 ):CleanUp( 60 ):SpawnScheduled( 10, 0 ) +Spawn_Vehicle_Scheduled_CleanUp = SPAWN:New( "Spawn Vehicle Scheduled CleanUp" ):Limit( 3, 100 ):RandomizeRoute( 1, 1, 1000 ):SpawnScheduled( 10, 0 ) + diff --git a/Moose Test Missions/Moose_Test_SPAWN_CleanUp/MOOSE_Test_SPAWN_CleanUp.miz b/Moose Test Missions/Moose_Test_SPAWN_CleanUp/MOOSE_Test_SPAWN_CleanUp.miz new file mode 100644 index 000000000..6b28888fc Binary files /dev/null and b/Moose Test Missions/Moose_Test_SPAWN_CleanUp/MOOSE_Test_SPAWN_CleanUp.miz differ diff --git a/Moose Test Missions/Moose_Test_SPAWN_Limit_Scheduled/MOOSE_Test_SPAWN_Limit_Scheduled.lua b/Moose Test Missions/Moose_Test_SPAWN_Limit_Scheduled/MOOSE_Test_SPAWN_Limit_Scheduled.lua new file mode 100644 index 000000000..ae074449d --- /dev/null +++ b/Moose Test Missions/Moose_Test_SPAWN_Limit_Scheduled/MOOSE_Test_SPAWN_Limit_Scheduled.lua @@ -0,0 +1,15 @@ +-- Tests Gudauta +-- -------------- +-- Limited spawning of groups, scheduled every 30 seconds ... +Spawn_Plane_Limited_Scheduled = SPAWN:New( "Spawn Plane Limited Scheduled" ):Limit( 2, 20 ):SpawnScheduled( 30, 0 ) +Spawn_Helicopter_Limited_Scheduled = SPAWN:New( "Spawn Helicopter Limited Scheduled" ):Limit( 2, 20 ):SpawnScheduled( 30, 0 ) +Spawn_Ground_Limited_Scheduled = SPAWN:New( "Spawn Vehicle Limited Scheduled" ):Limit( 2, 20 ):SpawnScheduled( 90, 0 ) + +-- Tests Sukhumi +-- ------------- +-- Limited spawning of groups, scheduled every seconds with destruction. +Spawn_Plane_Limited_Scheduled_RandomizeRoute = SPAWN:New( "Spawn Plane Limited Scheduled Destroy" ):Limit( 5, 20 ):SpawnScheduled( 10, 0 ) +Spawn_Helicopter_Limited_Scheduled_RandomizeRoute = SPAWN:New( "Spawn Helicopter Limited Scheduled Destroy" ):Limit( 5, 20 ):SpawnScheduled( 10, 0 ) +Spawn_Vehicle_Limited_Scheduled_RandomizeRoute = SPAWN:New( "Spawn Vehicle Limited Scheduled Destroy" ):Limit( 5, 20 ):SpawnScheduled( 10, 0 ) + + diff --git a/Moose Test Missions/Moose_Test_SPAWN_Limit_Scheduled/MOOSE_Test_SPAWN_Limit_Scheduled.miz b/Moose Test Missions/Moose_Test_SPAWN_Limit_Scheduled/MOOSE_Test_SPAWN_Limit_Scheduled.miz new file mode 100644 index 000000000..2671c704f Binary files /dev/null and b/Moose Test Missions/Moose_Test_SPAWN_Limit_Scheduled/MOOSE_Test_SPAWN_Limit_Scheduled.miz differ 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 f37110ea1..a364978cc 100644 Binary files a/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.miz and b/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.miz differ 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 62c1db7d8..b694f1e26 100644 Binary files a/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz and b/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz differ diff --git a/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz b/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz index cc3ac18f2..f4d55c88b 100644 Binary files a/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz and b/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz differ diff --git a/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz b/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz index 3d3805684..827ace03a 100644 Binary files a/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz and b/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz differ diff --git a/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.miz b/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.miz index ab8d9520f..015b47070 100644 Binary files a/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.miz and b/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.miz differ 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 82d45767d..070ef7fd3 100644 Binary files a/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz and b/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz differ 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 3bb0b9dff..dd21bab2e 100644 Binary files a/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.miz and b/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.miz differ diff --git a/Moose Training/Documentation/Controllable.html b/Moose Training/Documentation/Controllable.html index b9d5670fc..dd406caf8 100644 --- a/Moose Training/Documentation/Controllable.html +++ b/Moose Training/Documentation/Controllable.html @@ -254,7 +254,7 @@ This is different from the EnRoute tasks, where the targets of the task need to
Perform a switch waypoint command
(AIR) Engaging a controllable.
(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.
(AIR) Attack a Controllable.
(AIR + GROUND) The task makes the controllable/unit a FAC and orders the FAC to control the target (enemy ground controllable) destruction.
#number ToWayPoint :
Index :
--- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class.
+HeliGroup = GROUP:FindByName( "Helicopter" )
+
+--- Route the helicopter back to the FARP after 60 seconds.
+-- We use the SCHEDULER class to do this.
+SCHEDULER:New( nil,
+ function( HeliGroup )
+ local CommandRTB = HeliGroup:CommandSwitchWayPoint( 2, 8 )
+ HeliGroup:SetCommand( CommandRTB )
+ end, { HeliGroup }, 90
+)
+
Controllable#CONTROLLABLE AttackControllable :
+
Controllable#CONTROLLABLE AttackGroup :
The Controllable to be attacked.
Controllable#CONTROLLABLE AttackControllable :
+
Controllable#CONTROLLABLE AttackGroup :
Target CONTROLLABLE.
Controllable#CONTROLLABLE AttackControllable :
+
Controllable#CONTROLLABLE AttackGroup :
The Controllable to be attacked.
Controllable#CONTROLLABLE AttackControllable :
+
Controllable#CONTROLLABLE AttackGroup :
Target CONTROLLABLE.
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.
+These methods return a string consisting of the task description, which can then be given to either a
+Controllable#CONTROLLABLE.PushTask or Controllable#CONTROLLABLE.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.
Find below a list of the assigned 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:
There are certain task methods that allow to tailor the task behaviour:
Group templates contain complete mission descriptions. Sometimes you want to copy a complete mission from a group and assign it to another:
Group command methods prepare the execution of commands using the GROUP.SetCommand method:
+Group command methods prepare the execution of commands using the Controllable#CONTROLLABLE.SetCommand method:
To check whether an ROE option is valid for a specific group, use:
To test whether an ROT option is valid for a specific group, use: