Merge remote-tracking branch 'refs/remotes/origin/master' into release-2-2-pre

This commit is contained in:
FlightControl
2017-07-08 09:22:07 +02:00
30 changed files with 2057 additions and 718 deletions

View File

@@ -1724,14 +1724,16 @@ do -- AI_A2A_DISPATCHER
self:E( { DefenderSquadron } ) self:E( { DefenderSquadron } )
local SpawnCoord = DefenderSquadron.Airbase:GetCoordinate() -- Core.Point#COORDINATE local SpawnCoord = DefenderSquadron.Airbase:GetCoordinate() -- Core.Point#COORDINATE
local TargetCoord = Target.Set:GetFirst():GetCoordinate() local TargetCoord = Target.Set:GetFirst():GetCoordinate()
local Distance = SpawnCoord:Get2DDistance( TargetCoord ) if TargetCoord then
local Distance = SpawnCoord:Get2DDistance( TargetCoord )
if ClosestDistance == 0 or Distance < ClosestDistance then
-- Only intercept if the distance to target is smaller or equal to the GciRadius limit. if ClosestDistance == 0 or Distance < ClosestDistance then
if Distance <= self.GciRadius then
ClosestDistance = Distance -- Only intercept if the distance to target is smaller or equal to the GciRadius limit.
ClosestDefenderSquadronName = SquadronName if Distance <= self.GciRadius then
ClosestDistance = Distance
ClosestDefenderSquadronName = SquadronName
end
end end
end end
end end
@@ -2081,33 +2083,33 @@ do
-- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia1.JPG) -- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia1.JPG)
-- --
-- The AI_A2A_GCICAP class is designed to create an automatic air defence system for a coalition setting up GCI and CAP air defenses. -- The AI_A2A_GCICAP class is designed to create an automatic air defence system for a coalition setting up GCI and CAP air defenses.
-- The class derives from @{AI#AI_A2A_DISPATCHER} and thus all the methods that are defined in this class, can be used also in AI\_A2A\_GCICAP.
-- --
-- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia3.JPG) -- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia3.JPG)
-- --
-- It includes automatic spawning of Combat Air Patrol aircraft (CAP) and Ground Controlled Intercept aircraft (GCI) in response to enemy air movements that are detected by a ground based radar network. -- AI_A2A_GCICAP includes automatic spawning of Combat Air Patrol aircraft (CAP) and Ground Controlled Intercept aircraft (GCI) in response to enemy
-- CAP flights will take off and proceed to designated CAP zones where they will remain on station until the ground radars direct them to intercept detected enemy aircraft or they run short of fuel and must return to base (RTB). When a CAP flight leaves their zone to perform an interception or return to base a new CAP flight will spawn to take their place. -- air movements that are detected by a ground based radar network.
-- CAP flights will take off and proceed to designated CAP zones where they will remain on station until the ground radars direct them to intercept
-- detected enemy aircraft or they run short of fuel and must return to base (RTB).
-- When a CAP flight leaves their zone to perform an interception or return to base a new CAP flight will spawn to take their place.
-- If all CAP flights are engaged or RTB then additional GCI interceptors will scramble to intercept unengaged enemy aircraft under ground radar control. -- If all CAP flights are engaged or RTB then additional GCI interceptors will scramble to intercept unengaged enemy aircraft under ground radar control.
-- With a little time and with a little work it provides the mission designer with a convincing and completely automatic air defence system. -- With a little time and with a little work it provides the mission designer with a convincing and completely automatic air defence system.
-- In short it is a plug in very flexible and configurable air defence module for DCS World. -- In short it is a plug in very flexible and configurable air defence module for DCS World.
-- --
-- Note that in order to create a two way A2A defense system, two AI\_A2A\_GCICAP defense system may need to be created, for each coalition one. -- The AI_A2A_GCICAP provides a lightweight configuration method using the mission editor.
-- This is a good implementation, because maybe in the future, more coalitions may become available in DCS world.
-- --
-- ## 1. AI\_A2A\_GCICAP constructor: --
-- ## 1) Configure a working AI\_A2A\_GCICAP defense system for ONE coalition.
--
-- ### 1.1) Define which airbases are for which coalition.
-- --
-- The @{#AI_A2A_GCICAP.New}() method creates a new AI\_A2A\_GCICAP instance. -- Color the airbases red or blue. You can do this by selecting the airbase on the map, and select the coalition blue or red.
-- There are two parameters required, a list of prefix group names that collects the groups of the EWR network, and a radius in meters,
-- that will be used to group the detected targets.
-- --
-- ### 1.1. Define the **EWR network**: -- ### 1.2) Place Groups given a name starting with a **EWR prefix** of your choice to build your EWR network.
-- --
-- As part of the AI\_A2A\_GCICAP constructor, a list of prefixes must be given of the group names defined within the mission editor, -- **All EWR groups starting with the EWR prefix (text) will be included in the detection system.**
-- that define the EWR network.
-- --
-- An EWR network, or, Early Warning Radar network, is used to early detect potential airborne targets and to understand the position of patrolling targets of the enemy. -- An EWR network, or, Early Warning Radar network, is used to early detect potential airborne targets and to understand the position of patrolling targets of the enemy.
--
-- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia5.JPG)
--
-- Typically EWR networks are setup using 55G6 EWR, 1L13 EWR, Hawk sr and Patriot str ground based radar units. -- Typically EWR networks are setup using 55G6 EWR, 1L13 EWR, Hawk sr and Patriot str ground based radar units.
-- These radars have different ranges and 55G6 EWR and 1L13 EWR radars are Eastern Bloc units (eg Russia, Ukraine, Georgia) while the Hawk and Patriot radars are Western (eg US). -- These radars have different ranges and 55G6 EWR and 1L13 EWR radars are Eastern Bloc units (eg Russia, Ukraine, Georgia) while the Hawk and Patriot radars are Western (eg US).
-- Additionally, ANY other radar capable unit can be part of the EWR network! Also AWACS airborne units, planes, helicopters can help to detect targets, as long as they have radar. -- Additionally, ANY other radar capable unit can be part of the EWR network! Also AWACS airborne units, planes, helicopters can help to detect targets, as long as they have radar.
@@ -2126,28 +2128,80 @@ do
-- EWR networks are **dynamically maintained**. By defining in a **smart way the names or name prefixes of the groups** with EWR capable units, these groups will be **automatically added or deleted** from the EWR network, -- EWR networks are **dynamically maintained**. By defining in a **smart way the names or name prefixes of the groups** with EWR capable units, these groups will be **automatically added or deleted** from the EWR network,
-- increasing or decreasing the radar coverage of the Early Warning System. -- increasing or decreasing the radar coverage of the Early Warning System.
-- --
-- See the following example to setup an EWR network containing EWR stations and AWACS. -- ### 1.3) Place Airplane or Helicopter Groups with late activation switched on
-- --
-- -- Setup the A2A GCICAP dispatcher, and initialize it. -- These are **templates**, with a given name starting with **a Template prefix** above each airbase that you wanna have a squadron.
-- A2ADispatcher = AI_A2A_DISPATCHER_GCICAP:New( { "DF CCCP AWACS", "DF CCCP EWR" }, 30000 ) -- These **templates** need to be within 10km from the airbase center. They don't need to have a slot at the airplane, they can just be positioned above the airbase,
-- without a route, and should only have ONE unit.
-- --
-- The above example creates a new AI_A2A_DISPATCHER_GCICAP instance, and stores this in the variable (object) **A2ADispatcher**. -- ### 1.4) Place floating helicopters to create the CAP zones.
-- The first parameter is are the prefixes of the group names that define the EWR network.
-- The A2A dispatcher will filter all active groups with a group name starting with **DF CCCP AWACS** or **DF CCCP EWR** to be included in the EWR network.
-- --
-- ### 1.2. Define the detected **target grouping radius**: -- The helicopter indicates the start of the CAP zone.
-- The route points the form of the CAP zone polygon.
-- The place of the helicopter is important, as the airbase closest to the helicopter will be the airbase from where the CAP planes will take off for CAP.
-- --
-- As a second parameter of the @{#AI_A2A_DISPATCHER_GCICAP.New}() method, a radius in meters must be given. The radius indicates that detected targets need to be grouped within a radius of 30km. -- ## 2) There are a lot of defaults set, which can be further modified using the methods in @{AI#AI_A2A_DISPATCHER}:
--
-- ### 2.1) Planes are taking off in the air from the airbases.
--
-- This prevents airbases to get cluttered with airplanes taking off, it also reduces the risk of human players colliding with taxiiing airplanes,
-- resulting in the airbase to halt operations.
--
-- ### 2.2) Planes return near the airbase or will land if damaged.
--
-- When damaged airplanes return to the airbase, they will be routed and will dissapear in the air when they are near the airbase.
-- There are exceptions to this rule, airplanes that aren't "listening" anymore due to damage or out of fuel, will return to the airbase and land.
--
-- ### 2.3) CAP operations setup for specific airbases, will be executed with the following parameters:
--
-- * The altitude will range between 6000 and 10000 meters.
-- * The CAP speed will vary between 500 and 800 km/h.
-- * The engage speed between 800 and 1200 km/h.
--
-- ### 2.4) Each airbase will perform GCI when required, with the following parameters:
--
-- * The engage speed is between 800 and 1200 km/h.
--
-- ### 2.5) Grouping or detected targets.
--
-- Detected targets are constantly re-grouped, that is, when certain detected aircraft are moving further than the group radius, then these aircraft will become a separate
-- group being detected.
--
-- Targets will be grouped within a radius of 30km by default.
--
-- The radius indicates that detected targets need to be grouped within a radius of 30km.
-- The grouping radius should not be too small, but also depends on the types of planes and the era of the simulation. -- The grouping radius should not be too small, but also depends on the types of planes and the era of the simulation.
-- Fast planes like in the 80s, need a larger radius than WWII planes. -- Fast planes like in the 80s, need a larger radius than WWII planes.
-- Typically I suggest to use 30000 for new generation planes and 10000 for older era aircraft. -- Typically I suggest to use 30000 for new generation planes and 10000 for older era aircraft.
-- --
-- Note that detected targets are constantly re-grouped, that is, when certain detected aircraft are moving further than the group radius, then these aircraft will become a separate -- ## 3) Additional notes:
-- group being detected. This may result in additional GCI being started by the dispatcher! So don't make this value too small!
-- --
-- ## 2. AI_A2A_DISPATCHER_DOCUMENTATION is derived from @{#AI_A2A_DISPATCHER}, -- In order to create a two way A2A defense system, **two AI\_A2A\_GCICAP defense systems must need to be created**, for each coalition one.
-- so all further documentation needs to be consulted in this class -- Each defense system needs its own EWR network setup, airplane templates and CAP configurations.
-- for documentation consistency. --
-- This is a good implementation, because maybe in the future, more coalitions may become available in DCS world.
--
--
--
--
-- ## 4) Coding example how to use the AI\_A2A\_GCICAP class:
--
-- -- Setup the AI_A2A_GCICAP dispatcher for one coalition, and initialize it.
-- GCI_Red = AI_A2A_GCICAP:New( "EWR CCCP", "SQUADRON CCCP", "CAP CCCP", 2 )
--
-- This will create a GCI/CAP system for the RED coalition, and stores the reference to the GCI/CAP system in the `GCI\_Red` variable!
-- In the mission editor, the following setup will have taken place:
--
-- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia5.JPG)
--
-- The following parameters were given to the :New method of AI_A2A_GCICAP, and mean the following:
--
-- * `EWR CCCP`: Groups of the RED coalition are placed that define the EWR network. These groups start with the name `EWR CCCP`.
-- * `SQUADRON CCCP`: Late activated Groups objects of the RED coalition are placed above the relevant airbases that will contain these templates in the squadron.
-- These late activated Groups start with the name `SQUADRON CCCP`. Each Group object contains only one Unit, and defines the weapon payload, skin and skill level.
-- * `CAP CCCP`: CAP Zones are defined using floating, late activated Helicopter Group objects, where the route points define the route of the polygon of the CAP Zone.
-- These Helicopter Group objects start with the name `CAP CCCP`, and will be the locations wherein CAP will be performed.
-- * `2` Defines how many CAP airplanes are patrolling in each CAP zone defined simulateneously.
-- --
-- @field #AI_A2A_GCICAP -- @field #AI_A2A_GCICAP
AI_A2A_GCICAP = { AI_A2A_GCICAP = {

View File

@@ -402,7 +402,7 @@ function AI_CAP_ZONE:onafterDetected( Controllable, From, Event, To )
end end
if Engage == true then if Engage == true then
self:E( 'Detected -> Engaging' ) self:F( 'Detected -> Engaging' )
self:__Engage( 1 ) self:__Engage( 1 )
end end
end end
@@ -485,13 +485,13 @@ function AI_CAP_ZONE:onafterEngage( Controllable, From, Event, To )
if DetectedUnit:IsAlive() and DetectedUnit:IsAir() then if DetectedUnit:IsAlive() and DetectedUnit:IsAir() then
if self.EngageZone then if self.EngageZone then
if DetectedUnit:IsInZone( self.EngageZone ) then if DetectedUnit:IsInZone( self.EngageZone ) then
self:E( {"Within Zone and Engaging ", DetectedUnit } ) self:F( {"Within Zone and Engaging ", DetectedUnit } )
AttackTasks[#AttackTasks+1] = Controllable:TaskAttackUnit( DetectedUnit ) AttackTasks[#AttackTasks+1] = Controllable:TaskAttackUnit( DetectedUnit )
end end
else else
if self.EngageRange then if self.EngageRange then
if DetectedUnit:GetPointVec3():Get2DDistance(Controllable:GetPointVec3() ) <= self.EngageRange then if DetectedUnit:GetPointVec3():Get2DDistance(Controllable:GetPointVec3() ) <= self.EngageRange then
self:E( {"Within Range and Engaging", DetectedUnit } ) self:F( {"Within Range and Engaging", DetectedUnit } )
AttackTasks[#AttackTasks+1] = Controllable:TaskAttackUnit( DetectedUnit ) AttackTasks[#AttackTasks+1] = Controllable:TaskAttackUnit( DetectedUnit )
end end
else else
@@ -508,7 +508,7 @@ function AI_CAP_ZONE:onafterEngage( Controllable, From, Event, To )
if #AttackTasks == 0 then if #AttackTasks == 0 then
self:E("No targets found -> Going back to Patrolling") self:F("No targets found -> Going back to Patrolling")
self:__Abort( 1 ) self:__Abort( 1 )
self:__Route( 1 ) self:__Route( 1 )
self:SetDetectionActivated() self:SetDetectionActivated()

View File

@@ -254,7 +254,7 @@ function BASE:Inherit( Child, Parent )
-- This is for "private" methods... -- This is for "private" methods...
-- When a __ is passed to a method as "self", the __index will search for the method on the public method list of the same object too! -- When a __ is passed to a method as "self", the __index will search for the method on the public method list of the same object too!
if rawget( Child, "__" ) then if rawget( Child, "__" ) then
setmetatable( Child, { __index = Child.__ } ) setmetatable( Child, { __index = Child.__ } )
setmetatable( Child.__, { __index = Parent } ) setmetatable( Child.__, { __index = Parent } )
else else
setmetatable( Child, { __index = Parent } ) setmetatable( Child, { __index = Parent } )
@@ -277,9 +277,9 @@ end
function BASE:GetParent( Child ) function BASE:GetParent( Child )
local Parent local Parent
if rawget( Child, "__" ) then if rawget( Child, "__" ) then
Parent = getmetatable( Child.__ ).__Index Parent = getmetatable( Child.__ ).__index
else else
Parent = getmetatable( Child ).__Index Parent = getmetatable( Child ).__index
end end
return Parent return Parent
end end

View File

@@ -374,6 +374,85 @@ function CARGO:Spawn( PointVec2 )
end end
--- Signal a flare at the position of the CARGO.
-- @param #CARGO self
-- @param Utilities.Utils#FLARECOLOR FlareColor
function CARGO:Flare( FlareColor )
if self:IsUnLoaded() then
trigger.action.signalFlare( self.CargoObject:GetVec3(), FlareColor , 0 )
end
end
--- Signal a white flare at the position of the CARGO.
-- @param #CARGO self
function CARGO:FlareWhite()
self:Flare( trigger.flareColor.White )
end
--- Signal a yellow flare at the position of the CARGO.
-- @param #CARGO self
function CARGO:FlareYellow()
self:Flare( trigger.flareColor.Yellow )
end
--- Signal a green flare at the position of the CARGO.
-- @param #CARGO self
function CARGO:FlareGreen()
self:Flare( trigger.flareColor.Green )
end
--- Signal a red flare at the position of the CARGO.
-- @param #CARGO self
function CARGO:FlareRed()
self:Flare( trigger.flareColor.Red )
end
--- Smoke the CARGO.
-- @param #CARGO self
function CARGO:Smoke( SmokeColor, Range )
self:F2()
if self:IsUnLoaded() then
if Range then
trigger.action.smoke( self.CargoObject:GetRandomVec3( Range ), SmokeColor )
else
trigger.action.smoke( self.CargoObject:GetVec3(), SmokeColor )
end
end
end
--- Smoke the CARGO Green.
-- @param #CARGO self
function CARGO:SmokeGreen()
self:Smoke( trigger.smokeColor.Green, Range )
end
--- Smoke the CARGO Red.
-- @param #CARGO self
function CARGO:SmokeRed()
self:Smoke( trigger.smokeColor.Red, Range )
end
--- Smoke the CARGO White.
-- @param #CARGO self
function CARGO:SmokeWhite()
self:Smoke( trigger.smokeColor.White, Range )
end
--- Smoke the CARGO Orange.
-- @param #CARGO self
function CARGO:SmokeOrange()
self:Smoke( trigger.smokeColor.Orange, Range )
end
--- Smoke the CARGO Blue.
-- @param #CARGO self
function CARGO:SmokeBlue()
self:Smoke( trigger.smokeColor.Blue, Range )
end
--- Check if Cargo is the given @{Zone}. --- Check if Cargo is the given @{Zone}.
@@ -1162,6 +1241,10 @@ function CARGO_GROUP:onenterUnBoarding( From, Event, To, ToPointVec2, NearRadius
local Timer = 1 local Timer = 1
if From == "Loaded" then if From == "Loaded" then
if self.CargoObject then
self.CargoObject:Destroy()
end
-- For each Cargo object within the CARGO_GROUP, route each object to the CargoLoadPointVec2 -- For each Cargo object within the CARGO_GROUP, route each object to the CargoLoadPointVec2
self.CargoSet:ForEach( self.CargoSet:ForEach(

View File

@@ -55,7 +55,7 @@ do -- SETTINGS
if PlayerName == nil then if PlayerName == nil then
local self = BASE:Inherit( self, BASE:New() ) -- #SETTINGS local self = BASE:Inherit( self, BASE:New() ) -- #SETTINGS
self:SetMetric() -- Defaults self:SetMetric() -- Defaults
self:SetA2G_MGRS() -- Defaults self:SetA2G_BR() -- Defaults
self:SetA2A_BRAA() -- Defaults self:SetA2A_BRAA() -- Defaults
self:SetLL_Accuracy( 2 ) -- Defaults self:SetLL_Accuracy( 2 ) -- Defaults
self:SetLL_DMS( true ) -- Defaults self:SetLL_DMS( true ) -- Defaults
@@ -447,7 +447,7 @@ do -- SETTINGS
--- @param #SETTINGS self --- @param #SETTINGS self
function SETTINGS:MenuGroupMWSystem( PlayerUnit, PlayerGroup, PlayerName, MW ) function SETTINGS:MenuGroupMWSystem( PlayerUnit, PlayerGroup, PlayerName, MW )
self.Metrics = MW self.Metric = MW
MESSAGE:New( string.format("Settings: Measurement format set to %s for player %s.", MW and "Metric" or "Imperial", PlayerName ), 5 ):ToGroup( PlayerGroup ) MESSAGE:New( string.format("Settings: Measurement format set to %s for player %s.", MW and "Metric" or "Imperial", PlayerName ), 5 ):ToGroup( PlayerGroup )
self:RemovePlayerMenu(PlayerUnit) self:RemovePlayerMenu(PlayerUnit)
self:SetPlayerMenu(PlayerUnit) self:SetPlayerMenu(PlayerUnit)

View File

@@ -294,7 +294,7 @@ end
-- @param #string DisplayMessagePrefix (Default="Scoring: ") The scoring prefix string. -- @param #string DisplayMessagePrefix (Default="Scoring: ") The scoring prefix string.
-- @return #SCORING -- @return #SCORING
function SCORING:SetDisplayMessagePrefix( DisplayMessagePrefix ) function SCORING:SetDisplayMessagePrefix( DisplayMessagePrefix )
self.DisplayMessagePrefix = DisplayMessagePrefix or "Scoring: " self.DisplayMessagePrefix = DisplayMessagePrefix or ""
return self return self
end end
@@ -637,7 +637,7 @@ function SCORING:_AddPlayerFromUnit( UnitData )
MESSAGE:New( self.DisplayMessagePrefix .. "Player '" .. PlayerName .. "' committed FRATRICIDE, he will be COURT MARTIALED and is DISMISSED from this mission!", MESSAGE:New( self.DisplayMessagePrefix .. "Player '" .. PlayerName .. "' committed FRATRICIDE, he will be COURT MARTIALED and is DISMISSED from this mission!",
10 10
):ToAll() ):ToAll()
UnitData:Destroy() UnitData:GetGroup():Destroy()
end end
end end
@@ -911,7 +911,7 @@ function SCORING:_EventOnHit( Event )
:ToCoalitionIf( InitCoalition, self:IfMessagesHit() and self:IfMessagesToCoalition() ) :ToCoalitionIf( InitCoalition, self:IfMessagesHit() and self:IfMessagesToCoalition() )
else else
MESSAGE MESSAGE
:New( self.DisplayMessagePrefix .. "Player '" .. InitPlayerName .. "' hit a friendly target " .. :New( self.DisplayMessagePrefix .. "Player '" .. InitPlayerName .. "' hit friendly target " ..
TargetUnitCategory .. " ( " .. TargetType .. " ) " .. PlayerHit.PenaltyHit .. " times. " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. PlayerHit.PenaltyHit .. " times. " ..
"Penalty: -" .. PlayerHit.Penalty .. ". Score Total:" .. Player.Score - Player.Penalty, "Penalty: -" .. PlayerHit.Penalty .. ". Score Total:" .. Player.Score - Player.Penalty,
2 2
@@ -935,7 +935,7 @@ function SCORING:_EventOnHit( Event )
:ToCoalitionIf( InitCoalition, self:IfMessagesHit() and self:IfMessagesToCoalition() ) :ToCoalitionIf( InitCoalition, self:IfMessagesHit() and self:IfMessagesToCoalition() )
else else
MESSAGE MESSAGE
:New( self.DisplayMessagePrefix .. "Player '" .. InitPlayerName .. "' hit an enemy target " .. :New( self.DisplayMessagePrefix .. "Player '" .. InitPlayerName .. "' hit enemy target " ..
TargetUnitCategory .. " ( " .. TargetType .. " ) " .. PlayerHit.ScoreHit .. " times. " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. PlayerHit.ScoreHit .. " times. " ..
"Score: " .. PlayerHit.Score .. ". Score Total:" .. Player.Score - Player.Penalty, "Score: " .. PlayerHit.Score .. ". Score Total:" .. Player.Score - Player.Penalty,
2 2
@@ -947,7 +947,7 @@ function SCORING:_EventOnHit( Event )
end end
else -- A scenery object was hit. else -- A scenery object was hit.
MESSAGE MESSAGE
:New( self.DisplayMessagePrefix .. "Player '" .. InitPlayerName .. "' hit a scenery object.", :New( self.DisplayMessagePrefix .. "Player '" .. InitPlayerName .. "' hit scenery object.",
2 2
) )
:ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() ) :ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() )
@@ -1008,9 +1008,9 @@ function SCORING:_EventOnHit( Event )
PlayerHit.PenaltyHit = PlayerHit.PenaltyHit + 1 PlayerHit.PenaltyHit = PlayerHit.PenaltyHit + 1
MESSAGE MESSAGE
:New( self.DisplayMessagePrefix .. "Player '" .. Event.WeaponPlayerName .. "' hit a friendly target " .. :New( self.DisplayMessagePrefix .. "Player '" .. Event.WeaponPlayerName .. "' hit friendly target " ..
TargetUnitCategory .. " ( " .. TargetType .. " ) " .. PlayerHit.PenaltyHit .. " times. " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
"Penalty: -" .. PlayerHit.Penalty .. ". Score Total:" .. Player.Score - Player.Penalty, "Penalty: -" .. PlayerHit.Penalty .. " = " .. Player.Score - Player.Penalty,
2 2
) )
:ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() ) :ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() )
@@ -1021,9 +1021,9 @@ function SCORING:_EventOnHit( Event )
PlayerHit.Score = PlayerHit.Score + 1 PlayerHit.Score = PlayerHit.Score + 1
PlayerHit.ScoreHit = PlayerHit.ScoreHit + 1 PlayerHit.ScoreHit = PlayerHit.ScoreHit + 1
MESSAGE MESSAGE
:New( self.DisplayMessagePrefix .. "Player '" .. Event.WeaponPlayerName .. "' hit an enemy target " .. :New( self.DisplayMessagePrefix .. "Player '" .. Event.WeaponPlayerName .. "' hit enemy target " ..
TargetUnitCategory .. " ( " .. TargetType .. " ) " .. PlayerHit.ScoreHit .. " times. " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
"Score: " .. PlayerHit.Score .. ". Score Total:" .. Player.Score - Player.Penalty, "Score: +" .. PlayerHit.Score .. " = " .. Player.Score - Player.Penalty,
2 2
) )
:ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() ) :ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() )
@@ -1032,7 +1032,7 @@ function SCORING:_EventOnHit( Event )
end end
else -- A scenery object was hit. else -- A scenery object was hit.
MESSAGE MESSAGE
:New( self.DisplayMessagePrefix .. "Player '" .. Event.WeaponPlayerName .. "' hit a scenery object.", :New( self.DisplayMessagePrefix .. "Player '" .. Event.WeaponPlayerName .. "' hit scenery object.",
2 2
) )
:ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() ) :ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() )
@@ -1132,17 +1132,17 @@ function SCORING:_EventOnDeadOrCrash( Event )
if Player.HitPlayers[TargetPlayerName] then -- A player destroyed another player if Player.HitPlayers[TargetPlayerName] then -- A player destroyed another player
MESSAGE MESSAGE
:New( self.DisplayMessagePrefix .. "Player '" .. PlayerName .. "' destroyed friendly player '" .. TargetPlayerName .. "' " .. :New( self.DisplayMessagePrefix .. "Player '" .. PlayerName .. "' destroyed friendly player '" .. TargetPlayerName .. "' " ..
TargetUnitCategory .. " ( " .. ThreatTypeTarget .. " ) " .. TargetDestroy.PenaltyDestroy .. " times. " .. TargetUnitCategory .. " ( " .. ThreatTypeTarget .. " ) " ..
"Penalty: -" .. TargetDestroy.Penalty .. ". Score Total:" .. Player.Score - Player.Penalty, "Penalty: -" .. TargetDestroy.Penalty .. " = " .. Player.Score - Player.Penalty,
15 15
) )
:ToAllIf( self:IfMessagesDestroy() and self:IfMessagesToAll() ) :ToAllIf( self:IfMessagesDestroy() and self:IfMessagesToAll() )
:ToCoalitionIf( InitCoalition, self:IfMessagesDestroy() and self:IfMessagesToCoalition() ) :ToCoalitionIf( InitCoalition, self:IfMessagesDestroy() and self:IfMessagesToCoalition() )
else else
MESSAGE MESSAGE
:New( self.DisplayMessagePrefix .. "Player '" .. PlayerName .. "' destroyed a friendly target " .. :New( self.DisplayMessagePrefix .. "Player '" .. PlayerName .. "' destroyed friendly target " ..
TargetUnitCategory .. " ( " .. ThreatTypeTarget .. " ) " .. TargetDestroy.PenaltyDestroy .. " times. " .. TargetUnitCategory .. " ( " .. ThreatTypeTarget .. " ) " ..
"Penalty: -" .. TargetDestroy.Penalty .. ". Score Total:" .. Player.Score - Player.Penalty, "Penalty: -" .. TargetDestroy.Penalty .. " = " .. Player.Score - Player.Penalty,
15 15
) )
:ToAllIf( self:IfMessagesDestroy() and self:IfMessagesToAll() ) :ToAllIf( self:IfMessagesDestroy() and self:IfMessagesToAll() )
@@ -1166,17 +1166,17 @@ function SCORING:_EventOnDeadOrCrash( Event )
if Player.HitPlayers[TargetPlayerName] then -- A player destroyed another player if Player.HitPlayers[TargetPlayerName] then -- A player destroyed another player
MESSAGE MESSAGE
:New( self.DisplayMessagePrefix .. "Player '" .. PlayerName .. "' destroyed enemy player '" .. TargetPlayerName .. "' " .. :New( self.DisplayMessagePrefix .. "Player '" .. PlayerName .. "' destroyed enemy player '" .. TargetPlayerName .. "' " ..
TargetUnitCategory .. " ( " .. ThreatTypeTarget .. " ) " .. TargetDestroy.ScoreDestroy .. " times. " .. TargetUnitCategory .. " ( " .. ThreatTypeTarget .. " ) " ..
"Score: " .. TargetDestroy.Score .. ". Score Total:" .. Player.Score - Player.Penalty, "Score: +" .. TargetDestroy.Score .. " = " .. Player.Score - Player.Penalty,
15 15
) )
:ToAllIf( self:IfMessagesDestroy() and self:IfMessagesToAll() ) :ToAllIf( self:IfMessagesDestroy() and self:IfMessagesToAll() )
:ToCoalitionIf( InitCoalition, self:IfMessagesDestroy() and self:IfMessagesToCoalition() ) :ToCoalitionIf( InitCoalition, self:IfMessagesDestroy() and self:IfMessagesToCoalition() )
else else
MESSAGE MESSAGE
:New( self.DisplayMessagePrefix .. "Player '" .. PlayerName .. "' destroyed an enemy " .. :New( self.DisplayMessagePrefix .. "Player '" .. PlayerName .. "' destroyed enemy " ..
TargetUnitCategory .. " ( " .. ThreatTypeTarget .. " ) " .. TargetDestroy.ScoreDestroy .. " times. " .. TargetUnitCategory .. " ( " .. ThreatTypeTarget .. " ) " ..
"Score: " .. TargetDestroy.Score .. ". Total:" .. Player.Score - Player.Penalty, "Score: +" .. TargetDestroy.Score .. " = " .. Player.Score - Player.Penalty,
15 15
) )
:ToAllIf( self:IfMessagesDestroy() and self:IfMessagesToAll() ) :ToAllIf( self:IfMessagesDestroy() and self:IfMessagesToAll() )

View File

@@ -882,7 +882,7 @@ function MISSION:ReportOverview( ReportGroup, TaskStatus )
-- Determine how many tasks are remaining. -- Determine how many tasks are remaining.
local TasksRemaining = 0 local TasksRemaining = 0
for TaskID, Task in pairs( self:GetTasks() ) do for TaskID, Task in UTILS.spairs( self:GetTasks(), function( t, a, b ) return t[a]:ReportOrder( ReportGroup ) < t[b]:ReportOrder( ReportGroup ) end ) do
local Task = Task -- Tasking.Task#TASK local Task = Task -- Tasking.Task#TASK
if Task:Is( TaskStatus ) then if Task:Is( TaskStatus ) then
Report:Add( " - " .. Task:ReportOverview( ReportGroup ) ) Report:Add( " - " .. Task:ReportOverview( ReportGroup ) )

View File

@@ -738,7 +738,7 @@ function TASK:SetPlannedMenuForGroup( TaskGroup, MenuTime )
--local MissionMenu = Mission:GetMenu( TaskGroup ) --local MissionMenu = Mission:GetMenu( TaskGroup )
local TaskPlannedMenu = MENU_GROUP:New( TaskGroup, "Planned Tasks", MissionMenu ):SetTime( MenuTime ) local TaskPlannedMenu = MENU_GROUP:New( TaskGroup, "Join Planned Task", MissionMenu, Mission.MenuReportTasksPerStatus, Mission, TaskGroup, "Planned" ):SetTime( MenuTime )
local TaskTypeMenu = MENU_GROUP:New( TaskGroup, TaskType, TaskPlannedMenu ):SetTime( MenuTime ):SetRemoveParent( true ) local TaskTypeMenu = MENU_GROUP:New( TaskGroup, TaskType, TaskPlannedMenu ):SetTime( MenuTime ):SetRemoveParent( true )
local TaskTypeMenu = MENU_GROUP:New( TaskGroup, TaskText, TaskTypeMenu ):SetTime( MenuTime ):SetRemoveParent( true ) local TaskTypeMenu = MENU_GROUP:New( TaskGroup, TaskText, TaskTypeMenu ):SetTime( MenuTime ):SetRemoveParent( true )
local ReportTaskMenu = MENU_GROUP_COMMAND:New( TaskGroup, string.format( "Report Task Status" ), TaskTypeMenu, self.MenuTaskStatus, self, TaskGroup ):SetTime( MenuTime ):SetRemoveParent( true ) local ReportTaskMenu = MENU_GROUP_COMMAND:New( TaskGroup, string.format( "Report Task Status" ), TaskTypeMenu, self.MenuTaskStatus, self, TaskGroup ):SetTime( MenuTime ):SetRemoveParent( true )

View File

@@ -330,14 +330,24 @@ do -- TASK_A2A_INTERCEPT
local TargetCoordinate = TargetSetUnit:GetFirst():GetCoordinate() local TargetCoordinate = TargetSetUnit:GetFirst():GetCoordinate()
self:SetInfo( "Coordinates", TargetCoordinate, 10 ) self:SetInfo( "Coordinates", TargetCoordinate, 10 )
self:SetInfo( "Threat", "[" .. string.rep( "", TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 ) self:SetInfo( "Threat", "[" .. string.rep( "", TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 )
local DetectedItemsCount = TargetSetUnit:Count() local DetectedItemsCount = TargetSetUnit:Count()
local DetectedItemsTypes = TargetSetUnit:GetTypeNames() local DetectedItemsTypes = TargetSetUnit:GetTypeNames()
self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 ) self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 )
return self return self
end end
--- @param #TASK_A2A_INTERCEPT self
-- @param Wrapper.Group#GROUP ReportGroup
function TASK_A2A_INTERCEPT:ReportOrder( ReportGroup )
self:F( { TaskInfo = self.TaskInfo } )
local Coordinate = self.TaskInfo.Coordinates.TaskInfoText
local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate )
return Distance
end
--- @param #TASK_A2A_INTERCEPT self --- @param #TASK_A2A_INTERCEPT self
@@ -462,6 +472,13 @@ do -- TASK_A2A_SWEEP
return self return self
end end
function TASK_A2A_SWEEP:ReportOrder( ReportGroup )
local Coordinate = self.TaskInfo.Coordinates.TaskInfoText
local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate )
return Distance
end
--- @param #TASK_A2A_SWEEP self --- @param #TASK_A2A_SWEEP self
function TASK_A2A_SWEEP:onafterGoal( TaskUnit, From, Event, To ) function TASK_A2A_SWEEP:onafterGoal( TaskUnit, From, Event, To )
local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT
@@ -581,6 +598,13 @@ do -- TASK_A2A_ENGAGE
return self return self
end end
function TASK_A2A_ENGAGE:ReportOrder( ReportGroup )
local Coordinate = self.TaskInfo.Coordinates.TaskInfoText
local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate )
return Distance
end
--- @param #TASK_A2A_ENGAGE self --- @param #TASK_A2A_ENGAGE self
function TASK_A2A_ENGAGE:onafterGoal( TaskUnit, From, Event, To ) function TASK_A2A_ENGAGE:onafterGoal( TaskUnit, From, Event, To )
local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT

View File

@@ -329,7 +329,15 @@ do -- TASK_A2G_SEAD
return self return self
end end
function TASK_A2G_SEAD:ReportOrder( ReportGroup )
local Coordinate = self.TaskInfo.Coordinates.TaskInfoText
local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate )
return Distance
end
--- @param #TASK_A2G_SEAD self --- @param #TASK_A2G_SEAD self
function TASK_A2G_SEAD:onafterGoal( TaskUnit, From, Event, To ) function TASK_A2G_SEAD:onafterGoal( TaskUnit, From, Event, To )
local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT
@@ -341,7 +349,7 @@ do -- TASK_A2G_SEAD
self:__Goal( -10 ) self:__Goal( -10 )
end end
--- Set a score when a target in scope of the A2A attack, has been destroyed . --- Set a score when a target in scope of the A2G attack, has been destroyed .
-- @param #TASK_A2G_SEAD self -- @param #TASK_A2G_SEAD self
-- @param #string PlayerName The name of the player. -- @param #string PlayerName The name of the player.
-- @param #number Score The score in points to be granted when task process has been achieved. -- @param #number Score The score in points to be granted when task process has been achieved.
@@ -357,7 +365,7 @@ do -- TASK_A2G_SEAD
return self return self
end end
--- Set a score when all the targets in scope of the A2A attack, have been destroyed. --- Set a score when all the targets in scope of the A2G attack, have been destroyed.
-- @param #TASK_A2G_SEAD self -- @param #TASK_A2G_SEAD self
-- @param #string PlayerName The name of the player. -- @param #string PlayerName The name of the player.
-- @param #number Score The score in points. -- @param #number Score The score in points.
@@ -373,7 +381,7 @@ do -- TASK_A2G_SEAD
return self return self
end end
--- Set a penalty when the A2A attack has failed. --- Set a penalty when the A2G attack has failed.
-- @param #TASK_A2G_SEAD self -- @param #TASK_A2G_SEAD self
-- @param #string PlayerName The name of the player. -- @param #string PlayerName The name of the player.
-- @param #number Penalty The penalty in points, must be a negative value! -- @param #number Penalty The penalty in points, must be a negative value!
@@ -443,6 +451,15 @@ do -- TASK_A2G_BAI
return self return self
end end
function TASK_A2G_BAI:ReportOrder( ReportGroup )
local Coordinate = self.TaskInfo.Coordinates.TaskInfoText
local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate )
return Distance
end
--- @param #TASK_A2G_BAI self --- @param #TASK_A2G_BAI self
function TASK_A2G_BAI:onafterGoal( TaskUnit, From, Event, To ) function TASK_A2G_BAI:onafterGoal( TaskUnit, From, Event, To )
local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT
@@ -454,7 +471,7 @@ do -- TASK_A2G_BAI
self:__Goal( -10 ) self:__Goal( -10 )
end end
--- Set a score when a target in scope of the A2A attack, has been destroyed . --- Set a score when a target in scope of the A2G attack, has been destroyed .
-- @param #TASK_A2G_BAI self -- @param #TASK_A2G_BAI self
-- @param #string PlayerName The name of the player. -- @param #string PlayerName The name of the player.
-- @param #number Score The score in points to be granted when task process has been achieved. -- @param #number Score The score in points to be granted when task process has been achieved.
@@ -470,7 +487,7 @@ do -- TASK_A2G_BAI
return self return self
end end
--- Set a score when all the targets in scope of the A2A attack, have been destroyed. --- Set a score when all the targets in scope of the A2G attack, have been destroyed.
-- @param #TASK_A2G_BAI self -- @param #TASK_A2G_BAI self
-- @param #string PlayerName The name of the player. -- @param #string PlayerName The name of the player.
-- @param #number Score The score in points. -- @param #number Score The score in points.
@@ -486,7 +503,7 @@ do -- TASK_A2G_BAI
return self return self
end end
--- Set a penalty when the A2A attack has failed. --- Set a penalty when the A2G attack has failed.
-- @param #TASK_A2G_BAI self -- @param #TASK_A2G_BAI self
-- @param #string PlayerName The name of the player. -- @param #string PlayerName The name of the player.
-- @param #number Penalty The penalty in points, must be a negative value! -- @param #number Penalty The penalty in points, must be a negative value!
@@ -556,6 +573,14 @@ do -- TASK_A2G_CAS
return self return self
end end
function TASK_A2G_CAS:ReportOrder( ReportGroup )
local Coordinate = self.TaskInfo.Coordinates.TaskInfoText
local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate )
return Distance
end
--- @param #TASK_A2G_CAS self --- @param #TASK_A2G_CAS self
function TASK_A2G_CAS:onafterGoal( TaskUnit, From, Event, To ) function TASK_A2G_CAS:onafterGoal( TaskUnit, From, Event, To )
local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT
@@ -567,7 +592,7 @@ do -- TASK_A2G_CAS
self:__Goal( -10 ) self:__Goal( -10 )
end end
--- Set a score when a target in scope of the A2A attack, has been destroyed . --- Set a score when a target in scope of the A2G attack, has been destroyed .
-- @param #TASK_A2G_CAS self -- @param #TASK_A2G_CAS self
-- @param #string PlayerName The name of the player. -- @param #string PlayerName The name of the player.
-- @param #number Score The score in points to be granted when task process has been achieved. -- @param #number Score The score in points to be granted when task process has been achieved.
@@ -583,7 +608,7 @@ do -- TASK_A2G_CAS
return self return self
end end
--- Set a score when all the targets in scope of the A2A attack, have been destroyed. --- Set a score when all the targets in scope of the A2G attack, have been destroyed.
-- @param #TASK_A2G_CAS self -- @param #TASK_A2G_CAS self
-- @param #string PlayerName The name of the player. -- @param #string PlayerName The name of the player.
-- @param #number Score The score in points. -- @param #number Score The score in points.
@@ -599,7 +624,7 @@ do -- TASK_A2G_CAS
return self return self
end end
--- Set a penalty when the A2A attack has failed. --- Set a penalty when the A2G attack has failed.
-- @param #TASK_A2G_CAS self -- @param #TASK_A2G_CAS self
-- @param #string PlayerName The name of the player. -- @param #string PlayerName The name of the player.
-- @param #number Penalty The penalty in points, must be a negative value! -- @param #number Penalty The penalty in points, must be a negative value!

View File

@@ -251,7 +251,9 @@ do -- TASK_CARGO
end end
end end
if NotInDeployZones then if NotInDeployZones then
MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), "Board cargo " .. Cargo.Name, TaskUnit.Menu, self.MenuBoardCargo, self, Cargo ):SetTime(MenuTime) if not TaskUnit:InAir() then
MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), "Board cargo " .. Cargo.Name, TaskUnit.Menu, self.MenuBoardCargo, self, Cargo ):SetTime(MenuTime)
end
end end
else else
MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), "Route to Pickup cargo " .. Cargo.Name, TaskUnit.Menu, self.MenuRouteToPickup, self, Cargo ):SetTime(MenuTime) MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), "Route to Pickup cargo " .. Cargo.Name, TaskUnit.Menu, self.MenuRouteToPickup, self, Cargo ):SetTime(MenuTime)
@@ -260,9 +262,9 @@ do -- TASK_CARGO
end end
if Cargo:IsLoaded() then if Cargo:IsLoaded() then
if not TaskUnit:InAir() then
MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), "Unboard cargo " .. Cargo.Name, TaskUnit.Menu, self.MenuUnBoardCargo, self, Cargo ):SetTime(MenuTime) MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), "Unboard cargo " .. Cargo.Name, TaskUnit.Menu, self.MenuUnBoardCargo, self, Cargo ):SetTime(MenuTime)
end
-- Deployzones are optional zones that can be selected to request routing information. -- Deployzones are optional zones that can be selected to request routing information.
for DeployZoneName, DeployZone in pairs( Task.DeployZones ) do for DeployZoneName, DeployZone in pairs( Task.DeployZones ) do
if not Cargo:IsInZone( DeployZone ) then if not Cargo:IsInZone( DeployZone ) then
@@ -342,7 +344,7 @@ do -- TASK_CARGO
function Fsm:onafterArriveAtPickup( TaskUnit, Task ) function Fsm:onafterArriveAtPickup( TaskUnit, Task )
self:E( { TaskUnit = TaskUnit, Task = Task and Task:GetClassNameAndID() } ) self:E( { TaskUnit = TaskUnit, Task = Task and Task:GetClassNameAndID() } )
if self.Cargo:IsAlive() then if self.Cargo:IsAlive() then
TaskUnit:Smoke( Task:GetSmokeColor(), 15 ) self.Cargo:Smoke( Task:GetSmokeColor(), 15 )
if TaskUnit:IsAir() then if TaskUnit:IsAir() then
Task:GetMission():GetCommandCenter():MessageToGroup( "Land", TaskUnit:GetGroup() ) Task:GetMission():GetCommandCenter():MessageToGroup( "Land", TaskUnit:GetGroup() )
self:__Land( -0.1, "Pickup" ) self:__Land( -0.1, "Pickup" )
@@ -592,6 +594,7 @@ do -- TASK_CARGO
-- TODO:I need to find a more decent solution for this. -- TODO:I need to find a more decent solution for this.
Task:E( { CargoDeployed = Task.CargoDeployed and "true" or "false" } ) Task:E( { CargoDeployed = Task.CargoDeployed and "true" or "false" } )
Task:E( { CargoIsAlive = self.Cargo:IsAlive() and "true" or "false" } )
if self.Cargo:IsAlive() then if self.Cargo:IsAlive() then
if Task.CargoDeployed then if Task.CargoDeployed then
Task:CargoDeployed( TaskUnit, self.Cargo, self.DeployZone ) Task:CargoDeployed( TaskUnit, self.Cargo, self.DeployZone )
@@ -606,6 +609,7 @@ do -- TASK_CARGO
end end
--- Set a limit on the amount of cargo items that can be loaded into the Carriers. --- Set a limit on the amount of cargo items that can be loaded into the Carriers.
-- @param #TASK_CARGO self -- @param #TASK_CARGO self
-- @param CargoLimit Specifies a number of cargo items that can be loaded in the helicopter. -- @param CargoLimit Specifies a number of cargo items that can be loaded in the helicopter.
@@ -909,7 +913,7 @@ do -- TASK_CARGO_TRANSPORT
local CargoType = Cargo:GetType() local CargoType = Cargo:GetType()
local CargoName = Cargo:GetName() local CargoName = Cargo:GetName()
local CargoCoordinate = Cargo:GetCoordinate() local CargoCoordinate = Cargo:GetCoordinate()
CargoReport:Add( string.format( '- "%s" (%s) at %s', CargoName, CargoType, CargoCoordinate:ToString() ) ) CargoReport:Add( string.format( '- "%s" (%s) at %s', CargoName, CargoType, CargoCoordinate:ToStringMGRS() ) )
end end
) )
@@ -921,6 +925,12 @@ do -- TASK_CARGO_TRANSPORT
return self return self
end end
function TASK_CARGO_TRANSPORT:ReportOrder( ReportGroup )
return true
end
--- ---
-- @param #TASK_CARGO_TRANSPORT self -- @param #TASK_CARGO_TRANSPORT self

View File

@@ -1170,7 +1170,7 @@ do -- Players
-- @return #nil The group has no players -- @return #nil The group has no players
function GROUP:GetPlayerNames() function GROUP:GetPlayerNames()
local PlayerNames = nil local PlayerNames = {}
local Units = self:GetUnits() local Units = self:GetUnits()
for UnitID, UnitData in pairs( Units ) do for UnitID, UnitData in pairs( Units ) do
@@ -1186,4 +1186,96 @@ do -- Players
return PlayerNames return PlayerNames
end end
end end
--do -- Smoke
--
----- Signal a flare at the position of the GROUP.
---- @param #GROUP self
---- @param Utilities.Utils#FLARECOLOR FlareColor
--function GROUP:Flare( FlareColor )
-- self:F2()
-- trigger.action.signalFlare( self:GetVec3(), FlareColor , 0 )
--end
--
----- Signal a white flare at the position of the GROUP.
---- @param #GROUP self
--function GROUP:FlareWhite()
-- self:F2()
-- trigger.action.signalFlare( self:GetVec3(), trigger.flareColor.White , 0 )
--end
--
----- Signal a yellow flare at the position of the GROUP.
---- @param #GROUP self
--function GROUP:FlareYellow()
-- self:F2()
-- trigger.action.signalFlare( self:GetVec3(), trigger.flareColor.Yellow , 0 )
--end
--
----- Signal a green flare at the position of the GROUP.
---- @param #GROUP self
--function GROUP:FlareGreen()
-- self:F2()
-- trigger.action.signalFlare( self:GetVec3(), trigger.flareColor.Green , 0 )
--end
--
----- Signal a red flare at the position of the GROUP.
---- @param #GROUP self
--function GROUP:FlareRed()
-- self:F2()
-- local Vec3 = self:GetVec3()
-- if Vec3 then
-- trigger.action.signalFlare( Vec3, trigger.flareColor.Red, 0 )
-- end
--end
--
----- Smoke the GROUP.
---- @param #GROUP self
--function GROUP:Smoke( SmokeColor, Range )
-- self:F2()
-- if Range then
-- trigger.action.smoke( self:GetRandomVec3( Range ), SmokeColor )
-- else
-- trigger.action.smoke( self:GetVec3(), SmokeColor )
-- end
--
--end
--
----- Smoke the GROUP Green.
---- @param #GROUP self
--function GROUP:SmokeGreen()
-- self:F2()
-- trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Green )
--end
--
----- Smoke the GROUP Red.
---- @param #GROUP self
--function GROUP:SmokeRed()
-- self:F2()
-- trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Red )
--end
--
----- Smoke the GROUP White.
---- @param #GROUP self
--function GROUP:SmokeWhite()
-- self:F2()
-- trigger.action.smoke( self:GetVec3(), trigger.smokeColor.White )
--end
--
----- Smoke the GROUP Orange.
---- @param #GROUP self
--function GROUP:SmokeOrange()
-- self:F2()
-- trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Orange )
--end
--
----- Smoke the GROUP Blue.
---- @param #GROUP self
--function GROUP:SmokeBlue()
-- self:F2()
-- trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Blue )
--end
--
--
--
--end

View File

@@ -724,3 +724,91 @@ function POSITIONABLE:CargoItemCount()
end end
return ItemCount return ItemCount
end end
--- Signal a flare at the position of the POSITIONABLE.
-- @param #POSITIONABLE self
-- @param Utilities.Utils#FLARECOLOR FlareColor
function POSITIONABLE:Flare( FlareColor )
self:F2()
trigger.action.signalFlare( self:GetVec3(), FlareColor , 0 )
end
--- Signal a white flare at the position of the POSITIONABLE.
-- @param #POSITIONABLE self
function POSITIONABLE:FlareWhite()
self:F2()
trigger.action.signalFlare( self:GetVec3(), trigger.flareColor.White , 0 )
end
--- Signal a yellow flare at the position of the POSITIONABLE.
-- @param #POSITIONABLE self
function POSITIONABLE:FlareYellow()
self:F2()
trigger.action.signalFlare( self:GetVec3(), trigger.flareColor.Yellow , 0 )
end
--- Signal a green flare at the position of the POSITIONABLE.
-- @param #POSITIONABLE self
function POSITIONABLE:FlareGreen()
self:F2()
trigger.action.signalFlare( self:GetVec3(), trigger.flareColor.Green , 0 )
end
--- Signal a red flare at the position of the POSITIONABLE.
-- @param #POSITIONABLE self
function POSITIONABLE:FlareRed()
self:F2()
local Vec3 = self:GetVec3()
if Vec3 then
trigger.action.signalFlare( Vec3, trigger.flareColor.Red, 0 )
end
end
--- Smoke the POSITIONABLE.
-- @param #POSITIONABLE self
function POSITIONABLE:Smoke( SmokeColor, Range )
self:F2()
if Range then
trigger.action.smoke( self:GetRandomVec3( Range ), SmokeColor )
else
trigger.action.smoke( self:GetVec3(), SmokeColor )
end
end
--- Smoke the POSITIONABLE Green.
-- @param #POSITIONABLE self
function POSITIONABLE:SmokeGreen()
self:F2()
trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Green )
end
--- Smoke the POSITIONABLE Red.
-- @param #POSITIONABLE self
function POSITIONABLE:SmokeRed()
self:F2()
trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Red )
end
--- Smoke the POSITIONABLE White.
-- @param #POSITIONABLE self
function POSITIONABLE:SmokeWhite()
self:F2()
trigger.action.smoke( self:GetVec3(), trigger.smokeColor.White )
end
--- Smoke the POSITIONABLE Orange.
-- @param #POSITIONABLE self
function POSITIONABLE:SmokeOrange()
self:F2()
trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Orange )
end
--- Smoke the POSITIONABLE Blue.
-- @param #POSITIONABLE self
function POSITIONABLE:SmokeBlue()
self:F2()
trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Blue )
end

View File

@@ -598,122 +598,128 @@ end
-- @param #UNIT self -- @param #UNIT self
function UNIT:GetThreatLevel() function UNIT:GetThreatLevel()
local Attributes = self:GetDesc().attributes
self:T( Attributes )
local ThreatLevel = 0 local ThreatLevel = 0
local ThreatText = "" local ThreatText = ""
if self:IsGround() then local Descriptor = self:GetDesc()
self:T( "Ground" ) if Descriptor then
local ThreatLevels = { local Attributes = Descriptor.attributes
"Unarmed", self:T( Attributes )
"Infantry",
"Old Tanks & APCs", if self:IsGround() then
"Tanks & IFVs without ATGM",
"Tanks & IFV with ATGM",
"Modern Tanks",
"AAA",
"IR Guided SAMs",
"SR SAMs",
"MR SAMs",
"LR SAMs"
}
self:T( "Ground" )
if Attributes["LR SAM"] then ThreatLevel = 10 local ThreatLevels = {
elseif Attributes["MR SAM"] then ThreatLevel = 9 "Unarmed",
elseif Attributes["SR SAM"] and "Infantry",
not Attributes["IR Guided SAM"] then ThreatLevel = 8 "Old Tanks & APCs",
elseif ( Attributes["SR SAM"] or Attributes["MANPADS"] ) and "Tanks & IFVs without ATGM",
Attributes["IR Guided SAM"] then ThreatLevel = 7 "Tanks & IFV with ATGM",
elseif Attributes["AAA"] then ThreatLevel = 6 "Modern Tanks",
elseif Attributes["Modern Tanks"] then ThreatLevel = 5 "AAA",
elseif ( Attributes["Tanks"] or Attributes["IFV"] ) and "IR Guided SAMs",
Attributes["ATGM"] then ThreatLevel = 4 "SR SAMs",
elseif ( Attributes["Tanks"] or Attributes["IFV"] ) and "MR SAMs",
not Attributes["ATGM"] then ThreatLevel = 3 "LR SAMs"
elseif Attributes["Old Tanks"] or Attributes["APC"] or Attributes["Artillery"] then ThreatLevel = 2 }
elseif Attributes["Infantry"] then ThreatLevel = 1
if Attributes["LR SAM"] then ThreatLevel = 10
elseif Attributes["MR SAM"] then ThreatLevel = 9
elseif Attributes["SR SAM"] and
not Attributes["IR Guided SAM"] then ThreatLevel = 8
elseif ( Attributes["SR SAM"] or Attributes["MANPADS"] ) and
Attributes["IR Guided SAM"] then ThreatLevel = 7
elseif Attributes["AAA"] then ThreatLevel = 6
elseif Attributes["Modern Tanks"] then ThreatLevel = 5
elseif ( Attributes["Tanks"] or Attributes["IFV"] ) and
Attributes["ATGM"] then ThreatLevel = 4
elseif ( Attributes["Tanks"] or Attributes["IFV"] ) and
not Attributes["ATGM"] then ThreatLevel = 3
elseif Attributes["Old Tanks"] or Attributes["APC"] or Attributes["Artillery"] then ThreatLevel = 2
elseif Attributes["Infantry"] then ThreatLevel = 1
end
ThreatText = ThreatLevels[ThreatLevel+1]
end end
ThreatText = ThreatLevels[ThreatLevel+1] if self:IsAir() then
end
if self:IsAir() then
self:T( "Air" )
local ThreatLevels = {
"Unarmed",
"Tanker",
"AWACS",
"Transport Helicopter",
"UAV",
"Bomber",
"Strategic Bomber",
"Attack Helicopter",
"Battleplane",
"Multirole Fighter",
"Fighter"
}
self:T( "Air" )
if Attributes["Fighters"] then ThreatLevel = 10
elseif Attributes["Multirole fighters"] then ThreatLevel = 9 local ThreatLevels = {
elseif Attributes["Battleplanes"] then ThreatLevel = 8 "Unarmed",
elseif Attributes["Attack helicopters"] then ThreatLevel = 7 "Tanker",
elseif Attributes["Strategic bombers"] then ThreatLevel = 6 "AWACS",
elseif Attributes["Bombers"] then ThreatLevel = 5 "Transport Helicopter",
elseif Attributes["UAVs"] then ThreatLevel = 4 "UAV",
elseif Attributes["Transport helicopters"] then ThreatLevel = 3 "Bomber",
elseif Attributes["AWACS"] then ThreatLevel = 2 "Strategic Bomber",
elseif Attributes["Tankers"] then ThreatLevel = 1 "Attack Helicopter",
"Battleplane",
"Multirole Fighter",
"Fighter"
}
if Attributes["Fighters"] then ThreatLevel = 10
elseif Attributes["Multirole fighters"] then ThreatLevel = 9
elseif Attributes["Battleplanes"] then ThreatLevel = 8
elseif Attributes["Attack helicopters"] then ThreatLevel = 7
elseif Attributes["Strategic bombers"] then ThreatLevel = 6
elseif Attributes["Bombers"] then ThreatLevel = 5
elseif Attributes["UAVs"] then ThreatLevel = 4
elseif Attributes["Transport helicopters"] then ThreatLevel = 3
elseif Attributes["AWACS"] then ThreatLevel = 2
elseif Attributes["Tankers"] then ThreatLevel = 1
end
ThreatText = ThreatLevels[ThreatLevel+1]
end end
ThreatText = ThreatLevels[ThreatLevel+1]
end
if self:IsShip() then
self:T( "Ship" )
--["Aircraft Carriers"] = {"Heavy armed ships",},
--["Cruisers"] = {"Heavy armed ships",},
--["Destroyers"] = {"Heavy armed ships",},
--["Frigates"] = {"Heavy armed ships",},
--["Corvettes"] = {"Heavy armed ships",},
--["Heavy armed ships"] = {"Armed ships", "Armed Air Defence", "HeavyArmoredUnits",},
--["Light armed ships"] = {"Armed ships","NonArmoredUnits"},
--["Armed ships"] = {"Ships"},
--["Unarmed ships"] = {"Ships","HeavyArmoredUnits",},
local ThreatLevels = {
"Unarmed ship",
"Light armed ships",
"Corvettes",
"",
"Frigates",
"",
"Cruiser",
"",
"Destroyer",
"",
"Aircraft Carrier"
}
if self:IsShip() then
self:T( "Ship" )
--["Aircraft Carriers"] = {"Heavy armed ships",},
--["Cruisers"] = {"Heavy armed ships",},
--["Destroyers"] = {"Heavy armed ships",},
--["Frigates"] = {"Heavy armed ships",},
--["Corvettes"] = {"Heavy armed ships",},
--["Heavy armed ships"] = {"Armed ships", "Armed Air Defence", "HeavyArmoredUnits",},
--["Light armed ships"] = {"Armed ships","NonArmoredUnits"},
--["Armed ships"] = {"Ships"},
--["Unarmed ships"] = {"Ships","HeavyArmoredUnits",},
if Attributes["Aircraft Carriers"] then ThreatLevel = 10 local ThreatLevels = {
elseif Attributes["Destroyers"] then ThreatLevel = 8 "Unarmed ship",
elseif Attributes["Cruisers"] then ThreatLevel = 6 "Light armed ships",
elseif Attributes["Frigates"] then ThreatLevel = 4 "Corvettes",
elseif Attributes["Corvettes"] then ThreatLevel = 2 "",
elseif Attributes["Light armed ships"] then ThreatLevel = 1 "Frigates",
"",
"Cruiser",
"",
"Destroyer",
"",
"Aircraft Carrier"
}
if Attributes["Aircraft Carriers"] then ThreatLevel = 10
elseif Attributes["Destroyers"] then ThreatLevel = 8
elseif Attributes["Cruisers"] then ThreatLevel = 6
elseif Attributes["Frigates"] then ThreatLevel = 4
elseif Attributes["Corvettes"] then ThreatLevel = 2
elseif Attributes["Light armed ships"] then ThreatLevel = 1
end
ThreatText = ThreatLevels[ThreatLevel+1]
end end
ThreatText = ThreatLevels[ThreatLevel+1]
end end
self:T2( ThreatLevel ) self:T2( ThreatLevel )
@@ -788,92 +794,6 @@ end
--- Signal a flare at the position of the UNIT.
-- @param #UNIT self
-- @param Utilities.Utils#FLARECOLOR FlareColor
function UNIT:Flare( FlareColor )
self:F2()
trigger.action.signalFlare( self:GetVec3(), FlareColor , 0 )
end
--- Signal a white flare at the position of the UNIT.
-- @param #UNIT self
function UNIT:FlareWhite()
self:F2()
trigger.action.signalFlare( self:GetVec3(), trigger.flareColor.White , 0 )
end
--- Signal a yellow flare at the position of the UNIT.
-- @param #UNIT self
function UNIT:FlareYellow()
self:F2()
trigger.action.signalFlare( self:GetVec3(), trigger.flareColor.Yellow , 0 )
end
--- Signal a green flare at the position of the UNIT.
-- @param #UNIT self
function UNIT:FlareGreen()
self:F2()
trigger.action.signalFlare( self:GetVec3(), trigger.flareColor.Green , 0 )
end
--- Signal a red flare at the position of the UNIT.
-- @param #UNIT self
function UNIT:FlareRed()
self:F2()
local Vec3 = self:GetVec3()
if Vec3 then
trigger.action.signalFlare( Vec3, trigger.flareColor.Red, 0 )
end
end
--- Smoke the UNIT.
-- @param #UNIT self
function UNIT:Smoke( SmokeColor, Range )
self:F2()
if Range then
trigger.action.smoke( self:GetRandomVec3( Range ), SmokeColor )
else
trigger.action.smoke( self:GetVec3(), SmokeColor )
end
end
--- Smoke the UNIT Green.
-- @param #UNIT self
function UNIT:SmokeGreen()
self:F2()
trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Green )
end
--- Smoke the UNIT Red.
-- @param #UNIT self
function UNIT:SmokeRed()
self:F2()
trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Red )
end
--- Smoke the UNIT White.
-- @param #UNIT self
function UNIT:SmokeWhite()
self:F2()
trigger.action.smoke( self:GetVec3(), trigger.smokeColor.White )
end
--- Smoke the UNIT Orange.
-- @param #UNIT self
function UNIT:SmokeOrange()
self:F2()
trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Orange )
end
--- Smoke the UNIT Blue.
-- @param #UNIT self
function UNIT:SmokeBlue()
self:F2()
trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Blue )
end
-- Is methods -- Is methods

View File

@@ -575,7 +575,6 @@
<dl class="function"> <dl class="function">
<dt> <dt>
<em>#number</em>
<a id="#(AI_A2A).IdleCount" > <a id="#(AI_A2A).IdleCount" >
<strong>AI_A2A.IdleCount</strong> <strong>AI_A2A.IdleCount</strong>
</a> </a>

View File

@@ -134,13 +134,13 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="#AI_A2A_DISPATCHER_GCICAP">AI_A2A_DISPATCHER_GCICAP</a></td> <td class="name" nowrap="nowrap"><a href="#AI_A2A_GCICAP">AI_A2A_GCICAP</a></td>
<td class="summary"> <td class="summary">
<h1>AI_A2A_DISPATCHER_GCICAP class, extends <a href="AI.html##(AI_A2A_DISPATCHER)">AI#AI<em>A2A</em>DISPATCHER</a></h1> <h1>AI_A2A_GCICAP class, extends <a href="AI.html##(AI_A2A_DISPATCHER)">AI#AI<em>A2A</em>DISPATCHER</a></h1>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia1.JPG" alt="Banner Image"/></p> <p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia1.JPG" alt="Banner Image"/></p>
<p>The <a href="##(AI_A2A_DISPATCHER)">#AI<em>A2A</em>DISPATCHER</a> class is designed to create an automatic air defence system for a coalition.</p> <p>The AI<em>A2A</em>GCICAP class is designed to create an automatic air defence system for a coalition setting up GCI and CAP air defenses.</p>
</td> </td>
</tr> </tr>
</table> </table>
@@ -610,12 +610,24 @@
</tr> </tr>
</table> </table>
<h2><a id="#(AI_A2A_DISPATCHER_GCICAP)">Type <code>AI_A2A_DISPATCHER_GCICAP</code></a></h2> <h2><a id="#(AI_A2A_GCICAP)">Type <code>AI_A2A_GCICAP</code></a></h2>
<table class="function_list"> <table class="function_list">
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER_GCICAP).New">AI_A2A_DISPATCHER_GCICAP:New(<, GroupingRadius, EWRPrefixes)</a></td> <td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCICAP).CAPTemplates">AI_A2A_GCICAP.CAPTemplates</a></td>
<td class="summary"> <td class="summary">
<p>AI<em>A2A</em>DISPATCHER_GCICAP constructor.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCICAP).New">AI_A2A_GCICAP:New(<, GroupingRadius, EWRPrefixes, TemplatePrefixes, CAPPrefixes, CapLimit, EngageRadius)</a></td>
<td class="summary">
<p>AI<em>A2A</em>GCICAP constructor.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCICAP).Templates">AI_A2A_GCICAP.Templates</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
</table> </table>
@@ -1152,49 +1164,48 @@ Therefore if F4s are wanted as a coalitions CAP or GCI aircraft Germany will
<dl class="function"> <dl class="function">
<dt> <dt>
<em><a href="##(AI_A2A_DISPATCHER_GCICAP)">#AI_A2A_DISPATCHER_GCICAP</a></em> <em><a href="##(AI_A2A_GCICAP)">#AI_A2A_GCICAP</a></em>
<a id="AI_A2A_DISPATCHER_GCICAP" > <a id="AI_A2A_GCICAP" >
<strong>AI_A2A_DISPATCHER_GCICAP</strong> <strong>AI_A2A_GCICAP</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<h1>AI_A2A_DISPATCHER_GCICAP class, extends <a href="AI.html##(AI_A2A_DISPATCHER)">AI#AI<em>A2A</em>DISPATCHER</a></h1> <h1>AI_A2A_GCICAP class, extends <a href="AI.html##(AI_A2A_DISPATCHER)">AI#AI<em>A2A</em>DISPATCHER</a></h1>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia1.JPG" alt="Banner Image"/></p> <p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia1.JPG" alt="Banner Image"/></p>
<p>The <a href="##(AI_A2A_DISPATCHER)">#AI<em>A2A</em>DISPATCHER</a> class is designed to create an automatic air defence system for a coalition.</p> <p>The AI<em>A2A</em>GCICAP class is designed to create an automatic air defence system for a coalition setting up GCI and CAP air defenses.</p>
<p>The class derives from <a href="AI.html##(AI_A2A_DISPATCHER)">AI#AI<em>A2A</em>DISPATCHER</a> and thus all the methods that are defined in this class, can be used also in AI_A2A_GCICAP.</p>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia3.JPG" alt="Banner Image"/></p> <p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia3.JPG" alt="Banner Image"/></p>
<p>It includes automatic spawning of Combat Air Patrol aircraft (CAP) and Ground Controlled Intercept aircraft (GCI) in response to enemy air movements that are detected by a ground based radar network. <p>AI<em>A2A</em>GCICAP includes automatic spawning of Combat Air Patrol aircraft (CAP) and Ground Controlled Intercept aircraft (GCI) in response to enemy
CAP flights will take off and proceed to designated CAP zones where they will remain on station until the ground radars direct them to intercept detected enemy aircraft or they run short of fuel and must return to base (RTB). When a CAP flight leaves their zone to perform an interception or return to base a new CAP flight will spawn to take their place. air movements that are detected by a ground based radar network.
CAP flights will take off and proceed to designated CAP zones where they will remain on station until the ground radars direct them to intercept
detected enemy aircraft or they run short of fuel and must return to base (RTB).
When a CAP flight leaves their zone to perform an interception or return to base a new CAP flight will spawn to take their place.
If all CAP flights are engaged or RTB then additional GCI interceptors will scramble to intercept unengaged enemy aircraft under ground radar control. If all CAP flights are engaged or RTB then additional GCI interceptors will scramble to intercept unengaged enemy aircraft under ground radar control.
With a little time and with a little work it provides the mission designer with a convincing and completely automatic air defence system. With a little time and with a little work it provides the mission designer with a convincing and completely automatic air defence system.
In short it is a plug in very flexible and configurable air defence module for DCS World.</p> In short it is a plug in very flexible and configurable air defence module for DCS World.</p>
<p>Note that in order to create a two way A2A defense system, two AI_A2A_DISPATCHER_GCICAP defense system may need to be created, for each coalition one. <p>The AI<em>A2A</em>GCICAP provides a lightweight configuration method using the mission editor.</p>
This is a good implementation, because maybe in the future, more coalitions may become available in DCS world.</p>
<h2>1. AI_A2A_DISPATCHER_GCICAP constructor:</h2>
<p>The <a href="##(AI_A2A_DISPATCHER_GCICAP).New">AI<em>A2A</em>DISPATCHER_GCICAP.New</a>() method creates a new AI_A2A_DISPATCHER_GCICAP instance. <h2>1) Configure a working AI_A2A_GCICAP defense system for ONE coalition.</h2>
There are two parameters required, a list of prefix group names that collects the groups of the EWR network, and a radius in meters,
that will be used to group the detected targets.</p>
<h3>1.1. Define the <strong>EWR network</strong>:</h3> <h3>1.1) Define which airbases are for which coalition.</h3>
<p>As part of the AI_A2A_DISPATCHER_GCICAP constructor, a list of prefixes must be given of the group names defined within the mission editor, <p>Color the airbases red or blue. You can do this by selecting the airbase on the map, and select the coalition blue or red.</p>
that define the EWR network.</p>
<p>An EWR network, or, Early Warning Radar network, is used to early detect potential airborne targets and to understand the position of patrolling targets of the enemy.</p> <h3>1.2) Place Groups given a name starting with a <strong>EWR prefix</strong> of your choice to build your EWR network.</h3>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia5.JPG" alt="Banner Image"/></p> <p><strong>All EWR groups starting with the EWR prefix (text) will be included in the detection system.</strong> </p>
<p>Typically EWR networks are setup using 55G6 EWR, 1L13 EWR, Hawk sr and Patriot str ground based radar units. <p>An EWR network, or, Early Warning Radar network, is used to early detect potential airborne targets and to understand the position of patrolling targets of the enemy.
Typically EWR networks are setup using 55G6 EWR, 1L13 EWR, Hawk sr and Patriot str ground based radar units.
These radars have different ranges and 55G6 EWR and 1L13 EWR radars are Eastern Bloc units (eg Russia, Ukraine, Georgia) while the Hawk and Patriot radars are Western (eg US). These radars have different ranges and 55G6 EWR and 1L13 EWR radars are Eastern Bloc units (eg Russia, Ukraine, Georgia) while the Hawk and Patriot radars are Western (eg US).
Additionally, ANY other radar capable unit can be part of the EWR network! Also AWACS airborne units, planes, helicopters can help to detect targets, as long as they have radar. Additionally, ANY other radar capable unit can be part of the EWR network! Also AWACS airborne units, planes, helicopters can help to detect targets, as long as they have radar.
The position of these units is very important as they need to provide enough coverage The position of these units is very important as they need to provide enough coverage
@@ -1212,29 +1223,87 @@ It all depends on what the desired effect is. </p>
<p>EWR networks are <strong>dynamically maintained</strong>. By defining in a <strong>smart way the names or name prefixes of the groups</strong> with EWR capable units, these groups will be <strong>automatically added or deleted</strong> from the EWR network, <p>EWR networks are <strong>dynamically maintained</strong>. By defining in a <strong>smart way the names or name prefixes of the groups</strong> with EWR capable units, these groups will be <strong>automatically added or deleted</strong> from the EWR network,
increasing or decreasing the radar coverage of the Early Warning System.</p> increasing or decreasing the radar coverage of the Early Warning System.</p>
<p>See the following example to setup an EWR network containing EWR stations and AWACS.</p> <h3>1.3) Place Airplane or Helicopter Groups with late activation switched on</h3>
<pre><code>-- Setup the A2A GCICAP dispatcher, and initialize it. <p>These are <strong>templates</strong>, with a given name starting with <strong>a Template prefix</strong> above each airbase that you wanna have a squadron.
A2ADispatcher = AI_A2A_DISPATCHER_GCICAP:New( { "DF CCCP AWACS", "DF CCCP EWR" }, 30000 ) These <strong>templates</strong> need to be within 10km from the airbase center. They don't need to have a slot at the airplane, they can just be positioned above the airbase,
</code></pre> without a route, and should only have ONE unit.</p>
<p>The above example creates a new AI<em>A2A</em>DISPATCHER_GCICAP instance, and stores this in the variable (object) <strong>A2ADispatcher</strong>. <h3>1.4) Place floating helicopters to create the CAP zones.</h3>
The first parameter is are the prefixes of the group names that define the EWR network.
The A2A dispatcher will filter all active groups with a group name starting with <strong>DF CCCP AWACS</strong> or <strong>DF CCCP EWR</strong> to be included in the EWR network.</p>
<h3>1.2. Define the detected <strong>target grouping radius</strong>:</h3> <p>The helicopter indicates the start of the CAP zone.
The route points the form of the CAP zone polygon.
The place of the helicopter is important, as the airbase closest to the helicopter will be the airbase from where the CAP planes will take off for CAP.</p>
<p>As a second parameter of the <a href="##(AI_A2A_DISPATCHER_GCICAP).New">AI<em>A2A</em>DISPATCHER_GCICAP.New</a>() method, a radius in meters must be given. The radius indicates that detected targets need to be grouped within a radius of 30km. <h2>2) There are a lot of defaults set, which can be further modified using the methods in <a href="AI.html##(AI_A2A_DISPATCHER)">AI#AI<em>A2A</em>DISPATCHER</a>:</h2>
<h3>2.1) Planes are taking off in the air from the airbases.</h3>
<p>This prevents airbases to get cluttered with airplanes taking off, it also reduces the risk of human players colliding with taxiiing airplanes,
resulting in the airbase to halt operations.</p>
<h3>2.2) Planes return near the airbase or will land if damaged.</h3>
<p>When damaged airplanes return to the airbase, they will be routed and will dissapear in the air when they are near the airbase.
There are exceptions to this rule, airplanes that aren't "listening" anymore due to damage or out of fuel, will return to the airbase and land.</p>
<h3>2.3) CAP operations setup for specific airbases, will be executed with the following parameters:</h3>
<ul>
<li>The altitude will range between 6000 and 10000 meters. </li>
<li>The CAP speed will vary between 500 and 800 km/h. </li>
<li>The engage speed between 800 and 1200 km/h.</li>
</ul>
<h3>2.4) Each airbase will perform GCI when required, with the following parameters:</h3>
<ul>
<li>The engage speed is between 800 and 1200 km/h.</li>
</ul>
<h3>2.5) Grouping or detected targets.</h3>
<p>Detected targets are constantly re-grouped, that is, when certain detected aircraft are moving further than the group radius, then these aircraft will become a separate
group being detected.</p>
<p>Targets will be grouped within a radius of 30km by default.</p>
<p>The radius indicates that detected targets need to be grouped within a radius of 30km.
The grouping radius should not be too small, but also depends on the types of planes and the era of the simulation. The grouping radius should not be too small, but also depends on the types of planes and the era of the simulation.
Fast planes like in the 80s, need a larger radius than WWII planes. <br/> Fast planes like in the 80s, need a larger radius than WWII planes. <br/>
Typically I suggest to use 30000 for new generation planes and 10000 for older era aircraft.</p> Typically I suggest to use 30000 for new generation planes and 10000 for older era aircraft.</p>
<p>Note that detected targets are constantly re-grouped, that is, when certain detected aircraft are moving further than the group radius, then these aircraft will become a separate <h2>3) Additional notes:</h2>
group being detected. This may result in additional GCI being started by the dispatcher! So don't make this value too small!</p>
<h2>2. AI<em>A2A</em>DISPATCHER_DOCUMENTATION is derived from <a href="##(AI_A2A_DISPATCHER)">#AI<em>A2A</em>DISPATCHER</a>,</h2> <p>In order to create a two way A2A defense system, <strong>two AI_A2A_GCICAP defense systems must need to be created</strong>, for each coalition one.
<p>so all further documentation needs to be consulted in this class Each defense system needs its own EWR network setup, airplane templates and CAP configurations.</p>
for documentation consistency.</p>
<p>This is a good implementation, because maybe in the future, more coalitions may become available in DCS world.</p>
<h2>4) Coding example how to use the AI_A2A_GCICAP class:</h2>
<pre><code> -- Setup the AI_A2A_GCICAP dispatcher for one coalition, and initialize it.
GCI_Red = AI_A2A_GCICAP:New( "EWR CCCP", "SQUADRON CCCP", "CAP CCCP", 2 )
</code></pre>
<p>This will create a GCI/CAP system for the RED coalition, and stores the reference to the GCI/CAP system in the <code>GCI\_Red</code> variable!
In the mission editor, the following setup will have taken place:</p>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia5.JPG" alt="Banner Image"/></p>
<p>The following parameters were given to the :New method of AI<em>A2A</em>GCICAP, and mean the following:</p>
<ul>
<li><code>EWR CCCP</code>: Groups of the RED coalition are placed that define the EWR network. These groups start with the name <code>EWR CCCP</code>.</li>
<li><code>SQUADRON CCCP</code>: Late activated Groups objects of the RED coalition are placed above the relevant airbases that will contain these templates in the squadron.
These late activated Groups start with the name <code>SQUADRON CCCP</code>. Each Group object contains only one Unit, and defines the weapon payload, skin and skill level.</li>
<li><code>CAP CCCP</code>: CAP Zones are defined using floating, late activated Helicopter Group objects, where the route points define the route of the polygon of the CAP Zone.
These Helicopter Group objects start with the name <code>CAP CCCP</code>, and will be the locations wherein CAP will be performed.</li>
<li><code>2</code> Defines how many CAP airplanes are patrolling in each CAP zone defined simulateneously. </li>
</ul>
</dd> </dd>
@@ -3585,20 +3654,33 @@ Provide a value of <strong>true</strong> to display every 30 seconds a tactical
<h2><a id="#(AI_A2A_DISPATCHER_GCICAP)" >Type <code>AI_A2A_DISPATCHER_GCICAP</code></a></h2> <h2><a id="#(AI_A2A_DISPATCHER_GCICAP)" >Type <code>AI_A2A_DISPATCHER_GCICAP</code></a></h2>
<p>AI<em>A2A</em>DISPATCHER_GCICAP class.</p> <h2><a id="#(AI_A2A_GCICAP)" >Type <code>AI_A2A_GCICAP</code></a></h2>
<h3>Field(s)</h3>
<h3>Field(s)</h3>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(AI_A2A_DISPATCHER_GCICAP).New" > <em></em>
<strong>AI_A2A_DISPATCHER_GCICAP:New(<, GroupingRadius, EWRPrefixes)</strong> <a id="#(AI_A2A_GCICAP).CAPTemplates" >
<strong>AI_A2A_GCICAP.CAPTemplates</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<p>AI<em>A2A</em>DISPATCHER_GCICAP constructor.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A_GCICAP).New" >
<strong>AI_A2A_GCICAP:New(<, GroupingRadius, EWRPrefixes, TemplatePrefixes, CAPPrefixes, CapLimit, EngageRadius)</strong>
</a>
</dt>
<dd>
<p>AI<em>A2A</em>GCICAP constructor.</p>
<h3>Parameters</h3> <h3>Parameters</h3>
<ul> <ul>
@@ -3619,6 +3701,26 @@ For airplanes, 6000 (6km) is recommended, and is also the default value of this
<p><code><em> EWRPrefixes </em></code>: </p> <p><code><em> EWRPrefixes </em></code>: </p>
</li>
<li>
<p><code><em> TemplatePrefixes </em></code>: </p>
</li>
<li>
<p><code><em> CAPPrefixes </em></code>: </p>
</li>
<li>
<p><code><em> CapLimit </em></code>: </p>
</li>
<li>
<p><code><em> EngageRadius </em></code>: </p>
</li> </li>
</ul> </ul>
<h3>Return value</h3> <h3>Return value</h3>
@@ -3628,12 +3730,26 @@ For airplanes, 6000 (6km) is recommended, and is also the default value of this
<h3>Usage:</h3> <h3>Usage:</h3>
<pre class="example"><code> <pre class="example"><code>
-- Set a new AI A2A Dispatcher object, based on an EWR network with a 30 km grouping radius -- Set a new AI A2A GCICAP object, based on an EWR network with a 30 km grouping radius
-- This for ground and awacs installations. -- This for ground and awacs installations.
A2ADispatcher = AI_A2A_DISPATCHER_GCICAP:New( { "BlueEWRGroundRadars", "BlueEWRAwacs" }, 30000 ) A2ADispatcher = AI_A2A_GCICAP:New( { "BlueEWRGroundRadars", "BlueEWRAwacs" }, 30000 )
</code></pre> </code></pre>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(AI_A2A_GCICAP).Templates" >
<strong>AI_A2A_GCICAP.Templates</strong>
</a>
</dt>
<dd>
</dd> </dd>
</dl> </dl>

View File

@@ -227,6 +227,48 @@
<td class="name" nowrap="nowrap"><a href="##(CARGO).Containable">CARGO.Containable</a></td> <td class="name" nowrap="nowrap"><a href="##(CARGO).Containable">CARGO.Containable</a></td>
<td class="summary"> <td class="summary">
<p>This flag defines if the cargo can be contained within a DCS Unit.</p> <p>This flag defines if the cargo can be contained within a DCS Unit.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).Deployed">CARGO.Deployed</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).Destroy">CARGO:Destroy()</a></td>
<td class="summary">
<p>Destroy the cargo.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).Flare">CARGO:Flare(FlareColor)</a></td>
<td class="summary">
<p>Signal a flare at the position of the CARGO.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).FlareGreen">CARGO:FlareGreen()</a></td>
<td class="summary">
<p>Signal a green flare at the position of the CARGO.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).FlareRed">CARGO:FlareRed()</a></td>
<td class="summary">
<p>Signal a red flare at the position of the CARGO.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).FlareWhite">CARGO:FlareWhite()</a></td>
<td class="summary">
<p>Signal a white flare at the position of the CARGO.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).FlareYellow">CARGO:FlareYellow()</a></td>
<td class="summary">
<p>Signal a yellow flare at the position of the CARGO.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -263,6 +305,18 @@
<td class="name" nowrap="nowrap"><a href="##(CARGO).IsAlive">CARGO:IsAlive()</a></td> <td class="name" nowrap="nowrap"><a href="##(CARGO).IsAlive">CARGO:IsAlive()</a></td>
<td class="summary"> <td class="summary">
<p>Check if cargo is alive.</p> <p>Check if cargo is alive.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).IsDeployed">CARGO:IsDeployed()</a></td>
<td class="summary">
<p>Is the cargo deployed</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).IsDestroyed">CARGO:IsDestroyed()</a></td>
<td class="summary">
<p>Check if cargo is destroyed.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -371,6 +425,12 @@
<td class="name" nowrap="nowrap"><a href="##(CARGO).Representable">CARGO.Representable</a></td> <td class="name" nowrap="nowrap"><a href="##(CARGO).Representable">CARGO.Representable</a></td>
<td class="summary"> <td class="summary">
<p>This flag defines if the cargo can be represented by a DCS Unit.</p> <p>This flag defines if the cargo can be represented by a DCS Unit.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).SetDeployed">CARGO:SetDeployed(Deployed)</a></td>
<td class="summary">
<p>Set the cargo as deployed</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -383,6 +443,42 @@
<td class="name" nowrap="nowrap"><a href="##(CARGO).Slingloadable">CARGO.Slingloadable</a></td> <td class="name" nowrap="nowrap"><a href="##(CARGO).Slingloadable">CARGO.Slingloadable</a></td>
<td class="summary"> <td class="summary">
<p>This flag defines if the cargo can be slingloaded.</p> <p>This flag defines if the cargo can be slingloaded.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).Smoke">CARGO:Smoke(SmokeColor, Range)</a></td>
<td class="summary">
<p>Smoke the CARGO.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).SmokeBlue">CARGO:SmokeBlue()</a></td>
<td class="summary">
<p>Smoke the CARGO Blue.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).SmokeGreen">CARGO:SmokeGreen()</a></td>
<td class="summary">
<p>Smoke the CARGO Green.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).SmokeOrange">CARGO:SmokeOrange()</a></td>
<td class="summary">
<p>Smoke the CARGO Orange.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).SmokeRed">CARGO:SmokeRed()</a></td>
<td class="summary">
<p>Smoke the CARGO Red.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO).SmokeWhite">CARGO:SmokeWhite()</a></td>
<td class="summary">
<p>Smoke the CARGO White.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -447,6 +543,12 @@
<td class="name" nowrap="nowrap"><a href="##(CARGO_GROUP).CargoCarrier">CARGO_GROUP.CargoCarrier</a></td> <td class="name" nowrap="nowrap"><a href="##(CARGO_GROUP).CargoCarrier">CARGO_GROUP.CargoCarrier</a></td>
<td class="summary"> <td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO_GROUP).CargoGroup">CARGO_GROUP.CargoGroup</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -456,15 +558,27 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO_GROUP).CargoSet">CARGO_GROUP.CargoSet</a></td> <td class="name" nowrap="nowrap"><a href="##(CARGO_GROUP).GetCount">CARGO_GROUP:GetCount()</a></td>
<td class="summary"> <td class="summary">
<p>Get the amount of cargo units in the group.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO_GROUP).New">CARGO_GROUP:New(CargoGroup, Type, Name, ReportRadius, NearRadius)</a></td> <td class="name" nowrap="nowrap"><a href="##(CARGO_GROUP).New">CARGO_GROUP:New(CargoGroup, Type, Name, ReportRadius, NearRadius)</a></td>
<td class="summary"> <td class="summary">
<p>CARGO_GROUP constructor.</p> <p>CARGO_GROUP constructor.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO_GROUP).OnEventCargoDead">CARGO_GROUP.OnEventCargoDead(Cargo, EventData, self)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO_GROUP).RespawnOnDestroyed">CARGO_GROUP:RespawnOnDestroyed(RespawnDestroyed)</a></td>
<td class="summary">
<p>Respawn the cargo when destroyed</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -483,6 +597,12 @@
<td class="name" nowrap="nowrap"><a href="##(CARGO_GROUP).onenterBoarding">CARGO_GROUP:onenterBoarding(CargoCarrier, Event, From, To, NearRadius, ...)</a></td> <td class="name" nowrap="nowrap"><a href="##(CARGO_GROUP).onenterBoarding">CARGO_GROUP:onenterBoarding(CargoCarrier, Event, From, To, NearRadius, ...)</a></td>
<td class="summary"> <td class="summary">
<p>Enter Boarding State.</p> <p>Enter Boarding State.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO_GROUP).onenterDestroyed">CARGO_GROUP:onenterDestroyed()</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -587,6 +707,12 @@
<td class="name" nowrap="nowrap"><a href="##(CARGO_REPORTABLE).CargoObject">CARGO_REPORTABLE.CargoObject</a></td> <td class="name" nowrap="nowrap"><a href="##(CARGO_REPORTABLE).CargoObject">CARGO_REPORTABLE.CargoObject</a></td>
<td class="summary"> <td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO_REPORTABLE).CargoSet">CARGO_REPORTABLE.CargoSet</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -623,6 +749,12 @@
<td class="name" nowrap="nowrap"><a href="##(CARGO_REPORTABLE).ReportRadius">CARGO_REPORTABLE.ReportRadius</a></td> <td class="name" nowrap="nowrap"><a href="##(CARGO_REPORTABLE).ReportRadius">CARGO_REPORTABLE.ReportRadius</a></td>
<td class="summary"> <td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CARGO_REPORTABLE).Respawn">CARGO_REPORTABLE:Respawn()</a></td>
<td class="summary">
<p>Respawn the cargo.</p>
</td> </td>
</tr> </tr>
</table> </table>
@@ -941,7 +1073,7 @@ The radius when the cargo will board the Carrier (to avoid collision).</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a></em> <em><a href="Wrapper.Client.html##(CLIENT)">Wrapper.Client#CLIENT</a></em>
<a id="#(CARGO).CargoCarrier" > <a id="#(CARGO).CargoCarrier" >
<strong>CARGO.CargoCarrier</strong> <strong>CARGO.CargoCarrier</strong>
</a> </a>
@@ -992,6 +1124,106 @@ The radius when the cargo will board the Carrier (to avoid collision).</p>
<p>This flag defines if the cargo can be contained within a DCS Unit.</p> <p>This flag defines if the cargo can be contained within a DCS Unit.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(CARGO).Deployed" >
<strong>CARGO.Deployed</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).Destroy" >
<strong>CARGO:Destroy()</strong>
</a>
</dt>
<dd>
<p>Destroy the cargo.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).Flare" >
<strong>CARGO:Flare(FlareColor)</strong>
</a>
</dt>
<dd>
<p>Signal a flare at the position of the CARGO.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Utilities.Utils.html##(FLARECOLOR)">Utilities.Utils#FLARECOLOR</a> FlareColor </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).FlareGreen" >
<strong>CARGO:FlareGreen()</strong>
</a>
</dt>
<dd>
<p>Signal a green flare at the position of the CARGO.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).FlareRed" >
<strong>CARGO:FlareRed()</strong>
</a>
</dt>
<dd>
<p>Signal a red flare at the position of the CARGO.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).FlareWhite" >
<strong>CARGO:FlareWhite()</strong>
</a>
</dt>
<dd>
<p>Signal a white flare at the position of the CARGO.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).FlareYellow" >
<strong>CARGO:FlareYellow()</strong>
</a>
</dt>
<dd>
<p>Signal a yellow flare at the position of the CARGO.</p>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@@ -1105,6 +1337,42 @@ true if unloaded</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(CARGO).IsDeployed" >
<strong>CARGO:IsDeployed()</strong>
</a>
</dt>
<dd>
<p>Is the cargo deployed</p>
<h3>Return value</h3>
<p><em>#boolean:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).IsDestroyed" >
<strong>CARGO:IsDestroyed()</strong>
</a>
</dt>
<dd>
<p>Check if cargo is destroyed.</p>
<h3>Return value</h3>
<p><em>#boolean:</em>
true if destroyed</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).IsInZone" > <a id="#(CARGO).IsInZone" >
<strong>CARGO:IsInZone(Zone)</strong> <strong>CARGO:IsInZone(Zone)</strong>
</a> </a>
@@ -1520,6 +1788,27 @@ The radius when the cargo will board the Carrier (to avoid collision).</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(CARGO).SetDeployed" >
<strong>CARGO:SetDeployed(Deployed)</strong>
</a>
</dt>
<dd>
<p>Set the cargo as deployed</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> Deployed </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).SetWeight" > <a id="#(CARGO).SetWeight" >
<strong>CARGO:SetWeight(Weight)</strong> <strong>CARGO:SetWeight(Weight)</strong>
</a> </a>
@@ -1561,6 +1850,97 @@ The weight in kg.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(CARGO).Smoke" >
<strong>CARGO:Smoke(SmokeColor, Range)</strong>
</a>
</dt>
<dd>
<p>Smoke the CARGO.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em> SmokeColor </em></code>: </p>
</li>
<li>
<p><code><em> Range </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).SmokeBlue" >
<strong>CARGO:SmokeBlue()</strong>
</a>
</dt>
<dd>
<p>Smoke the CARGO Blue.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).SmokeGreen" >
<strong>CARGO:SmokeGreen()</strong>
</a>
</dt>
<dd>
<p>Smoke the CARGO Green.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).SmokeOrange" >
<strong>CARGO:SmokeOrange()</strong>
</a>
</dt>
<dd>
<p>Smoke the CARGO Orange.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).SmokeRed" >
<strong>CARGO:SmokeRed()</strong>
</a>
</dt>
<dd>
<p>Smoke the CARGO Red.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).SmokeWhite" >
<strong>CARGO:SmokeWhite()</strong>
</a>
</dt>
<dd>
<p>Smoke the CARGO White.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO).Spawn" > <a id="#(CARGO).Spawn" >
<strong>CARGO:Spawn(PointVec2)</strong> <strong>CARGO:Spawn(PointVec2)</strong>
</a> </a>
@@ -1815,6 +2195,23 @@ The amount of seconds to delay the action.</p>
<p>self.CargoObject:Destroy()</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(CARGO_GROUP).CargoGroup" >
<strong>CARGO_GROUP.CargoGroup</strong>
</a>
</dt>
<dd>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@@ -1834,13 +2231,17 @@ The amount of seconds to delay the action.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em></em> <a id="#(CARGO_GROUP).GetCount" >
<a id="#(CARGO_GROUP).CargoSet" > <strong>CARGO_GROUP:GetCount()</strong>
<strong>CARGO_GROUP.CargoSet</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<p>Get the amount of cargo units in the group.</p>
<h3>Return value</h3>
<p><em><a href="##(CARGO_GROUP)">#CARGO_GROUP</a>:</em></p>
</dd> </dd>
@@ -1896,6 +2297,58 @@ The amount of seconds to delay the action.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(CARGO_GROUP).OnEventCargoDead" >
<strong>CARGO_GROUP.OnEventCargoDead(Cargo, EventData, self)</strong>
</a>
</dt>
<dd>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="##(CARGO)">#CARGO</a> Cargo </em></code>: </p>
</li>
<li>
<p><code><em><a href="Core.Event.html##(EVENTDATA)">Core.Event#EVENTDATA</a> EventData </em></code>: </p>
</li>
<li>
<p><code><em> self </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO_GROUP).RespawnOnDestroyed" >
<strong>CARGO_GROUP:RespawnOnDestroyed(RespawnDestroyed)</strong>
</a>
</dt>
<dd>
<p>Respawn the cargo when destroyed</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#boolean RespawnDestroyed </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO_GROUP).onafterBoarding" > <a id="#(CARGO_GROUP).onafterBoarding" >
<strong>CARGO_GROUP:onafterBoarding(CargoCarrier, Event, From, To, NearRadius, ...)</strong> <strong>CARGO_GROUP:onafterBoarding(CargoCarrier, Event, From, To, NearRadius, ...)</strong>
</a> </a>
@@ -2029,6 +2482,19 @@ The amount of seconds to delay the action.</p>
</li> </li>
</ul> </ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO_GROUP).onenterDestroyed" >
<strong>CARGO_GROUP:onenterDestroyed()</strong>
</a>
</dt>
<dd>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@@ -2667,6 +3133,20 @@ The UNIT carrying the package.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Core.Set.html##(SET_CARGO)">Core.Set#SET_CARGO</a></em>
<a id="#(CARGO_REPORTABLE).CargoSet" >
<strong>CARGO_REPORTABLE.CargoSet</strong>
</a>
</dt>
<dd>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@@ -2823,6 +3303,19 @@ The range till cargo will board.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CARGO_REPORTABLE).Respawn" >
<strong>CARGO_REPORTABLE:Respawn()</strong>
</a>
</dt>
<dd>
<p>Respawn the cargo.</p>
</dd> </dd>
</dl> </dl>
@@ -3410,8 +3903,6 @@ Point#POINT_VEC2</p>
</dd> </dd>
</dl> </dl>
<h2><a id="#(COMMANDCENTER)" >Type <code>COMMANDCENTER</code></a></h2>
<h2><a id="#(sring)" >Type <code>sring</code></a></h2> <h2><a id="#(sring)" >Type <code>sring</code></a></h2>
</div> </div>

View File

@@ -280,7 +280,7 @@ The following iterator methods are currently available within the DATABASE:</p>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(DATABASE).FindAirbase">DATABASE:FindAirbase(AirbaseName)</a></td> <td class="name" nowrap="nowrap"><a href="##(DATABASE).FindAirbase">DATABASE:FindAirbase(AirbaseName)</a></td>
<td class="summary"> <td class="summary">
<p>Finds an AIRBASE based on the AirbaseName.</p> <p>Finds a AIRBASE based on the AirbaseName.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -1021,7 +1021,7 @@ The name of the airbase</p>
</dt> </dt>
<dd> <dd>
<p>Finds an AIRBASE based on the AirbaseName.</p> <p>Finds a AIRBASE based on the AirbaseName.</p>
<h3>Parameter</h3> <h3>Parameter</h3>
<ul> <ul>

View File

@@ -900,6 +900,7 @@ function below will use the range 1-7 just in case</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em></em>
<a id="#(DESIGNATE).LaserCodes" > <a id="#(DESIGNATE).LaserCodes" >
<strong>DESIGNATE.LaserCodes</strong> <strong>DESIGNATE.LaserCodes</strong>
</a> </a>

View File

@@ -227,6 +227,7 @@ on defined intervals (currently every minute).</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em>#number</em>
<a id="#(MOVEMENT).AliveUnits" > <a id="#(MOVEMENT).AliveUnits" >
<strong>MOVEMENT.AliveUnits</strong> <strong>MOVEMENT.AliveUnits</strong>
</a> </a>
@@ -235,6 +236,9 @@ on defined intervals (currently every minute).</p>
<p> Contains the counter how many units are currently alive</p>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">

View File

@@ -146,6 +146,54 @@
<h2><a id="#(POSITIONABLE)">Type <code>POSITIONABLE</code></a></h2> <h2><a id="#(POSITIONABLE)">Type <code>POSITIONABLE</code></a></h2>
<table class="function_list"> <table class="function_list">
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).AddCargo">POSITIONABLE:AddCargo(Cargo)</a></td>
<td class="summary">
<p>Add cargo.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).CargoItemCount">POSITIONABLE:CargoItemCount()</a></td>
<td class="summary">
<p>Get cargo item count.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).ClearCargo">POSITIONABLE:ClearCargo()</a></td>
<td class="summary">
<p>Clear all cargo.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).Flare">POSITIONABLE:Flare(FlareColor)</a></td>
<td class="summary">
<p>Signal a flare at the position of the POSITIONABLE.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).FlareGreen">POSITIONABLE:FlareGreen()</a></td>
<td class="summary">
<p>Signal a green flare at the position of the POSITIONABLE.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).FlareRed">POSITIONABLE:FlareRed()</a></td>
<td class="summary">
<p>Signal a red flare at the position of the POSITIONABLE.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).FlareWhite">POSITIONABLE:FlareWhite()</a></td>
<td class="summary">
<p>Signal a white flare at the position of the POSITIONABLE.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).FlareYellow">POSITIONABLE:FlareYellow()</a></td>
<td class="summary">
<p>Signal a yellow flare at the position of the POSITIONABLE.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).GetAltitude">POSITIONABLE:GetAltitude()</a></td> <td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).GetAltitude">POSITIONABLE:GetAltitude()</a></td>
<td class="summary"> <td class="summary">
<p>Returns the altitude of the POSITIONABLE.</p> <p>Returns the altitude of the POSITIONABLE.</p>
@@ -263,6 +311,12 @@
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).GetVelocityMPS">POSITIONABLE:GetVelocityMPS()</a></td> <td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).GetVelocityMPS">POSITIONABLE:GetVelocityMPS()</a></td>
<td class="summary"> <td class="summary">
<p>Returns the POSITIONABLE velocity in meters per second.</p> <p>Returns the POSITIONABLE velocity in meters per second.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).HasCargo">POSITIONABLE:HasCargo(Cargo)</a></td>
<td class="summary">
<p>Returns if carrier has given cargo.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -298,7 +352,7 @@
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).LaserCode">POSITIONABLE.LaserCode</a></td> <td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).LaserCode">POSITIONABLE.LaserCode</a></td>
<td class="summary"> <td class="summary">
<p>The last assigned laser code.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -356,15 +410,67 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).PositionableName">POSITIONABLE.PositionableName</a></td> <td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).RemoveCargo">POSITIONABLE:RemoveCargo(Cargo)</a></td>
<td class="summary"> <td class="summary">
<p>The name of the measurable.</p> <p>Remove cargo.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).Smoke">POSITIONABLE:Smoke(SmokeColor, Range)</a></td>
<td class="summary">
<p>Smoke the POSITIONABLE.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).SmokeBlue">POSITIONABLE:SmokeBlue()</a></td>
<td class="summary">
<p>Smoke the POSITIONABLE Blue.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).SmokeGreen">POSITIONABLE:SmokeGreen()</a></td>
<td class="summary">
<p>Smoke the POSITIONABLE Green.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).SmokeOrange">POSITIONABLE:SmokeOrange()</a></td>
<td class="summary">
<p>Smoke the POSITIONABLE Orange.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).SmokeRed">POSITIONABLE:SmokeRed()</a></td>
<td class="summary">
<p>Smoke the POSITIONABLE Red.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).SmokeWhite">POSITIONABLE:SmokeWhite()</a></td>
<td class="summary">
<p>Smoke the POSITIONABLE White.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).Spot">POSITIONABLE.Spot</a></td> <td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).Spot">POSITIONABLE.Spot</a></td>
<td class="summary"> <td class="summary">
<p>The laser Spot.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).__">POSITIONABLE.__</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(POSITIONABLE.__)">Type <code>POSITIONABLE.__</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE.__).Cargo">POSITIONABLE.__.Cargo</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
</table> </table>
@@ -438,10 +544,137 @@ The method <a href="##(POSITIONABLE).GetVelocity">POSITIONABLE.GetVelocity</a>()
</dl> </dl>
<h2><a id="#(POSITIONABLE)" >Type <code>POSITIONABLE</code></a></h2> <h2><a id="#(POSITIONABLE)" >Type <code>POSITIONABLE</code></a></h2>
<h3>Field(s)</h3>
<p>The POSITIONABLE class</p> <dl class="function">
<dt>
<h3>Field(s)</h3> <a id="#(POSITIONABLE).AddCargo" >
<strong>POSITIONABLE:AddCargo(Cargo)</strong>
</a>
</dt>
<dd>
<p>Add cargo.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Core.Cargo.html##(CARGO)">Core.Cargo#CARGO</a> Cargo </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(POSITIONABLE)">#POSITIONABLE</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).CargoItemCount" >
<strong>POSITIONABLE:CargoItemCount()</strong>
</a>
</dt>
<dd>
<p>Get cargo item count.</p>
<h3>Return value</h3>
<p><em><a href="Core.Cargo.html##(CARGO)">Core.Cargo#CARGO</a>:</em>
Cargo</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).ClearCargo" >
<strong>POSITIONABLE:ClearCargo()</strong>
</a>
</dt>
<dd>
<p>Clear all cargo.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).Flare" >
<strong>POSITIONABLE:Flare(FlareColor)</strong>
</a>
</dt>
<dd>
<p>Signal a flare at the position of the POSITIONABLE.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Utilities.Utils.html##(FLARECOLOR)">Utilities.Utils#FLARECOLOR</a> FlareColor </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).FlareGreen" >
<strong>POSITIONABLE:FlareGreen()</strong>
</a>
</dt>
<dd>
<p>Signal a green flare at the position of the POSITIONABLE.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).FlareRed" >
<strong>POSITIONABLE:FlareRed()</strong>
</a>
</dt>
<dd>
<p>Signal a red flare at the position of the POSITIONABLE.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).FlareWhite" >
<strong>POSITIONABLE:FlareWhite()</strong>
</a>
</dt>
<dd>
<p>Signal a white flare at the position of the POSITIONABLE.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).FlareYellow" >
<strong>POSITIONABLE:FlareYellow()</strong>
</a>
</dt>
<dd>
<p>Signal a yellow flare at the position of the POSITIONABLE.</p>
</dd>
</dl>
<dl class="function"> <dl class="function">
<dt> <dt>
@@ -976,6 +1209,32 @@ The velocity in meters per second.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(POSITIONABLE).HasCargo" >
<strong>POSITIONABLE:HasCargo(Cargo)</strong>
</a>
</dt>
<dd>
<p>Returns if carrier has given cargo.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> Cargo </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="Core.Cargo.html##(CARGO)">Core.Cargo#CARGO</a>:</em>
Cargo</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).InAir" > <a id="#(POSITIONABLE).InAir" >
<strong>POSITIONABLE:InAir()</strong> <strong>POSITIONABLE:InAir()</strong>
</a> </a>
@@ -1107,14 +1366,14 @@ true if it is lasing a target</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em>#number</em> <em></em>
<a id="#(POSITIONABLE).LaserCode" > <a id="#(POSITIONABLE).LaserCode" >
<strong>POSITIONABLE.LaserCode</strong> <strong>POSITIONABLE.LaserCode</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<p>The last assigned laser code.</p>
</dd> </dd>
</dl> </dl>
@@ -1462,14 +1721,117 @@ self</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em>#string</em> <a id="#(POSITIONABLE).RemoveCargo" >
<a id="#(POSITIONABLE).PositionableName" > <strong>POSITIONABLE:RemoveCargo(Cargo)</strong>
<strong>POSITIONABLE.PositionableName</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<p>The name of the measurable.</p> <p>Remove cargo.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Core.Cargo.html##(CARGO)">Core.Cargo#CARGO</a> Cargo </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(POSITIONABLE)">#POSITIONABLE</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).Smoke" >
<strong>POSITIONABLE:Smoke(SmokeColor, Range)</strong>
</a>
</dt>
<dd>
<p>Smoke the POSITIONABLE.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em> SmokeColor </em></code>: </p>
</li>
<li>
<p><code><em> Range </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).SmokeBlue" >
<strong>POSITIONABLE:SmokeBlue()</strong>
</a>
</dt>
<dd>
<p>Smoke the POSITIONABLE Blue.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).SmokeGreen" >
<strong>POSITIONABLE:SmokeGreen()</strong>
</a>
</dt>
<dd>
<p>Smoke the POSITIONABLE Green.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).SmokeOrange" >
<strong>POSITIONABLE:SmokeOrange()</strong>
</a>
</dt>
<dd>
<p>Smoke the POSITIONABLE Orange.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).SmokeRed" >
<strong>POSITIONABLE:SmokeRed()</strong>
</a>
</dt>
<dd>
<p>Smoke the POSITIONABLE Red.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POSITIONABLE).SmokeWhite" >
<strong>POSITIONABLE:SmokeWhite()</strong>
</a>
</dt>
<dd>
<p>Smoke the POSITIONABLE White.</p>
</dd> </dd>
</dl> </dl>
@@ -1483,11 +1845,44 @@ self</p>
</dt> </dt>
<dd> <dd>
<p>The laser Spot.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="##(POSITIONABLE.__)">#POSITIONABLE.__</a></em>
<a id="#(POSITIONABLE).__" >
<strong>POSITIONABLE.__</strong>
</a>
</dt>
<dd>
</dd> </dd>
</dl> </dl>
<h2><a id="#(POSITIONABLE.__)" >Type <code>POSITIONABLE.__</code></a></h2>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em><a href="##(POSITIONABLE.__.Cargo)">#POSITIONABLE.__.Cargo</a></em>
<a id="#(POSITIONABLE.__).Cargo" >
<strong>POSITIONABLE.__.Cargo</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(POSITIONABLE.__.Cargo)" >Type <code>POSITIONABLE.__.Cargo</code></a></h2>
<h2><a id="#(RADIO)" >Type <code>RADIO</code></a></h2> <h2><a id="#(RADIO)" >Type <code>RADIO</code></a></h2>
</div> </div>

View File

@@ -2957,8 +2957,8 @@ self</p>
<h3>Return value</h3> <h3>Return value</h3>
<p><em><a href="##(SET_CARGO)">#SET_CARGO</a>:</em> <p><em><a href="##(SET_CARGO)">#SET_CARGO</a>:</em></p>
self</p>
<h3>Usage:</h3> <h3>Usage:</h3>
<pre class="example"><code>-- Define a new SET_CARGO Object. The DatabaseSet will contain a reference to all Cargos. <pre class="example"><code>-- Define a new SET_CARGO Object. The DatabaseSet will contain a reference to all Cargos.

View File

@@ -148,7 +148,7 @@
<h2><a id="#(SETTINGS)">Type <code>SETTINGS</code></a></h2> <h2><a id="#(SETTINGS)">Type <code>SETTINGS</code></a></h2>
<table class="function_list"> <table class="function_list">
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).A2AMenuSystem">SETTINGS:A2AMenuSystem(A2ASystem)</a></td> <td class="name" nowrap="nowrap"><a href="##(SETTINGS).A2AMenuSystem">SETTINGS:A2AMenuSystem(MenuGroup, RootMenu, A2ASystem)</a></td>
<td class="summary"> <td class="summary">
</td> </td>
@@ -160,7 +160,7 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).A2GMenuSystem">SETTINGS:A2GMenuSystem(A2GSystem)</a></td> <td class="name" nowrap="nowrap"><a href="##(SETTINGS).A2GMenuSystem">SETTINGS:A2GMenuSystem(MenuGroup, RootMenu, A2GSystem)</a></td>
<td class="summary"> <td class="summary">
</td> </td>
@@ -169,12 +169,6 @@
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).A2GSystem">SETTINGS.A2GSystem</a></td> <td class="name" nowrap="nowrap"><a href="##(SETTINGS).A2GSystem">SETTINGS.A2GSystem</a></td>
<td class="summary"> <td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).DefaultMenu">SETTINGS.DefaultMenu</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -196,7 +190,7 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).IsA2A_BRA">SETTINGS:IsA2A_BRA()</a></td> <td class="name" nowrap="nowrap"><a href="##(SETTINGS).IsA2A_BRAA">SETTINGS:IsA2A_BRAA()</a></td>
<td class="summary"> <td class="summary">
<p>Is BRA</p> <p>Is BRA</p>
</td> </td>
@@ -208,7 +202,7 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).IsA2G_BRA">SETTINGS:IsA2G_BRA()</a></td> <td class="name" nowrap="nowrap"><a href="##(SETTINGS).IsA2G_BR">SETTINGS:IsA2G_BR()</a></td>
<td class="summary"> <td class="summary">
<p>Is BRA</p> <p>Is BRA</p>
</td> </td>
@@ -292,31 +286,25 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).MenuLL_Accuracy">SETTINGS:MenuLL_Accuracy(LL_Accuracy)</a></td> <td class="name" nowrap="nowrap"><a href="##(SETTINGS).MenuLL_Accuracy">SETTINGS:MenuLL_Accuracy(MenuGroup, RootMenu, LL_Accuracy)</a></td>
<td class="summary"> <td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).MenuLL_DMS">SETTINGS:MenuLL_DMS(LL_DMS)</a></td> <td class="name" nowrap="nowrap"><a href="##(SETTINGS).MenuLL_DMS">SETTINGS:MenuLL_DMS(MenuGroup, RootMenu, LL_DMS)</a></td>
<td class="summary"> <td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).MenuMGRS_Accuracy">SETTINGS:MenuMGRS_Accuracy(MGRS_Accuracy)</a></td> <td class="name" nowrap="nowrap"><a href="##(SETTINGS).MenuMGRS_Accuracy">SETTINGS:MenuMGRS_Accuracy(MenuGroup, RootMenu, MGRS_Accuracy)</a></td>
<td class="summary"> <td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).MenuMWSystem">SETTINGS:MenuMWSystem(MW)</a></td> <td class="name" nowrap="nowrap"><a href="##(SETTINGS).MenuMWSystem">SETTINGS:MenuMWSystem(MenuGroup, RootMenu, MW)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).MenuText">SETTINGS.MenuText</a></td>
<td class="summary"> <td class="summary">
</td> </td>
@@ -325,12 +313,6 @@
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).Metric">SETTINGS.Metric</a></td> <td class="name" nowrap="nowrap"><a href="##(SETTINGS).Metric">SETTINGS.Metric</a></td>
<td class="summary"> <td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).Metrics">SETTINGS.Metrics</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -352,7 +334,7 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).SetA2A_BRA">SETTINGS:SetA2A_BRA()</a></td> <td class="name" nowrap="nowrap"><a href="##(SETTINGS).SetA2A_BRAA">SETTINGS:SetA2A_BRAA()</a></td>
<td class="summary"> <td class="summary">
<p>Sets A2A BRA</p> <p>Sets A2A BRA</p>
</td> </td>
@@ -364,7 +346,7 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).SetA2G_BRA">SETTINGS:SetA2G_BRA()</a></td> <td class="name" nowrap="nowrap"><a href="##(SETTINGS).SetA2G_BR">SETTINGS:SetA2G_BR()</a></td>
<td class="summary"> <td class="summary">
<p>Sets A2G BRA</p> <p>Sets A2G BRA</p>
</td> </td>
@@ -418,13 +400,7 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).SetSystemMenu">SETTINGS:SetSystemMenu(RootMenu, MenuText)</a></td> <td class="name" nowrap="nowrap"><a href="##(SETTINGS).SetSystemMenu">SETTINGS:SetSystemMenu(MenuGroup, RootMenu)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(SETTINGS).SettingsMenu">SETTINGS.SettingsMenu</a></td>
<td class="summary"> <td class="summary">
</td> </td>
@@ -455,17 +431,27 @@
<dt> <dt>
<a id="#(SETTINGS).A2AMenuSystem" > <a id="#(SETTINGS).A2AMenuSystem" >
<strong>SETTINGS:A2AMenuSystem(A2ASystem)</strong> <strong>SETTINGS:A2AMenuSystem(MenuGroup, RootMenu, A2ASystem)</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<h3>Parameter</h3> <h3>Parameters</h3>
<ul> <ul>
<li> <li>
<p><code><em> MenuGroup </em></code>: </p>
</li>
<li>
<p><code><em> RootMenu </em></code>: </p>
</li>
<li>
<p><code><em> A2ASystem </em></code>: </p> <p><code><em> A2ASystem </em></code>: </p>
</li> </li>
@@ -490,17 +476,27 @@
<dt> <dt>
<a id="#(SETTINGS).A2GMenuSystem" > <a id="#(SETTINGS).A2GMenuSystem" >
<strong>SETTINGS:A2GMenuSystem(A2GSystem)</strong> <strong>SETTINGS:A2GMenuSystem(MenuGroup, RootMenu, A2GSystem)</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<h3>Parameter</h3> <h3>Parameters</h3>
<ul> <ul>
<li> <li>
<p><code><em> MenuGroup </em></code>: </p>
</li>
<li>
<p><code><em> RootMenu </em></code>: </p>
</li>
<li>
<p><code><em> A2GSystem </em></code>: </p> <p><code><em> A2GSystem </em></code>: </p>
</li> </li>
@@ -519,19 +515,6 @@
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(SETTINGS).DefaultMenu" >
<strong>SETTINGS.DefaultMenu</strong>
</a>
</dt>
<dd>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@@ -591,8 +574,8 @@
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(SETTINGS).IsA2A_BRA" > <a id="#(SETTINGS).IsA2A_BRAA" >
<strong>SETTINGS:IsA2A_BRA()</strong> <strong>SETTINGS:IsA2A_BRAA()</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
@@ -627,8 +610,8 @@ true if BULLS</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(SETTINGS).IsA2G_BRA" > <a id="#(SETTINGS).IsA2G_BR" >
<strong>SETTINGS:IsA2G_BRA()</strong> <strong>SETTINGS:IsA2G_BR()</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
@@ -976,17 +959,27 @@ true if metric.</p>
<dt> <dt>
<a id="#(SETTINGS).MenuLL_Accuracy" > <a id="#(SETTINGS).MenuLL_Accuracy" >
<strong>SETTINGS:MenuLL_Accuracy(LL_Accuracy)</strong> <strong>SETTINGS:MenuLL_Accuracy(MenuGroup, RootMenu, LL_Accuracy)</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<h3>Parameter</h3> <h3>Parameters</h3>
<ul> <ul>
<li> <li>
<p><code><em> MenuGroup </em></code>: </p>
</li>
<li>
<p><code><em> RootMenu </em></code>: </p>
</li>
<li>
<p><code><em> LL_Accuracy </em></code>: </p> <p><code><em> LL_Accuracy </em></code>: </p>
</li> </li>
@@ -997,17 +990,27 @@ true if metric.</p>
<dt> <dt>
<a id="#(SETTINGS).MenuLL_DMS" > <a id="#(SETTINGS).MenuLL_DMS" >
<strong>SETTINGS:MenuLL_DMS(LL_DMS)</strong> <strong>SETTINGS:MenuLL_DMS(MenuGroup, RootMenu, LL_DMS)</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<h3>Parameter</h3> <h3>Parameters</h3>
<ul> <ul>
<li> <li>
<p><code><em> MenuGroup </em></code>: </p>
</li>
<li>
<p><code><em> RootMenu </em></code>: </p>
</li>
<li>
<p><code><em> LL_DMS </em></code>: </p> <p><code><em> LL_DMS </em></code>: </p>
</li> </li>
@@ -1018,17 +1021,27 @@ true if metric.</p>
<dt> <dt>
<a id="#(SETTINGS).MenuMGRS_Accuracy" > <a id="#(SETTINGS).MenuMGRS_Accuracy" >
<strong>SETTINGS:MenuMGRS_Accuracy(MGRS_Accuracy)</strong> <strong>SETTINGS:MenuMGRS_Accuracy(MenuGroup, RootMenu, MGRS_Accuracy)</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<h3>Parameter</h3> <h3>Parameters</h3>
<ul> <ul>
<li> <li>
<p><code><em> MenuGroup </em></code>: </p>
</li>
<li>
<p><code><em> RootMenu </em></code>: </p>
</li>
<li>
<p><code><em> MGRS_Accuracy </em></code>: </p> <p><code><em> MGRS_Accuracy </em></code>: </p>
</li> </li>
@@ -1039,17 +1052,27 @@ true if metric.</p>
<dt> <dt>
<a id="#(SETTINGS).MenuMWSystem" > <a id="#(SETTINGS).MenuMWSystem" >
<strong>SETTINGS:MenuMWSystem(MW)</strong> <strong>SETTINGS:MenuMWSystem(MenuGroup, RootMenu, MW)</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<h3>Parameter</h3> <h3>Parameters</h3>
<ul> <ul>
<li> <li>
<p><code><em> MenuGroup </em></code>: </p>
</li>
<li>
<p><code><em> RootMenu </em></code>: </p>
</li>
<li>
<p><code><em> MW </em></code>: </p> <p><code><em> MW </em></code>: </p>
</li> </li>
@@ -1059,21 +1082,7 @@ true if metric.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em></em> <em>#boolean</em>
<a id="#(SETTINGS).MenuText" >
<strong>SETTINGS.MenuText</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(SETTINGS).Metric" > <a id="#(SETTINGS).Metric" >
<strong>SETTINGS.Metric</strong> <strong>SETTINGS.Metric</strong>
</a> </a>
@@ -1082,20 +1091,6 @@ true if metric.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(SETTINGS).Metrics" >
<strong>SETTINGS.Metrics</strong>
</a>
</dt>
<dd>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@@ -1172,8 +1167,8 @@ true if metric.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(SETTINGS).SetA2A_BRA" > <a id="#(SETTINGS).SetA2A_BRAA" >
<strong>SETTINGS:SetA2A_BRA()</strong> <strong>SETTINGS:SetA2A_BRAA()</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
@@ -1208,8 +1203,8 @@ true if metric.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(SETTINGS).SetA2G_BRA" > <a id="#(SETTINGS).SetA2G_BR" >
<strong>SETTINGS:SetA2G_BRA()</strong> <strong>SETTINGS:SetA2G_BR()</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
@@ -1403,7 +1398,7 @@ true if metric.</p>
<dt> <dt>
<a id="#(SETTINGS).SetSystemMenu" > <a id="#(SETTINGS).SetSystemMenu" >
<strong>SETTINGS:SetSystemMenu(RootMenu, MenuText)</strong> <strong>SETTINGS:SetSystemMenu(MenuGroup, RootMenu)</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
@@ -1414,12 +1409,12 @@ true if metric.</p>
<ul> <ul>
<li> <li>
<p><code><em> RootMenu </em></code>: </p> <p><code><em> MenuGroup </em></code>: </p>
</li> </li>
<li> <li>
<p><code><em> MenuText </em></code>: </p> <p><code><em> RootMenu </em></code>: </p>
</li> </li>
</ul> </ul>
@@ -1428,20 +1423,6 @@ true if metric.</p>
<p><em><a href="##(SETTINGS)">#SETTINGS</a>:</em></p> <p><em><a href="##(SETTINGS)">#SETTINGS</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(SETTINGS).SettingsMenu" >
<strong>SETTINGS.SettingsMenu</strong>
</a>
</dt>
<dd>
</dd> </dd>
</dl> </dl>

View File

@@ -822,6 +822,12 @@ and any spaces before and after the resulting name are removed.</p>
<td class="name" nowrap="nowrap"><a href="##(SPAWN)._TranslateRotate">SPAWN:_TranslateRotate(SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle)</a></td> <td class="name" nowrap="nowrap"><a href="##(SPAWN)._TranslateRotate">SPAWN:_TranslateRotate(SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle)</a></td>
<td class="summary"> <td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(SPAWN).uncontrolled">SPAWN.uncontrolled</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
</table> </table>
@@ -2726,9 +2732,6 @@ when nothing was spawned.</p>
<p> Overwrite unit names by default with group name.</p>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@@ -3147,7 +3150,7 @@ Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 )
<p> Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned.</p> <p> When the first Spawn executes, all the Groups need to be made visible before start.</p>
</dd> </dd>
</dl> </dl>
@@ -3727,6 +3730,20 @@ True = Continue Scheduler</p>
</li> </li>
</ul> </ul>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(SPAWN).uncontrolled" >
<strong>SPAWN.uncontrolled</strong>
</a>
</dt>
<dd>
</dd> </dd>
</dl> </dl>

View File

@@ -436,6 +436,7 @@ ptional) The name of the new static.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em>#number</em>
<a id="#(SPAWNSTATIC).SpawnIndex" > <a id="#(SPAWNSTATIC).SpawnIndex" >
<strong>SPAWNSTATIC.SpawnIndex</strong> <strong>SPAWNSTATIC.SpawnIndex</strong>
</a> </a>

View File

@@ -765,6 +765,7 @@ true if it is lasing</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em></em>
<a id="#(SPOT).ScheduleID" > <a id="#(SPOT).ScheduleID" >
<strong>SPOT.ScheduleID</strong> <strong>SPOT.ScheduleID</strong>
</a> </a>
@@ -778,6 +779,7 @@ true if it is lasing</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em></em>
<a id="#(SPOT).SpotIR" > <a id="#(SPOT).SpotIR" >
<strong>SPOT.SpotIR</strong> <strong>SPOT.SpotIR</strong>
</a> </a>
@@ -791,6 +793,7 @@ true if it is lasing</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em></em>
<a id="#(SPOT).SpotLaser" > <a id="#(SPOT).SpotLaser" >
<strong>SPOT.SpotLaser</strong> <strong>SPOT.SpotLaser</strong>
</a> </a>
@@ -804,6 +807,7 @@ true if it is lasing</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em></em>
<a id="#(SPOT).Target" > <a id="#(SPOT).Target" >
<strong>SPOT.Target</strong> <strong>SPOT.Target</strong>
</a> </a>

View File

@@ -244,6 +244,12 @@ based on the tasking capabilities defined in <a href="Task.html##(TASK)">Task#TA
<td class="name" nowrap="nowrap"><a href="##(TASK_A2A_ENGAGE).New">TASK_A2A_ENGAGE:New(Mission, SetGroup, TaskName, TargetSetUnit, TaskBriefing)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2A_ENGAGE).New">TASK_A2A_ENGAGE:New(Mission, SetGroup, TaskName, TargetSetUnit, TaskBriefing)</a></td>
<td class="summary"> <td class="summary">
<p>Instantiates a new TASK<em>A2A</em>ENGAGE.</p> <p>Instantiates a new TASK<em>A2A</em>ENGAGE.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2A_ENGAGE).ReportOrder">TASK_A2A_ENGAGE:ReportOrder(ReportGroup)</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -284,6 +290,12 @@ based on the tasking capabilities defined in <a href="Task.html##(TASK)">Task#TA
<td class="name" nowrap="nowrap"><a href="##(TASK_A2A_INTERCEPT).New">TASK_A2A_INTERCEPT:New(Mission, SetGroup, TaskName, TargetSetUnit, TaskBriefing)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2A_INTERCEPT).New">TASK_A2A_INTERCEPT:New(Mission, SetGroup, TaskName, TargetSetUnit, TaskBriefing)</a></td>
<td class="summary"> <td class="summary">
<p>Instantiates a new TASK<em>A2A</em>INTERCEPT.</p> <p>Instantiates a new TASK<em>A2A</em>INTERCEPT.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2A_INTERCEPT).ReportOrder">TASK_A2A_INTERCEPT:ReportOrder(ReportGroup)</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -324,6 +336,12 @@ based on the tasking capabilities defined in <a href="Task.html##(TASK)">Task#TA
<td class="name" nowrap="nowrap"><a href="##(TASK_A2A_SWEEP).New">TASK_A2A_SWEEP:New(Mission, SetGroup, TaskName, TargetSetUnit, TaskBriefing)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2A_SWEEP).New">TASK_A2A_SWEEP:New(Mission, SetGroup, TaskName, TargetSetUnit, TaskBriefing)</a></td>
<td class="summary"> <td class="summary">
<p>Instantiates a new TASK<em>A2A</em>SWEEP.</p> <p>Instantiates a new TASK<em>A2A</em>SWEEP.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2A_SWEEP).ReportOrder">TASK_A2A_SWEEP:ReportOrder(ReportGroup)</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -907,6 +925,27 @@ self</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(TASK_A2A_ENGAGE).ReportOrder" >
<strong>TASK_A2A_ENGAGE:ReportOrder(ReportGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> ReportGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK_A2A_ENGAGE).SetScoreOnFail" > <a id="#(TASK_A2A_ENGAGE).SetScoreOnFail" >
<strong>TASK_A2A_ENGAGE:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</strong> <strong>TASK_A2A_ENGAGE:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</strong>
</a> </a>
@@ -1126,6 +1165,27 @@ The briefing of the task.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(TASK_A2A_INTERCEPT).ReportOrder" >
<strong>TASK_A2A_INTERCEPT:ReportOrder(ReportGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> ReportGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK_A2A_INTERCEPT).SetScoreOnFail" > <a id="#(TASK_A2A_INTERCEPT).SetScoreOnFail" >
<strong>TASK_A2A_INTERCEPT:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</strong> <strong>TASK_A2A_INTERCEPT:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</strong>
</a> </a>
@@ -1345,6 +1405,27 @@ self</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(TASK_A2A_SWEEP).ReportOrder" >
<strong>TASK_A2A_SWEEP:ReportOrder(ReportGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> ReportGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK_A2A_SWEEP).SetScoreOnFail" > <a id="#(TASK_A2A_SWEEP).SetScoreOnFail" >
<strong>TASK_A2A_SWEEP:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</strong> <strong>TASK_A2A_SWEEP:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</strong>
</a> </a>

View File

@@ -244,24 +244,30 @@ based on the tasking capabilities defined in <a href="Task.html##(TASK)">Task#TA
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_BAI).New">TASK_A2G_BAI:New(Mission, SetGroup, TaskName, TargetSetUnit, TaskBriefing)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2G_BAI).New">TASK_A2G_BAI:New(Mission, SetGroup, TaskName, TargetSetUnit, TaskBriefing)</a></td>
<td class="summary"> <td class="summary">
<p>Instantiates a new TASK<em>A2G</em>BAI.</p> <p>Instantiates a new TASK<em>A2G</em>BAI.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_BAI).ReportOrder">TASK_A2G_BAI:ReportOrder(ReportGroup)</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_BAI).SetScoreOnFail">TASK_A2G_BAI:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2G_BAI).SetScoreOnFail">TASK_A2G_BAI:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</a></td>
<td class="summary"> <td class="summary">
<p>Set a penalty when the A2A attack has failed.</p> <p>Set a penalty when the A2G attack has failed.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_BAI).SetScoreOnProgress">TASK_A2G_BAI:SetScoreOnProgress(PlayerName, Score, TaskUnit)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2G_BAI).SetScoreOnProgress">TASK_A2G_BAI:SetScoreOnProgress(PlayerName, Score, TaskUnit)</a></td>
<td class="summary"> <td class="summary">
<p>Set a score when a target in scope of the A2A attack, has been destroyed .</p> <p>Set a score when a target in scope of the A2G attack, has been destroyed .</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_BAI).SetScoreOnSuccess">TASK_A2G_BAI:SetScoreOnSuccess(PlayerName, Score, TaskUnit)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2G_BAI).SetScoreOnSuccess">TASK_A2G_BAI:SetScoreOnSuccess(PlayerName, Score, TaskUnit)</a></td>
<td class="summary"> <td class="summary">
<p>Set a score when all the targets in scope of the A2A attack, have been destroyed.</p> <p>Set a score when all the targets in scope of the A2G attack, have been destroyed.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -284,24 +290,30 @@ based on the tasking capabilities defined in <a href="Task.html##(TASK)">Task#TA
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_CAS).New">TASK_A2G_CAS:New(Mission, SetGroup, TaskName, TargetSetUnit, TaskBriefing)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2G_CAS).New">TASK_A2G_CAS:New(Mission, SetGroup, TaskName, TargetSetUnit, TaskBriefing)</a></td>
<td class="summary"> <td class="summary">
<p>Instantiates a new TASK<em>A2G</em>CAS.</p> <p>Instantiates a new TASK<em>A2G</em>CAS.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_CAS).ReportOrder">TASK_A2G_CAS:ReportOrder(ReportGroup)</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_CAS).SetScoreOnFail">TASK_A2G_CAS:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2G_CAS).SetScoreOnFail">TASK_A2G_CAS:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</a></td>
<td class="summary"> <td class="summary">
<p>Set a penalty when the A2A attack has failed.</p> <p>Set a penalty when the A2G attack has failed.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_CAS).SetScoreOnProgress">TASK_A2G_CAS:SetScoreOnProgress(PlayerName, Score, TaskUnit)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2G_CAS).SetScoreOnProgress">TASK_A2G_CAS:SetScoreOnProgress(PlayerName, Score, TaskUnit)</a></td>
<td class="summary"> <td class="summary">
<p>Set a score when a target in scope of the A2A attack, has been destroyed .</p> <p>Set a score when a target in scope of the A2G attack, has been destroyed .</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_CAS).SetScoreOnSuccess">TASK_A2G_CAS:SetScoreOnSuccess(PlayerName, Score, TaskUnit)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2G_CAS).SetScoreOnSuccess">TASK_A2G_CAS:SetScoreOnSuccess(PlayerName, Score, TaskUnit)</a></td>
<td class="summary"> <td class="summary">
<p>Set a score when all the targets in scope of the A2A attack, have been destroyed.</p> <p>Set a score when all the targets in scope of the A2G attack, have been destroyed.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -324,24 +336,30 @@ based on the tasking capabilities defined in <a href="Task.html##(TASK)">Task#TA
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_SEAD).New">TASK_A2G_SEAD:New(Mission, SetGroup, TaskName, TargetSetUnit, TaskBriefing)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2G_SEAD).New">TASK_A2G_SEAD:New(Mission, SetGroup, TaskName, TargetSetUnit, TaskBriefing)</a></td>
<td class="summary"> <td class="summary">
<p>Instantiates a new TASK<em>A2G</em>SEAD.</p> <p>Instantiates a new TASK<em>A2G</em>SEAD.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_SEAD).ReportOrder">TASK_A2G_SEAD:ReportOrder(ReportGroup)</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_SEAD).SetScoreOnFail">TASK_A2G_SEAD:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2G_SEAD).SetScoreOnFail">TASK_A2G_SEAD:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</a></td>
<td class="summary"> <td class="summary">
<p>Set a penalty when the A2A attack has failed.</p> <p>Set a penalty when the A2G attack has failed.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_SEAD).SetScoreOnProgress">TASK_A2G_SEAD:SetScoreOnProgress(PlayerName, Score, TaskUnit)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2G_SEAD).SetScoreOnProgress">TASK_A2G_SEAD:SetScoreOnProgress(PlayerName, Score, TaskUnit)</a></td>
<td class="summary"> <td class="summary">
<p>Set a score when a target in scope of the A2A attack, has been destroyed .</p> <p>Set a score when a target in scope of the A2G attack, has been destroyed .</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_A2G_SEAD).SetScoreOnSuccess">TASK_A2G_SEAD:SetScoreOnSuccess(PlayerName, Score, TaskUnit)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_A2G_SEAD).SetScoreOnSuccess">TASK_A2G_SEAD:SetScoreOnSuccess(PlayerName, Score, TaskUnit)</a></td>
<td class="summary"> <td class="summary">
<p>Set a score when all the targets in scope of the A2A attack, have been destroyed.</p> <p>Set a score when all the targets in scope of the A2G attack, have been destroyed.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -887,13 +905,34 @@ self</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(TASK_A2G_BAI).ReportOrder" >
<strong>TASK_A2G_BAI:ReportOrder(ReportGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> ReportGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK_A2G_BAI).SetScoreOnFail" > <a id="#(TASK_A2G_BAI).SetScoreOnFail" >
<strong>TASK_A2G_BAI:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</strong> <strong>TASK_A2G_BAI:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<p>Set a penalty when the A2A attack has failed.</p> <p>Set a penalty when the A2G attack has failed.</p>
<h3>Parameters</h3> <h3>Parameters</h3>
<ul> <ul>
@@ -931,7 +970,7 @@ The penalty in points, must be a negative value!</p>
</dt> </dt>
<dd> <dd>
<p>Set a score when a target in scope of the A2A attack, has been destroyed .</p> <p>Set a score when a target in scope of the A2G attack, has been destroyed .</p>
<h3>Parameters</h3> <h3>Parameters</h3>
<ul> <ul>
@@ -969,7 +1008,7 @@ The score in points to be granted when task process has been achieved.</p>
</dt> </dt>
<dd> <dd>
<p>Set a score when all the targets in scope of the A2A attack, have been destroyed.</p> <p>Set a score when all the targets in scope of the A2G attack, have been destroyed.</p>
<h3>Parameters</h3> <h3>Parameters</h3>
<ul> <ul>
@@ -1106,13 +1145,34 @@ self</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(TASK_A2G_CAS).ReportOrder" >
<strong>TASK_A2G_CAS:ReportOrder(ReportGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> ReportGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK_A2G_CAS).SetScoreOnFail" > <a id="#(TASK_A2G_CAS).SetScoreOnFail" >
<strong>TASK_A2G_CAS:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</strong> <strong>TASK_A2G_CAS:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<p>Set a penalty when the A2A attack has failed.</p> <p>Set a penalty when the A2G attack has failed.</p>
<h3>Parameters</h3> <h3>Parameters</h3>
<ul> <ul>
@@ -1150,7 +1210,7 @@ The penalty in points, must be a negative value!</p>
</dt> </dt>
<dd> <dd>
<p>Set a score when a target in scope of the A2A attack, has been destroyed .</p> <p>Set a score when a target in scope of the A2G attack, has been destroyed .</p>
<h3>Parameters</h3> <h3>Parameters</h3>
<ul> <ul>
@@ -1188,7 +1248,7 @@ The score in points to be granted when task process has been achieved.</p>
</dt> </dt>
<dd> <dd>
<p>Set a score when all the targets in scope of the A2A attack, have been destroyed.</p> <p>Set a score when all the targets in scope of the A2G attack, have been destroyed.</p>
<h3>Parameters</h3> <h3>Parameters</h3>
<ul> <ul>
@@ -1325,13 +1385,34 @@ self</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(TASK_A2G_SEAD).ReportOrder" >
<strong>TASK_A2G_SEAD:ReportOrder(ReportGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> ReportGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK_A2G_SEAD).SetScoreOnFail" > <a id="#(TASK_A2G_SEAD).SetScoreOnFail" >
<strong>TASK_A2G_SEAD:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</strong> <strong>TASK_A2G_SEAD:SetScoreOnFail(PlayerName, Penalty, TaskUnit)</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
<p>Set a penalty when the A2A attack has failed.</p> <p>Set a penalty when the A2G attack has failed.</p>
<h3>Parameters</h3> <h3>Parameters</h3>
<ul> <ul>
@@ -1369,7 +1450,7 @@ The penalty in points, must be a negative value!</p>
</dt> </dt>
<dd> <dd>
<p>Set a score when a target in scope of the A2A attack, has been destroyed .</p> <p>Set a score when a target in scope of the A2G attack, has been destroyed .</p>
<h3>Parameters</h3> <h3>Parameters</h3>
<ul> <ul>
@@ -1407,7 +1488,7 @@ The score in points to be granted when task process has been achieved.</p>
</dt> </dt>
<dd> <dd>
<p>Set a score when all the targets in scope of the A2A attack, have been destroyed.</p> <p>Set a score when all the targets in scope of the A2G attack, have been destroyed.</p>
<h3>Parameters</h3> <h3>Parameters</h3>
<ul> <ul>

View File

@@ -177,6 +177,18 @@ and various dedicated deployment zones.</p>
<td class="name" nowrap="nowrap"><a href="##(TASK_CARGO).AddDeployZone">TASK_CARGO:AddDeployZone(DeployZone, TaskUnit)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_CARGO).AddDeployZone">TASK_CARGO:AddDeployZone(DeployZone, TaskUnit)</a></td>
<td class="summary"> <td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_CARGO).CargoItemCount">TASK_CARGO.CargoItemCount</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_CARGO).CargoLimit">TASK_CARGO.CargoLimit</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -237,6 +249,12 @@ and various dedicated deployment zones.</p>
<td class="name" nowrap="nowrap"><a href="##(TASK_CARGO).SetCargo">TASK_CARGO.SetCargo</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_CARGO).SetCargo">TASK_CARGO.SetCargo</a></td>
<td class="summary"> <td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_CARGO).SetCargoLimit">TASK_CARGO:SetCargoLimit(CargoLimit)</a></td>
<td class="summary">
<p>Set a limit on the amount of cargo items that can be loaded into the Carriers.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -355,6 +373,12 @@ and various dedicated deployment zones.</p>
<td class="name" nowrap="nowrap"><a href="##(TASK_CARGO_TRANSPORT).OnBeforeCargoPickedUp">TASK_CARGO_TRANSPORT:OnBeforeCargoPickedUp(From, Event, To, TaskUnit, Cargo)</a></td> <td class="name" nowrap="nowrap"><a href="##(TASK_CARGO_TRANSPORT).OnBeforeCargoPickedUp">TASK_CARGO_TRANSPORT:OnBeforeCargoPickedUp(From, Event, To, TaskUnit, Cargo)</a></td>
<td class="summary"> <td class="summary">
<p>OnBefore Transition Handler for Event CargoPickedUp.</p> <p>OnBefore Transition Handler for Event CargoPickedUp.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_CARGO_TRANSPORT).ReportOrder">TASK_CARGO_TRANSPORT:ReportOrder(ReportGroup)</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -542,7 +566,6 @@ based on the tasking capabilities defined in <a href="Task.html##(TASK)">Task#TA
<dl class="function"> <dl class="function">
<dt> <dt>
<em></em>
<a id="#(FSM_PROCESS).DeployZone" > <a id="#(FSM_PROCESS).DeployZone" >
<strong>FSM_PROCESS.DeployZone</strong> <strong>FSM_PROCESS.DeployZone</strong>
</a> </a>
@@ -585,6 +608,37 @@ based on the tasking capabilities defined in <a href="Task.html##(TASK)">Task#TA
<p><em><a href="##(TASK_CARGO)">#TASK_CARGO</a>:</em></p> <p><em><a href="##(TASK_CARGO)">#TASK_CARGO</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(TASK_CARGO).CargoItemCount" >
<strong>TASK_CARGO.CargoItemCount</strong>
</a>
</dt>
<dd>
<p> Map of Carriers having a cargo item count to check the cargo loading limits.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(TASK_CARGO).CargoLimit" >
<strong>TASK_CARGO.CargoLimit</strong>
</a>
</dt>
<dd>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@@ -807,6 +861,33 @@ self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK_CARGO).SetCargoLimit" >
<strong>TASK_CARGO:SetCargoLimit(CargoLimit)</strong>
</a>
</dt>
<dd>
<p>Set a limit on the amount of cargo items that can be loaded into the Carriers.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> CargoLimit </em></code>:
Specifies a number of cargo items that can be loaded in the helicopter.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(TASK_CARGO)">#TASK_CARGO</a>:</em></p>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@@ -1455,6 +1536,27 @@ Return false to cancel Transition.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(TASK_CARGO_TRANSPORT).ReportOrder" >
<strong>TASK_CARGO_TRANSPORT:ReportOrder(ReportGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> ReportGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK_CARGO_TRANSPORT).__CargoDeployed" > <a id="#(TASK_CARGO_TRANSPORT).__CargoDeployed" >
<strong>TASK_CARGO_TRANSPORT:__CargoDeployed(Delay, TaskUnit, Cargo, DeployZone)</strong> <strong>TASK_CARGO_TRANSPORT:__CargoDeployed(Delay, TaskUnit, Cargo, DeployZone)</strong>
</a> </a>

View File

@@ -152,36 +152,6 @@
<td class="name" nowrap="nowrap"><a href="##(UNIT).FindByName">UNIT:FindByName(UnitName)</a></td> <td class="name" nowrap="nowrap"><a href="##(UNIT).FindByName">UNIT:FindByName(UnitName)</a></td>
<td class="summary"> <td class="summary">
<p>Find a UNIT in the _DATABASE using the name of an existing DCS Unit.</p> <p>Find a UNIT in the _DATABASE using the name of an existing DCS Unit.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(UNIT).Flare">UNIT:Flare(FlareColor)</a></td>
<td class="summary">
<p>Signal a flare at the position of the UNIT.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(UNIT).FlareGreen">UNIT:FlareGreen()</a></td>
<td class="summary">
<p>Signal a green flare at the position of the UNIT.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(UNIT).FlareRed">UNIT:FlareRed()</a></td>
<td class="summary">
<p>Signal a red flare at the position of the UNIT.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(UNIT).FlareWhite">UNIT:FlareWhite()</a></td>
<td class="summary">
<p>Signal a white flare at the position of the UNIT.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(UNIT).FlareYellow">UNIT:FlareYellow()</a></td>
<td class="summary">
<p>Signal a yellow flare at the position of the UNIT.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -390,42 +360,6 @@
<td class="name" nowrap="nowrap"><a href="##(UNIT).ResetEvents">UNIT:ResetEvents()</a></td> <td class="name" nowrap="nowrap"><a href="##(UNIT).ResetEvents">UNIT:ResetEvents()</a></td>
<td class="summary"> <td class="summary">
<p>Reset the subscriptions.</p> <p>Reset the subscriptions.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(UNIT).Smoke">UNIT:Smoke(SmokeColor, Range)</a></td>
<td class="summary">
<p>Smoke the UNIT.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(UNIT).SmokeBlue">UNIT:SmokeBlue()</a></td>
<td class="summary">
<p>Smoke the UNIT Blue.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(UNIT).SmokeGreen">UNIT:SmokeGreen()</a></td>
<td class="summary">
<p>Smoke the UNIT Green.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(UNIT).SmokeOrange">UNIT:SmokeOrange()</a></td>
<td class="summary">
<p>Smoke the UNIT Orange.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(UNIT).SmokeRed">UNIT:SmokeRed()</a></td>
<td class="summary">
<p>Smoke the UNIT Red.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(UNIT).SmokeWhite">UNIT:SmokeWhite()</a></td>
<td class="summary">
<p>Smoke the UNIT White.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -609,79 +543,6 @@ self</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(UNIT).Flare" >
<strong>UNIT:Flare(FlareColor)</strong>
</a>
</dt>
<dd>
<p>Signal a flare at the position of the UNIT.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Utilities.Utils.html##(FLARECOLOR)">Utilities.Utils#FLARECOLOR</a> FlareColor </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(UNIT).FlareGreen" >
<strong>UNIT:FlareGreen()</strong>
</a>
</dt>
<dd>
<p>Signal a green flare at the position of the UNIT.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(UNIT).FlareRed" >
<strong>UNIT:FlareRed()</strong>
</a>
</dt>
<dd>
<p>Signal a red flare at the position of the UNIT.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(UNIT).FlareWhite" >
<strong>UNIT:FlareWhite()</strong>
</a>
</dt>
<dd>
<p>Signal a white flare at the position of the UNIT.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(UNIT).FlareYellow" >
<strong>UNIT:FlareYellow()</strong>
</a>
</dt>
<dd>
<p>Signal a yellow flare at the position of the UNIT.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(UNIT).GetAmmo" > <a id="#(UNIT).GetAmmo" >
<strong>UNIT:GetAmmo()</strong> <strong>UNIT:GetAmmo()</strong>
</a> </a>
@@ -1631,97 +1492,6 @@ The name of the DCS unit.</p>
<p><em><a href="##(UNIT)">#UNIT</a>:</em></p> <p><em><a href="##(UNIT)">#UNIT</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(UNIT).Smoke" >
<strong>UNIT:Smoke(SmokeColor, Range)</strong>
</a>
</dt>
<dd>
<p>Smoke the UNIT.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em> SmokeColor </em></code>: </p>
</li>
<li>
<p><code><em> Range </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(UNIT).SmokeBlue" >
<strong>UNIT:SmokeBlue()</strong>
</a>
</dt>
<dd>
<p>Smoke the UNIT Blue.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(UNIT).SmokeGreen" >
<strong>UNIT:SmokeGreen()</strong>
</a>
</dt>
<dd>
<p>Smoke the UNIT Green.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(UNIT).SmokeOrange" >
<strong>UNIT:SmokeOrange()</strong>
</a>
</dt>
<dd>
<p>Smoke the UNIT Orange.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(UNIT).SmokeRed" >
<strong>UNIT:SmokeRed()</strong>
</a>
</dt>
<dd>
<p>Smoke the UNIT Red.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(UNIT).SmokeWhite" >
<strong>UNIT:SmokeWhite()</strong>
</a>
</dt>
<dd>
<p>Smoke the UNIT White.</p>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">