From 6f570db72ffc25f18d58f03a39eda31afe9b7936 Mon Sep 17 00:00:00 2001 From: kaltokri Date: Mon, 1 Jan 2024 19:37:07 +0100 Subject: [PATCH] New folder structure --- .../CAP-100 - AI_A2A_CAP - Normal CAP.lua | 50 ++--- .../CAP-100 - AI_A2A_CAP - Normal CAP.miz | Bin ...-001 - BAI in a Zone by Airplane Group.lua | 148 +++++++------- ...-001 - BAI in a Zone by Airplane Group.miz | Bin ... by Airplane Group - Engage with Speed.lua | 150 +++++++-------- ... by Airplane Group - Engage with Speed.miz | Bin ... a Zone by Airplane Group - Test Abort.lua | 162 ++++++++-------- ... a Zone by Airplane Group - Test Abort.miz | Bin ...plane Group - Engage with WeaponExpend.lua | 156 +++++++-------- ...plane Group - Engage with WeaponExpend.miz | Bin .../BAI-100 - BAI of a Bridge.lua | 152 +++++++-------- .../BAI-100 - BAI of a Bridge.miz | Bin .../CAP-001 - Combat Air Patrol.lua | 46 ++--- .../CAP-001 - Combat Air Patrol.miz | Bin .../CAP-010 - CAP and Engage within Range.lua | 54 +++--- .../CAP-010 - CAP and Engage within Range.miz | Bin .../CAP-010 - CAP and Engage within Zone.lua | 46 ++--- .../CAP-011 - CAP and Engage within Zone.lua | 64 +++--- .../CAP-011 - CAP and Engage within Zone.miz | Bin .../CAP-012 - CAP - Test Abort.lua | 86 ++++----- .../CAP-012 - CAP - Test Abort.miz | Bin .../CAP-020 - Combat Air Patrol RTB Test.lua | 54 +++--- .../CAP-020 - Combat Air Patrol RTB Test.miz | Bin ...-001 - CAS in a Zone by Airplane Group.lua | 148 +++++++------- ...-001 - CAS in a Zone by Airplane Group.miz | Bin ... by Airplane Group - Engage with Speed.lua | 150 +++++++-------- ... by Airplane Group - Engage with Speed.miz | Bin ...Group - Engage with Speed and Altitude.lua | 152 +++++++-------- ...Group - Engage with Speed and Altitude.miz | Bin ... a Zone by Airplane Group - Test Abort.lua | 162 ++++++++-------- ... a Zone by Airplane Group - Test Abort.miz | Bin ...plane Group - Engage with WeaponExpend.lua | 156 +++++++-------- ...plane Group - Engage with WeaponExpend.miz | Bin .../CAS-010 - CAS in a Zone by Helicopter.lua | 152 +++++++-------- .../CAS-010 - CAS in a Zone by Helicopter.miz | Bin ...11 - CAS in a Zone by Helicopter Group.lua | 150 +++++++-------- ...11 - CAS in a Zone by Helicopter Group.miz | Bin ...Zone by Helicopter and AirPlane Groups.lua | 182 +++++++++--------- ...Zone by Helicopter and AirPlane Groups.miz | Bin 39 files changed, 1210 insertions(+), 1210 deletions(-) rename {CAP - Combat Air Patrol => AI/AI_A2A_Cap}/CAP-100 - AI_A2A_CAP - Normal CAP/CAP-100 - AI_A2A_CAP - Normal CAP.lua (95%) rename {CAP - Combat Air Patrol => AI/AI_A2A_Cap}/CAP-100 - AI_A2A_CAP - Normal CAP/CAP-100 - AI_A2A_CAP - Normal CAP.miz (100%) rename {BAI - Battlefield Air Interdiction => AI/AI_BAI}/BAI-001 - BAI in a Zone by Airplane Group/BAI-001 - BAI in a Zone by Airplane Group.lua (97%) rename {BAI - Battlefield Air Interdiction => AI/AI_BAI}/BAI-001 - BAI in a Zone by Airplane Group/BAI-001 - BAI in a Zone by Airplane Group.miz (100%) rename {BAI - Battlefield Air Interdiction => AI/AI_BAI}/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed.lua (97%) rename {BAI - Battlefield Air Interdiction => AI/AI_BAI}/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed.miz (100%) rename {BAI - Battlefield Air Interdiction => AI/AI_BAI}/BAI-004 - BAI in a Zone by Airplane Group - Test Abort/BAI-004 - BAI in a Zone by Airplane Group - Test Abort.lua (97%) rename {BAI - Battlefield Air Interdiction => AI/AI_BAI}/BAI-004 - BAI in a Zone by Airplane Group - Test Abort/BAI-004 - BAI in a Zone by Airplane Group - Test Abort.miz (100%) rename {BAI - Battlefield Air Interdiction => AI/AI_BAI}/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend.lua (97%) rename {BAI - Battlefield Air Interdiction => AI/AI_BAI}/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend.miz (100%) rename {BAI - Battlefield Air Interdiction => AI/AI_BAI}/BAI-100 - BAI of a Bridge/BAI-100 - BAI of a Bridge.lua (97%) rename {BAI - Battlefield Air Interdiction => AI/AI_BAI}/BAI-100 - BAI of a Bridge/BAI-100 - BAI of a Bridge.miz (100%) rename {CAP - Combat Air Patrol => AI/AI_CAP}/CAP-001 - Combat Air Patrol/CAP-001 - Combat Air Patrol.lua (96%) rename {CAP - Combat Air Patrol => AI/AI_CAP}/CAP-001 - Combat Air Patrol/CAP-001 - Combat Air Patrol.miz (100%) rename {CAP - Combat Air Patrol => AI/AI_CAP}/CAP-010 - CAP and Engage within Range/CAP-010 - CAP and Engage within Range.lua (97%) rename {CAP - Combat Air Patrol => AI/AI_CAP}/CAP-010 - CAP and Engage within Range/CAP-010 - CAP and Engage within Range.miz (100%) rename {CAP - Combat Air Patrol => AI/AI_CAP}/CAP-011 - CAP and Engage within Zone/CAP-010 - CAP and Engage within Zone.lua (96%) rename {CAP - Combat Air Patrol => AI/AI_CAP}/CAP-011 - CAP and Engage within Zone/CAP-011 - CAP and Engage within Zone.lua (97%) rename {CAP - Combat Air Patrol => AI/AI_CAP}/CAP-011 - CAP and Engage within Zone/CAP-011 - CAP and Engage within Zone.miz (100%) rename {CAP - Combat Air Patrol => AI/AI_CAP}/CAP-012 - CAP - Test Abort/CAP-012 - CAP - Test Abort.lua (97%) rename {CAP - Combat Air Patrol => AI/AI_CAP}/CAP-012 - CAP - Test Abort/CAP-012 - CAP - Test Abort.miz (100%) rename {CAP - Combat Air Patrol => AI/AI_CAP}/CAP-020 - Combat Air Patrol RTB Test/CAP-020 - Combat Air Patrol RTB Test.lua (96%) rename {CAP - Combat Air Patrol => AI/AI_CAP}/CAP-020 - Combat Air Patrol RTB Test/CAP-020 - Combat Air Patrol RTB Test.miz (100%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-001 - CAS in a Zone by Airplane Group/CAS-001 - CAS in a Zone by Airplane Group.lua (97%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-001 - CAS in a Zone by Airplane Group/CAS-001 - CAS in a Zone by Airplane Group.miz (100%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed.lua (97%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed.miz (100%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude.lua (97%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude.miz (100%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-004 - CAS in a Zone by Airplane Group - Test Abort/CAS-004 - CAS in a Zone by Airplane Group - Test Abort.lua (97%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-004 - CAS in a Zone by Airplane Group - Test Abort/CAS-004 - CAS in a Zone by Airplane Group - Test Abort.miz (100%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend.lua (97%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend.miz (100%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-010 - CAS in a Zone by Helicopter/CAS-010 - CAS in a Zone by Helicopter.lua (97%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-010 - CAS in a Zone by Helicopter/CAS-010 - CAS in a Zone by Helicopter.miz (100%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-011 - CAS in a Zone by Helicopter Group/CAS-011 - CAS in a Zone by Helicopter Group.lua (97%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-011 - CAS in a Zone by Helicopter Group/CAS-011 - CAS in a Zone by Helicopter Group.miz (100%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups.lua (98%) rename {CAS - Close Air Support => AI/AI_CAS}/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups.miz (100%) diff --git a/CAP - Combat Air Patrol/CAP-100 - AI_A2A_CAP - Normal CAP/CAP-100 - AI_A2A_CAP - Normal CAP.lua b/AI/AI_A2A_Cap/CAP-100 - AI_A2A_CAP - Normal CAP/CAP-100 - AI_A2A_CAP - Normal CAP.lua similarity index 95% rename from CAP - Combat Air Patrol/CAP-100 - AI_A2A_CAP - Normal CAP/CAP-100 - AI_A2A_CAP - Normal CAP.lua rename to AI/AI_A2A_Cap/CAP-100 - AI_A2A_CAP - Normal CAP/CAP-100 - AI_A2A_CAP - Normal CAP.lua index 926acdfda2..7b5db069a6 100644 --- a/CAP - Combat Air Patrol/CAP-100 - AI_A2A_CAP - Normal CAP/CAP-100 - AI_A2A_CAP - Normal CAP.lua +++ b/AI/AI_A2A_Cap/CAP-100 - AI_A2A_CAP - Normal CAP/CAP-100 - AI_A2A_CAP - Normal CAP.lua @@ -1,26 +1,26 @@ ---- --- Name: CAP-100 - AI_A2A_CAP - Normal CAP --- Author: FlightControl --- Date Created: 30 May 2017 --- --- # Situation: --- The Su-27 airplane will patrol in PatrolZone. --- It will not engage any enemy automatically. --- --- # Test cases: --- --- 1. Observe the Su-27 patrolling. --- - -local CapPlane = GROUP:FindByName( "Plane" ) - -local PatrolZone = ZONE:New( "Patrol Zone" ) - -A2ACap = AI_A2A_CAP:New( CapPlane, PatrolZone, 500, 1000, 500, 600 ) - -A2ACap:Patrol() - -local IntruderUnit = UNIT:FindByName( "Intruder" ) - - +--- +-- Name: CAP-100 - AI_A2A_CAP - Normal CAP +-- Author: FlightControl +-- Date Created: 30 May 2017 +-- +-- # Situation: +-- The Su-27 airplane will patrol in PatrolZone. +-- It will not engage any enemy automatically. +-- +-- # Test cases: +-- +-- 1. Observe the Su-27 patrolling. +-- + +local CapPlane = GROUP:FindByName( "Plane" ) + +local PatrolZone = ZONE:New( "Patrol Zone" ) + +A2ACap = AI_A2A_CAP:New( CapPlane, PatrolZone, 500, 1000, 500, 600 ) + +A2ACap:Patrol() + +local IntruderUnit = UNIT:FindByName( "Intruder" ) + + A2ACap:__Engage( 120, { IntruderUnit } ) \ No newline at end of file diff --git a/CAP - Combat Air Patrol/CAP-100 - AI_A2A_CAP - Normal CAP/CAP-100 - AI_A2A_CAP - Normal CAP.miz b/AI/AI_A2A_Cap/CAP-100 - AI_A2A_CAP - Normal CAP/CAP-100 - AI_A2A_CAP - Normal CAP.miz similarity index 100% rename from CAP - Combat Air Patrol/CAP-100 - AI_A2A_CAP - Normal CAP/CAP-100 - AI_A2A_CAP - Normal CAP.miz rename to AI/AI_A2A_Cap/CAP-100 - AI_A2A_CAP - Normal CAP/CAP-100 - AI_A2A_CAP - Normal CAP.miz diff --git a/BAI - Battlefield Air Interdiction/BAI-001 - BAI in a Zone by Airplane Group/BAI-001 - BAI in a Zone by Airplane Group.lua b/AI/AI_BAI/BAI-001 - BAI in a Zone by Airplane Group/BAI-001 - BAI in a Zone by Airplane Group.lua similarity index 97% rename from BAI - Battlefield Air Interdiction/BAI-001 - BAI in a Zone by Airplane Group/BAI-001 - BAI in a Zone by Airplane Group.lua rename to AI/AI_BAI/BAI-001 - BAI in a Zone by Airplane Group/BAI-001 - BAI in a Zone by Airplane Group.lua index bd9499bc4a..5bb060dd35 100644 --- a/BAI - Battlefield Air Interdiction/BAI-001 - BAI in a Zone by Airplane Group/BAI-001 - BAI in a Zone by Airplane Group.lua +++ b/AI/AI_BAI/BAI-001 - BAI in a Zone by Airplane Group/BAI-001 - BAI in a Zone by Airplane Group.lua @@ -1,74 +1,74 @@ ---- --- Name: BAI-001 - BAI in a Zone by Airplane Group --- Author: FlightControl --- Date Created: 09 May 2017 --- --- # Situation: --- --- A group of 4 bombers at patrolling north of an engage zone for 10 minutes. --- After 10 minutes, the command center orders the bombers to engage the zone and execute a BAI strike. --- --- # Test cases: --- --- 1. Observe that the bombers is patrolling in the patrol zone, until the engage command is given. --- 2. The bombers are not detecting any target during the patrol. --- 3. When the bombers is commanded to engage, the group will fly to the engage zone. --- 4. Detection is activated and detected targets within the engage zone are assigned for BAI. --- 5. Observe the bombers eliminating the targets. --- 6. Observe the bombers defenses. --- 7. When all targets within the engage zone are destroyed, the bombers BAI task is set to Accomplished. --- 8. The bombers will return to base. - - - --- Create a local variable (in this case called BAIEngagementZone) and --- using the ZONE function find the pre-defined zone called "Engagement Zone" --- currently on the map and assign it to this variable -BAIEngagementZone = ZONE:New( "Engagement Zone" ) - --- Create a local variable (in this case called BAIPlane) and --- using the GROUP function find the aircraft group called "Plane" and assign to this variable -BAIPlane = GROUP:FindByName( "Plane" ) - --- Create a local Variable (in this cased called PatrolZone and --- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable -PatrolZone = ZONE:New( "Patrol Zone" ) - --- Create and object (in this case called AIBAIZone) and --- using the functions AI_BAI_ZONE assign the parameters that define this object --- (in this case PatrolZone, 500, 1000, 500, 600, BAIEngagementZone) -AIBAIZone = AI_BAI_ZONE:New( PatrolZone, 500, 1000, 500, 600, BAIEngagementZone ) - --- Create an object (in this case called Targets) and --- using the GROUP function find the group labeled "Targets" and assign it to this object -Targets = GROUP:FindByName("Targets") - - --- Tell the program to use the object (in this case called BAIPlane) as the group to use in the BAI function -AIBAIZone:SetControllable( BAIPlane ) - --- Tell the group BAIPlane to start the mission in 1 second. -AIBAIZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - --- After 10 minutes, tell the group BAIPlane to engage the targets located in the engagement zone called BAIEngagement Zone. (600 is 600 seconds) -AIBAIZone:__Engage( 600 ) - --- Check every 60 seconds whether the Targets have been eliminated. --- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. -Check, CheckScheduleID = SCHEDULER:New(nil, - function() - if Targets:IsAlive() and Targets:GetSize() > 5 then - BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") - else - BASE:E( "Test Mission: The required targets are destroyed." ) - AIBAIZone:__Accomplish( 1 ) -- Now they should fly back to the patrolzone and patrol. - end - end, {}, 20, 60, 0.2 ) - - --- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... -function AIBAIZone:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the bombers back to base." ) - Check:Stop( CheckScheduleID ) - AIBAIZone:__RTB( 1 ) -end +--- +-- Name: BAI-001 - BAI in a Zone by Airplane Group +-- Author: FlightControl +-- Date Created: 09 May 2017 +-- +-- # Situation: +-- +-- A group of 4 bombers at patrolling north of an engage zone for 10 minutes. +-- After 10 minutes, the command center orders the bombers to engage the zone and execute a BAI strike. +-- +-- # Test cases: +-- +-- 1. Observe that the bombers is patrolling in the patrol zone, until the engage command is given. +-- 2. The bombers are not detecting any target during the patrol. +-- 3. When the bombers is commanded to engage, the group will fly to the engage zone. +-- 4. Detection is activated and detected targets within the engage zone are assigned for BAI. +-- 5. Observe the bombers eliminating the targets. +-- 6. Observe the bombers defenses. +-- 7. When all targets within the engage zone are destroyed, the bombers BAI task is set to Accomplished. +-- 8. The bombers will return to base. + + + +-- Create a local variable (in this case called BAIEngagementZone) and +-- using the ZONE function find the pre-defined zone called "Engagement Zone" +-- currently on the map and assign it to this variable +BAIEngagementZone = ZONE:New( "Engagement Zone" ) + +-- Create a local variable (in this case called BAIPlane) and +-- using the GROUP function find the aircraft group called "Plane" and assign to this variable +BAIPlane = GROUP:FindByName( "Plane" ) + +-- Create a local Variable (in this cased called PatrolZone and +-- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable +PatrolZone = ZONE:New( "Patrol Zone" ) + +-- Create and object (in this case called AIBAIZone) and +-- using the functions AI_BAI_ZONE assign the parameters that define this object +-- (in this case PatrolZone, 500, 1000, 500, 600, BAIEngagementZone) +AIBAIZone = AI_BAI_ZONE:New( PatrolZone, 500, 1000, 500, 600, BAIEngagementZone ) + +-- Create an object (in this case called Targets) and +-- using the GROUP function find the group labeled "Targets" and assign it to this object +Targets = GROUP:FindByName("Targets") + + +-- Tell the program to use the object (in this case called BAIPlane) as the group to use in the BAI function +AIBAIZone:SetControllable( BAIPlane ) + +-- Tell the group BAIPlane to start the mission in 1 second. +AIBAIZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + +-- After 10 minutes, tell the group BAIPlane to engage the targets located in the engagement zone called BAIEngagement Zone. (600 is 600 seconds) +AIBAIZone:__Engage( 600 ) + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. +Check, CheckScheduleID = SCHEDULER:New(nil, + function() + if Targets:IsAlive() and Targets:GetSize() > 5 then + BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") + else + BASE:E( "Test Mission: The required targets are destroyed." ) + AIBAIZone:__Accomplish( 1 ) -- Now they should fly back to the patrolzone and patrol. + end + end, {}, 20, 60, 0.2 ) + + +-- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... +function AIBAIZone:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the bombers back to base." ) + Check:Stop( CheckScheduleID ) + AIBAIZone:__RTB( 1 ) +end diff --git a/BAI - Battlefield Air Interdiction/BAI-001 - BAI in a Zone by Airplane Group/BAI-001 - BAI in a Zone by Airplane Group.miz b/AI/AI_BAI/BAI-001 - BAI in a Zone by Airplane Group/BAI-001 - BAI in a Zone by Airplane Group.miz similarity index 100% rename from BAI - Battlefield Air Interdiction/BAI-001 - BAI in a Zone by Airplane Group/BAI-001 - BAI in a Zone by Airplane Group.miz rename to AI/AI_BAI/BAI-001 - BAI in a Zone by Airplane Group/BAI-001 - BAI in a Zone by Airplane Group.miz diff --git a/BAI - Battlefield Air Interdiction/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed.lua b/AI/AI_BAI/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed.lua similarity index 97% rename from BAI - Battlefield Air Interdiction/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed.lua rename to AI/AI_BAI/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed.lua index 5e5deef03d..f8fdfdb665 100644 --- a/BAI - Battlefield Air Interdiction/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed.lua +++ b/AI/AI_BAI/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed.lua @@ -1,75 +1,75 @@ ---- --- Name: BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed --- Author: FlightControl --- Date Created: 09 May 2017 --- --- # Situation: --- --- A group of 4 bombers at patrolling north of an engage zone for 1 minute. --- After 1 minute, the command center orders the bombers to engage the zone and execute a BAI. --- --- # Test cases: --- --- 1. Observe that the bombers is patrolling in the patrol zone, until the engage command is given. --- 2. The bombers are not detecting any target during the patrol. --- 3. When the bombers is commanded to engage, the group will fly to the engage zone. --- 3.1. The approach speed to the engage zone is set to 400 km/h. --- 4. Detection is activated and detected targets within the engage zone are assigned for BAI. --- 5. Observe the bombers eliminating the targets. --- 6. Observe the bombers defenses. --- 7. When all targets within the engage zone are destroyed, the bombers BAI task is set to Accomplished. --- 8. The bombers will return to base. - - - --- Create a local variable (in this case called BAIEngagementZone) and --- using the ZONE function find the pre-defined zone called "Engagement Zone" --- currently on the map and assign it to this variable -BAIEngagementZone = ZONE:New( "Engagement Zone" ) - --- Create a local variable (in this case called BAIPlane) and --- using the GROUP function find the aircraft group called "Plane" and assign to this variable -BAIPlane = GROUP:FindByName( "Plane" ) - --- Create a local Variable (in this cased called PatrolZone and --- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable -PatrolZone = ZONE:New( "Patrol Zone" ) - --- Create and object (in this case called AIBAIZone) and --- using the functions AI_BAI_ZONE assign the parameters that define this object --- (in this case PatrolZone, 500, 1000, 500, 600, BAIEngagementZone) -AIBAIZone = AI_BAI_ZONE:New( PatrolZone, 500, 1000, 500, 600, BAIEngagementZone ) - --- Create an object (in this case called Targets) and --- using the GROUP function find the group labeled "Targets" and assign it to this object -Targets = GROUP:FindByName("Targets") - - --- Tell the program to use the object (in this case called BAIPlane) as the group to use in the BAI function -AIBAIZone:SetControllable( BAIPlane ) - --- Tell the group BAIPlane to start the mission in 1 second. -AIBAIZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - --- After 10 minutes, tell the group BAIPlane to engage the targets located in the engagement zone called BAIEngagement Zone. (600 is 600 seconds) -AIBAIZone:__Engage( 60, 400 ) -- Engage after one minute with a speed of 400 km/h. - --- Check every 60 seconds whether the Targets have been eliminated. --- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. -Check, CheckScheduleID = SCHEDULER:New(nil, - function() - if Targets:IsAlive() and Targets:GetSize() > 5 then - BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") - else - BASE:E( "Test Mission: The required targets are destroyed." ) - AIBAIZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. - end - end, {}, 20, 60, 0.2 ) - - --- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... -function AIBAIZone:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the bombers back to base." ) - Check:Stop( CheckScheduleID ) - AIBAIZone:__RTB( 1 ) -end +--- +-- Name: BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed +-- Author: FlightControl +-- Date Created: 09 May 2017 +-- +-- # Situation: +-- +-- A group of 4 bombers at patrolling north of an engage zone for 1 minute. +-- After 1 minute, the command center orders the bombers to engage the zone and execute a BAI. +-- +-- # Test cases: +-- +-- 1. Observe that the bombers is patrolling in the patrol zone, until the engage command is given. +-- 2. The bombers are not detecting any target during the patrol. +-- 3. When the bombers is commanded to engage, the group will fly to the engage zone. +-- 3.1. The approach speed to the engage zone is set to 400 km/h. +-- 4. Detection is activated and detected targets within the engage zone are assigned for BAI. +-- 5. Observe the bombers eliminating the targets. +-- 6. Observe the bombers defenses. +-- 7. When all targets within the engage zone are destroyed, the bombers BAI task is set to Accomplished. +-- 8. The bombers will return to base. + + + +-- Create a local variable (in this case called BAIEngagementZone) and +-- using the ZONE function find the pre-defined zone called "Engagement Zone" +-- currently on the map and assign it to this variable +BAIEngagementZone = ZONE:New( "Engagement Zone" ) + +-- Create a local variable (in this case called BAIPlane) and +-- using the GROUP function find the aircraft group called "Plane" and assign to this variable +BAIPlane = GROUP:FindByName( "Plane" ) + +-- Create a local Variable (in this cased called PatrolZone and +-- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable +PatrolZone = ZONE:New( "Patrol Zone" ) + +-- Create and object (in this case called AIBAIZone) and +-- using the functions AI_BAI_ZONE assign the parameters that define this object +-- (in this case PatrolZone, 500, 1000, 500, 600, BAIEngagementZone) +AIBAIZone = AI_BAI_ZONE:New( PatrolZone, 500, 1000, 500, 600, BAIEngagementZone ) + +-- Create an object (in this case called Targets) and +-- using the GROUP function find the group labeled "Targets" and assign it to this object +Targets = GROUP:FindByName("Targets") + + +-- Tell the program to use the object (in this case called BAIPlane) as the group to use in the BAI function +AIBAIZone:SetControllable( BAIPlane ) + +-- Tell the group BAIPlane to start the mission in 1 second. +AIBAIZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + +-- After 10 minutes, tell the group BAIPlane to engage the targets located in the engagement zone called BAIEngagement Zone. (600 is 600 seconds) +AIBAIZone:__Engage( 60, 400 ) -- Engage after one minute with a speed of 400 km/h. + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. +Check, CheckScheduleID = SCHEDULER:New(nil, + function() + if Targets:IsAlive() and Targets:GetSize() > 5 then + BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") + else + BASE:E( "Test Mission: The required targets are destroyed." ) + AIBAIZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. + end + end, {}, 20, 60, 0.2 ) + + +-- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... +function AIBAIZone:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the bombers back to base." ) + Check:Stop( CheckScheduleID ) + AIBAIZone:__RTB( 1 ) +end diff --git a/BAI - Battlefield Air Interdiction/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed.miz b/AI/AI_BAI/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed.miz similarity index 100% rename from BAI - Battlefield Air Interdiction/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed.miz rename to AI/AI_BAI/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed/BAI-002 - BAI in a Zone by Airplane Group - Engage with Speed.miz diff --git a/BAI - Battlefield Air Interdiction/BAI-004 - BAI in a Zone by Airplane Group - Test Abort/BAI-004 - BAI in a Zone by Airplane Group - Test Abort.lua b/AI/AI_BAI/BAI-004 - BAI in a Zone by Airplane Group - Test Abort/BAI-004 - BAI in a Zone by Airplane Group - Test Abort.lua similarity index 97% rename from BAI - Battlefield Air Interdiction/BAI-004 - BAI in a Zone by Airplane Group - Test Abort/BAI-004 - BAI in a Zone by Airplane Group - Test Abort.lua rename to AI/AI_BAI/BAI-004 - BAI in a Zone by Airplane Group - Test Abort/BAI-004 - BAI in a Zone by Airplane Group - Test Abort.lua index e9401f29b5..43ff85443e 100644 --- a/BAI - Battlefield Air Interdiction/BAI-004 - BAI in a Zone by Airplane Group - Test Abort/BAI-004 - BAI in a Zone by Airplane Group - Test Abort.lua +++ b/AI/AI_BAI/BAI-004 - BAI in a Zone by Airplane Group - Test Abort/BAI-004 - BAI in a Zone by Airplane Group - Test Abort.lua @@ -1,81 +1,81 @@ ---- --- Name: BAI-004 - BAI in a Zone by Airplane Group - Test Abort --- Author: FlightControl --- Date Created: 09 May 2017 --- --- # Situation: --- --- A group of 4 bombers at patrolling north of an engage zone for 1 minute. --- After 10 minutes, the command center orders the bombers to engage the zone and execute a BAI. --- After 12 minutes, the mission is aborted. --- --- # Test cases: --- --- 1. Observe that the bombers is patrolling in the patrol zone, until the engage command is given. --- 2. The bombers are not detecting any target during the patrol. --- 3. When the bombers is commanded to engage, the group will fly to the engage zone --- 3.1. The approach speed to the engage zone is set to 350 km/h. --- 3.2. The altitude to the engage zone and BAI execution is set to 4000 meters. --- 4. Observe the mission being aborted. A message will be sent. --- 5. The bombers will go back patrolling. - - - --- Create a local variable (in this case called BAIEngagementZone) and --- using the ZONE function find the pre-defined zone called "Engagement Zone" --- currently on the map and assign it to this variable -BAIEngagementZone = ZONE:New( "Engagement Zone" ) - --- Create a local variable (in this case called BAIPlane) and --- using the GROUP function find the aircraft group called "Plane" and assign to this variable -BAIPlane = GROUP:FindByName( "Plane" ) - --- Create a local Variable (in this cased called PatrolZone and --- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable -PatrolZone = ZONE:New( "Patrol Zone" ) - --- Create and object (in this case called AIBAIZone) and --- using the functions AI_BAI_ZONE assign the parameters that define this object --- (in this case PatrolZone, 500, 1000, 500, 600, BAIEngagementZone) -AIBAIZone = AI_BAI_ZONE:New( PatrolZone, 500, 1000, 500, 600, BAIEngagementZone ) - --- Create an object (in this case called Targets) and --- using the GROUP function find the group labeled "Targets" and assign it to this object -Targets = GROUP:FindByName("Targets") - - --- Tell the program to use the object (in this case called BAIPlane) as the group to use in the BAI function -AIBAIZone:SetControllable( BAIPlane ) - --- Tell the group BAIPlane to start the mission in 1 second. -AIBAIZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - --- After 10 minutes, tell the group BAIPlane to engage the targets located in the engagement zone called BAIEngagement Zone. (600 is 600 seconds) -AIBAIZone:__Engage( 600, 350, 4000 ) -- Engage after 10 minutes with a speed of 350 km/h and an altitude of 4000 meters. - --- After 12 minutes, tell the group BAIPlane to abort the engagement. -AIBAIZone:__Abort( 720 ) -- Abort the engagement. - --- Check every 60 seconds whether the Targets have been eliminated. --- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. -Check, CheckScheduleID = SCHEDULER:New(nil, - function() - if Targets:IsAlive() and Targets:GetSize() > 5 then - BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") - else - BASE:E( "Test Mission: The required targets are destroyed." ) - AIBAIZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. - end - end, {}, 20, 60, 0.2 ) - -function AIBAIZone:OnAfterAbort(Controllable,From,Event,To) - BASE:E( "MISSION ABORT! Back to patrol zone." ) - MESSAGE:New("Mission ABORTED! Back to the Patrol Zone!",30,"ALERT!"):ToAll() -end - --- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... -function AIBAIZone:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the bombers back to base." ) - Check:Stop( CheckScheduleID ) - AIBAIZone:__RTB( 1 ) -end +--- +-- Name: BAI-004 - BAI in a Zone by Airplane Group - Test Abort +-- Author: FlightControl +-- Date Created: 09 May 2017 +-- +-- # Situation: +-- +-- A group of 4 bombers at patrolling north of an engage zone for 1 minute. +-- After 10 minutes, the command center orders the bombers to engage the zone and execute a BAI. +-- After 12 minutes, the mission is aborted. +-- +-- # Test cases: +-- +-- 1. Observe that the bombers is patrolling in the patrol zone, until the engage command is given. +-- 2. The bombers are not detecting any target during the patrol. +-- 3. When the bombers is commanded to engage, the group will fly to the engage zone +-- 3.1. The approach speed to the engage zone is set to 350 km/h. +-- 3.2. The altitude to the engage zone and BAI execution is set to 4000 meters. +-- 4. Observe the mission being aborted. A message will be sent. +-- 5. The bombers will go back patrolling. + + + +-- Create a local variable (in this case called BAIEngagementZone) and +-- using the ZONE function find the pre-defined zone called "Engagement Zone" +-- currently on the map and assign it to this variable +BAIEngagementZone = ZONE:New( "Engagement Zone" ) + +-- Create a local variable (in this case called BAIPlane) and +-- using the GROUP function find the aircraft group called "Plane" and assign to this variable +BAIPlane = GROUP:FindByName( "Plane" ) + +-- Create a local Variable (in this cased called PatrolZone and +-- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable +PatrolZone = ZONE:New( "Patrol Zone" ) + +-- Create and object (in this case called AIBAIZone) and +-- using the functions AI_BAI_ZONE assign the parameters that define this object +-- (in this case PatrolZone, 500, 1000, 500, 600, BAIEngagementZone) +AIBAIZone = AI_BAI_ZONE:New( PatrolZone, 500, 1000, 500, 600, BAIEngagementZone ) + +-- Create an object (in this case called Targets) and +-- using the GROUP function find the group labeled "Targets" and assign it to this object +Targets = GROUP:FindByName("Targets") + + +-- Tell the program to use the object (in this case called BAIPlane) as the group to use in the BAI function +AIBAIZone:SetControllable( BAIPlane ) + +-- Tell the group BAIPlane to start the mission in 1 second. +AIBAIZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + +-- After 10 minutes, tell the group BAIPlane to engage the targets located in the engagement zone called BAIEngagement Zone. (600 is 600 seconds) +AIBAIZone:__Engage( 600, 350, 4000 ) -- Engage after 10 minutes with a speed of 350 km/h and an altitude of 4000 meters. + +-- After 12 minutes, tell the group BAIPlane to abort the engagement. +AIBAIZone:__Abort( 720 ) -- Abort the engagement. + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. +Check, CheckScheduleID = SCHEDULER:New(nil, + function() + if Targets:IsAlive() and Targets:GetSize() > 5 then + BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") + else + BASE:E( "Test Mission: The required targets are destroyed." ) + AIBAIZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. + end + end, {}, 20, 60, 0.2 ) + +function AIBAIZone:OnAfterAbort(Controllable,From,Event,To) + BASE:E( "MISSION ABORT! Back to patrol zone." ) + MESSAGE:New("Mission ABORTED! Back to the Patrol Zone!",30,"ALERT!"):ToAll() +end + +-- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... +function AIBAIZone:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the bombers back to base." ) + Check:Stop( CheckScheduleID ) + AIBAIZone:__RTB( 1 ) +end diff --git a/BAI - Battlefield Air Interdiction/BAI-004 - BAI in a Zone by Airplane Group - Test Abort/BAI-004 - BAI in a Zone by Airplane Group - Test Abort.miz b/AI/AI_BAI/BAI-004 - BAI in a Zone by Airplane Group - Test Abort/BAI-004 - BAI in a Zone by Airplane Group - Test Abort.miz similarity index 100% rename from BAI - Battlefield Air Interdiction/BAI-004 - BAI in a Zone by Airplane Group - Test Abort/BAI-004 - BAI in a Zone by Airplane Group - Test Abort.miz rename to AI/AI_BAI/BAI-004 - BAI in a Zone by Airplane Group - Test Abort/BAI-004 - BAI in a Zone by Airplane Group - Test Abort.miz diff --git a/BAI - Battlefield Air Interdiction/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend.lua b/AI/AI_BAI/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend.lua similarity index 97% rename from BAI - Battlefield Air Interdiction/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend.lua rename to AI/AI_BAI/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend.lua index f6b85b0478..85468404d9 100644 --- a/BAI - Battlefield Air Interdiction/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend.lua +++ b/AI/AI_BAI/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend.lua @@ -1,78 +1,78 @@ ---- --- Name: BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend --- Author: FlightControl --- Date Created: 09 May 2017 --- --- # Situation: --- --- A group of 4 bombers at patrolling north of an engage zone for 1 minute. --- After 1 minute, the command center orders the bombers to engage the zone and execute a BAI. --- The planes should expend 4 weapons per run. --- --- # Test cases: --- --- 1. Observe that the bombers is patrolling in the patrol zone, until the engage command is given. --- 2. The bombers are not detecting any target during the patrol. --- 3. When the bombers is commanded to engage, the group will fly to the engage zone --- 3.1. The approach speed to the engage zone is set to 400 km/h. --- 3.2. The altitude to the engage zone and BAI execution is set to 500 meters. --- 3.3. The planes should expend 4 weapons per run. --- 4. Detection is activated and detected targets within the engage zone are assigned for BAI. --- 5. Observe the bombers eliminating the targets. --- 6. Observe the bombers defenses. --- 7. When all targets within the engage zone are destroyed, the bombers BAI task is set to Accomplished. --- 8. The bombers will return to base. - - - --- Create a local variable (in this case called BAIEngagementZone) and --- using the ZONE function find the pre-defined zone called "Engagement Zone" --- currently on the map and assign it to this variable -BAIEngagementZone = ZONE:New( "Engagement Zone" ) - --- Create a local variable (in this case called BAIPlane) and --- using the GROUP function find the aircraft group called "Plane" and assign to this variable -BAIPlane = GROUP:FindByName( "Plane" ) - --- Create a local Variable (in this cased called PatrolZone and --- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable -PatrolZone = ZONE:New( "Patrol Zone" ) - --- Create and object (in this case called AIBAIZone) and --- using the functions AI_BAI_ZONE assign the parameters that define this object --- (in this case PatrolZone, 500, 1000, 500, 600, BAIEngagementZone) -AIBAIZone = AI_BAI_ZONE:New( PatrolZone, 500, 1000, 500, 600, BAIEngagementZone ) - --- Create an object (in this case called Targets) and --- using the GROUP function find the group labeled "Targets" and assign it to this object -Targets = GROUP:FindByName("Targets") - - --- Tell the program to use the object (in this case called BAIPlane) as the group to use in the BAI function -AIBAIZone:SetControllable( BAIPlane ) - --- Tell the group BAIPlane to start the mission in 1 second. -AIBAIZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - --- After 1 minute, tell the group BAIPlane to engage the targets located in the engagement zone called BAIEngagement Zone. (600 is 600 seconds) -AIBAIZone:__Engage( 60, 600, 8000, AI.Task.WeaponExpend.FOUR ) -- Engage with a speed of 600 km/h and an altitude of 8000 meters, weapn expend 4. - --- Check every 60 seconds whether the Targets have been eliminated. --- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. -Check, CheckScheduleID = SCHEDULER:New(nil, - function() - if Targets:IsAlive() and Targets:GetSize() > 5 then - BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") - else - BASE:E( "Test Mission: The required targets are destroyed." ) - AIBAIZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. - end - end, {}, 20, 60, 0.2 ) - - --- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... -function AIBAIZone:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the bombers back to base." ) - Check:Stop( CheckScheduleID ) - AIBAIZone:__RTB( 1 ) -end +--- +-- Name: BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend +-- Author: FlightControl +-- Date Created: 09 May 2017 +-- +-- # Situation: +-- +-- A group of 4 bombers at patrolling north of an engage zone for 1 minute. +-- After 1 minute, the command center orders the bombers to engage the zone and execute a BAI. +-- The planes should expend 4 weapons per run. +-- +-- # Test cases: +-- +-- 1. Observe that the bombers is patrolling in the patrol zone, until the engage command is given. +-- 2. The bombers are not detecting any target during the patrol. +-- 3. When the bombers is commanded to engage, the group will fly to the engage zone +-- 3.1. The approach speed to the engage zone is set to 400 km/h. +-- 3.2. The altitude to the engage zone and BAI execution is set to 500 meters. +-- 3.3. The planes should expend 4 weapons per run. +-- 4. Detection is activated and detected targets within the engage zone are assigned for BAI. +-- 5. Observe the bombers eliminating the targets. +-- 6. Observe the bombers defenses. +-- 7. When all targets within the engage zone are destroyed, the bombers BAI task is set to Accomplished. +-- 8. The bombers will return to base. + + + +-- Create a local variable (in this case called BAIEngagementZone) and +-- using the ZONE function find the pre-defined zone called "Engagement Zone" +-- currently on the map and assign it to this variable +BAIEngagementZone = ZONE:New( "Engagement Zone" ) + +-- Create a local variable (in this case called BAIPlane) and +-- using the GROUP function find the aircraft group called "Plane" and assign to this variable +BAIPlane = GROUP:FindByName( "Plane" ) + +-- Create a local Variable (in this cased called PatrolZone and +-- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable +PatrolZone = ZONE:New( "Patrol Zone" ) + +-- Create and object (in this case called AIBAIZone) and +-- using the functions AI_BAI_ZONE assign the parameters that define this object +-- (in this case PatrolZone, 500, 1000, 500, 600, BAIEngagementZone) +AIBAIZone = AI_BAI_ZONE:New( PatrolZone, 500, 1000, 500, 600, BAIEngagementZone ) + +-- Create an object (in this case called Targets) and +-- using the GROUP function find the group labeled "Targets" and assign it to this object +Targets = GROUP:FindByName("Targets") + + +-- Tell the program to use the object (in this case called BAIPlane) as the group to use in the BAI function +AIBAIZone:SetControllable( BAIPlane ) + +-- Tell the group BAIPlane to start the mission in 1 second. +AIBAIZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + +-- After 1 minute, tell the group BAIPlane to engage the targets located in the engagement zone called BAIEngagement Zone. (600 is 600 seconds) +AIBAIZone:__Engage( 60, 600, 8000, AI.Task.WeaponExpend.FOUR ) -- Engage with a speed of 600 km/h and an altitude of 8000 meters, weapn expend 4. + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. +Check, CheckScheduleID = SCHEDULER:New(nil, + function() + if Targets:IsAlive() and Targets:GetSize() > 5 then + BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") + else + BASE:E( "Test Mission: The required targets are destroyed." ) + AIBAIZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. + end + end, {}, 20, 60, 0.2 ) + + +-- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... +function AIBAIZone:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the bombers back to base." ) + Check:Stop( CheckScheduleID ) + AIBAIZone:__RTB( 1 ) +end diff --git a/BAI - Battlefield Air Interdiction/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend.miz b/AI/AI_BAI/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend.miz similarity index 100% rename from BAI - Battlefield Air Interdiction/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend.miz rename to AI/AI_BAI/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend/BAI-005 - BAI in a Zone by Airplane Group - Engage with WeaponExpend.miz diff --git a/BAI - Battlefield Air Interdiction/BAI-100 - BAI of a Bridge/BAI-100 - BAI of a Bridge.lua b/AI/AI_BAI/BAI-100 - BAI of a Bridge/BAI-100 - BAI of a Bridge.lua similarity index 97% rename from BAI - Battlefield Air Interdiction/BAI-100 - BAI of a Bridge/BAI-100 - BAI of a Bridge.lua rename to AI/AI_BAI/BAI-100 - BAI of a Bridge/BAI-100 - BAI of a Bridge.lua index b3d8c0ec34..f6f922876e 100644 --- a/BAI - Battlefield Air Interdiction/BAI-100 - BAI of a Bridge/BAI-100 - BAI of a Bridge.lua +++ b/AI/AI_BAI/BAI-100 - BAI of a Bridge/BAI-100 - BAI of a Bridge.lua @@ -1,76 +1,76 @@ ---- --- Name: BAI-100 - BAI of a Bridge --- Author: FlightControl --- Date Created: 09 May 2017 --- --- # Situation: --- --- A group of 2 bombers are patrolling north of an engage zone. --- The command center orders the bombers to engage the zone and execute a BAI strike on a bridge. --- --- # Test cases: --- --- 1. Observe that the bombers is patrolling in the patrol zone, until the engage command is given. --- 2. The bombers are not detecting any target during the patrol. --- 3. When the bombers is commanded to engage, the group will fly to the engage zone. --- 4. Detection is activated and detected targets within the engage zone are assigned for BAI. --- 5. Observe the bombers eliminating the bridge. --- 6. Observe the bombers defenses. --- 7. When the bridge within the engage zone is destroyed, the bombers BAI task is set to Accomplished. --- 8. The bombers will return to base. - - - --- Create a local variable (in this case called BAIEngagementZone) and --- using the ZONE function find the pre-defined zone called "Engagement Zone" --- currently on the map and assign it to this variable -BAIEngagementZone = ZONE:New( "Engagement Zone" ) - --- Create a local variable (in this case called BAIPlane) and --- using the GROUP function find the aircraft group called "Plane" and assign to this variable -BAIPlane = GROUP:FindByName( "Plane" ) - --- Create a local Variable (in this cased called PatrolZone and --- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable -PatrolZone = ZONE:New( "Patrol Zone" ) - --- Create and object (in this case called AIBAIZone) and --- using the functions AI_BAI_ZONE assign the parameters that define this object --- (in this case PatrolZone, 500, 1000, 500, 600, BAIEngagementZone) -AIBAIZone = AI_BAI_ZONE:New( PatrolZone, 500, 1000, 500, 600, BAIEngagementZone ) - --- Create an object (in this case called Targets) and --- using the GROUP function find the group labeled "Targets" and assign it to this object -Targets = GROUP:FindByName("Targets") - --- Tell the program to use the object (in this case called BAIPlane) as the group to use in the BAI function -AIBAIZone:SetControllable( BAIPlane ) - --- Tell the BAI not to search for potential targets in the BAIEngagementZone, but rather use the center of the BAIEngagementZone as the bombing location. -AIBAIZone:SearchOff() - --- Tell the group BAIPlane to start the mission in 1 second. -AIBAIZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - --- After 10 minutes, tell the group BAIPlane to engage the targets located in the engagement zone called BAIEngagement Zone. -AIBAIZone:__Engage( 10 ) - --- Check every 60 seconds whether the Targets have been eliminated. --- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. -Check, CheckScheduleID = SCHEDULER:New(nil, - function() - if Targets:IsAlive() and Targets:GetSize() ~= 0 then - BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") - else - BASE:E( "Test Mission: The bridge is destroyed." ) - AIBAIZone:__Accomplish( 1 ) -- Now they should fly back to the patrolzone and patrol. - end - end, {}, 20, 60, 0.2 ) - - --- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... -function AIBAIZone:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the bombers back to base." ) - Check:Stop( CheckScheduleID ) - AIBAIZone:__RTB( 1 ) -end +--- +-- Name: BAI-100 - BAI of a Bridge +-- Author: FlightControl +-- Date Created: 09 May 2017 +-- +-- # Situation: +-- +-- A group of 2 bombers are patrolling north of an engage zone. +-- The command center orders the bombers to engage the zone and execute a BAI strike on a bridge. +-- +-- # Test cases: +-- +-- 1. Observe that the bombers is patrolling in the patrol zone, until the engage command is given. +-- 2. The bombers are not detecting any target during the patrol. +-- 3. When the bombers is commanded to engage, the group will fly to the engage zone. +-- 4. Detection is activated and detected targets within the engage zone are assigned for BAI. +-- 5. Observe the bombers eliminating the bridge. +-- 6. Observe the bombers defenses. +-- 7. When the bridge within the engage zone is destroyed, the bombers BAI task is set to Accomplished. +-- 8. The bombers will return to base. + + + +-- Create a local variable (in this case called BAIEngagementZone) and +-- using the ZONE function find the pre-defined zone called "Engagement Zone" +-- currently on the map and assign it to this variable +BAIEngagementZone = ZONE:New( "Engagement Zone" ) + +-- Create a local variable (in this case called BAIPlane) and +-- using the GROUP function find the aircraft group called "Plane" and assign to this variable +BAIPlane = GROUP:FindByName( "Plane" ) + +-- Create a local Variable (in this cased called PatrolZone and +-- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable +PatrolZone = ZONE:New( "Patrol Zone" ) + +-- Create and object (in this case called AIBAIZone) and +-- using the functions AI_BAI_ZONE assign the parameters that define this object +-- (in this case PatrolZone, 500, 1000, 500, 600, BAIEngagementZone) +AIBAIZone = AI_BAI_ZONE:New( PatrolZone, 500, 1000, 500, 600, BAIEngagementZone ) + +-- Create an object (in this case called Targets) and +-- using the GROUP function find the group labeled "Targets" and assign it to this object +Targets = GROUP:FindByName("Targets") + +-- Tell the program to use the object (in this case called BAIPlane) as the group to use in the BAI function +AIBAIZone:SetControllable( BAIPlane ) + +-- Tell the BAI not to search for potential targets in the BAIEngagementZone, but rather use the center of the BAIEngagementZone as the bombing location. +AIBAIZone:SearchOff() + +-- Tell the group BAIPlane to start the mission in 1 second. +AIBAIZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + +-- After 10 minutes, tell the group BAIPlane to engage the targets located in the engagement zone called BAIEngagement Zone. +AIBAIZone:__Engage( 10 ) + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. +Check, CheckScheduleID = SCHEDULER:New(nil, + function() + if Targets:IsAlive() and Targets:GetSize() ~= 0 then + BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") + else + BASE:E( "Test Mission: The bridge is destroyed." ) + AIBAIZone:__Accomplish( 1 ) -- Now they should fly back to the patrolzone and patrol. + end + end, {}, 20, 60, 0.2 ) + + +-- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... +function AIBAIZone:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the bombers back to base." ) + Check:Stop( CheckScheduleID ) + AIBAIZone:__RTB( 1 ) +end diff --git a/BAI - Battlefield Air Interdiction/BAI-100 - BAI of a Bridge/BAI-100 - BAI of a Bridge.miz b/AI/AI_BAI/BAI-100 - BAI of a Bridge/BAI-100 - BAI of a Bridge.miz similarity index 100% rename from BAI - Battlefield Air Interdiction/BAI-100 - BAI of a Bridge/BAI-100 - BAI of a Bridge.miz rename to AI/AI_BAI/BAI-100 - BAI of a Bridge/BAI-100 - BAI of a Bridge.miz diff --git a/CAP - Combat Air Patrol/CAP-001 - Combat Air Patrol/CAP-001 - Combat Air Patrol.lua b/AI/AI_CAP/CAP-001 - Combat Air Patrol/CAP-001 - Combat Air Patrol.lua similarity index 96% rename from CAP - Combat Air Patrol/CAP-001 - Combat Air Patrol/CAP-001 - Combat Air Patrol.lua rename to AI/AI_CAP/CAP-001 - Combat Air Patrol/CAP-001 - Combat Air Patrol.lua index 2ac13846ea..12abd4eb47 100644 --- a/CAP - Combat Air Patrol/CAP-001 - Combat Air Patrol/CAP-001 - Combat Air Patrol.lua +++ b/AI/AI_CAP/CAP-001 - Combat Air Patrol/CAP-001 - Combat Air Patrol.lua @@ -1,23 +1,23 @@ ---- --- Name: CAP-001 - Combat Air Patrol --- Author: FlightControl --- Date Created: 16 January 2017 --- --- # Situation: --- The Su-27 airplane will patrol in PatrolZone. --- It will not engage any enemy automatically. --- --- # Test cases: --- --- 1. Observe the Su-27 patrolling. --- - -local CapPlane = GROUP:FindByName( "Plane" ) - -local PatrolZone = ZONE:New( "Patrol Zone" ) - -AICapZone = AI_CAP_ZONE:New( PatrolZone, 500, 1000, 500, 600 ) - -AICapZone:SetControllable( CapPlane ) - -AICapZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. +--- +-- Name: CAP-001 - Combat Air Patrol +-- Author: FlightControl +-- Date Created: 16 January 2017 +-- +-- # Situation: +-- The Su-27 airplane will patrol in PatrolZone. +-- It will not engage any enemy automatically. +-- +-- # Test cases: +-- +-- 1. Observe the Su-27 patrolling. +-- + +local CapPlane = GROUP:FindByName( "Plane" ) + +local PatrolZone = ZONE:New( "Patrol Zone" ) + +AICapZone = AI_CAP_ZONE:New( PatrolZone, 500, 1000, 500, 600 ) + +AICapZone:SetControllable( CapPlane ) + +AICapZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. diff --git a/CAP - Combat Air Patrol/CAP-001 - Combat Air Patrol/CAP-001 - Combat Air Patrol.miz b/AI/AI_CAP/CAP-001 - Combat Air Patrol/CAP-001 - Combat Air Patrol.miz similarity index 100% rename from CAP - Combat Air Patrol/CAP-001 - Combat Air Patrol/CAP-001 - Combat Air Patrol.miz rename to AI/AI_CAP/CAP-001 - Combat Air Patrol/CAP-001 - Combat Air Patrol.miz diff --git a/CAP - Combat Air Patrol/CAP-010 - CAP and Engage within Range/CAP-010 - CAP and Engage within Range.lua b/AI/AI_CAP/CAP-010 - CAP and Engage within Range/CAP-010 - CAP and Engage within Range.lua similarity index 97% rename from CAP - Combat Air Patrol/CAP-010 - CAP and Engage within Range/CAP-010 - CAP and Engage within Range.lua rename to AI/AI_CAP/CAP-010 - CAP and Engage within Range/CAP-010 - CAP and Engage within Range.lua index 57a062f7cc..87189c8c5b 100644 --- a/CAP - Combat Air Patrol/CAP-010 - CAP and Engage within Range/CAP-010 - CAP and Engage within Range.lua +++ b/AI/AI_CAP/CAP-010 - CAP and Engage within Range/CAP-010 - CAP and Engage within Range.lua @@ -1,27 +1,27 @@ ---- --- Name: CAP-010 - CAP and Engage within Range --- Author: FlightControl --- Date Created: 16 January 2017 --- --- # Situation: --- --- The Su-27 airplane will patrol in PatrolZone. --- It will engage when it detects the airplane and when the A-10C is within the engage range. --- --- # Test cases: --- --- 1. Observe the Su-27 patrolling. --- 2. Observe that, when the A-10C is within the engage range, it will engage. --- 3. After engage, observe that the Su-27 returns to the PatrolZone. --- 4. If you want, you can wait until the Su-27 is out of fuel and will land. - -CapPlane = GROUP:FindByName( "Plane" ) - -PatrolZone = ZONE:New( "Patrol Zone" ) - -AICapZone = AI_CAP_ZONE:New( PatrolZone, 500, 1000, 500, 600 ) - -AICapZone:SetControllable( CapPlane ) -AICapZone:SetEngageRange( 20000 ) -- Set the Engage Range to 20.000 meters. The AI won't engage when the enemy is beyond 20.000 meters. - -AICapZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. +--- +-- Name: CAP-010 - CAP and Engage within Range +-- Author: FlightControl +-- Date Created: 16 January 2017 +-- +-- # Situation: +-- +-- The Su-27 airplane will patrol in PatrolZone. +-- It will engage when it detects the airplane and when the A-10C is within the engage range. +-- +-- # Test cases: +-- +-- 1. Observe the Su-27 patrolling. +-- 2. Observe that, when the A-10C is within the engage range, it will engage. +-- 3. After engage, observe that the Su-27 returns to the PatrolZone. +-- 4. If you want, you can wait until the Su-27 is out of fuel and will land. + +CapPlane = GROUP:FindByName( "Plane" ) + +PatrolZone = ZONE:New( "Patrol Zone" ) + +AICapZone = AI_CAP_ZONE:New( PatrolZone, 500, 1000, 500, 600 ) + +AICapZone:SetControllable( CapPlane ) +AICapZone:SetEngageRange( 20000 ) -- Set the Engage Range to 20.000 meters. The AI won't engage when the enemy is beyond 20.000 meters. + +AICapZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. diff --git a/CAP - Combat Air Patrol/CAP-010 - CAP and Engage within Range/CAP-010 - CAP and Engage within Range.miz b/AI/AI_CAP/CAP-010 - CAP and Engage within Range/CAP-010 - CAP and Engage within Range.miz similarity index 100% rename from CAP - Combat Air Patrol/CAP-010 - CAP and Engage within Range/CAP-010 - CAP and Engage within Range.miz rename to AI/AI_CAP/CAP-010 - CAP and Engage within Range/CAP-010 - CAP and Engage within Range.miz diff --git a/CAP - Combat Air Patrol/CAP-011 - CAP and Engage within Zone/CAP-010 - CAP and Engage within Zone.lua b/AI/AI_CAP/CAP-011 - CAP and Engage within Zone/CAP-010 - CAP and Engage within Zone.lua similarity index 96% rename from CAP - Combat Air Patrol/CAP-011 - CAP and Engage within Zone/CAP-010 - CAP and Engage within Zone.lua rename to AI/AI_CAP/CAP-011 - CAP and Engage within Zone/CAP-010 - CAP and Engage within Zone.lua index d85726d32c..5e911a0968 100644 --- a/CAP - Combat Air Patrol/CAP-011 - CAP and Engage within Zone/CAP-010 - CAP and Engage within Zone.lua +++ b/AI/AI_CAP/CAP-011 - CAP and Engage within Zone/CAP-010 - CAP and Engage within Zone.lua @@ -1,23 +1,23 @@ --- Name: CAP-001 - Combat Air Patrol --- Author: FlightControl --- Date Created: 16 January 2017 --- --- # Situation: --- --- # Test cases: --- - -local CapPlane = GROUP:FindByName( "Plane" ) - -local PatrolZone = ZONE:New( "Patrol Zone" ) - -local AICapZone = AI_CAP_ZONE:New( PatrolZone, 500, 1000, 500, 600 ) - -local EngageZoneGroup = GROUP:FindByName( "Engage Zone" ) - -local CapEngageZone = ZONE_POLYGON:New( "Engage Zone", EngageZoneGroup ) - -AICapZone:SetControllable( CapPlane ) -AICapZone:SetEngageZone( CapEngageZone ) -- Set the Engage Zone. The AI will only engage when the bogeys are within the CapEngageZone. - -AICapZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. +-- Name: CAP-001 - Combat Air Patrol +-- Author: FlightControl +-- Date Created: 16 January 2017 +-- +-- # Situation: +-- +-- # Test cases: +-- + +local CapPlane = GROUP:FindByName( "Plane" ) + +local PatrolZone = ZONE:New( "Patrol Zone" ) + +local AICapZone = AI_CAP_ZONE:New( PatrolZone, 500, 1000, 500, 600 ) + +local EngageZoneGroup = GROUP:FindByName( "Engage Zone" ) + +local CapEngageZone = ZONE_POLYGON:New( "Engage Zone", EngageZoneGroup ) + +AICapZone:SetControllable( CapPlane ) +AICapZone:SetEngageZone( CapEngageZone ) -- Set the Engage Zone. The AI will only engage when the bogeys are within the CapEngageZone. + +AICapZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. diff --git a/CAP - Combat Air Patrol/CAP-011 - CAP and Engage within Zone/CAP-011 - CAP and Engage within Zone.lua b/AI/AI_CAP/CAP-011 - CAP and Engage within Zone/CAP-011 - CAP and Engage within Zone.lua similarity index 97% rename from CAP - Combat Air Patrol/CAP-011 - CAP and Engage within Zone/CAP-011 - CAP and Engage within Zone.lua rename to AI/AI_CAP/CAP-011 - CAP and Engage within Zone/CAP-011 - CAP and Engage within Zone.lua index bdb66f93f0..9c6d374153 100644 --- a/CAP - Combat Air Patrol/CAP-011 - CAP and Engage within Zone/CAP-011 - CAP and Engage within Zone.lua +++ b/AI/AI_CAP/CAP-011 - CAP and Engage within Zone/CAP-011 - CAP and Engage within Zone.lua @@ -1,32 +1,32 @@ ---- --- Name: CAP-011 - CAP and Engage within Zone --- Author: FlightControl --- Date Created: 16 January 2017 --- --- # Situation: --- --- The Su-27 airplane will patrol in PatrolZone. --- It will engage when it detects the airplane and when the A-10C is within the CapEngageZone. --- --- # Test cases: --- --- 1. Observe the Su-27 patrolling. --- 2. Observe that, when the A-10C is within the engage zone, it will engage. --- 3. After engage, observe that the Su-27 returns to the PatrolZone. --- 4. If you want, you can wait until the Su-27 is out of fuel and will land. - - -CapPlane = GROUP:FindByName( "Plane" ) - -PatrolZone = ZONE:New( "Patrol Zone" ) - -AICapZone = AI_CAP_ZONE:New( PatrolZone, 500, 1000, 500, 600 ) - -EngageZoneGroup = GROUP:FindByName( "Engage Zone" ) - -CapEngageZone = ZONE_POLYGON:New( "Engage Zone", EngageZoneGroup ) - -AICapZone:SetControllable( CapPlane ) -AICapZone:SetEngageZone( CapEngageZone ) -- Set the Engage Zone. The AI will only engage when the bogeys are within the CapEngageZone. - -AICapZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. +--- +-- Name: CAP-011 - CAP and Engage within Zone +-- Author: FlightControl +-- Date Created: 16 January 2017 +-- +-- # Situation: +-- +-- The Su-27 airplane will patrol in PatrolZone. +-- It will engage when it detects the airplane and when the A-10C is within the CapEngageZone. +-- +-- # Test cases: +-- +-- 1. Observe the Su-27 patrolling. +-- 2. Observe that, when the A-10C is within the engage zone, it will engage. +-- 3. After engage, observe that the Su-27 returns to the PatrolZone. +-- 4. If you want, you can wait until the Su-27 is out of fuel and will land. + + +CapPlane = GROUP:FindByName( "Plane" ) + +PatrolZone = ZONE:New( "Patrol Zone" ) + +AICapZone = AI_CAP_ZONE:New( PatrolZone, 500, 1000, 500, 600 ) + +EngageZoneGroup = GROUP:FindByName( "Engage Zone" ) + +CapEngageZone = ZONE_POLYGON:New( "Engage Zone", EngageZoneGroup ) + +AICapZone:SetControllable( CapPlane ) +AICapZone:SetEngageZone( CapEngageZone ) -- Set the Engage Zone. The AI will only engage when the bogeys are within the CapEngageZone. + +AICapZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. diff --git a/CAP - Combat Air Patrol/CAP-011 - CAP and Engage within Zone/CAP-011 - CAP and Engage within Zone.miz b/AI/AI_CAP/CAP-011 - CAP and Engage within Zone/CAP-011 - CAP and Engage within Zone.miz similarity index 100% rename from CAP - Combat Air Patrol/CAP-011 - CAP and Engage within Zone/CAP-011 - CAP and Engage within Zone.miz rename to AI/AI_CAP/CAP-011 - CAP and Engage within Zone/CAP-011 - CAP and Engage within Zone.miz diff --git a/CAP - Combat Air Patrol/CAP-012 - CAP - Test Abort/CAP-012 - CAP - Test Abort.lua b/AI/AI_CAP/CAP-012 - CAP - Test Abort/CAP-012 - CAP - Test Abort.lua similarity index 97% rename from CAP - Combat Air Patrol/CAP-012 - CAP - Test Abort/CAP-012 - CAP - Test Abort.lua rename to AI/AI_CAP/CAP-012 - CAP - Test Abort/CAP-012 - CAP - Test Abort.lua index dc423e74d7..3b0ad84bc6 100644 --- a/CAP - Combat Air Patrol/CAP-012 - CAP - Test Abort/CAP-012 - CAP - Test Abort.lua +++ b/AI/AI_CAP/CAP-012 - CAP - Test Abort/CAP-012 - CAP - Test Abort.lua @@ -1,43 +1,43 @@ ---- --- Name: CAP-012 - CAP - Test Abort --- Author: FlightControl --- Date Created: 14 Mar 2017 --- --- # Situation: --- --- The Su-27 airplane will patrol in PatrolZone. --- It will engage when it detects the airplane and when the A-10C is within the CapEngageZone. --- It will abort the engagement after 1 minute and return to the patrol zone. --- --- # Test cases: --- --- 1. Observe the Su-27 patrolling. --- 2. Observe that, when the A-10C is within the engage zone, it will engage. --- 3. After engage, observe that the Su-27 returns to the PatrolZone. --- 4. When it engages, it will abort the engagement after 1 minute. - - -CapPlane = GROUP:FindByName( "Plane" ) - -PatrolZone = ZONE:New( "Patrol Zone" ) - -AICapZone = AI_CAP_ZONE:New( PatrolZone, 500, 1000, 500, 600 ) - -EngageZoneGroup = GROUP:FindByName( "Engage Zone" ) - -CapEngageZone = ZONE_POLYGON:New( "Engage Zone", EngageZoneGroup ) - -AICapZone:SetControllable( CapPlane ) -AICapZone:SetEngageZone( CapEngageZone ) -- Set the Engage Zone. The AI will only engage when the bogeys are within the CapEngageZone. - -AICapZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - -function AICapZone:OnAfterEngage(Controllable,From,Event,To) - AICapZone:__Abort( 60 ) -end - -function AICapZone:OnAfterAbort(Controllable,From,Event,To) - BASE:E("MISSION ABORTED! Returning to Patrol Zone!") - MESSAGE:New("MISSION ABORTED! Returning to Patrol Zone!",30,"ALERT!") -end - +--- +-- Name: CAP-012 - CAP - Test Abort +-- Author: FlightControl +-- Date Created: 14 Mar 2017 +-- +-- # Situation: +-- +-- The Su-27 airplane will patrol in PatrolZone. +-- It will engage when it detects the airplane and when the A-10C is within the CapEngageZone. +-- It will abort the engagement after 1 minute and return to the patrol zone. +-- +-- # Test cases: +-- +-- 1. Observe the Su-27 patrolling. +-- 2. Observe that, when the A-10C is within the engage zone, it will engage. +-- 3. After engage, observe that the Su-27 returns to the PatrolZone. +-- 4. When it engages, it will abort the engagement after 1 minute. + + +CapPlane = GROUP:FindByName( "Plane" ) + +PatrolZone = ZONE:New( "Patrol Zone" ) + +AICapZone = AI_CAP_ZONE:New( PatrolZone, 500, 1000, 500, 600 ) + +EngageZoneGroup = GROUP:FindByName( "Engage Zone" ) + +CapEngageZone = ZONE_POLYGON:New( "Engage Zone", EngageZoneGroup ) + +AICapZone:SetControllable( CapPlane ) +AICapZone:SetEngageZone( CapEngageZone ) -- Set the Engage Zone. The AI will only engage when the bogeys are within the CapEngageZone. + +AICapZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + +function AICapZone:OnAfterEngage(Controllable,From,Event,To) + AICapZone:__Abort( 60 ) +end + +function AICapZone:OnAfterAbort(Controllable,From,Event,To) + BASE:E("MISSION ABORTED! Returning to Patrol Zone!") + MESSAGE:New("MISSION ABORTED! Returning to Patrol Zone!",30,"ALERT!") +end + diff --git a/CAP - Combat Air Patrol/CAP-012 - CAP - Test Abort/CAP-012 - CAP - Test Abort.miz b/AI/AI_CAP/CAP-012 - CAP - Test Abort/CAP-012 - CAP - Test Abort.miz similarity index 100% rename from CAP - Combat Air Patrol/CAP-012 - CAP - Test Abort/CAP-012 - CAP - Test Abort.miz rename to AI/AI_CAP/CAP-012 - CAP - Test Abort/CAP-012 - CAP - Test Abort.miz diff --git a/CAP - Combat Air Patrol/CAP-020 - Combat Air Patrol RTB Test/CAP-020 - Combat Air Patrol RTB Test.lua b/AI/AI_CAP/CAP-020 - Combat Air Patrol RTB Test/CAP-020 - Combat Air Patrol RTB Test.lua similarity index 96% rename from CAP - Combat Air Patrol/CAP-020 - Combat Air Patrol RTB Test/CAP-020 - Combat Air Patrol RTB Test.lua rename to AI/AI_CAP/CAP-020 - Combat Air Patrol RTB Test/CAP-020 - Combat Air Patrol RTB Test.lua index 8f59293722..16f456f049 100644 --- a/CAP - Combat Air Patrol/CAP-020 - Combat Air Patrol RTB Test/CAP-020 - Combat Air Patrol RTB Test.lua +++ b/AI/AI_CAP/CAP-020 - Combat Air Patrol RTB Test/CAP-020 - Combat Air Patrol RTB Test.lua @@ -1,27 +1,27 @@ ---- --- Name: CAP-020 - Combat Air Patrol RTB Test --- Author: FlightControl --- Date Created: 14 February 2017 --- --- # Situation: --- The Su-27 airplane will patrol in PatrolZone. --- It will return to base when out of fuel. --- --- # Test cases: --- --- 1. Observe the Su-27 patrolling. --- 2. It should return to base when out of fuel. --- - -CapSpawn = SPAWN:New( "Plane" ):InitLimit(1,2):InitRepeatOnLanding() - -CapGroup = CapSpawn:Spawn() - -PatrolZone = ZONE:New( "Patrol Zone" ) - -AICapZone = AI_CAP_ZONE:New( PatrolZone, 500, 1000, 500, 600 ) - -AICapZone:SetControllable( CapGroup ) - -AICapZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - +--- +-- Name: CAP-020 - Combat Air Patrol RTB Test +-- Author: FlightControl +-- Date Created: 14 February 2017 +-- +-- # Situation: +-- The Su-27 airplane will patrol in PatrolZone. +-- It will return to base when out of fuel. +-- +-- # Test cases: +-- +-- 1. Observe the Su-27 patrolling. +-- 2. It should return to base when out of fuel. +-- + +CapSpawn = SPAWN:New( "Plane" ):InitLimit(1,2):InitRepeatOnLanding() + +CapGroup = CapSpawn:Spawn() + +PatrolZone = ZONE:New( "Patrol Zone" ) + +AICapZone = AI_CAP_ZONE:New( PatrolZone, 500, 1000, 500, 600 ) + +AICapZone:SetControllable( CapGroup ) + +AICapZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + diff --git a/CAP - Combat Air Patrol/CAP-020 - Combat Air Patrol RTB Test/CAP-020 - Combat Air Patrol RTB Test.miz b/AI/AI_CAP/CAP-020 - Combat Air Patrol RTB Test/CAP-020 - Combat Air Patrol RTB Test.miz similarity index 100% rename from CAP - Combat Air Patrol/CAP-020 - Combat Air Patrol RTB Test/CAP-020 - Combat Air Patrol RTB Test.miz rename to AI/AI_CAP/CAP-020 - Combat Air Patrol RTB Test/CAP-020 - Combat Air Patrol RTB Test.miz diff --git a/CAS - Close Air Support/CAS-001 - CAS in a Zone by Airplane Group/CAS-001 - CAS in a Zone by Airplane Group.lua b/AI/AI_CAS/CAS-001 - CAS in a Zone by Airplane Group/CAS-001 - CAS in a Zone by Airplane Group.lua similarity index 97% rename from CAS - Close Air Support/CAS-001 - CAS in a Zone by Airplane Group/CAS-001 - CAS in a Zone by Airplane Group.lua rename to AI/AI_CAS/CAS-001 - CAS in a Zone by Airplane Group/CAS-001 - CAS in a Zone by Airplane Group.lua index 2dc0d39eeb..0250414842 100644 --- a/CAS - Close Air Support/CAS-001 - CAS in a Zone by Airplane Group/CAS-001 - CAS in a Zone by Airplane Group.lua +++ b/AI/AI_CAS/CAS-001 - CAS in a Zone by Airplane Group/CAS-001 - CAS in a Zone by Airplane Group.lua @@ -1,74 +1,74 @@ ---- --- Name: CAS-001 - CAS in a Zone by Airplane Group --- Author: FlightControl --- Date Created: 13 January 2017 --- --- # Situation: --- --- A group of 4 Su-25T at patrolling north of an engage zone for 10 minutes. --- After 10 minutes, the command center orders the Su-25T to engage the zone and execute a CAS. --- --- # Test cases: --- --- 1. Observe that the Su-25T is patrolling in the patrol zone, until the engage command is given. --- 2. The Su-25T are not detecting any target during the patrol. --- 3. When the Su-25T is commanded to engage, the group will fly to the engage zone. --- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. --- 5. Observe the Su-25T eliminating the targets. --- 6. Observe the Su-25T defenses. --- 7. When all targets within the engage zone are destroyed, the Su-25T CAS task is set to Accomplished. --- 8. The Su-25T will return to base. - ---test - --- Create a local variable (in this case called CASEngagementZone) and --- using the ZONE function find the pre-defined zone called "Engagement Zone" --- currently on the map and assign it to this variable -CASEngagementZone = ZONE:New( "Engagement Zone" ) - --- Create a local variable (in this case called CASPlane) and --- using the GROUP function find the aircraft group called "Plane" and assign to this variable -CASPlane = GROUP:FindByName( "Plane" ) - --- Create a local Variable (in this cased called PatrolZone and --- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable -PatrolZone = ZONE:New( "Patrol Zone" ) - --- Create and object (in this case called AICasZone) and --- using the functions AI_CAS_ZONE assign the parameters that define this object --- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) -AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) - --- Create an object (in this case called Targets) and --- using the GROUP function find the group labeled "Targets" and assign it to this object -Targets = GROUP:FindByName("Targets") - - --- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function -AICasZone:SetControllable( CASPlane ) - --- Tell the group CASPlane to start the mission in 1 second. -AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - --- After 10 minutes, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) -AICasZone:__Engage( 600 ) - --- Check every 60 seconds whether the Targets have been eliminated. --- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. -Check, CheckScheduleID = SCHEDULER:New(nil, - function() - if Targets:IsAlive() and Targets:GetSize() > 5 then - BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") - else - BASE:E( "Test Mission: The required targets are destroyed." ) - AICasZone:__Accomplish( 1 ) -- Now they should fly back to the patrolzone and patrol. - end - end, {}, 20, 60, 0.2 ) - - --- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... -function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the Su-25T back to base." ) - Check:Stop( CheckScheduleID ) - AICasZone:__RTB( 1 ) -end +--- +-- Name: CAS-001 - CAS in a Zone by Airplane Group +-- Author: FlightControl +-- Date Created: 13 January 2017 +-- +-- # Situation: +-- +-- A group of 4 Su-25T at patrolling north of an engage zone for 10 minutes. +-- After 10 minutes, the command center orders the Su-25T to engage the zone and execute a CAS. +-- +-- # Test cases: +-- +-- 1. Observe that the Su-25T is patrolling in the patrol zone, until the engage command is given. +-- 2. The Su-25T are not detecting any target during the patrol. +-- 3. When the Su-25T is commanded to engage, the group will fly to the engage zone. +-- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. +-- 5. Observe the Su-25T eliminating the targets. +-- 6. Observe the Su-25T defenses. +-- 7. When all targets within the engage zone are destroyed, the Su-25T CAS task is set to Accomplished. +-- 8. The Su-25T will return to base. + +--test + +-- Create a local variable (in this case called CASEngagementZone) and +-- using the ZONE function find the pre-defined zone called "Engagement Zone" +-- currently on the map and assign it to this variable +CASEngagementZone = ZONE:New( "Engagement Zone" ) + +-- Create a local variable (in this case called CASPlane) and +-- using the GROUP function find the aircraft group called "Plane" and assign to this variable +CASPlane = GROUP:FindByName( "Plane" ) + +-- Create a local Variable (in this cased called PatrolZone and +-- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable +PatrolZone = ZONE:New( "Patrol Zone" ) + +-- Create and object (in this case called AICasZone) and +-- using the functions AI_CAS_ZONE assign the parameters that define this object +-- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) +AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) + +-- Create an object (in this case called Targets) and +-- using the GROUP function find the group labeled "Targets" and assign it to this object +Targets = GROUP:FindByName("Targets") + + +-- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function +AICasZone:SetControllable( CASPlane ) + +-- Tell the group CASPlane to start the mission in 1 second. +AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + +-- After 10 minutes, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) +AICasZone:__Engage( 600 ) + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. +Check, CheckScheduleID = SCHEDULER:New(nil, + function() + if Targets:IsAlive() and Targets:GetSize() > 5 then + BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") + else + BASE:E( "Test Mission: The required targets are destroyed." ) + AICasZone:__Accomplish( 1 ) -- Now they should fly back to the patrolzone and patrol. + end + end, {}, 20, 60, 0.2 ) + + +-- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... +function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the Su-25T back to base." ) + Check:Stop( CheckScheduleID ) + AICasZone:__RTB( 1 ) +end diff --git a/CAS - Close Air Support/CAS-001 - CAS in a Zone by Airplane Group/CAS-001 - CAS in a Zone by Airplane Group.miz b/AI/AI_CAS/CAS-001 - CAS in a Zone by Airplane Group/CAS-001 - CAS in a Zone by Airplane Group.miz similarity index 100% rename from CAS - Close Air Support/CAS-001 - CAS in a Zone by Airplane Group/CAS-001 - CAS in a Zone by Airplane Group.miz rename to AI/AI_CAS/CAS-001 - CAS in a Zone by Airplane Group/CAS-001 - CAS in a Zone by Airplane Group.miz diff --git a/CAS - Close Air Support/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed.lua b/AI/AI_CAS/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed.lua similarity index 97% rename from CAS - Close Air Support/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed.lua rename to AI/AI_CAS/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed.lua index f9bd0aee24..fad0bea38c 100644 --- a/CAS - Close Air Support/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed.lua +++ b/AI/AI_CAS/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed.lua @@ -1,75 +1,75 @@ ---- --- Name: CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed --- Author: FlightControl --- Date Created: 06 February 2017 --- --- # Situation: --- --- A group of 4 Su-25T at patrolling north of an engage zone for 1 minute. --- After 1 minute, the command center orders the Su-25T to engage the zone and execute a CAS. --- --- # Test cases: --- --- 1. Observe that the Su-25T is patrolling in the patrol zone, until the engage command is given. --- 2. The Su-25T are not detecting any target during the patrol. --- 3. When the Su-25T is commanded to engage, the group will fly to the engage zone. --- 3.1. The approach speed to the engage zone is set to 400 km/h. --- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. --- 5. Observe the Su-25T eliminating the targets. --- 6. Observe the Su-25T defenses. --- 7. When all targets within the engage zone are destroyed, the Su-25T CAS task is set to Accomplished. --- 8. The Su-25T will return to base. - - - --- Create a local variable (in this case called CASEngagementZone) and --- using the ZONE function find the pre-defined zone called "Engagement Zone" --- currently on the map and assign it to this variable -CASEngagementZone = ZONE:New( "Engagement Zone" ) - --- Create a local variable (in this case called CASPlane) and --- using the GROUP function find the aircraft group called "Plane" and assign to this variable -CASPlane = GROUP:FindByName( "Plane" ) - --- Create a local Variable (in this cased called PatrolZone and --- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable -PatrolZone = ZONE:New( "Patrol Zone" ) - --- Create and object (in this case called AICasZone) and --- using the functions AI_CAS_ZONE assign the parameters that define this object --- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) -AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) - --- Create an object (in this case called Targets) and --- using the GROUP function find the group labeled "Targets" and assign it to this object -Targets = GROUP:FindByName("Targets") - - --- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function -AICasZone:SetControllable( CASPlane ) - --- Tell the group CASPlane to start the mission in 1 second. -AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - --- After 10 minutes, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) -AICasZone:__Engage( 60, 400 ) -- Engage after one minute with a speed of 400 km/h. - --- Check every 60 seconds whether the Targets have been eliminated. --- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. -Check, CheckScheduleID = SCHEDULER:New(nil, - function() - if Targets:IsAlive() and Targets:GetSize() > 5 then - BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") - else - BASE:E( "Test Mission: The required targets are destroyed." ) - AICasZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. - end - end, {}, 20, 60, 0.2 ) - - --- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... -function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the Su-25T back to base." ) - Check:Stop( CheckScheduleID ) - AICasZone:__RTB( 1 ) -end +--- +-- Name: CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed +-- Author: FlightControl +-- Date Created: 06 February 2017 +-- +-- # Situation: +-- +-- A group of 4 Su-25T at patrolling north of an engage zone for 1 minute. +-- After 1 minute, the command center orders the Su-25T to engage the zone and execute a CAS. +-- +-- # Test cases: +-- +-- 1. Observe that the Su-25T is patrolling in the patrol zone, until the engage command is given. +-- 2. The Su-25T are not detecting any target during the patrol. +-- 3. When the Su-25T is commanded to engage, the group will fly to the engage zone. +-- 3.1. The approach speed to the engage zone is set to 400 km/h. +-- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. +-- 5. Observe the Su-25T eliminating the targets. +-- 6. Observe the Su-25T defenses. +-- 7. When all targets within the engage zone are destroyed, the Su-25T CAS task is set to Accomplished. +-- 8. The Su-25T will return to base. + + + +-- Create a local variable (in this case called CASEngagementZone) and +-- using the ZONE function find the pre-defined zone called "Engagement Zone" +-- currently on the map and assign it to this variable +CASEngagementZone = ZONE:New( "Engagement Zone" ) + +-- Create a local variable (in this case called CASPlane) and +-- using the GROUP function find the aircraft group called "Plane" and assign to this variable +CASPlane = GROUP:FindByName( "Plane" ) + +-- Create a local Variable (in this cased called PatrolZone and +-- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable +PatrolZone = ZONE:New( "Patrol Zone" ) + +-- Create and object (in this case called AICasZone) and +-- using the functions AI_CAS_ZONE assign the parameters that define this object +-- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) +AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) + +-- Create an object (in this case called Targets) and +-- using the GROUP function find the group labeled "Targets" and assign it to this object +Targets = GROUP:FindByName("Targets") + + +-- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function +AICasZone:SetControllable( CASPlane ) + +-- Tell the group CASPlane to start the mission in 1 second. +AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + +-- After 10 minutes, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) +AICasZone:__Engage( 60, 400 ) -- Engage after one minute with a speed of 400 km/h. + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. +Check, CheckScheduleID = SCHEDULER:New(nil, + function() + if Targets:IsAlive() and Targets:GetSize() > 5 then + BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") + else + BASE:E( "Test Mission: The required targets are destroyed." ) + AICasZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. + end + end, {}, 20, 60, 0.2 ) + + +-- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... +function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the Su-25T back to base." ) + Check:Stop( CheckScheduleID ) + AICasZone:__RTB( 1 ) +end diff --git a/CAS - Close Air Support/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed.miz b/AI/AI_CAS/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed.miz similarity index 100% rename from CAS - Close Air Support/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed.miz rename to AI/AI_CAS/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed/CAS-002 - CAS in a Zone by Airplane Group - Engage with Speed.miz diff --git a/CAS - Close Air Support/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude.lua b/AI/AI_CAS/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude.lua similarity index 97% rename from CAS - Close Air Support/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude.lua rename to AI/AI_CAS/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude.lua index 60c91bbaf7..8af2ca77e8 100644 --- a/CAS - Close Air Support/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude.lua +++ b/AI/AI_CAS/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude.lua @@ -1,76 +1,76 @@ ---- --- Name: CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude --- Author: FlightControl --- Date Created: 6 February 2017 --- --- # Situation: --- --- A group of 4 Su-25T at patrolling north of an engage zone for 1 minute. --- After 1 minute, the command center orders the Su-25T to engage the zone and execute a CAS. --- --- # Test cases: --- --- 1. Observe that the Su-25T is patrolling in the patrol zone, until the engage command is given. --- 2. The Su-25T are not detecting any target during the patrol. --- 3. When the Su-25T is commanded to engage, the group will fly to the engage zone --- 3.1. The approach speed to the engage zone is set to 400 km/h. --- 3.2. The altitude to the engage zone and CAS execution is set to 500 meters. --- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. --- 5. Observe the Su-25T eliminating the targets. --- 6. Observe the Su-25T defenses. --- 7. When all targets within the engage zone are destroyed, the Su-25T CAS task is set to Accomplished. --- 8. The Su-25T will return to base. - - - --- Create a local variable (in this case called CASEngagementZone) and --- using the ZONE function find the pre-defined zone called "Engagement Zone" --- currently on the map and assign it to this variable -CASEngagementZone = ZONE:New( "Engagement Zone" ) - --- Create a local variable (in this case called CASPlane) and --- using the GROUP function find the aircraft group called "Plane" and assign to this variable -CASPlane = GROUP:FindByName( "Plane" ) - --- Create a local Variable (in this cased called PatrolZone and --- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable -PatrolZone = ZONE:New( "Patrol Zone" ) - --- Create and object (in this case called AICasZone) and --- using the functions AI_CAS_ZONE assign the parameters that define this object --- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) -AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) - --- Create an object (in this case called Targets) and --- using the GROUP function find the group labeled "Targets" and assign it to this object -Targets = GROUP:FindByName("Targets") - - --- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function -AICasZone:SetControllable( CASPlane ) - --- Tell the group CASPlane to start the mission in 1 second. -AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - --- After 10 minutes, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) -AICasZone:__Engage( 600, 350, 4000 ) -- Engage after 10 minutes with a speed of 350 km/h and an altitude of 4000 meters. - --- Check every 60 seconds whether the Targets have been eliminated. --- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. -Check, CheckScheduleID = SCHEDULER:New(nil, - function() - if Targets:IsAlive() and Targets:GetSize() > 5 then - BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") - else - BASE:E( "Test Mission: The required targets are destroyed." ) - AICasZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. - end - end, {}, 20, 60, 0.2 ) - - --- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... -function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the Su-25T back to base." ) - Check:Stop( CheckScheduleID ) - AICasZone:__RTB( 1 ) -end +--- +-- Name: CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude +-- Author: FlightControl +-- Date Created: 6 February 2017 +-- +-- # Situation: +-- +-- A group of 4 Su-25T at patrolling north of an engage zone for 1 minute. +-- After 1 minute, the command center orders the Su-25T to engage the zone and execute a CAS. +-- +-- # Test cases: +-- +-- 1. Observe that the Su-25T is patrolling in the patrol zone, until the engage command is given. +-- 2. The Su-25T are not detecting any target during the patrol. +-- 3. When the Su-25T is commanded to engage, the group will fly to the engage zone +-- 3.1. The approach speed to the engage zone is set to 400 km/h. +-- 3.2. The altitude to the engage zone and CAS execution is set to 500 meters. +-- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. +-- 5. Observe the Su-25T eliminating the targets. +-- 6. Observe the Su-25T defenses. +-- 7. When all targets within the engage zone are destroyed, the Su-25T CAS task is set to Accomplished. +-- 8. The Su-25T will return to base. + + + +-- Create a local variable (in this case called CASEngagementZone) and +-- using the ZONE function find the pre-defined zone called "Engagement Zone" +-- currently on the map and assign it to this variable +CASEngagementZone = ZONE:New( "Engagement Zone" ) + +-- Create a local variable (in this case called CASPlane) and +-- using the GROUP function find the aircraft group called "Plane" and assign to this variable +CASPlane = GROUP:FindByName( "Plane" ) + +-- Create a local Variable (in this cased called PatrolZone and +-- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable +PatrolZone = ZONE:New( "Patrol Zone" ) + +-- Create and object (in this case called AICasZone) and +-- using the functions AI_CAS_ZONE assign the parameters that define this object +-- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) +AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) + +-- Create an object (in this case called Targets) and +-- using the GROUP function find the group labeled "Targets" and assign it to this object +Targets = GROUP:FindByName("Targets") + + +-- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function +AICasZone:SetControllable( CASPlane ) + +-- Tell the group CASPlane to start the mission in 1 second. +AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + +-- After 10 minutes, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) +AICasZone:__Engage( 600, 350, 4000 ) -- Engage after 10 minutes with a speed of 350 km/h and an altitude of 4000 meters. + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. +Check, CheckScheduleID = SCHEDULER:New(nil, + function() + if Targets:IsAlive() and Targets:GetSize() > 5 then + BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") + else + BASE:E( "Test Mission: The required targets are destroyed." ) + AICasZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. + end + end, {}, 20, 60, 0.2 ) + + +-- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... +function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the Su-25T back to base." ) + Check:Stop( CheckScheduleID ) + AICasZone:__RTB( 1 ) +end diff --git a/CAS - Close Air Support/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude.miz b/AI/AI_CAS/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude.miz similarity index 100% rename from CAS - Close Air Support/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude.miz rename to AI/AI_CAS/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude/CAS-003 - CAS in a Zone by Airplane Group - Engage with Speed and Altitude.miz diff --git a/CAS - Close Air Support/CAS-004 - CAS in a Zone by Airplane Group - Test Abort/CAS-004 - CAS in a Zone by Airplane Group - Test Abort.lua b/AI/AI_CAS/CAS-004 - CAS in a Zone by Airplane Group - Test Abort/CAS-004 - CAS in a Zone by Airplane Group - Test Abort.lua similarity index 97% rename from CAS - Close Air Support/CAS-004 - CAS in a Zone by Airplane Group - Test Abort/CAS-004 - CAS in a Zone by Airplane Group - Test Abort.lua rename to AI/AI_CAS/CAS-004 - CAS in a Zone by Airplane Group - Test Abort/CAS-004 - CAS in a Zone by Airplane Group - Test Abort.lua index dba517912a..295b7d11d8 100644 --- a/CAS - Close Air Support/CAS-004 - CAS in a Zone by Airplane Group - Test Abort/CAS-004 - CAS in a Zone by Airplane Group - Test Abort.lua +++ b/AI/AI_CAS/CAS-004 - CAS in a Zone by Airplane Group - Test Abort/CAS-004 - CAS in a Zone by Airplane Group - Test Abort.lua @@ -1,81 +1,81 @@ ---- --- Name: CAS-004 - CAS in a Zone by Airplane Group - Test Abort --- Author: FlightControl --- Date Created: 14 Mar 2017 --- --- # Situation: --- --- A group of 4 Su-25T at patrolling north of an engage zone for 1 minute. --- After 10 minutes, the command center orders the Su-25T to engage the zone and execute a CAS. --- After 12 minutes, the mission is aborted. --- --- # Test cases: --- --- 1. Observe that the Su-25T is patrolling in the patrol zone, until the engage command is given. --- 2. The Su-25T are not detecting any target during the patrol. --- 3. When the Su-25T is commanded to engage, the group will fly to the engage zone --- 3.1. The approach speed to the engage zone is set to 350 km/h. --- 3.2. The altitude to the engage zone and CAS execution is set to 4000 meters. --- 4. Observe the mission being aborted. A message will be sent. --- 5. The Su-25T will go back patrolling. - - - --- Create a local variable (in this case called CASEngagementZone) and --- using the ZONE function find the pre-defined zone called "Engagement Zone" --- currently on the map and assign it to this variable -CASEngagementZone = ZONE:New( "Engagement Zone" ) - --- Create a local variable (in this case called CASPlane) and --- using the GROUP function find the aircraft group called "Plane" and assign to this variable -CASPlane = GROUP:FindByName( "Plane" ) - --- Create a local Variable (in this cased called PatrolZone and --- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable -PatrolZone = ZONE:New( "Patrol Zone" ) - --- Create and object (in this case called AICasZone) and --- using the functions AI_CAS_ZONE assign the parameters that define this object --- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) -AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) - --- Create an object (in this case called Targets) and --- using the GROUP function find the group labeled "Targets" and assign it to this object -Targets = GROUP:FindByName("Targets") - - --- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function -AICasZone:SetControllable( CASPlane ) - --- Tell the group CASPlane to start the mission in 1 second. -AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - --- After 10 minutes, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) -AICasZone:__Engage( 600, 350, 4000 ) -- Engage after 10 minutes with a speed of 350 km/h and an altitude of 4000 meters. - --- After 12 minutes, tell the group CASPlane to abort the engagement. -AICasZone:__Abort( 720 ) -- Abort the engagement. - --- Check every 60 seconds whether the Targets have been eliminated. --- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. -Check, CheckScheduleID = SCHEDULER:New(nil, - function() - if Targets:IsAlive() and Targets:GetSize() > 5 then - BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") - else - BASE:E( "Test Mission: The required targets are destroyed." ) - AICasZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. - end - end, {}, 20, 60, 0.2 ) - -function AICasZone:OnAfterAbort(Controllable,From,Event,To) - BASE:E( "MISSION ABORT! Back to patrol zone." ) - MESSAGE:New("Mission ABORTED! Back to the Patrol Zone!",30,"ALERT!"):ToAll() -end - --- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... -function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the Su-25T back to base." ) - Check:Stop( CheckScheduleID ) - AICasZone:__RTB( 1 ) -end +--- +-- Name: CAS-004 - CAS in a Zone by Airplane Group - Test Abort +-- Author: FlightControl +-- Date Created: 14 Mar 2017 +-- +-- # Situation: +-- +-- A group of 4 Su-25T at patrolling north of an engage zone for 1 minute. +-- After 10 minutes, the command center orders the Su-25T to engage the zone and execute a CAS. +-- After 12 minutes, the mission is aborted. +-- +-- # Test cases: +-- +-- 1. Observe that the Su-25T is patrolling in the patrol zone, until the engage command is given. +-- 2. The Su-25T are not detecting any target during the patrol. +-- 3. When the Su-25T is commanded to engage, the group will fly to the engage zone +-- 3.1. The approach speed to the engage zone is set to 350 km/h. +-- 3.2. The altitude to the engage zone and CAS execution is set to 4000 meters. +-- 4. Observe the mission being aborted. A message will be sent. +-- 5. The Su-25T will go back patrolling. + + + +-- Create a local variable (in this case called CASEngagementZone) and +-- using the ZONE function find the pre-defined zone called "Engagement Zone" +-- currently on the map and assign it to this variable +CASEngagementZone = ZONE:New( "Engagement Zone" ) + +-- Create a local variable (in this case called CASPlane) and +-- using the GROUP function find the aircraft group called "Plane" and assign to this variable +CASPlane = GROUP:FindByName( "Plane" ) + +-- Create a local Variable (in this cased called PatrolZone and +-- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable +PatrolZone = ZONE:New( "Patrol Zone" ) + +-- Create and object (in this case called AICasZone) and +-- using the functions AI_CAS_ZONE assign the parameters that define this object +-- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) +AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) + +-- Create an object (in this case called Targets) and +-- using the GROUP function find the group labeled "Targets" and assign it to this object +Targets = GROUP:FindByName("Targets") + + +-- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function +AICasZone:SetControllable( CASPlane ) + +-- Tell the group CASPlane to start the mission in 1 second. +AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + +-- After 10 minutes, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) +AICasZone:__Engage( 600, 350, 4000 ) -- Engage after 10 minutes with a speed of 350 km/h and an altitude of 4000 meters. + +-- After 12 minutes, tell the group CASPlane to abort the engagement. +AICasZone:__Abort( 720 ) -- Abort the engagement. + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. +Check, CheckScheduleID = SCHEDULER:New(nil, + function() + if Targets:IsAlive() and Targets:GetSize() > 5 then + BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") + else + BASE:E( "Test Mission: The required targets are destroyed." ) + AICasZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. + end + end, {}, 20, 60, 0.2 ) + +function AICasZone:OnAfterAbort(Controllable,From,Event,To) + BASE:E( "MISSION ABORT! Back to patrol zone." ) + MESSAGE:New("Mission ABORTED! Back to the Patrol Zone!",30,"ALERT!"):ToAll() +end + +-- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... +function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the Su-25T back to base." ) + Check:Stop( CheckScheduleID ) + AICasZone:__RTB( 1 ) +end diff --git a/CAS - Close Air Support/CAS-004 - CAS in a Zone by Airplane Group - Test Abort/CAS-004 - CAS in a Zone by Airplane Group - Test Abort.miz b/AI/AI_CAS/CAS-004 - CAS in a Zone by Airplane Group - Test Abort/CAS-004 - CAS in a Zone by Airplane Group - Test Abort.miz similarity index 100% rename from CAS - Close Air Support/CAS-004 - CAS in a Zone by Airplane Group - Test Abort/CAS-004 - CAS in a Zone by Airplane Group - Test Abort.miz rename to AI/AI_CAS/CAS-004 - CAS in a Zone by Airplane Group - Test Abort/CAS-004 - CAS in a Zone by Airplane Group - Test Abort.miz diff --git a/CAS - Close Air Support/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend.lua b/AI/AI_CAS/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend.lua similarity index 97% rename from CAS - Close Air Support/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend.lua rename to AI/AI_CAS/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend.lua index 727e88c871..203eed00a8 100644 --- a/CAS - Close Air Support/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend.lua +++ b/AI/AI_CAS/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend.lua @@ -1,78 +1,78 @@ ---- --- Name: CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend --- Author: FlightControl --- Date Created: 18 Mar 2017 --- --- # Situation: --- --- A group of 4 Su-25T at patrolling north of an engage zone for 1 minute. --- After 1 minute, the command center orders the Su-25T to engage the zone and execute a CAS. --- The planes should expend 4 weapons per run. --- --- # Test cases: --- --- 1. Observe that the Su-25T is patrolling in the patrol zone, until the engage command is given. --- 2. The Su-25T are not detecting any target during the patrol. --- 3. When the Su-25T is commanded to engage, the group will fly to the engage zone --- 3.1. The approach speed to the engage zone is set to 400 km/h. --- 3.2. The altitude to the engage zone and CAS execution is set to 500 meters. --- 3.3. The planes should expend 4 weapons per run. --- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. --- 5. Observe the Su-25T eliminating the targets. --- 6. Observe the Su-25T defenses. --- 7. When all targets within the engage zone are destroyed, the Su-25T CAS task is set to Accomplished. --- 8. The Su-25T will return to base. - - - --- Create a local variable (in this case called CASEngagementZone) and --- using the ZONE function find the pre-defined zone called "Engagement Zone" --- currently on the map and assign it to this variable -CASEngagementZone = ZONE:New( "Engagement Zone" ) - --- Create a local variable (in this case called CASPlane) and --- using the GROUP function find the aircraft group called "Plane" and assign to this variable -CASPlane = GROUP:FindByName( "Plane" ) - --- Create a local Variable (in this cased called PatrolZone and --- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable -PatrolZone = ZONE:New( "Patrol Zone" ) - --- Create and object (in this case called AICasZone) and --- using the functions AI_CAS_ZONE assign the parameters that define this object --- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) -AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) - --- Create an object (in this case called Targets) and --- using the GROUP function find the group labeled "Targets" and assign it to this object -Targets = GROUP:FindByName("Targets") - - --- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function -AICasZone:SetControllable( CASPlane ) - --- Tell the group CASPlane to start the mission in 1 second. -AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - --- After 1 minute, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) -AICasZone:__Engage( 60, 600, 8000, AI.Task.WeaponExpend.FOUR ) -- Engage with a speed of 600 km/h and an altitude of 8000 meters, weapn expend 4. - --- Check every 60 seconds whether the Targets have been eliminated. --- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. -Check, CheckScheduleID = SCHEDULER:New(nil, - function() - if Targets:IsAlive() and Targets:GetSize() > 5 then - BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") - else - BASE:E( "Test Mission: The required targets are destroyed." ) - AICasZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. - end - end, {}, 20, 60, 0.2 ) - - --- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... -function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the Su-25T back to base." ) - Check:Stop( CheckScheduleID ) - AICasZone:__RTB( 1 ) -end +--- +-- Name: CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend +-- Author: FlightControl +-- Date Created: 18 Mar 2017 +-- +-- # Situation: +-- +-- A group of 4 Su-25T at patrolling north of an engage zone for 1 minute. +-- After 1 minute, the command center orders the Su-25T to engage the zone and execute a CAS. +-- The planes should expend 4 weapons per run. +-- +-- # Test cases: +-- +-- 1. Observe that the Su-25T is patrolling in the patrol zone, until the engage command is given. +-- 2. The Su-25T are not detecting any target during the patrol. +-- 3. When the Su-25T is commanded to engage, the group will fly to the engage zone +-- 3.1. The approach speed to the engage zone is set to 400 km/h. +-- 3.2. The altitude to the engage zone and CAS execution is set to 500 meters. +-- 3.3. The planes should expend 4 weapons per run. +-- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. +-- 5. Observe the Su-25T eliminating the targets. +-- 6. Observe the Su-25T defenses. +-- 7. When all targets within the engage zone are destroyed, the Su-25T CAS task is set to Accomplished. +-- 8. The Su-25T will return to base. + + + +-- Create a local variable (in this case called CASEngagementZone) and +-- using the ZONE function find the pre-defined zone called "Engagement Zone" +-- currently on the map and assign it to this variable +CASEngagementZone = ZONE:New( "Engagement Zone" ) + +-- Create a local variable (in this case called CASPlane) and +-- using the GROUP function find the aircraft group called "Plane" and assign to this variable +CASPlane = GROUP:FindByName( "Plane" ) + +-- Create a local Variable (in this cased called PatrolZone and +-- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable +PatrolZone = ZONE:New( "Patrol Zone" ) + +-- Create and object (in this case called AICasZone) and +-- using the functions AI_CAS_ZONE assign the parameters that define this object +-- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) +AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) + +-- Create an object (in this case called Targets) and +-- using the GROUP function find the group labeled "Targets" and assign it to this object +Targets = GROUP:FindByName("Targets") + + +-- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function +AICasZone:SetControllable( CASPlane ) + +-- Tell the group CASPlane to start the mission in 1 second. +AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + +-- After 1 minute, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) +AICasZone:__Engage( 60, 600, 8000, AI.Task.WeaponExpend.FOUR ) -- Engage with a speed of 600 km/h and an altitude of 8000 meters, weapn expend 4. + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. +Check, CheckScheduleID = SCHEDULER:New(nil, + function() + if Targets:IsAlive() and Targets:GetSize() > 5 then + BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") + else + BASE:E( "Test Mission: The required targets are destroyed." ) + AICasZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. + end + end, {}, 20, 60, 0.2 ) + + +-- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... +function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the Su-25T back to base." ) + Check:Stop( CheckScheduleID ) + AICasZone:__RTB( 1 ) +end diff --git a/CAS - Close Air Support/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend.miz b/AI/AI_CAS/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend.miz similarity index 100% rename from CAS - Close Air Support/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend.miz rename to AI/AI_CAS/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend/CAS-005 - CAS in a Zone by Airplane Group - Engage with WeaponExpend.miz diff --git a/CAS - Close Air Support/CAS-010 - CAS in a Zone by Helicopter/CAS-010 - CAS in a Zone by Helicopter.lua b/AI/AI_CAS/CAS-010 - CAS in a Zone by Helicopter/CAS-010 - CAS in a Zone by Helicopter.lua similarity index 97% rename from CAS - Close Air Support/CAS-010 - CAS in a Zone by Helicopter/CAS-010 - CAS in a Zone by Helicopter.lua rename to AI/AI_CAS/CAS-010 - CAS in a Zone by Helicopter/CAS-010 - CAS in a Zone by Helicopter.lua index f046c2e9ee..42f76f38f6 100644 --- a/CAS - Close Air Support/CAS-010 - CAS in a Zone by Helicopter/CAS-010 - CAS in a Zone by Helicopter.lua +++ b/AI/AI_CAS/CAS-010 - CAS in a Zone by Helicopter/CAS-010 - CAS in a Zone by Helicopter.lua @@ -1,76 +1,76 @@ ---- --- Name: CAS-010 - CAS in a Zone by Helicopter --- Author: FlightControl --- Date Created: 6 February 2017 --- --- # Situation: --- --- A group of 1 Ka-50 patrolling north of an engage zone for 1 minute. --- After 1 minute, the command center orders the Ka-50 to engage the zone and execute a CAS. --- --- # Test cases: --- --- 1. Observe that the Ka-50 is patrolling in the patrol zone, until the engage command is given. --- 2. The Ka-50 are not detecting any target during the patrol. --- 3. When the Ka-50 is commanded to engage, the group will fly to the engage zone. --- 3.1. Engage Speed is set to 100 km/h. --- 3.2. Engage Altitude is set to 150 meters. --- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. --- 5. Observe the Ka-50 eliminating the targets. --- 6. Observe the Ka-50 defenses. --- 7. When all targets within the engage zone are destroyed, the Ka-50 CAS task is set to Accomplished. --- 8. The Ka-50 will return to base. - - - --- Create a local variable (in this case called CASEngagementZone) and --- using the ZONE function find the pre-defined zone called "Engagement Zone" --- currently on the map and assign it to this variable -CASEngagementZone = ZONE:New( "Engagement Zone" ) - --- Create a local variable (in this case called CASPlane) and --- using the GROUP function find the aircraft group called "Plane" and assign to this variable -CASPlane = GROUP:FindByName( "Helicopter" ) - --- Create a local Variable (in this cased called PatrolZone and --- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable -PatrolZone = ZONE:New( "Patrol Zone" ) - --- Create and object (in this case called AICasZone) and --- using the functions AI_CAS_ZONE assign the parameters that define this object --- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) -AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) - --- Create an object (in this case called Targets) and --- using the GROUP function find the group labeled "Targets" and assign it to this object -Targets = GROUP:FindByName("Targets") - - --- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function -AICasZone:SetControllable( CASPlane ) - --- Tell the group CASPlane to start the mission in 1 second. -AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - --- After 10 minutes, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) -AICasZone:__Engage( 60, 100, 150 ) - --- Check every 60 seconds whether the Targets have been eliminated. --- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. -Check, CheckScheduleID = SCHEDULER:New(nil, - function() - if Targets:IsAlive() and Targets:GetSize() > 5 then - BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") - else - BASE:E( "Test Mission: The required targets are destroyed." ) - AICasZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. - end - end, {}, 20, 60, 0.2 ) - - --- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... -function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the Su-25T back to base." ) - Check:Stop( CheckScheduleID ) - AICasZone:__RTB( 1 ) -end +--- +-- Name: CAS-010 - CAS in a Zone by Helicopter +-- Author: FlightControl +-- Date Created: 6 February 2017 +-- +-- # Situation: +-- +-- A group of 1 Ka-50 patrolling north of an engage zone for 1 minute. +-- After 1 minute, the command center orders the Ka-50 to engage the zone and execute a CAS. +-- +-- # Test cases: +-- +-- 1. Observe that the Ka-50 is patrolling in the patrol zone, until the engage command is given. +-- 2. The Ka-50 are not detecting any target during the patrol. +-- 3. When the Ka-50 is commanded to engage, the group will fly to the engage zone. +-- 3.1. Engage Speed is set to 100 km/h. +-- 3.2. Engage Altitude is set to 150 meters. +-- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. +-- 5. Observe the Ka-50 eliminating the targets. +-- 6. Observe the Ka-50 defenses. +-- 7. When all targets within the engage zone are destroyed, the Ka-50 CAS task is set to Accomplished. +-- 8. The Ka-50 will return to base. + + + +-- Create a local variable (in this case called CASEngagementZone) and +-- using the ZONE function find the pre-defined zone called "Engagement Zone" +-- currently on the map and assign it to this variable +CASEngagementZone = ZONE:New( "Engagement Zone" ) + +-- Create a local variable (in this case called CASPlane) and +-- using the GROUP function find the aircraft group called "Plane" and assign to this variable +CASPlane = GROUP:FindByName( "Helicopter" ) + +-- Create a local Variable (in this cased called PatrolZone and +-- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable +PatrolZone = ZONE:New( "Patrol Zone" ) + +-- Create and object (in this case called AICasZone) and +-- using the functions AI_CAS_ZONE assign the parameters that define this object +-- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) +AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) + +-- Create an object (in this case called Targets) and +-- using the GROUP function find the group labeled "Targets" and assign it to this object +Targets = GROUP:FindByName("Targets") + + +-- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function +AICasZone:SetControllable( CASPlane ) + +-- Tell the group CASPlane to start the mission in 1 second. +AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + +-- After 10 minutes, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) +AICasZone:__Engage( 60, 100, 150 ) + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. +Check, CheckScheduleID = SCHEDULER:New(nil, + function() + if Targets:IsAlive() and Targets:GetSize() > 5 then + BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") + else + BASE:E( "Test Mission: The required targets are destroyed." ) + AICasZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. + end + end, {}, 20, 60, 0.2 ) + + +-- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... +function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the Su-25T back to base." ) + Check:Stop( CheckScheduleID ) + AICasZone:__RTB( 1 ) +end diff --git a/CAS - Close Air Support/CAS-010 - CAS in a Zone by Helicopter/CAS-010 - CAS in a Zone by Helicopter.miz b/AI/AI_CAS/CAS-010 - CAS in a Zone by Helicopter/CAS-010 - CAS in a Zone by Helicopter.miz similarity index 100% rename from CAS - Close Air Support/CAS-010 - CAS in a Zone by Helicopter/CAS-010 - CAS in a Zone by Helicopter.miz rename to AI/AI_CAS/CAS-010 - CAS in a Zone by Helicopter/CAS-010 - CAS in a Zone by Helicopter.miz diff --git a/CAS - Close Air Support/CAS-011 - CAS in a Zone by Helicopter Group/CAS-011 - CAS in a Zone by Helicopter Group.lua b/AI/AI_CAS/CAS-011 - CAS in a Zone by Helicopter Group/CAS-011 - CAS in a Zone by Helicopter Group.lua similarity index 97% rename from CAS - Close Air Support/CAS-011 - CAS in a Zone by Helicopter Group/CAS-011 - CAS in a Zone by Helicopter Group.lua rename to AI/AI_CAS/CAS-011 - CAS in a Zone by Helicopter Group/CAS-011 - CAS in a Zone by Helicopter Group.lua index edce960d68..dbf2bcb055 100644 --- a/CAS - Close Air Support/CAS-011 - CAS in a Zone by Helicopter Group/CAS-011 - CAS in a Zone by Helicopter Group.lua +++ b/AI/AI_CAS/CAS-011 - CAS in a Zone by Helicopter Group/CAS-011 - CAS in a Zone by Helicopter Group.lua @@ -1,75 +1,75 @@ ---- --- Name: CAS-011 - CAS in a Zone by Helicopter Group --- Author: FlightControl --- Date Created: 6 February 2017 --- --- # Situation: --- --- A group of 4 Ka-50 patrolling north of an engage zone for 1 minute. --- After 1 minute, the command center orders the Ka-50 to engage the zone and execute a CAS. --- --- # Test cases: --- --- 1. Observe that the Ka-50 is patrolling in the patrol zone, until the engage command is given. --- 2. The Ka-50 are not detecting any target during the patrol. --- 3. When the Ka-50 is commanded to engage, the group will fly to the engage zone. --- 3.1. Engage Speed is set to 100 km/h. --- 3.2. Engage Altitude is set to 150 meters. --- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. --- 5. Observe the Ka-50 eliminating the targets. --- 6. Observe the Ka-50 defenses. --- 7. When all targets within the engage zone are destroyed, the Ka-50 CAS task is set to Accomplished. --- 8. The Ka-50 will return to base. - - --- Create a local variable (in this case called CASEngagementZone) and --- using the ZONE function find the pre-defined zone called "Engagement Zone" --- currently on the map and assign it to this variable -CASEngagementZone = ZONE:New( "Engagement Zone" ) - --- Create a local variable (in this case called CASPlane) and --- using the GROUP function find the aircraft group called "Plane" and assign to this variable -CASPlane = GROUP:FindByName( "Helicopter" ) - --- Create a local Variable (in this cased called PatrolZone and --- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable -PatrolZone = ZONE:New( "Patrol Zone" ) - --- Create and object (in this case called AICasZone) and --- using the functions AI_CAS_ZONE assign the parameters that define this object --- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) -AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) - --- Create an object (in this case called Targets) and --- using the GROUP function find the group labeled "Targets" and assign it to this object -Targets = GROUP:FindByName("Targets") - - --- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function -AICasZone:SetControllable( CASPlane ) - --- Tell the group CASPlane to start the mission in 1 second. -AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. - --- After 10 minutes, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) -AICasZone:__Engage( 60, 100, 150 ) - --- Check every 60 seconds whether the Targets have been eliminated. --- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. -Check, CheckScheduleID = SCHEDULER:New(nil, - function() - if Targets:IsAlive() and Targets:GetSize() > 5 then - BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") - else - BASE:E( "Test Mission: The required targets are destroyed." ) - AICasZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. - end - end, {}, 20, 60, 0.2 ) - - --- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... -function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the Su-25T back to base." ) - Check:Stop( CheckScheduleID ) - AICasZone:__RTB( 1 ) -end +--- +-- Name: CAS-011 - CAS in a Zone by Helicopter Group +-- Author: FlightControl +-- Date Created: 6 February 2017 +-- +-- # Situation: +-- +-- A group of 4 Ka-50 patrolling north of an engage zone for 1 minute. +-- After 1 minute, the command center orders the Ka-50 to engage the zone and execute a CAS. +-- +-- # Test cases: +-- +-- 1. Observe that the Ka-50 is patrolling in the patrol zone, until the engage command is given. +-- 2. The Ka-50 are not detecting any target during the patrol. +-- 3. When the Ka-50 is commanded to engage, the group will fly to the engage zone. +-- 3.1. Engage Speed is set to 100 km/h. +-- 3.2. Engage Altitude is set to 150 meters. +-- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. +-- 5. Observe the Ka-50 eliminating the targets. +-- 6. Observe the Ka-50 defenses. +-- 7. When all targets within the engage zone are destroyed, the Ka-50 CAS task is set to Accomplished. +-- 8. The Ka-50 will return to base. + + +-- Create a local variable (in this case called CASEngagementZone) and +-- using the ZONE function find the pre-defined zone called "Engagement Zone" +-- currently on the map and assign it to this variable +CASEngagementZone = ZONE:New( "Engagement Zone" ) + +-- Create a local variable (in this case called CASPlane) and +-- using the GROUP function find the aircraft group called "Plane" and assign to this variable +CASPlane = GROUP:FindByName( "Helicopter" ) + +-- Create a local Variable (in this cased called PatrolZone and +-- using the ZONE function find the pre-defined zone called "Patrol Zone" and assign it to this variable +PatrolZone = ZONE:New( "Patrol Zone" ) + +-- Create and object (in this case called AICasZone) and +-- using the functions AI_CAS_ZONE assign the parameters that define this object +-- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) +AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 500, 600, CASEngagementZone ) + +-- Create an object (in this case called Targets) and +-- using the GROUP function find the group labeled "Targets" and assign it to this object +Targets = GROUP:FindByName("Targets") + + +-- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function +AICasZone:SetControllable( CASPlane ) + +-- Tell the group CASPlane to start the mission in 1 second. +AICasZone:__Start( 1 ) -- They should statup, and start patrolling in the PatrolZone. + +-- After 10 minutes, tell the group CASPlane to engage the targets located in the engagement zone called CASEngagement Zone. (600 is 600 seconds) +AICasZone:__Engage( 60, 100, 150 ) + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. +Check, CheckScheduleID = SCHEDULER:New(nil, + function() + if Targets:IsAlive() and Targets:GetSize() > 5 then + BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") + else + BASE:E( "Test Mission: The required targets are destroyed." ) + AICasZone:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. + end + end, {}, 20, 60, 0.2 ) + + +-- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... +function AICasZone:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the Su-25T back to base." ) + Check:Stop( CheckScheduleID ) + AICasZone:__RTB( 1 ) +end diff --git a/CAS - Close Air Support/CAS-011 - CAS in a Zone by Helicopter Group/CAS-011 - CAS in a Zone by Helicopter Group.miz b/AI/AI_CAS/CAS-011 - CAS in a Zone by Helicopter Group/CAS-011 - CAS in a Zone by Helicopter Group.miz similarity index 100% rename from CAS - Close Air Support/CAS-011 - CAS in a Zone by Helicopter Group/CAS-011 - CAS in a Zone by Helicopter Group.miz rename to AI/AI_CAS/CAS-011 - CAS in a Zone by Helicopter Group/CAS-011 - CAS in a Zone by Helicopter Group.miz diff --git a/CAS - Close Air Support/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups.lua b/AI/AI_CAS/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups.lua similarity index 98% rename from CAS - Close Air Support/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups.lua rename to AI/AI_CAS/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups.lua index 87e53937b8..05d2beba9d 100644 --- a/CAS - Close Air Support/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups.lua +++ b/AI/AI_CAS/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups.lua @@ -1,91 +1,91 @@ ---- --- Name: CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups --- Author: FlightControl --- Date Created: 6 February 2017 --- --- # Situation: --- --- A group of 4 Ka-50 and 5 Su-25T are patrolling north in two engage zone for 5 minutes. --- After 5 minutes, the command center orders the groups to engage the zone and execute a CAS. --- --- # Test cases: --- --- 1. Observe that the groups is patrolling in the patrol zone, until the engage command is given. --- 2. The groups are not detecting any target during the patrol. --- 3. When the groups is commanded to engage, the group will fly to the engage zone. --- 3.1. Engage Speed for the Su-25T is set to 350 km/h. --- 3.2. Engage Altitude for the Su-25T is set to 1500 meters. --- 3.3. Engage Speed for the Ka-50 is set to 100 km/h. --- 3.4. Engage Altitude for the Ka-50 is set to 150 meters. --- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. --- 5. Observe the groups eliminating the targets. --- 6. Observe the groups defenses. --- 7. When all targets within the engage zone are destroyed, the groups CAS task is set to Accomplished. --- 8. The groups will return to base. - - - --- Create a local variable (in this case called CASEngagementZone) and --- using the ZONE function find the pre-defined zone called "Engagement Zone" --- currently on the map and assign it to this variable -CASEngagementZone = ZONE:New( "Engagement Zone" ) - --- Create a local variables (in this case called CASPlane and CASHelicopters) and --- using the GROUP function find the aircraft group called "Plane" and "Helicopter" and assign to these variables -CASPlane = GROUP:FindByName( "Plane" ) -CASHelicopter = GROUP:FindByName( "Helicopter" ) - --- Create two patrol zones, one for the Planes and one for the Helicopters. -PatrolZonePlanes = ZONE:New( "Patrol Zone Planes" ) -PatrolZoneHelicopters = ZONE:New( "Patrol Zone Helicopters" ) - --- Create and object (in this case called AICasZone) and --- using the functions AI_CAS_ZONE assign the parameters that define this object --- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) -AICasZonePlanes = AI_CAS_ZONE:New( PatrolZonePlanes, 400, 500, 500, 2500, CASEngagementZone ) -AICasZoneHelicopters = AI_CAS_ZONE:New( PatrolZoneHelicopters, 100, 250, 300, 1000, CASEngagementZone ) - --- Create an object (in this case called Targets) and --- using the GROUP function find the group labeled "Targets" and assign it to this object -Targets = GROUP:FindByName("Targets") - - --- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function -AICasZonePlanes:SetControllable( CASPlane ) -AICasZoneHelicopters:SetControllable( CASHelicopter ) - --- Tell the group CASPlane to start the mission in 1 second. -AICasZonePlanes:__Start( 1 ) -- They should startup, and start patrolling in the PatrolZone. -AICasZoneHelicopters:__Start( 1 ) -- They should startup, and start patrolling in the PatrolZone. - --- After 10 minutes, tell the group CASPlanes and CASHelicopters to engage the targets located in the engagement zone called CASEngagement Zone. -AICasZonePlanes:__Engage( 300, 350, 1500 ) -- Engage with a speed of 350 km/h and 1500 meter altitude. -AICasZoneHelicopters:__Engage( 300, 100, 150 ) -- Engage with a speed of 100 km/h and 150 meter altitude. - - --- Check every 60 seconds whether the Targets have been eliminated. --- When the trigger completed has been fired, the Planes and Helicopters will go back to the Patrol Zone. -Check, CheckScheduleID = SCHEDULER:New(nil, - function() - if Targets:IsAlive() and Targets:GetSize() > 5 then - BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") - else - BASE:E( "Test Mission: The required targets are destroyed." ) - Check:Stop( CheckScheduleID ) - AICasZonePlanes:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. - AICasZoneHelicopters:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. - end - end, {}, 20, 60, 0.2 ) - - --- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... -function AICasZonePlanes:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the Su-25T back to base." ) - AICasZonePlanes:__RTB( 1 ) -end - --- When the targets in the zone are destroyed, (see scheduled function), the helicpters will return home ... -function AICasZoneHelicopters:OnAfterAccomplish( Controllable, From, Event, To ) - BASE:E( "Test Mission: Sending the Ka-50 back to base." ) - AICasZoneHelicopters:__RTB( 1 ) -end +--- +-- Name: CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups +-- Author: FlightControl +-- Date Created: 6 February 2017 +-- +-- # Situation: +-- +-- A group of 4 Ka-50 and 5 Su-25T are patrolling north in two engage zone for 5 minutes. +-- After 5 minutes, the command center orders the groups to engage the zone and execute a CAS. +-- +-- # Test cases: +-- +-- 1. Observe that the groups is patrolling in the patrol zone, until the engage command is given. +-- 2. The groups are not detecting any target during the patrol. +-- 3. When the groups is commanded to engage, the group will fly to the engage zone. +-- 3.1. Engage Speed for the Su-25T is set to 350 km/h. +-- 3.2. Engage Altitude for the Su-25T is set to 1500 meters. +-- 3.3. Engage Speed for the Ka-50 is set to 100 km/h. +-- 3.4. Engage Altitude for the Ka-50 is set to 150 meters. +-- 4. Detection is activated and detected targets within the engage zone are assigned for CAS. +-- 5. Observe the groups eliminating the targets. +-- 6. Observe the groups defenses. +-- 7. When all targets within the engage zone are destroyed, the groups CAS task is set to Accomplished. +-- 8. The groups will return to base. + + + +-- Create a local variable (in this case called CASEngagementZone) and +-- using the ZONE function find the pre-defined zone called "Engagement Zone" +-- currently on the map and assign it to this variable +CASEngagementZone = ZONE:New( "Engagement Zone" ) + +-- Create a local variables (in this case called CASPlane and CASHelicopters) and +-- using the GROUP function find the aircraft group called "Plane" and "Helicopter" and assign to these variables +CASPlane = GROUP:FindByName( "Plane" ) +CASHelicopter = GROUP:FindByName( "Helicopter" ) + +-- Create two patrol zones, one for the Planes and one for the Helicopters. +PatrolZonePlanes = ZONE:New( "Patrol Zone Planes" ) +PatrolZoneHelicopters = ZONE:New( "Patrol Zone Helicopters" ) + +-- Create and object (in this case called AICasZone) and +-- using the functions AI_CAS_ZONE assign the parameters that define this object +-- (in this case PatrolZone, 500, 1000, 500, 600, CASEngagementZone) +AICasZonePlanes = AI_CAS_ZONE:New( PatrolZonePlanes, 400, 500, 500, 2500, CASEngagementZone ) +AICasZoneHelicopters = AI_CAS_ZONE:New( PatrolZoneHelicopters, 100, 250, 300, 1000, CASEngagementZone ) + +-- Create an object (in this case called Targets) and +-- using the GROUP function find the group labeled "Targets" and assign it to this object +Targets = GROUP:FindByName("Targets") + + +-- Tell the program to use the object (in this case called CASPlane) as the group to use in the CAS function +AICasZonePlanes:SetControllable( CASPlane ) +AICasZoneHelicopters:SetControllable( CASHelicopter ) + +-- Tell the group CASPlane to start the mission in 1 second. +AICasZonePlanes:__Start( 1 ) -- They should startup, and start patrolling in the PatrolZone. +AICasZoneHelicopters:__Start( 1 ) -- They should startup, and start patrolling in the PatrolZone. + +-- After 10 minutes, tell the group CASPlanes and CASHelicopters to engage the targets located in the engagement zone called CASEngagement Zone. +AICasZonePlanes:__Engage( 300, 350, 1500 ) -- Engage with a speed of 350 km/h and 1500 meter altitude. +AICasZoneHelicopters:__Engage( 300, 100, 150 ) -- Engage with a speed of 100 km/h and 150 meter altitude. + + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Planes and Helicopters will go back to the Patrol Zone. +Check, CheckScheduleID = SCHEDULER:New(nil, + function() + if Targets:IsAlive() and Targets:GetSize() > 5 then + BASE:E( "Test Mission: " .. Targets:GetSize() .. " targets left to be destroyed.") + else + BASE:E( "Test Mission: The required targets are destroyed." ) + Check:Stop( CheckScheduleID ) + AICasZonePlanes:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. + AICasZoneHelicopters:__Accomplish( 1 ) -- Now they should fly back to teh patrolzone and patrol. + end + end, {}, 20, 60, 0.2 ) + + +-- When the targets in the zone are destroyed, (see scheduled function), the planes will return home ... +function AICasZonePlanes:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the Su-25T back to base." ) + AICasZonePlanes:__RTB( 1 ) +end + +-- When the targets in the zone are destroyed, (see scheduled function), the helicpters will return home ... +function AICasZoneHelicopters:OnAfterAccomplish( Controllable, From, Event, To ) + BASE:E( "Test Mission: Sending the Ka-50 back to base." ) + AICasZoneHelicopters:__RTB( 1 ) +end diff --git a/CAS - Close Air Support/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups.miz b/AI/AI_CAS/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups.miz similarity index 100% rename from CAS - Close Air Support/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups.miz rename to AI/AI_CAS/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups/CAS-111 - Multiple CAS in 1 Radius Zone by Helicopter and AirPlane Groups.miz