Compare commits

..

10 Commits

Author SHA1 Message Date
FlightControl_Master
9965d8284e * Modified :SpawnInZone(), :SpawnFromVec2(), :SpawnFromStatic(), :SpawnFromUnit() specifying an optional MinHeight and MaxHeight as a parameter, so that the mission designer can choose if he wanna use the group height set in the mission editor for spawn or a random height specified by the parameters. 2017-10-26 18:59:24 +02:00
FlightControl_Master
a35e95a7dc Hotfix 2.2.3 2017-10-10 11:53:54 +02:00
FlightControl_Master
58e3e5293e Hotfix 2.2.3
* Fixed a problem in AI_A2A_DISPATCHER, patrols didn't work anymore due
to a stupid mistake in a variable rename (sorry). Fixed now.
2017-10-10 11:52:30 +02:00
FlightControl_Master
305cb3092e Patch 2.2.2: Updated Scoring
* Disabled the logic of Fratricide until a DCS bug gets fixed by ED.
There is no workaround possible. Units containing a player cannot be
destroyed using Unit:destroy() API in multi player when the player is
seated in a Unit from a Client connected PC to the Server.
* By default, hit messages are disabled. They can be enabled by using
SCORING:SetMessagesHit().
2017-10-09 13:10:42 +02:00
FlightControl_Master
7c26e88345 Hotfix 2.2.1
- Changed ROTPassiveDefenses of AI_A2A to ROTEvadeFire
2017-10-06 12:41:31 +02:00
FlightControl_Master
36a9295197 Static versions 2017-10-03 13:52:26 +02:00
FlightControl_Master
ca77e2d029 Merge remote-tracking branch 'refs/remotes/origin/master' into Release-2.2.0
# Conflicts:
#	Moose Mission Setup/Moose.lua
2017-10-03 13:51:42 +02:00
FlightControl_Master
93d5327811 Support 2 moose.lua versions, one stripped and one with comments. 2017-10-03 13:49:56 +02:00
FlightControl_Master
d5e9c47bad Updated pictures 2017-10-03 11:40:43 +02:00
FlightControl_Master
e62523786c Static Moose.lua 2017-10-03 11:07:47 +02:00
35 changed files with 85613 additions and 473 deletions

View File

@@ -4,7 +4,7 @@
--
-- ===
--
-- AI CAP classes makes AI Controllables execute a Combat Air Patrol.
-- AI CAP classes makes AI Groups execute a Combat Air Patrol.
--
-- There are the following types of CAP classes defined:
--
@@ -34,7 +34,7 @@
--- # AI_A2A_CAP class, extends @{AI_CAP#AI_PATROL_ZONE}
--
-- The AI_A2A_CAP class implements the core functions to patrol a @{Zone} by an AI @{Controllable} or @{Group}
-- The AI_A2A_CAP class implements the core functions to patrol a @{Zone} by an AI @{Group} or @{Group}
-- and automatically engage any airborne enemies that are within a certain range or within a certain zone.
--
-- ![Process](..\Presentations\AI_CAP\Dia3.JPG)
@@ -120,20 +120,20 @@ AI_A2A_CAP = {
--- Creates a new AI_A2A_CAP object
-- @param #AI_A2A_CAP self
-- @param Wrapper.Group#GROUP AIGroup
-- @param Wrapper.Group#GROUP AICap
-- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed.
-- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
-- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol.
-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h.
-- @param Dcs.DCSTypes#Speed EngageMinSpeed The minimum speed of the @{Controllable} in km/h when engaging a target.
-- @param Dcs.DCSTypes#Speed EngageMaxSpeed The maximum speed of the @{Controllable} in km/h when engaging a target.
-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Group} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Group} in km/h.
-- @param Dcs.DCSTypes#Speed EngageMinSpeed The minimum speed of the @{Group} in km/h when engaging a target.
-- @param Dcs.DCSTypes#Speed EngageMaxSpeed The maximum speed of the @{Group} in km/h when engaging a target.
-- @param Dcs.DCSTypes#AltitudeType PatrolAltType The altitude type ("RADIO"=="AGL", "BARO"=="ASL"). Defaults to RADIO
-- @return #AI_A2A_CAP
function AI_A2A_CAP:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageMinSpeed, EngageMaxSpeed, PatrolAltType )
function AI_A2A_CAP:New( AICap, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageMinSpeed, EngageMaxSpeed, PatrolAltType )
-- Inherits from BASE
local self = BASE:Inherit( self, AI_A2A_PATROL:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, PatrolAltType ) ) -- #AI_A2A_CAP
local self = BASE:Inherit( self, AI_A2A_PATROL:New( AICap, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, PatrolAltType ) ) -- #AI_A2A_CAP
self.Accomplished = false
self.Engaging = false
@@ -146,7 +146,7 @@ function AI_A2A_CAP:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeiling
--- OnBefore Transition Handler for Event Engage.
-- @function [parent=#AI_A2A_CAP] OnBeforeEngage
-- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -155,7 +155,7 @@ function AI_A2A_CAP:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeiling
--- OnAfter Transition Handler for Event Engage.
-- @function [parent=#AI_A2A_CAP] OnAfterEngage
-- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -172,7 +172,7 @@ function AI_A2A_CAP:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeiling
--- OnLeave Transition Handler for State Engaging.
-- @function [parent=#AI_A2A_CAP] OnLeaveEngaging
-- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -181,7 +181,7 @@ function AI_A2A_CAP:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeiling
--- OnEnter Transition Handler for State Engaging.
-- @function [parent=#AI_A2A_CAP] OnEnterEngaging
-- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -191,7 +191,7 @@ function AI_A2A_CAP:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeiling
--- OnBefore Transition Handler for Event Fired.
-- @function [parent=#AI_A2A_CAP] OnBeforeFired
-- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -200,7 +200,7 @@ function AI_A2A_CAP:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeiling
--- OnAfter Transition Handler for Event Fired.
-- @function [parent=#AI_A2A_CAP] OnAfterFired
-- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -219,7 +219,7 @@ function AI_A2A_CAP:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeiling
--- OnBefore Transition Handler for Event Destroy.
-- @function [parent=#AI_A2A_CAP] OnBeforeDestroy
-- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -228,7 +228,7 @@ function AI_A2A_CAP:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeiling
--- OnAfter Transition Handler for Event Destroy.
-- @function [parent=#AI_A2A_CAP] OnAfterDestroy
-- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -248,7 +248,7 @@ function AI_A2A_CAP:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeiling
--- OnBefore Transition Handler for Event Abort.
-- @function [parent=#AI_A2A_CAP] OnBeforeAbort
-- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -257,7 +257,7 @@ function AI_A2A_CAP:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeiling
--- OnAfter Transition Handler for Event Abort.
-- @function [parent=#AI_A2A_CAP] OnAfterAbort
-- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -276,7 +276,7 @@ function AI_A2A_CAP:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeiling
--- OnBefore Transition Handler for Event Accomplish.
-- @function [parent=#AI_A2A_CAP] OnBeforeAccomplish
-- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -285,7 +285,7 @@ function AI_A2A_CAP:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeiling
--- OnAfter Transition Handler for Event Accomplish.
-- @function [parent=#AI_A2A_CAP] OnAfterAccomplish
-- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -304,13 +304,13 @@ end
--- onafter State Transition for Event Patrol.
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AI Group managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The AI Group managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_CAP:onafterStart( AIGroup, From, Event, To )
function AI_A2A_CAP:onafterStart( AICap, From, Event, To )
AIGroup:HandleEvent( EVENTS.Takeoff, nil, self )
AICap:HandleEvent( EVENTS.Takeoff, nil, self )
end
@@ -344,36 +344,36 @@ end
--- onafter State Transition for Event Patrol.
-- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE AIGroup The AI Group managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The AI Group managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_CAP:onafterPatrol( AIGroup, From, Event, To )
function AI_A2A_CAP:onafterPatrol( AICap, From, Event, To )
-- Call the parent Start event handler
self:GetParent(self).onafterPatrol( self, AIGroup, From, Event, To )
self:GetParent(self).onafterPatrol( self, AICap, From, Event, To )
self:HandleEvent( EVENTS.Dead )
end
-- todo: need to fix this global function
--- @param Wrapper.Group#GROUP AIGroup
function AI_A2A_CAP.AttackRoute( AIGroup, Fsm )
--- @param Wrapper.Group#GROUP AICap
function AI_A2A_CAP.AttackRoute( AICap, Fsm )
AIGroup:F( { "AI_A2A_CAP.AttackRoute:", AIGroup:GetName() } )
AICap:F( { "AI_A2A_CAP.AttackRoute:", AICap:GetName() } )
if AIGroup:IsAlive() then
if AICap:IsAlive() then
Fsm:__Engage( 0.5 )
end
end
--- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE AIGroup The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_CAP:onbeforeEngage( AIGroup, From, Event, To )
function AI_A2A_CAP:onbeforeEngage( AICap, From, Event, To )
if self.Accomplished == true then
return false
@@ -381,24 +381,24 @@ function AI_A2A_CAP:onbeforeEngage( AIGroup, From, Event, To )
end
--- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE AIGroup The AI Group managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The AI Group managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_CAP:onafterAbort( AIGroup, From, Event, To )
AIGroup:ClearTasks()
function AI_A2A_CAP:onafterAbort( AICap, From, Event, To )
AICap:ClearTasks()
self:__Route( 0.5 )
end
--- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE AIGroup The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The AICap Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_CAP:onafterEngage( AIGroup, From, Event, To, AttackSetUnit )
function AI_A2A_CAP:onafterEngage( AICap, From, Event, To, AttackSetUnit )
self:F( { AIGroup, From, Event, To, AttackSetUnit} )
self:F( { AICap, From, Event, To, AttackSetUnit} )
self.AttackSetUnit = AttackSetUnit or self.AttackSetUnit -- Core.Set#SET_UNIT
@@ -406,12 +406,12 @@ function AI_A2A_CAP:onafterEngage( AIGroup, From, Event, To, AttackSetUnit )
if FirstAttackUnit and FirstAttackUnit:IsAlive() then -- If there is no attacker anymore, stop the engagement.
if AIGroup:IsAlive() then
if AICap:IsAlive() then
local EngageRoute = {}
--- Calculate the target route point.
local CurrentCoord = AIGroup:GetCoordinate()
local CurrentCoord = AICap:GetCoordinate()
local ToTargetCoord = self.AttackSetUnit:GetFirst():GetCoordinate()
local ToTargetSpeed = math.random( self.EngageMinSpeed, self.EngageMaxSpeed )
local ToInterceptAngle = CurrentCoord:GetAngleDegrees( CurrentCoord:GetDirectionVec3( ToTargetCoord ) )
@@ -437,7 +437,7 @@ function AI_A2A_CAP:onafterEngage( AIGroup, From, Event, To, AttackSetUnit )
local AttackUnit = AttackUnit -- Wrapper.Unit#UNIT
self:T( { "Attacking Unit:", AttackUnit:GetName(), AttackUnit:IsAlive(), AttackUnit:IsAir() } )
if AttackUnit:IsAlive() and AttackUnit:IsAir() then
AttackTasks[#AttackTasks+1] = AIGroup:TaskAttackUnit( AttackUnit )
AttackTasks[#AttackTasks+1] = AICap:TaskAttackUnit( AttackUnit )
end
end
@@ -445,14 +445,14 @@ function AI_A2A_CAP:onafterEngage( AIGroup, From, Event, To, AttackSetUnit )
self:E("No targets found -> Going back to Patrolling")
self:__Abort( 0.5 )
else
AIGroup:OptionROEOpenFire()
AIGroup:OptionROTPassiveDefense()
AICap:OptionROEOpenFire()
AICap:OptionROTEvadeFire()
AttackTasks[#AttackTasks+1] = AIGroup:TaskFunction( "AI_A2A_CAP.AttackRoute", self )
EngageRoute[#EngageRoute].task = AIGroup:TaskCombo( AttackTasks )
AttackTasks[#AttackTasks+1] = AICap:TaskFunction( "AI_A2A_CAP.AttackRoute", self )
EngageRoute[#EngageRoute].task = AICap:TaskCombo( AttackTasks )
end
AIGroup:Route( EngageRoute, 0.5 )
AICap:Route( EngageRoute, 0.5 )
end
else
self:E("No targets found -> Going back to Patrolling")
@@ -461,22 +461,22 @@ function AI_A2A_CAP:onafterEngage( AIGroup, From, Event, To, AttackSetUnit )
end
--- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_CAP:onafterAccomplish( Controllable, From, Event, To )
function AI_A2A_CAP:onafterAccomplish( AICap, From, Event, To )
self.Accomplished = true
self:SetDetectionOff()
end
--- @param #AI_A2A_CAP self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AICap The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
-- @param Core.Event#EVENTDATA EventData
function AI_A2A_CAP:onafterDestroy( Controllable, From, Event, To, EventData )
function AI_A2A_CAP:onafterDestroy( AICap, From, Event, To, EventData )
if EventData.IniUnit then
self.AttackUnits[EventData.IniUnit] = nil
@@ -495,12 +495,12 @@ function AI_A2A_CAP:OnEventDead( EventData )
end
end
--- @param Wrapper.Group#GROUP AIGroup
function AI_A2A_CAP.Resume( AIGroup )
--- @param Wrapper.Group#GROUP AICap
function AI_A2A_CAP.Resume( AICap )
AIGroup:F( { "AI_A2A_CAP.Resume:", AIGroup:GetName() } )
if AIGroup:IsAlive() then
local _AI_A2A = AIGroup:GetState( AIGroup, "AI_A2A" ) -- #AI_A2A
AICap:F( { "AI_A2A_CAP.Resume:", AICap:GetName() } )
if AICap:IsAlive() then
local _AI_A2A = AICap:GetState( AICap, "AI_A2A" ) -- #AI_A2A
_AI_A2A:__Reset( 1 )
_AI_A2A:__Route( 5 )
end

View File

@@ -117,12 +117,12 @@ AI_A2A_GCI = {
--- Creates a new AI_A2A_GCI object
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup
-- @param Wrapper.Group#GROUP AIIntercept
-- @return #AI_A2A_GCI
function AI_A2A_GCI:New( AIGroup, EngageMinSpeed, EngageMaxSpeed )
function AI_A2A_GCI:New( AIIntercept, EngageMinSpeed, EngageMaxSpeed )
-- Inherits from BASE
local self = BASE:Inherit( self, AI_A2A:New( AIGroup ) ) -- #AI_A2A_GCI
local self = BASE:Inherit( self, AI_A2A:New( AIIntercept ) ) -- #AI_A2A_GCI
self.Accomplished = false
self.Engaging = false
@@ -139,7 +139,7 @@ function AI_A2A_GCI:New( AIGroup, EngageMinSpeed, EngageMaxSpeed )
--- OnBefore Transition Handler for Event Engage.
-- @function [parent=#AI_A2A_GCI] OnBeforeEngage
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -148,7 +148,7 @@ function AI_A2A_GCI:New( AIGroup, EngageMinSpeed, EngageMaxSpeed )
--- OnAfter Transition Handler for Event Engage.
-- @function [parent=#AI_A2A_GCI] OnAfterEngage
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -165,7 +165,7 @@ function AI_A2A_GCI:New( AIGroup, EngageMinSpeed, EngageMaxSpeed )
--- OnLeave Transition Handler for State Engaging.
-- @function [parent=#AI_A2A_GCI] OnLeaveEngaging
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -174,7 +174,7 @@ function AI_A2A_GCI:New( AIGroup, EngageMinSpeed, EngageMaxSpeed )
--- OnEnter Transition Handler for State Engaging.
-- @function [parent=#AI_A2A_GCI] OnEnterEngaging
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -184,7 +184,7 @@ function AI_A2A_GCI:New( AIGroup, EngageMinSpeed, EngageMaxSpeed )
--- OnBefore Transition Handler for Event Fired.
-- @function [parent=#AI_A2A_GCI] OnBeforeFired
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -193,7 +193,7 @@ function AI_A2A_GCI:New( AIGroup, EngageMinSpeed, EngageMaxSpeed )
--- OnAfter Transition Handler for Event Fired.
-- @function [parent=#AI_A2A_GCI] OnAfterFired
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -212,7 +212,7 @@ function AI_A2A_GCI:New( AIGroup, EngageMinSpeed, EngageMaxSpeed )
--- OnBefore Transition Handler for Event Destroy.
-- @function [parent=#AI_A2A_GCI] OnBeforeDestroy
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -221,7 +221,7 @@ function AI_A2A_GCI:New( AIGroup, EngageMinSpeed, EngageMaxSpeed )
--- OnAfter Transition Handler for Event Destroy.
-- @function [parent=#AI_A2A_GCI] OnAfterDestroy
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -241,7 +241,7 @@ function AI_A2A_GCI:New( AIGroup, EngageMinSpeed, EngageMaxSpeed )
--- OnBefore Transition Handler for Event Abort.
-- @function [parent=#AI_A2A_GCI] OnBeforeAbort
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -250,7 +250,7 @@ function AI_A2A_GCI:New( AIGroup, EngageMinSpeed, EngageMaxSpeed )
--- OnAfter Transition Handler for Event Abort.
-- @function [parent=#AI_A2A_GCI] OnAfterAbort
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -269,7 +269,7 @@ function AI_A2A_GCI:New( AIGroup, EngageMinSpeed, EngageMaxSpeed )
--- OnBefore Transition Handler for Event Accomplish.
-- @function [parent=#AI_A2A_GCI] OnBeforeAccomplish
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -278,7 +278,7 @@ function AI_A2A_GCI:New( AIGroup, EngageMinSpeed, EngageMaxSpeed )
--- OnAfter Transition Handler for Event Accomplish.
-- @function [parent=#AI_A2A_GCI] OnAfterAccomplish
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -297,13 +297,13 @@ end
--- onafter State Transition for Event Patrol.
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AI Group managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The AI Group managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_GCI:onafterStart( AIGroup, From, Event, To )
function AI_A2A_GCI:onafterStart( AIIntercept, From, Event, To )
AIGroup:HandleEvent( EVENTS.Takeoff, nil, self )
AIIntercept:HandleEvent( EVENTS.Takeoff, nil, self )
end
@@ -311,11 +311,11 @@ end
--- onafter State Transition for Event Patrol.
-- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AI Group managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The AI Group managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_GCI:onafterEngage( AIGroup, From, Event, To )
function AI_A2A_GCI:onafterEngage( AIIntercept, From, Event, To )
self:HandleEvent( EVENTS.Dead )
@@ -324,24 +324,24 @@ end
-- todo: need to fix this global function
--- @param Wrapper.Group#GROUP AIControllable
function AI_A2A_GCI.InterceptRoute( AIGroup, Fsm )
function AI_A2A_GCI.InterceptRoute( AIIntercept, Fsm )
AIGroup:F( { "AI_A2A_GCI.InterceptRoute:", AIGroup:GetName() } )
AIIntercept:F( { "AI_A2A_GCI.InterceptRoute:", AIIntercept:GetName() } )
if AIGroup:IsAlive() then
if AIIntercept:IsAlive() then
Fsm:__Engage( 0.5 )
--local Task = AIGroup:TaskOrbitCircle( 4000, 400 )
--AIGroup:SetTask( Task )
--local Task = AIIntercept:TaskOrbitCircle( 4000, 400 )
--AIIntercept:SetTask( Task )
end
end
--- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_GCI:onbeforeEngage( AIGroup, From, Event, To )
function AI_A2A_GCI:onbeforeEngage( AIIntercept, From, Event, To )
if self.Accomplished == true then
return false
@@ -349,25 +349,25 @@ function AI_A2A_GCI:onbeforeEngage( AIGroup, From, Event, To )
end
--- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AI Group managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The AI Group managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_GCI:onafterAbort( AIGroup, From, Event, To )
AIGroup:ClearTasks()
function AI_A2A_GCI:onafterAbort( AIIntercept, From, Event, To )
AIIntercept:ClearTasks()
self:Return()
self:__RTB( 0.5 )
end
--- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The GroupGroup managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_GCI:onafterEngage( AIGroup, From, Event, To, AttackSetUnit )
function AI_A2A_GCI:onafterEngage( AIIntercept, From, Event, To, AttackSetUnit )
self:F( { AIGroup, From, Event, To, AttackSetUnit} )
self:F( { AIIntercept, From, Event, To, AttackSetUnit} )
self.AttackSetUnit = AttackSetUnit or self.AttackSetUnit -- Core.Set#SET_UNIT
@@ -375,15 +375,15 @@ function AI_A2A_GCI:onafterEngage( AIGroup, From, Event, To, AttackSetUnit )
if FirstAttackUnit and FirstAttackUnit:IsAlive() then
if AIGroup:IsAlive() then
if AIIntercept:IsAlive() then
local EngageRoute = {}
local CurrentCoord = AIGroup:GetCoordinate()
local CurrentCoord = AIIntercept:GetCoordinate()
--- Calculate the target route point.
local CurrentCoord = AIGroup:GetCoordinate()
local CurrentCoord = AIIntercept:GetCoordinate()
local ToTargetCoord = self.AttackSetUnit:GetFirst():GetCoordinate()
self:SetTargetDistance( ToTargetCoord ) -- For RTB status check
@@ -412,7 +412,7 @@ function AI_A2A_GCI:onafterEngage( AIGroup, From, Event, To, AttackSetUnit )
local AttackUnit = AttackUnit -- Wrapper.Unit#UNIT
if AttackUnit:IsAlive() and AttackUnit:IsAir() then
self:T( { "Intercepting Unit:", AttackUnit:GetName(), AttackUnit:IsAlive(), AttackUnit:IsAir() } )
AttackTasks[#AttackTasks+1] = AIGroup:TaskAttackUnit( AttackUnit )
AttackTasks[#AttackTasks+1] = AIIntercept:TaskAttackUnit( AttackUnit )
end
end
@@ -421,14 +421,14 @@ function AI_A2A_GCI:onafterEngage( AIGroup, From, Event, To, AttackSetUnit )
self:Return()
self:__RTB( 0.5 )
else
AIGroup:OptionROEOpenFire()
AIGroup:OptionROTPassiveDefense()
AIIntercept:OptionROEOpenFire()
AIIntercept:OptionROTEvadeFire()
AttackTasks[#AttackTasks+1] = AIGroup:TaskFunction( "AI_A2A_GCI.InterceptRoute", self )
EngageRoute[#EngageRoute].task = AIGroup:TaskCombo( AttackTasks )
AttackTasks[#AttackTasks+1] = AIIntercept:TaskFunction( "AI_A2A_GCI.InterceptRoute", self )
EngageRoute[#EngageRoute].task = AIIntercept:TaskCombo( AttackTasks )
end
AIGroup:Route( EngageRoute, 0.5 )
AIIntercept:Route( EngageRoute, 0.5 )
end
else
@@ -439,22 +439,22 @@ function AI_A2A_GCI:onafterEngage( AIGroup, From, Event, To, AttackSetUnit )
end
--- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_GCI:onafterAccomplish( AIGroup, From, Event, To )
function AI_A2A_GCI:onafterAccomplish( AIIntercept, From, Event, To )
self.Accomplished = true
self:SetDetectionOff()
end
--- @param #AI_A2A_GCI self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIIntercept The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
-- @param Core.Event#EVENTDATA EventData
function AI_A2A_GCI:onafterDestroy( AIGroup, From, Event, To, EventData )
function AI_A2A_GCI:onafterDestroy( AIIntercept, From, Event, To, EventData )
if EventData.IniUnit then
self.AttackUnits[EventData.IniUnit] = nil

View File

@@ -4,7 +4,7 @@
--
-- ===
--
-- AI PATROL classes makes AI Controllables execute an Patrol.
-- AI PATROL classes makes AI Groups execute an Patrol.
--
-- There are the following types of PATROL classes defined:
--
@@ -44,7 +44,7 @@
--- # AI_A2A_PATROL class, extends @{Fsm#FSM_CONTROLLABLE}
--
-- The AI_A2A_PATROL class implements the core functions to patrol a @{Zone} by an AI @{Controllable} or @{Group}.
-- The AI_A2A_PATROL class implements the core functions to patrol a @{Zone} by an AI @{Group} or @{Group}.
--
-- ![Process](..\Presentations\AI_PATROL\Dia3.JPG)
--
@@ -139,7 +139,7 @@
--
-- ## 7. Manage "damage" behaviour of the AI in the AI_A2A_PATROL
--
-- When the AI is damaged, it is required that a new AIControllable is started. However, damage cannon be foreseen early on.
-- When the AI is damaged, it is required that a new Patrol is started. However, damage cannon be foreseen early on.
-- Therefore, when the damage treshold is reached, the AI will return immediately to the home base (RTB).
-- Use the method @{#AI_A2A_PATROL.ManageDamage}() to have this proces in place.
--
@@ -152,23 +152,23 @@ AI_A2A_PATROL = {
--- Creates a new AI_A2A_PATROL object
-- @param #AI_A2A_PATROL self
-- @param Wrapper.Group#GROUP AIGroup
-- @param Wrapper.Group#GROUP AIPatrol
-- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed.
-- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
-- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol.
-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Group} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Group} in km/h.
-- @param Dcs.DCSTypes#AltitudeType PatrolAltType The altitude type ("RADIO"=="AGL", "BARO"=="ASL"). Defaults to RADIO
-- @return #AI_A2A_PATROL self
-- @usage
-- -- Define a new AI_A2A_PATROL Object. This PatrolArea will patrol an AIControllable within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h.
-- -- Define a new AI_A2A_PATROL Object. This PatrolArea will patrol a Group within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h.
-- PatrolZone = ZONE:New( 'PatrolZone' )
-- PatrolSpawn = SPAWN:New( 'Patrol Group' )
-- PatrolArea = AI_A2A_PATROL:New( PatrolZone, 3000, 6000, 600, 900 )
function AI_A2A_PATROL:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, PatrolAltType )
function AI_A2A_PATROL:New( AIPatrol, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, PatrolAltType )
-- Inherits from BASE
local self = BASE:Inherit( self, AI_A2A:New( AIGroup ) ) -- #AI_A2A_PATROL
local self = BASE:Inherit( self, AI_A2A:New( AIPatrol ) ) -- #AI_A2A_PATROL
self.PatrolZone = PatrolZone
self.PatrolFloorAltitude = PatrolFloorAltitude
@@ -184,7 +184,7 @@ function AI_A2A_PATROL:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeil
--- OnBefore Transition Handler for Event Patrol.
-- @function [parent=#AI_A2A_PATROL] OnBeforePatrol
-- @param #AI_A2A_PATROL self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIPatrol The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -193,7 +193,7 @@ function AI_A2A_PATROL:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeil
--- OnAfter Transition Handler for Event Patrol.
-- @function [parent=#AI_A2A_PATROL] OnAfterPatrol
-- @param #AI_A2A_PATROL self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIPatrol The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -210,7 +210,7 @@ function AI_A2A_PATROL:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeil
--- OnLeave Transition Handler for State Patrolling.
-- @function [parent=#AI_A2A_PATROL] OnLeavePatrolling
-- @param #AI_A2A_PATROL self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIPatrol The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -219,7 +219,7 @@ function AI_A2A_PATROL:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeil
--- OnEnter Transition Handler for State Patrolling.
-- @function [parent=#AI_A2A_PATROL] OnEnterPatrolling
-- @param #AI_A2A_PATROL self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIPatrol The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -229,7 +229,7 @@ function AI_A2A_PATROL:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeil
--- OnBefore Transition Handler for Event Route.
-- @function [parent=#AI_A2A_PATROL] OnBeforeRoute
-- @param #AI_A2A_PATROL self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIPatrol The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -238,7 +238,7 @@ function AI_A2A_PATROL:New( AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeil
--- OnAfter Transition Handler for Event Route.
-- @function [parent=#AI_A2A_PATROL] OnAfterRoute
-- @param #AI_A2A_PATROL self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIPatrol The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
@@ -264,8 +264,8 @@ end
--- Sets (modifies) the minimum and maximum speed of the patrol.
-- @param #AI_A2A_PATROL self
-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Group} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Group} in km/h.
-- @return #AI_A2A_PATROL self
function AI_A2A_PATROL:SetSpeed( PatrolMinSpeed, PatrolMaxSpeed )
self:F2( { PatrolMinSpeed, PatrolMaxSpeed } )
@@ -292,18 +292,18 @@ end
--- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings.
-- @param #AI_A2A_PATROL self
-- @return #AI_A2A_PATROL self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param Wrapper.Group#GROUP AIPatrol The Group Object managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_PATROL:onafterPatrol( Controllable, From, Event, To )
function AI_A2A_PATROL:onafterPatrol( AIPatrol, From, Event, To )
self:F2()
self:ClearTargetDistance()
self:__Route( 1 )
self.Controllable:OnReSpawn(
AIPatrol:OnReSpawn(
function( PatrolGroup )
self:E( "ReSpawn" )
self:__Reset( 1 )
@@ -314,14 +314,14 @@ end
--- @param Wrapper.Group#GROUP AIGroup
-- This statis method is called from the route path within the last task at the last waaypoint of the Controllable.
-- Note that this method is required, as triggers the next route when patrolling for the Controllable.
function AI_A2A_PATROL.PatrolRoute( AIGroup, Fsm )
--- @param Wrapper.Group#GROUP AIPatrol
-- This statis method is called from the route path within the last task at the last waaypoint of the AIPatrol.
-- Note that this method is required, as triggers the next route when patrolling for the AIPatrol.
function AI_A2A_PATROL.PatrolRoute( AIPatrol, Fsm )
AIGroup:F( { "AI_A2A_PATROL.PatrolRoute:", AIGroup:GetName() } )
AIPatrol:F( { "AI_A2A_PATROL.PatrolRoute:", AIPatrol:GetName() } )
if AIGroup:IsAlive() then
if AIPatrol:IsAlive() then
Fsm:Route()
end
@@ -330,11 +330,11 @@ end
--- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings.
-- @param #AI_A2A_PATROL self
-- @param Wrapper.Group#GROUP AIGroup The AIGroup managed by the FSM.
-- @param Wrapper.Group#GROUP AIPatrol The Group managed by the FSM.
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
function AI_A2A_PATROL:onafterRoute( AIGroup, From, Event, To )
function AI_A2A_PATROL:onafterRoute( AIPatrol, From, Event, To )
self:F2()
@@ -344,13 +344,13 @@ function AI_A2A_PATROL:onafterRoute( AIGroup, From, Event, To )
end
if AIGroup:IsAlive() then
if AIPatrol:IsAlive() then
local PatrolRoute = {}
--- Calculate the target route point.
local CurrentCoord = AIGroup:GetCoordinate()
local CurrentCoord = AIPatrol:GetCoordinate()
local ToTargetCoord = self.PatrolZone:GetRandomPointVec2()
ToTargetCoord:SetAlt( math.random( self.PatrolFloorAltitude, self.PatrolCeilingAltitude ) )
@@ -371,23 +371,23 @@ function AI_A2A_PATROL:onafterRoute( AIGroup, From, Event, To )
PatrolRoute[#PatrolRoute+1] = ToPatrolRoutePoint
local Tasks = {}
Tasks[#Tasks+1] = AIGroup:TaskFunction( "AI_A2A_PATROL.PatrolRoute", self )
PatrolRoute[#PatrolRoute].task = AIGroup:TaskCombo( Tasks )
Tasks[#Tasks+1] = AIPatrol:TaskFunction( "AI_A2A_PATROL.PatrolRoute", self )
PatrolRoute[#PatrolRoute].task = AIPatrol:TaskCombo( Tasks )
AIGroup:OptionROEReturnFire()
AIGroup:OptionROTPassiveDefense()
AIPatrol:OptionROEReturnFire()
AIPatrol:OptionROTEvadeFire()
AIGroup:Route( PatrolRoute, 0.5 )
AIPatrol:Route( PatrolRoute, 0.5 )
end
end
--- @param Wrapper.Group#GROUP AIGroup
function AI_A2A_PATROL.Resume( AIGroup )
--- @param Wrapper.Group#GROUP AIPatrol
function AI_A2A_PATROL.Resume( AIPatrol )
AIGroup:F( { "AI_A2A_PATROL.Resume:", AIGroup:GetName() } )
if AIGroup:IsAlive() then
local _AI_A2A = AIGroup:GetState( AIGroup, "AI_A2A" ) -- #AI_A2A
AIPatrol:F( { "AI_A2A_PATROL.Resume:", AIPatrol:GetName() } )
if AIPatrol:IsAlive() then
local _AI_A2A = AIPatrol:GetState( AIPatrol, "AI_A2A" ) -- #AI_A2A
_AI_A2A:__Reset( 1 )
_AI_A2A:__Route( 5 )
end

View File

@@ -479,7 +479,7 @@ function AI_CAP_ZONE:onafterEngage( Controllable, From, Event, To )
EngageRoute[#EngageRoute+1] = ToPatrolRoutePoint
Controllable:OptionROEOpenFire()
Controllable:OptionROTPassiveDefense()
Controllable:OptionROTEvadeFire()
local AttackTasks = {}

View File

@@ -958,7 +958,7 @@ function AI_FORMATION:onenterFollowing( FollowGroupSet ) --R2.1
-- @param Wrapper.Unit#UNIT ClientUnit
function( FollowGroup, Formation, ClientUnit, CT1, CV1, CT2, CV2 )
FollowGroup:OptionROTPassiveDefense()
FollowGroup:OptionROTEvadeFire()
FollowGroup:OptionROEReturnFire()
local GroupUnit = FollowGroup:GetUnit( 1 )

View File

@@ -102,7 +102,9 @@
-- A mission has goals and achievements. The scoring system provides an API to set additional scores when a goal or achievement event happens.
-- Use the method @{#SCORING.AddGoalScore}() to add a score for a Player at any time in your mission.
--
-- ## 1.5) Configure fratricide level.
-- ## 1.5) (Decommissioned) Configure fratricide level.
--
-- **This functionality is decomissioned until the DCS bug concerning Unit:destroy() not being functional in multi player for player units has been fixed by ED**.
--
-- When a player commits too much damage to friendlies, his penalty score will reach a certain level.
-- Use the method @{#SCORING.SetFratricide}() to define the level when a player gets kicked.
@@ -258,7 +260,7 @@ function SCORING:New( GameName )
-- Configure Messages
self:SetMessagesToAll()
self:SetMessagesHit( true )
self:SetMessagesHit( false )
self:SetMessagesDestroy( true )
self:SetMessagesScore( true )
self:SetMessagesZone( true )
@@ -616,6 +618,7 @@ function SCORING:_AddPlayerFromUnit( UnitData )
UnitName, _SCORINGCoalition[UnitCoalition], _SCORINGCategory[UnitCategory], UnitData:GetTypeName() )
end
end
self.Players[PlayerName].UnitName = UnitName
self.Players[PlayerName].UnitCoalition = UnitCoalition
self.Players[PlayerName].UnitCategory = UnitCategory
@@ -624,6 +627,8 @@ function SCORING:_AddPlayerFromUnit( UnitData )
self.Players[PlayerName].ThreatLevel = UnitThreatLevel
self.Players[PlayerName].ThreatType = UnitThreatType
-- TODO: DCS bug concerning Units with skill level client don't get destroyed in multi player. This logic is deactivated until this bug gets fixed.
--[[
if self.Players[PlayerName].Penalty > self.Fratricide * 0.50 then
if self.Players[PlayerName].PenaltyWarning < 1 then
MESSAGE:NewType( self.DisplayMessagePrefix .. "Player '" .. PlayerName .. "': WARNING! If you continue to commit FRATRICIDE and have a PENALTY score higher than " .. self.Fratricide .. ", you will be COURT MARTIALED and DISMISSED from this mission! \nYour total penalty is: " .. self.Players[PlayerName].Penalty,
@@ -639,6 +644,7 @@ function SCORING:_AddPlayerFromUnit( UnitData )
):ToAll()
UnitData:GetGroup():Destroy()
end
--]]
end
end

View File

@@ -1156,6 +1156,8 @@ function SPAWN:SpawnFromVec3( Vec3, SpawnIndex )
if SpawnTemplate then
self:T( { "Current point of ", self.SpawnTemplatePrefix, Vec3 } )
local TemplateHeight = SpawnTemplate.route.points[1].alt
-- Translate the position of the Group Template to the Vec3.
for UnitID = 1, #SpawnTemplate.units do
@@ -1169,16 +1171,17 @@ function SPAWN:SpawnFromVec3( Vec3, SpawnIndex )
local TY = Vec3.z + ( SY - BY )
SpawnTemplate.units[UnitID].x = TX
SpawnTemplate.units[UnitID].y = TY
SpawnTemplate.units[UnitID].alt = Vec3.y
SpawnTemplate.units[UnitID].alt = Vec3.y or TemplateHeight
self:T( 'After Translation SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y )
end
SpawnTemplate.route.points[1].x = Vec3.x
SpawnTemplate.route.points[1].y = Vec3.z
SpawnTemplate.route.points[1].alt = Vec3.y
SpawnTemplate.route.points[1].alt = Vec3.y or TemplateHeight
SpawnTemplate.x = Vec3.x
SpawnTemplate.y = Vec3.z
SpawnTemplate.alt = Vec3.y or TemplateHeight
return self:SpawnWithIndex( self.SpawnIndex )
end
@@ -1193,14 +1196,31 @@ end
-- You can use the returned group to further define the route to be followed.
-- @param #SPAWN self
-- @param Dcs.DCSTypes#Vec2 Vec2 The Vec2 coordinates where to spawn the group.
-- @param #number MinHeight (optional) The minimum height to spawn an airborne group into the zone.
-- @param #number MaxHeight (optional) The maximum height to spawn an airborne group into the zone.
-- @param #number SpawnIndex (optional) The index which group to spawn within the given zone.
-- @return Wrapper.Group#GROUP that was spawned.
-- @return #nil Nothing was spawned.
function SPAWN:SpawnFromVec2( Vec2, SpawnIndex )
self:F( { self.SpawnTemplatePrefix, Vec2, SpawnIndex } )
-- @usage
--
-- local SpawnVec2 = ZONE:New( ZoneName ):GetVec2()
--
-- -- Spawn at the zone center position at the height specified in the ME of the group template!
-- SpawnAirplanes:SpawnFromVec2( SpawnVec2 )
--
-- -- Spawn from the static position at the height randomized between 2000 and 4000 meters.
-- SpawnAirplanes:SpawnFromVec2( SpawnVec2, 2000, 4000 )
--
function SPAWN:SpawnFromVec2( Vec2, MinHeight, MaxHeight, SpawnIndex )
self:F( { self.SpawnTemplatePrefix, self.SpawnIndex, Vec2, MinHeight, MaxHeight, SpawnIndex } )
local PointVec2 = POINT_VEC2:NewFromVec2( Vec2 )
return self:SpawnFromVec3( PointVec2:GetVec3(), SpawnIndex )
local Height = nil
if MinHeight and MaxHeight then
Height = math.random( MinHeight, MaxHeight)
end
return self:SpawnFromVec3( { x = Vec2.x, y = Height, z = Vec2.y }, SpawnIndex ) -- y can be nil. In this case, spawn on the ground for vehicles, and in the template altitude for air.
end
@@ -1209,14 +1229,26 @@ end
-- You can use the returned group to further define the route to be followed.
-- @param #SPAWN self
-- @param Wrapper.Unit#UNIT HostUnit The air or ground unit dropping or unloading the group.
-- @param #number MinHeight (optional) The minimum height to spawn an airborne group into the zone.
-- @param #number MaxHeight (optional) The maximum height to spawn an airborne group into the zone.
-- @param #number SpawnIndex (optional) The index which group to spawn within the given zone.
-- @return Wrapper.Group#GROUP that was spawned.
-- @return #nil Nothing was spawned.
function SPAWN:SpawnFromUnit( HostUnit, SpawnIndex )
self:F( { self.SpawnTemplatePrefix, HostUnit, SpawnIndex } )
-- @usage
--
-- local SpawnStatic = STATIC:FindByName( StaticName )
--
-- -- Spawn from the static position at the height specified in the ME of the group template!
-- SpawnAirplanes:SpawnFromUnit( SpawnStatic )
--
-- -- Spawn from the static position at the height randomized between 2000 and 4000 meters.
-- SpawnAirplanes:SpawnFromUnit( SpawnStatic, 2000, 4000 )
--
function SPAWN:SpawnFromUnit( HostUnit, MinHeight, MaxHeight, SpawnIndex )
self:F( { self.SpawnTemplatePrefix, HostUnit, MinHeight, MaxHeight, SpawnIndex } )
if HostUnit and HostUnit:IsAlive() ~= nil then -- and HostUnit:getUnit(1):inAir() == false then
return self:SpawnFromVec3( HostUnit:GetVec3(), SpawnIndex )
return self:SpawnFromVec2( HostUnit:GetVec2(), MinHeight, MaxHeight, SpawnIndex )
end
return nil
@@ -1226,14 +1258,26 @@ end
-- You can use the returned group to further define the route to be followed.
-- @param #SPAWN self
-- @param Wrapper.Static#STATIC HostStatic The static dropping or unloading the group.
-- @param #number MinHeight (optional) The minimum height to spawn an airborne group into the zone.
-- @param #number MaxHeight (optional) The maximum height to spawn an airborne group into the zone.
-- @param #number SpawnIndex (optional) The index which group to spawn within the given zone.
-- @return Wrapper.Group#GROUP that was spawned.
-- @return #nil Nothing was spawned.
function SPAWN:SpawnFromStatic( HostStatic, SpawnIndex )
self:F( { self.SpawnTemplatePrefix, HostStatic, SpawnIndex } )
-- @usage
--
-- local SpawnStatic = STATIC:FindByName( StaticName )
--
-- -- Spawn from the static position at the height specified in the ME of the group template!
-- SpawnAirplanes:SpawnFromStatic( SpawnStatic )
--
-- -- Spawn from the static position at the height randomized between 2000 and 4000 meters.
-- SpawnAirplanes:SpawnFromStatic( SpawnStatic, 2000, 4000 )
--
function SPAWN:SpawnFromStatic( HostStatic, MinHeight, MaxHeight, SpawnIndex )
self:F( { self.SpawnTemplatePrefix, HostStatic, MinHeight, MaxHeight, SpawnIndex } )
if HostStatic and HostStatic:IsAlive() then
return self:SpawnFromVec3( HostStatic:GetVec3(), SpawnIndex )
return self:SpawnFromVec2( HostStatic:GetVec2(), MinHeight, MaxHeight, SpawnIndex )
end
return nil
@@ -1246,17 +1290,38 @@ end
-- @param #SPAWN self
-- @param Core.Zone#ZONE Zone The zone where the group is to be spawned.
-- @param #boolean RandomizeGroup (optional) Randomization of the @{Group} position in the zone.
-- @param #number MinHeight (optional) The minimum height to spawn an airborne group into the zone.
-- @param #number MaxHeight (optional) The maximum height to spawn an airborne group into the zone.
-- @param #number SpawnIndex (optional) The index which group to spawn within the given zone.
-- @return Wrapper.Group#GROUP that was spawned.
-- @return #nil when nothing was spawned.
function SPAWN:SpawnInZone( Zone, RandomizeGroup, SpawnIndex )
self:F( { self.SpawnTemplatePrefix, Zone, RandomizeGroup, SpawnIndex } )
-- @usage
--
-- local SpawnZone = ZONE:New( ZoneName )
--
-- -- Spawn at the zone center position at the height specified in the ME of the group template!
-- SpawnAirplanes:SpawnFromZone( SpawnZone )
--
-- -- Spawn in the zone at a random position at the height specified in the Me of the group template.
-- SpawnAirplanes:SpawnFromZone( SpawnZone, true )
--
-- -- Spawn in the zone at a random position at the height randomized between 2000 and 4000 meters.
-- SpawnAirplanes:SpawnFromUnit( SpawnZone, true, 2000, 4000 )
--
-- -- Spawn at the zone center position at the height randomized between 2000 and 4000 meters.
-- SpawnAirplanes:SpawnFromUnit( SpawnZone, false, 2000, 4000 )
--
-- -- Spawn at the zone center position at the height randomized between 2000 and 4000 meters.
-- SpawnAirplanes:SpawnFromUnit( SpawnZone, nil, 2000, 4000 )
--
function SPAWN:SpawnInZone( Zone, RandomizeGroup, MinHeight, MaxHeight, SpawnIndex )
self:F( { self.SpawnTemplatePrefix, Zone, RandomizeGroup, MinHeight, MaxHeight, SpawnIndex } )
if Zone then
if RandomizeGroup then
return self:SpawnFromVec2( Zone:GetRandomVec2(), SpawnIndex )
return self:SpawnFromVec2( Zone:GetRandomVec2(), MinHeight, MaxHeight, SpawnIndex )
else
return self:SpawnFromVec2( Zone:GetVec2(), SpawnIndex )
return self:SpawnFromVec2( Zone:GetVec2(), MinHeight, MaxHeight, SpawnIndex )
end
end

File diff suppressed because it is too large Load Diff

26294
Moose Mission Setup/Moose_.lua Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
%~dp0luarocks\lua5.1.exe %1 %2 %3 %4 %5
call %~dp0LuaSrcDiet.bat --basic --opt-emptylines %5\Moose.lua
del %5\Moose.lua
copy %5\Moose_.lua %5\Moose.lua
del Moose_.lua
rem del %5\Moose.lua
rem copy %5\Moose_.lua %5\Moose.lua
rem del Moose_.lua

View File

@@ -112,7 +112,7 @@
<hr/>
<p>AI CAP classes makes AI Controllables execute a Combat Air Patrol.</p>
<p>AI CAP classes makes AI Groups execute a Combat Air Patrol.</p>
@@ -146,7 +146,7 @@
<td class="summary">
<h1>AI<em>A2A</em>CAP class, extends <a href="AI_CAP.html##(AI_PATROL_ZONE)">AI<em>CAP#AI</em>PATROL_ZONE</a></h1>
<p>The AI<em>A2A</em>CAP class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AI <a href="Controllable.html">Controllable</a> or <a href="Group.html">Group</a>
<p>The AI<em>A2A</em>CAP class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AI <a href="Group.html">Group</a> or <a href="Group.html">Group</a>
and automatically engage any airborne enemies that are within a certain range or within a certain zone.</p>
</td>
</tr>
@@ -172,7 +172,7 @@ and automatically engage any airborne enemies that are within a certain range or
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).AttackRoute">AI_A2A_CAP.AttackRoute(AIGroup, Fsm)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).AttackRoute">AI_A2A_CAP.AttackRoute(AICap, Fsm)</a></td>
<td class="summary">
</td>
@@ -232,73 +232,73 @@ and automatically engage any airborne enemies that are within a certain range or
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).New">AI_A2A_CAP:New(AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageMinSpeed, EngageMaxSpeed, PatrolAltType)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).New">AI_A2A_CAP:New(AICap, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageMinSpeed, EngageMaxSpeed, PatrolAltType)</a></td>
<td class="summary">
<p>Creates a new AI<em>A2A</em>CAP object</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnAfterAbort">AI_A2A_CAP:OnAfterAbort(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnAfterAbort">AI_A2A_CAP:OnAfterAbort(AICap, From, Event, To)</a></td>
<td class="summary">
<p>OnAfter Transition Handler for Event Abort.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnAfterAccomplish">AI_A2A_CAP:OnAfterAccomplish(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnAfterAccomplish">AI_A2A_CAP:OnAfterAccomplish(AICap, From, Event, To)</a></td>
<td class="summary">
<p>OnAfter Transition Handler for Event Accomplish.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnAfterDestroy">AI_A2A_CAP:OnAfterDestroy(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnAfterDestroy">AI_A2A_CAP:OnAfterDestroy(AICap, From, Event, To)</a></td>
<td class="summary">
<p>OnAfter Transition Handler for Event Destroy.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnAfterEngage">AI_A2A_CAP:OnAfterEngage(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnAfterEngage">AI_A2A_CAP:OnAfterEngage(AICap, From, Event, To)</a></td>
<td class="summary">
<p>OnAfter Transition Handler for Event Engage.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnAfterFired">AI_A2A_CAP:OnAfterFired(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnAfterFired">AI_A2A_CAP:OnAfterFired(AICap, From, Event, To)</a></td>
<td class="summary">
<p>OnAfter Transition Handler for Event Fired.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnBeforeAbort">AI_A2A_CAP:OnBeforeAbort(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnBeforeAbort">AI_A2A_CAP:OnBeforeAbort(AICap, From, Event, To)</a></td>
<td class="summary">
<p>OnBefore Transition Handler for Event Abort.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnBeforeAccomplish">AI_A2A_CAP:OnBeforeAccomplish(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnBeforeAccomplish">AI_A2A_CAP:OnBeforeAccomplish(AICap, From, Event, To)</a></td>
<td class="summary">
<p>OnBefore Transition Handler for Event Accomplish.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnBeforeDestroy">AI_A2A_CAP:OnBeforeDestroy(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnBeforeDestroy">AI_A2A_CAP:OnBeforeDestroy(AICap, From, Event, To)</a></td>
<td class="summary">
<p>OnBefore Transition Handler for Event Destroy.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnBeforeEngage">AI_A2A_CAP:OnBeforeEngage(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnBeforeEngage">AI_A2A_CAP:OnBeforeEngage(AICap, From, Event, To)</a></td>
<td class="summary">
<p>OnBefore Transition Handler for Event Engage.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnBeforeFired">AI_A2A_CAP:OnBeforeFired(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnBeforeFired">AI_A2A_CAP:OnBeforeFired(AICap, From, Event, To)</a></td>
<td class="summary">
<p>OnBefore Transition Handler for Event Fired.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnEnterEngaging">AI_A2A_CAP:OnEnterEngaging(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnEnterEngaging">AI_A2A_CAP:OnEnterEngaging(AICap, From, Event, To)</a></td>
<td class="summary">
<p>OnEnter Transition Handler for State Engaging.</p>
</td>
@@ -310,13 +310,13 @@ and automatically engage any airborne enemies that are within a certain range or
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnLeaveEngaging">AI_A2A_CAP:OnLeaveEngaging(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnLeaveEngaging">AI_A2A_CAP:OnLeaveEngaging(AICap, From, Event, To)</a></td>
<td class="summary">
<p>OnLeave Transition Handler for State Engaging.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).Resume">AI_A2A_CAP.Resume(AIGroup)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).Resume">AI_A2A_CAP.Resume(AICap)</a></td>
<td class="summary">
</td>
@@ -364,43 +364,43 @@ and automatically engage any airborne enemies that are within a certain range or
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onafterAbort">AI_A2A_CAP:onafterAbort(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onafterAbort">AI_A2A_CAP:onafterAbort(AICap, From, Event, To)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onafterAccomplish">AI_A2A_CAP:onafterAccomplish(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onafterAccomplish">AI_A2A_CAP:onafterAccomplish(AICap, From, Event, To)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onafterDestroy">AI_A2A_CAP:onafterDestroy(Controllable, From, Event, To, EventData)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onafterDestroy">AI_A2A_CAP:onafterDestroy(AICap, From, Event, To, EventData)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onafterEngage">AI_A2A_CAP:onafterEngage(AIGroup, From, Event, To, AttackSetUnit)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onafterEngage">AI_A2A_CAP:onafterEngage(AICap, From, Event, To, AttackSetUnit)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onafterPatrol">AI_A2A_CAP:onafterPatrol(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onafterPatrol">AI_A2A_CAP:onafterPatrol(AICap, From, Event, To)</a></td>
<td class="summary">
<p>onafter State Transition for Event Patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onafterStart">AI_A2A_CAP:onafterStart(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onafterStart">AI_A2A_CAP:onafterStart(AICap, From, Event, To)</a></td>
<td class="summary">
<p>onafter State Transition for Event Patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onbeforeEngage">AI_A2A_CAP:onbeforeEngage(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).onbeforeEngage">AI_A2A_CAP:onbeforeEngage(AICap, From, Event, To)</a></td>
<td class="summary">
</td>
@@ -420,7 +420,7 @@ and automatically engage any airborne enemies that are within a certain range or
<h1>AI<em>A2A</em>CAP class, extends <a href="AI_CAP.html##(AI_PATROL_ZONE)">AI<em>CAP#AI</em>PATROL_ZONE</a></h1>
<p>The AI<em>A2A</em>CAP class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AI <a href="Controllable.html">Controllable</a> or <a href="Group.html">Group</a>
<p>The AI<em>A2A</em>CAP class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AI <a href="Group.html">Group</a> or <a href="Group.html">Group</a>
and automatically engage any airborne enemies that are within a certain range or within a certain zone.</p>
@@ -560,7 +560,7 @@ Use the method <a href="AI_Cap.html##(AI_A2A_CAP).SetEngageZone">AI<em>Cap#AI</e
<dt>
<a id="#(AI_A2A_CAP).AttackRoute" >
<strong>AI_A2A_CAP.AttackRoute(AIGroup, Fsm)</strong>
<strong>AI_A2A_CAP.AttackRoute(AICap, Fsm)</strong>
</a>
</dt>
<dd>
@@ -571,7 +571,7 @@ Use the method <a href="AI_Cap.html##(AI_A2A_CAP).SetEngageZone">AI<em>Cap#AI</e
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>: </p>
</li>
<li>
@@ -709,7 +709,7 @@ Use the method <a href="AI_Cap.html##(AI_A2A_CAP).SetEngageZone">AI<em>Cap#AI</e
<dt>
<a id="#(AI_A2A_CAP).New" >
<strong>AI_A2A_CAP:New(AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageMinSpeed, EngageMaxSpeed, PatrolAltType)</strong>
<strong>AI_A2A_CAP:New(AICap, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageMinSpeed, EngageMaxSpeed, PatrolAltType)</strong>
</a>
</dt>
<dd>
@@ -720,7 +720,7 @@ Use the method <a href="AI_Cap.html##(AI_A2A_CAP).SetEngageZone">AI<em>Cap#AI</e
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>: </p>
</li>
<li>
@@ -744,25 +744,25 @@ The highest altitude in meters where to execute the patrol.</p>
<li>
<p><code><em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a> PatrolMinSpeed </em></code>:
The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
The minimum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
<li>
<p><code><em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a> PatrolMaxSpeed </em></code>:
The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
The maximum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
<li>
<p><code><em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a> EngageMinSpeed </em></code>:
The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h when engaging a target.</p>
The minimum speed of the <a href="Group.html">Group</a> in km/h when engaging a target.</p>
</li>
<li>
<p><code><em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a> EngageMaxSpeed </em></code>:
The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h when engaging a target.</p>
The maximum speed of the <a href="Group.html">Group</a> in km/h when engaging a target.</p>
</li>
<li>
@@ -783,7 +783,7 @@ The altitude type ("RADIO"=="AGL", "BARO"=="ASL"). Defaults to RADIO</p>
<dt>
<a id="#(AI_A2A_CAP).OnAfterAbort" >
<strong>AI_A2A_CAP:OnAfterAbort(Controllable, From, Event, To)</strong>
<strong>AI_A2A_CAP:OnAfterAbort(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -794,8 +794,8 @@ The altitude type ("RADIO"=="AGL", "BARO"=="ASL"). Defaults to RADIO</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -823,7 +823,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_CAP).OnAfterAccomplish" >
<strong>AI_A2A_CAP:OnAfterAccomplish(Controllable, From, Event, To)</strong>
<strong>AI_A2A_CAP:OnAfterAccomplish(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -834,8 +834,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -863,7 +863,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_CAP).OnAfterDestroy" >
<strong>AI_A2A_CAP:OnAfterDestroy(Controllable, From, Event, To)</strong>
<strong>AI_A2A_CAP:OnAfterDestroy(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -874,8 +874,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -903,7 +903,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_CAP).OnAfterEngage" >
<strong>AI_A2A_CAP:OnAfterEngage(Controllable, From, Event, To)</strong>
<strong>AI_A2A_CAP:OnAfterEngage(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -914,8 +914,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -943,7 +943,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_CAP).OnAfterFired" >
<strong>AI_A2A_CAP:OnAfterFired(Controllable, From, Event, To)</strong>
<strong>AI_A2A_CAP:OnAfterFired(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -954,8 +954,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -983,7 +983,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_CAP).OnBeforeAbort" >
<strong>AI_A2A_CAP:OnBeforeAbort(Controllable, From, Event, To)</strong>
<strong>AI_A2A_CAP:OnBeforeAbort(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -994,8 +994,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1028,7 +1028,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_CAP).OnBeforeAccomplish" >
<strong>AI_A2A_CAP:OnBeforeAccomplish(Controllable, From, Event, To)</strong>
<strong>AI_A2A_CAP:OnBeforeAccomplish(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1039,8 +1039,8 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1073,7 +1073,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_CAP).OnBeforeDestroy" >
<strong>AI_A2A_CAP:OnBeforeDestroy(Controllable, From, Event, To)</strong>
<strong>AI_A2A_CAP:OnBeforeDestroy(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1084,8 +1084,8 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1118,7 +1118,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_CAP).OnBeforeEngage" >
<strong>AI_A2A_CAP:OnBeforeEngage(Controllable, From, Event, To)</strong>
<strong>AI_A2A_CAP:OnBeforeEngage(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1129,8 +1129,8 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1163,7 +1163,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_CAP).OnBeforeFired" >
<strong>AI_A2A_CAP:OnBeforeFired(Controllable, From, Event, To)</strong>
<strong>AI_A2A_CAP:OnBeforeFired(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1174,8 +1174,8 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1208,7 +1208,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_CAP).OnEnterEngaging" >
<strong>AI_A2A_CAP:OnEnterEngaging(Controllable, From, Event, To)</strong>
<strong>AI_A2A_CAP:OnEnterEngaging(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1219,8 +1219,8 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1269,7 +1269,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_CAP).OnLeaveEngaging" >
<strong>AI_A2A_CAP:OnLeaveEngaging(Controllable, From, Event, To)</strong>
<strong>AI_A2A_CAP:OnLeaveEngaging(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1280,8 +1280,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1314,7 +1314,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_CAP).Resume" >
<strong>AI_A2A_CAP.Resume(AIGroup)</strong>
<strong>AI_A2A_CAP.Resume(AICap)</strong>
</a>
</dt>
<dd>
@@ -1325,7 +1325,7 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>: </p>
</li>
</ul>
@@ -1499,7 +1499,7 @@ The delay in seconds.</p>
<dt>
<a id="#(AI_A2A_CAP).onafterAbort" >
<strong>AI_A2A_CAP:onafterAbort(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_CAP:onafterAbort(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1510,7 +1510,7 @@ The delay in seconds.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> AIGroup </em></code>:
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The AI Group managed by the FSM.</p>
</li>
@@ -1539,7 +1539,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_CAP).onafterAccomplish" >
<strong>AI_A2A_CAP:onafterAccomplish(Controllable, From, Event, To)</strong>
<strong>AI_A2A_CAP:onafterAccomplish(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1550,8 +1550,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1579,7 +1579,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_CAP).onafterDestroy" >
<strong>AI_A2A_CAP:onafterDestroy(Controllable, From, Event, To, EventData)</strong>
<strong>AI_A2A_CAP:onafterDestroy(AICap, From, Event, To, EventData)</strong>
</a>
</dt>
<dd>
@@ -1590,8 +1590,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1624,7 +1624,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_CAP).onafterEngage" >
<strong>AI_A2A_CAP:onafterEngage(AIGroup, From, Event, To, AttackSetUnit)</strong>
<strong>AI_A2A_CAP:onafterEngage(AICap, From, Event, To, AttackSetUnit)</strong>
</a>
</dt>
<dd>
@@ -1635,8 +1635,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> AIGroup </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The AICap Object managed by the FSM.</p>
</li>
<li>
@@ -1669,7 +1669,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_CAP).onafterPatrol" >
<strong>AI_A2A_CAP:onafterPatrol(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_CAP:onafterPatrol(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1680,7 +1680,7 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> AIGroup </em></code>:
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The AI Group managed by the FSM.</p>
</li>
@@ -1709,7 +1709,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_CAP).onafterStart" >
<strong>AI_A2A_CAP:onafterStart(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_CAP:onafterStart(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1720,7 +1720,7 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The AI Group managed by the FSM.</p>
</li>
@@ -1749,7 +1749,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_CAP).onbeforeEngage" >
<strong>AI_A2A_CAP:onbeforeEngage(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_CAP:onbeforeEngage(AICap, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1760,8 +1760,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> AIGroup </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AICap </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>

View File

@@ -205,79 +205,79 @@
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).InterceptRoute">AI_A2A_GCI.InterceptRoute(AIControllable, AIGroup, Fsm)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).InterceptRoute">AI_A2A_GCI.InterceptRoute(AIControllable, AIIntercept, Fsm)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).New">AI_A2A_GCI:New(AIGroup, EngageMinSpeed, EngageMaxSpeed)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).New">AI_A2A_GCI:New(AIIntercept, EngageMinSpeed, EngageMaxSpeed)</a></td>
<td class="summary">
<p>Creates a new AI<em>A2A</em>GCI object</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnAfterAbort">AI_A2A_GCI:OnAfterAbort(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnAfterAbort">AI_A2A_GCI:OnAfterAbort(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>OnAfter Transition Handler for Event Abort.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnAfterAccomplish">AI_A2A_GCI:OnAfterAccomplish(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnAfterAccomplish">AI_A2A_GCI:OnAfterAccomplish(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>OnAfter Transition Handler for Event Accomplish.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnAfterDestroy">AI_A2A_GCI:OnAfterDestroy(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnAfterDestroy">AI_A2A_GCI:OnAfterDestroy(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>OnAfter Transition Handler for Event Destroy.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnAfterEngage">AI_A2A_GCI:OnAfterEngage(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnAfterEngage">AI_A2A_GCI:OnAfterEngage(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>OnAfter Transition Handler for Event Engage.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnAfterFired">AI_A2A_GCI:OnAfterFired(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnAfterFired">AI_A2A_GCI:OnAfterFired(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>OnAfter Transition Handler for Event Fired.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnBeforeAbort">AI_A2A_GCI:OnBeforeAbort(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnBeforeAbort">AI_A2A_GCI:OnBeforeAbort(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>OnBefore Transition Handler for Event Abort.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnBeforeAccomplish">AI_A2A_GCI:OnBeforeAccomplish(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnBeforeAccomplish">AI_A2A_GCI:OnBeforeAccomplish(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>OnBefore Transition Handler for Event Accomplish.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnBeforeDestroy">AI_A2A_GCI:OnBeforeDestroy(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnBeforeDestroy">AI_A2A_GCI:OnBeforeDestroy(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>OnBefore Transition Handler for Event Destroy.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnBeforeEngage">AI_A2A_GCI:OnBeforeEngage(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnBeforeEngage">AI_A2A_GCI:OnBeforeEngage(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>OnBefore Transition Handler for Event Engage.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnBeforeFired">AI_A2A_GCI:OnBeforeFired(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnBeforeFired">AI_A2A_GCI:OnBeforeFired(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>OnBefore Transition Handler for Event Fired.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnEnterEngaging">AI_A2A_GCI:OnEnterEngaging(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnEnterEngaging">AI_A2A_GCI:OnEnterEngaging(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>OnEnter Transition Handler for State Engaging.</p>
</td>
@@ -289,7 +289,7 @@
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnLeaveEngaging">AI_A2A_GCI:OnLeaveEngaging(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).OnLeaveEngaging">AI_A2A_GCI:OnLeaveEngaging(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>OnLeave Transition Handler for State Engaging.</p>
</td>
@@ -343,37 +343,37 @@
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).onafterAbort">AI_A2A_GCI:onafterAbort(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).onafterAbort">AI_A2A_GCI:onafterAbort(AIIntercept, From, Event, To)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).onafterAccomplish">AI_A2A_GCI:onafterAccomplish(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).onafterAccomplish">AI_A2A_GCI:onafterAccomplish(AIIntercept, From, Event, To)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).onafterDestroy">AI_A2A_GCI:onafterDestroy(AIGroup, From, Event, To, EventData)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).onafterDestroy">AI_A2A_GCI:onafterDestroy(AIIntercept, From, Event, To, EventData)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).onafterEngage">AI_A2A_GCI:onafterEngage(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).onafterEngage">AI_A2A_GCI:onafterEngage(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>onafter State Transition for Event Patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).onafterStart">AI_A2A_GCI:onafterStart(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).onafterStart">AI_A2A_GCI:onafterStart(AIIntercept, From, Event, To)</a></td>
<td class="summary">
<p>onafter State Transition for Event Patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).onbeforeEngage">AI_A2A_GCI:onbeforeEngage(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).onbeforeEngage">AI_A2A_GCI:onbeforeEngage(AIIntercept, From, Event, To)</a></td>
<td class="summary">
</td>
@@ -624,7 +624,7 @@ Use the method <a href="AI_Cap.html##(AI_A2A_GCI).SetEngageZone">AI<em>Cap#AI</e
<dt>
<a id="#(AI_A2A_GCI).InterceptRoute" >
<strong>AI_A2A_GCI.InterceptRoute(AIControllable, AIGroup, Fsm)</strong>
<strong>AI_A2A_GCI.InterceptRoute(AIControllable, AIIntercept, Fsm)</strong>
</a>
</dt>
<dd>
@@ -640,7 +640,7 @@ Use the method <a href="AI_Cap.html##(AI_A2A_GCI).SetEngageZone">AI<em>Cap#AI</e
</li>
<li>
<p><code><em> AIGroup </em></code>: </p>
<p><code><em> AIIntercept </em></code>: </p>
</li>
<li>
@@ -655,7 +655,7 @@ Use the method <a href="AI_Cap.html##(AI_A2A_GCI).SetEngageZone">AI<em>Cap#AI</e
<dt>
<a id="#(AI_A2A_GCI).New" >
<strong>AI_A2A_GCI:New(AIGroup, EngageMinSpeed, EngageMaxSpeed)</strong>
<strong>AI_A2A_GCI:New(AIIntercept, EngageMinSpeed, EngageMaxSpeed)</strong>
</a>
</dt>
<dd>
@@ -666,7 +666,7 @@ Use the method <a href="AI_Cap.html##(AI_A2A_GCI).SetEngageZone">AI<em>Cap#AI</e
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>: </p>
</li>
<li>
@@ -691,7 +691,7 @@ Use the method <a href="AI_Cap.html##(AI_A2A_GCI).SetEngageZone">AI<em>Cap#AI</e
<dt>
<a id="#(AI_A2A_GCI).OnAfterAbort" >
<strong>AI_A2A_GCI:OnAfterAbort(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:OnAfterAbort(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -702,8 +702,8 @@ Use the method <a href="AI_Cap.html##(AI_A2A_GCI).SetEngageZone">AI<em>Cap#AI</e
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -731,7 +731,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_GCI).OnAfterAccomplish" >
<strong>AI_A2A_GCI:OnAfterAccomplish(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:OnAfterAccomplish(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -742,8 +742,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -771,7 +771,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_GCI).OnAfterDestroy" >
<strong>AI_A2A_GCI:OnAfterDestroy(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:OnAfterDestroy(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -782,8 +782,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -811,7 +811,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_GCI).OnAfterEngage" >
<strong>AI_A2A_GCI:OnAfterEngage(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:OnAfterEngage(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -822,8 +822,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -851,7 +851,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_GCI).OnAfterFired" >
<strong>AI_A2A_GCI:OnAfterFired(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:OnAfterFired(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -862,8 +862,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -891,7 +891,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_GCI).OnBeforeAbort" >
<strong>AI_A2A_GCI:OnBeforeAbort(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:OnBeforeAbort(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -902,8 +902,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -936,7 +936,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_GCI).OnBeforeAccomplish" >
<strong>AI_A2A_GCI:OnBeforeAccomplish(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:OnBeforeAccomplish(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -947,8 +947,8 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -981,7 +981,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_GCI).OnBeforeDestroy" >
<strong>AI_A2A_GCI:OnBeforeDestroy(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:OnBeforeDestroy(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -992,8 +992,8 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1026,7 +1026,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_GCI).OnBeforeEngage" >
<strong>AI_A2A_GCI:OnBeforeEngage(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:OnBeforeEngage(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1037,8 +1037,8 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1071,7 +1071,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_GCI).OnBeforeFired" >
<strong>AI_A2A_GCI:OnBeforeFired(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:OnBeforeFired(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1082,8 +1082,8 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1116,7 +1116,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_GCI).OnEnterEngaging" >
<strong>AI_A2A_GCI:OnEnterEngaging(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:OnEnterEngaging(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1127,8 +1127,8 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1177,7 +1177,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_GCI).OnLeaveEngaging" >
<strong>AI_A2A_GCI:OnLeaveEngaging(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:OnLeaveEngaging(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1188,8 +1188,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1374,7 +1374,7 @@ The delay in seconds.</p>
<dt>
<a id="#(AI_A2A_GCI).onafterAbort" >
<strong>AI_A2A_GCI:onafterAbort(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:onafterAbort(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1385,7 +1385,7 @@ The delay in seconds.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The AI Group managed by the FSM.</p>
</li>
@@ -1414,7 +1414,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_GCI).onafterAccomplish" >
<strong>AI_A2A_GCI:onafterAccomplish(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:onafterAccomplish(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1425,8 +1425,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1454,7 +1454,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_GCI).onafterDestroy" >
<strong>AI_A2A_GCI:onafterDestroy(AIGroup, From, Event, To, EventData)</strong>
<strong>AI_A2A_GCI:onafterDestroy(AIIntercept, From, Event, To, EventData)</strong>
</a>
</dt>
<dd>
@@ -1465,8 +1465,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1499,7 +1499,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_GCI).onafterEngage" >
<strong>AI_A2A_GCI:onafterEngage(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:onafterEngage(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1510,7 +1510,7 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The AI Group managed by the FSM.</p>
</li>
@@ -1539,7 +1539,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_GCI).onafterStart" >
<strong>AI_A2A_GCI:onafterStart(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:onafterStart(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1550,7 +1550,7 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The AI Group managed by the FSM.</p>
</li>
@@ -1579,7 +1579,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_GCI).onbeforeEngage" >
<strong>AI_A2A_GCI:onbeforeEngage(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_GCI:onbeforeEngage(AIIntercept, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1590,8 +1590,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIIntercept </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>

View File

@@ -112,7 +112,7 @@
<hr/>
<p>AI PATROL classes makes AI Controllables execute an Patrol.</p>
<p>AI PATROL classes makes AI Groups execute an Patrol.</p>
@@ -158,50 +158,50 @@
<td class="summary">
<h1>AI<em>A2A</em>PATROL class, extends <a href="Fsm.html##(FSM_CONTROLLABLE)">Fsm#FSM_CONTROLLABLE</a></h1>
<p>The AI<em>A2A</em>PATROL class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AI <a href="Controllable.html">Controllable</a> or <a href="Group.html">Group</a>.</p>
<p>The AI<em>A2A</em>PATROL class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AI <a href="Group.html">Group</a> or <a href="Group.html">Group</a>.</p>
</td>
</tr>
</table>
<h2><a id="#(AI_A2A_PATROL)">Type <code>AI_A2A_PATROL</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).New">AI_A2A_PATROL:New(AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, PatrolAltType)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).New">AI_A2A_PATROL:New(AIPatrol, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, PatrolAltType)</a></td>
<td class="summary">
<p>Creates a new AI<em>A2A</em>PATROL object</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).OnAfterPatrol">AI_A2A_PATROL:OnAfterPatrol(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).OnAfterPatrol">AI_A2A_PATROL:OnAfterPatrol(AIPatrol, From, Event, To)</a></td>
<td class="summary">
<p>OnAfter Transition Handler for Event Patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).OnAfterRoute">AI_A2A_PATROL:OnAfterRoute(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).OnAfterRoute">AI_A2A_PATROL:OnAfterRoute(AIPatrol, From, Event, To)</a></td>
<td class="summary">
<p>OnAfter Transition Handler for Event Route.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).OnBeforePatrol">AI_A2A_PATROL:OnBeforePatrol(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).OnBeforePatrol">AI_A2A_PATROL:OnBeforePatrol(AIPatrol, From, Event, To)</a></td>
<td class="summary">
<p>OnBefore Transition Handler for Event Patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).OnBeforeRoute">AI_A2A_PATROL:OnBeforeRoute(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).OnBeforeRoute">AI_A2A_PATROL:OnBeforeRoute(AIPatrol, From, Event, To)</a></td>
<td class="summary">
<p>OnBefore Transition Handler for Event Route.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).OnEnterPatrolling">AI_A2A_PATROL:OnEnterPatrolling(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).OnEnterPatrolling">AI_A2A_PATROL:OnEnterPatrolling(AIPatrol, From, Event, To)</a></td>
<td class="summary">
<p>OnEnter Transition Handler for State Patrolling.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).OnLeavePatrolling">AI_A2A_PATROL:OnLeavePatrolling(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).OnLeavePatrolling">AI_A2A_PATROL:OnLeavePatrolling(AIPatrol, From, Event, To)</a></td>
<td class="summary">
<p>OnLeave Transition Handler for State Patrolling.</p>
</td>
@@ -243,7 +243,7 @@
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).PatrolRoute">AI_A2A_PATROL.PatrolRoute(AIGroup, Fsm)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).PatrolRoute">AI_A2A_PATROL.PatrolRoute(AIPatrol, Fsm)</a></td>
<td class="summary">
</td>
@@ -255,7 +255,7 @@
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).Resume">AI_A2A_PATROL.Resume(AIGroup)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).Resume">AI_A2A_PATROL.Resume(AIPatrol)</a></td>
<td class="summary">
</td>
@@ -291,13 +291,13 @@
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).onafterPatrol">AI_A2A_PATROL:onafterPatrol(Controllable, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).onafterPatrol">AI_A2A_PATROL:onafterPatrol(AIPatrol, From, Event, To)</a></td>
<td class="summary">
<p>Defines a new patrol route using the <a href="Process_PatrolZone.html">Process_PatrolZone</a> parameters and settings.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).onafterRoute">AI_A2A_PATROL:onafterRoute(AIGroup, From, Event, To)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).onafterRoute">AI_A2A_PATROL:onafterRoute(AIPatrol, From, Event, To)</a></td>
<td class="summary">
<p>Defines a new patrol route using the <a href="Process_PatrolZone.html">Process_PatrolZone</a> parameters and settings.</p>
</td>
@@ -317,7 +317,7 @@
<h1>AI<em>A2A</em>PATROL class, extends <a href="Fsm.html##(FSM_CONTROLLABLE)">Fsm#FSM_CONTROLLABLE</a></h1>
<p>The AI<em>A2A</em>PATROL class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AI <a href="Controllable.html">Controllable</a> or <a href="Group.html">Group</a>.</p>
<p>The AI<em>A2A</em>PATROL class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AI <a href="Group.html">Group</a> or <a href="Group.html">Group</a>.</p>
@@ -426,7 +426,7 @@ Use the method <a href="##(AI_A2A_PATROL).ManageFuel">AI<em>A2A</em>PATROL.Manag
<h2>7. Manage "damage" behaviour of the AI in the AI<em>A2A</em>PATROL</h2>
<p>When the AI is damaged, it is required that a new AIControllable is started. However, damage cannon be foreseen early on.
<p>When the AI is damaged, it is required that a new Patrol is started. However, damage cannon be foreseen early on.
Therefore, when the damage treshold is reached, the AI will return immediately to the home base (RTB).
Use the method <a href="##(AI_A2A_PATROL).ManageDamage">AI<em>A2A</em>PATROL.ManageDamage</a>() to have this proces in place.</p>
@@ -445,7 +445,7 @@ Use the method <a href="##(AI_A2A_PATROL).ManageDamage">AI<em>A2A</em>PATROL.Man
<dt>
<a id="#(AI_A2A_PATROL).New" >
<strong>AI_A2A_PATROL:New(AIGroup, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, PatrolAltType)</strong>
<strong>AI_A2A_PATROL:New(AIPatrol, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, PatrolAltType)</strong>
</a>
</dt>
<dd>
@@ -456,7 +456,7 @@ Use the method <a href="##(AI_A2A_PATROL).ManageDamage">AI<em>A2A</em>PATROL.Man
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIPatrol </em></code>: </p>
</li>
<li>
@@ -480,13 +480,13 @@ The highest altitude in meters where to execute the patrol.</p>
<li>
<p><code><em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a> PatrolMinSpeed </em></code>:
The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
The minimum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
<li>
<p><code><em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a> PatrolMaxSpeed </em></code>:
The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
The maximum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
<li>
@@ -502,7 +502,7 @@ The altitude type ("RADIO"=="AGL", "BARO"=="ASL"). Defaults to RADIO</p>
self</p>
<h3>Usage:</h3>
<pre class="example"><code>-- Define a new AI_A2A_PATROL Object. This PatrolArea will patrol an AIControllable within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h.
<pre class="example"><code>-- Define a new AI_A2A_PATROL Object. This PatrolArea will patrol a Group within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h.
PatrolZone = ZONE:New( 'PatrolZone' )
PatrolSpawn = SPAWN:New( 'Patrol Group' )
PatrolArea = AI_A2A_PATROL:New( PatrolZone, 3000, 6000, 600, 900 )</code></pre>
@@ -513,7 +513,7 @@ PatrolArea = AI_A2A_PATROL:New( PatrolZone, 3000, 6000, 600, 900 )</code></pre>
<dt>
<a id="#(AI_A2A_PATROL).OnAfterPatrol" >
<strong>AI_A2A_PATROL:OnAfterPatrol(Controllable, From, Event, To)</strong>
<strong>AI_A2A_PATROL:OnAfterPatrol(AIPatrol, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -524,8 +524,8 @@ PatrolArea = AI_A2A_PATROL:New( PatrolZone, 3000, 6000, 600, 900 )</code></pre>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIPatrol </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -553,7 +553,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_PATROL).OnAfterRoute" >
<strong>AI_A2A_PATROL:OnAfterRoute(Controllable, From, Event, To)</strong>
<strong>AI_A2A_PATROL:OnAfterRoute(AIPatrol, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -564,8 +564,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIPatrol </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -593,7 +593,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_PATROL).OnBeforePatrol" >
<strong>AI_A2A_PATROL:OnBeforePatrol(Controllable, From, Event, To)</strong>
<strong>AI_A2A_PATROL:OnBeforePatrol(AIPatrol, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -604,8 +604,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIPatrol </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -638,7 +638,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_PATROL).OnBeforeRoute" >
<strong>AI_A2A_PATROL:OnBeforeRoute(Controllable, From, Event, To)</strong>
<strong>AI_A2A_PATROL:OnBeforeRoute(AIPatrol, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -649,8 +649,8 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIPatrol </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -683,7 +683,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_PATROL).OnEnterPatrolling" >
<strong>AI_A2A_PATROL:OnEnterPatrolling(Controllable, From, Event, To)</strong>
<strong>AI_A2A_PATROL:OnEnterPatrolling(AIPatrol, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -694,8 +694,8 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIPatrol </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -723,7 +723,7 @@ The To State string.</p>
<dt>
<a id="#(AI_A2A_PATROL).OnLeavePatrolling" >
<strong>AI_A2A_PATROL:OnLeavePatrolling(Controllable, From, Event, To)</strong>
<strong>AI_A2A_PATROL:OnLeavePatrolling(AIPatrol, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -734,8 +734,8 @@ The To State string.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIPatrol </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -853,7 +853,7 @@ Return false to cancel Transition.</p>
<dt>
<a id="#(AI_A2A_PATROL).PatrolRoute" >
<strong>AI_A2A_PATROL.PatrolRoute(AIGroup, Fsm)</strong>
<strong>AI_A2A_PATROL.PatrolRoute(AIPatrol, Fsm)</strong>
</a>
</dt>
<dd>
@@ -864,9 +864,9 @@ Return false to cancel Transition.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
This statis method is called from the route path within the last task at the last waaypoint of the Controllable.
Note that this method is required, as triggers the next route when patrolling for the Controllable.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIPatrol </em></code>:
This statis method is called from the route path within the last task at the last waaypoint of the AIPatrol.
Note that this method is required, as triggers the next route when patrolling for the AIPatrol.</p>
</li>
<li>
@@ -895,7 +895,7 @@ Note that this method is required, as triggers the next route when patrolling fo
<dt>
<a id="#(AI_A2A_PATROL).Resume" >
<strong>AI_A2A_PATROL.Resume(AIGroup)</strong>
<strong>AI_A2A_PATROL.Resume(AIPatrol)</strong>
</a>
</dt>
<dd>
@@ -906,7 +906,7 @@ Note that this method is required, as triggers the next route when patrolling fo
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIPatrol </em></code>: </p>
</li>
</ul>
@@ -974,13 +974,13 @@ self</p>
<li>
<p><code><em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a> PatrolMinSpeed </em></code>:
The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
The minimum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
<li>
<p><code><em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a> PatrolMaxSpeed </em></code>:
The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
The maximum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
</ul>
@@ -1039,7 +1039,7 @@ The delay in seconds.</p>
<dt>
<a id="#(AI_A2A_PATROL).onafterPatrol" >
<strong>AI_A2A_PATROL:onafterPatrol(Controllable, From, Event, To)</strong>
<strong>AI_A2A_PATROL:onafterPatrol(AIPatrol, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1050,8 +1050,8 @@ The delay in seconds.</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIPatrol </em></code>:
The Group Object managed by the FSM.</p>
</li>
<li>
@@ -1084,7 +1084,7 @@ self</p>
<dt>
<a id="#(AI_A2A_PATROL).onafterRoute" >
<strong>AI_A2A_PATROL:onafterRoute(AIGroup, From, Event, To)</strong>
<strong>AI_A2A_PATROL:onafterRoute(AIPatrol, From, Event, To)</strong>
</a>
</dt>
<dd>
@@ -1095,8 +1095,8 @@ self</p>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>:
The AIGroup managed by the FSM.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIPatrol </em></code>:
The Group managed by the FSM.</p>
</li>
<li>

View File

@@ -927,9 +927,6 @@ Use the method <a href="##(AI_PATROL_ZONE).ManageDamage">AI<em>PATROL</em>ZONE.M
<p> This table contains the targets detected during patrol.</p>
</dd>
</dl>
<dl class="function">

View File

@@ -417,6 +417,30 @@ place: Object that the unit landed on.</p>
<td class="name" nowrap="nowrap"><a href="##(BASE).OnEventTakeoff">BASE:OnEventTakeoff(EventData)</a></td>
<td class="summary">
<p>Occurs when an aircraft takes off from an airbase, farp, or ship.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(BASE).ScheduleOnce">BASE:ScheduleOnce(Start, SchedulerFunction, ...)</a></td>
<td class="summary">
<p>Schedule a new time event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(BASE).ScheduleRepeat">BASE:ScheduleRepeat(Start, Repeat, RandomizeFactor, Stop, SchedulerFunction, ...)</a></td>
<td class="summary">
<p>Schedule a new time event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(BASE).ScheduleStop">BASE:ScheduleStop(SchedulerFunction)</a></td>
<td class="summary">
<p>Stops the Schedule.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(BASE).SchedulerObject">BASE.SchedulerObject</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -485,6 +509,12 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<td class="name" nowrap="nowrap"><a href="##(BASE).UnHandleEvent">BASE:UnHandleEvent(Event)</a></td>
<td class="summary">
<p>UnSubscribe to a DCS event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(BASE)._">BASE._</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -1900,6 +1930,144 @@ The EventData structure.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(BASE).ScheduleOnce" >
<strong>BASE:ScheduleOnce(Start, SchedulerFunction, ...)</strong>
</a>
</dt>
<dd>
<p>Schedule a new time event.</p>
<p>Note that the schedule will only take place if the scheduler is <em>started</em>. Even for a single schedule event, the scheduler needs to be started also.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number Start </em></code>:
Specifies the amount of seconds that will be waited before the scheduling is started, and the event function is called.</p>
</li>
<li>
<p><code><em>#function SchedulerFunction </em></code>:
The event function to be called when a timer event occurs. The event function needs to accept the parameters specified in SchedulerArguments.</p>
</li>
<li>
<p><code><em>#table ... </em></code>:
Optional arguments that can be given as part of scheduler. The arguments need to be given as a table { param1, param 2, ... }.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#number:</em>
The ScheduleID of the planned schedule.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(BASE).ScheduleRepeat" >
<strong>BASE:ScheduleRepeat(Start, Repeat, RandomizeFactor, Stop, SchedulerFunction, ...)</strong>
</a>
</dt>
<dd>
<p>Schedule a new time event.</p>
<p>Note that the schedule will only take place if the scheduler is <em>started</em>. Even for a single schedule event, the scheduler needs to be started also.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number Start </em></code>:
Specifies the amount of seconds that will be waited before the scheduling is started, and the event function is called.</p>
</li>
<li>
<p><code><em>#number Repeat </em></code>:
Specifies the interval in seconds when the scheduler will call the event function.</p>
</li>
<li>
<p><code><em>#number RandomizeFactor </em></code>:
Specifies a randomization factor between 0 and 1 to randomize the Repeat.</p>
</li>
<li>
<p><code><em>#number Stop </em></code>:
Specifies the amount of seconds when the scheduler will be stopped.</p>
</li>
<li>
<p><code><em>#function SchedulerFunction </em></code>:
The event function to be called when a timer event occurs. The event function needs to accept the parameters specified in SchedulerArguments.</p>
</li>
<li>
<p><code><em>#table ... </em></code>:
Optional arguments that can be given as part of scheduler. The arguments need to be given as a table { param1, param 2, ... }.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#number:</em>
The ScheduleID of the planned schedule.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(BASE).ScheduleStop" >
<strong>BASE:ScheduleStop(SchedulerFunction)</strong>
</a>
</dt>
<dd>
<p>Stops the Schedule.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#function SchedulerFunction </em></code>:
The event function to be called when a timer event occurs. The event function needs to accept the parameters specified in SchedulerArguments.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(BASE).SchedulerObject" >
<strong>BASE.SchedulerObject</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
@@ -2209,6 +2377,20 @@ BASE:TraceOnOff( false )</code></pre>
<p><em><a href="##(BASE)">#BASE</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="##(BASE._)">#BASE._</a></em>
<a id="#(BASE)._" >
<strong>BASE._</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
@@ -2320,6 +2502,8 @@ A #table or any field.</p>
</dd>
</dl>
<h2><a id="#(BASE._)" >Type <code>BASE._</code></a></h2>
<h2><a id="#(BASE.__)" >Type <code>BASE.__</code></a></h2>
<h2><a id="#(FORMATION)" >Type <code>FORMATION</code></a></h2>

View File

@@ -3418,6 +3418,7 @@ The range till cargo will board.</p>
<dl class="function">
<dt>
<em></em>
<a id="#(CARGO_UNIT).CargoCarrier" >
<strong>CARGO_UNIT.CargoCarrier</strong>
</a>

View File

@@ -2460,6 +2460,7 @@ The index of the DetectedItem.</p>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(DETECTION_BASE).DetectedItemCount" >
<strong>DETECTION_BASE.DetectedItemCount</strong>
</a>
@@ -2473,6 +2474,7 @@ The index of the DetectedItem.</p>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(DETECTION_BASE).DetectedItemMax" >
<strong>DETECTION_BASE.DetectedItemMax</strong>
</a>

View File

@@ -1599,7 +1599,7 @@ A string defining the start state.</p>
<dl class="function">
<dt>
<em></em>
<em>#string</em>
<a id="#(FSM)._StartState" >
<strong>FSM._StartState</strong>
</a>
@@ -1898,7 +1898,6 @@ A string defining the start state.</p>
<dl class="function">
<dt>
<em></em>
<a id="#(FSM).current" >
<strong>FSM.current</strong>
</a>

View File

@@ -1974,6 +1974,7 @@ The height in meters to add to the altitude of the positionable.</p>
<dl class="function">
<dt>
<em><a href="Core.Spot.html##(SPOT)">Core.Spot#SPOT</a></em>
<a id="#(POSITIONABLE).Spot" >
<strong>POSITIONABLE.Spot</strong>
</a>

View File

@@ -217,7 +217,9 @@ just large enough around that building.</p>
<p>A mission has goals and achievements. The scoring system provides an API to set additional scores when a goal or achievement event happens.
Use the method <a href="##(SCORING).AddGoalScore">SCORING.AddGoalScore</a>() to add a score for a Player at any time in your mission.</p>
<h2>1.5) Configure fratricide level.</h2>
<h2>1.5) (Decommissioned) Configure fratricide level.</h2>
<p><strong>This functionality is decomissioned until the DCS bug concerning Unit:destroy() not being functional in multi player for player units has been fixed by ED</strong>.</p>
<p>When a player commits too much damage to friendlies, his penalty score will reach a certain level.
Use the method <a href="##(SCORING).SetFratricide">SCORING.SetFratricide</a>() to define the level when a player gets kicked. <br/>

View File

@@ -1241,7 +1241,7 @@ true if metric.</p>
<dl class="function">
<dt>
<em>#boolean</em>
<em></em>
<a id="#(SETTINGS).Metric" >
<strong>SETTINGS.Metric</strong>
</a>

View File

@@ -3163,7 +3163,7 @@ Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 )
<dl class="function">
<dt>
<em></em>
<em>#boolean</em>
<a id="#(SPAWN).SpawnUnControlled" >
<strong>SPAWN.SpawnUnControlled</strong>
</a>

View File

@@ -567,6 +567,7 @@ based on the tasking capabilities defined in <a href="Task.html##(TASK)">Task#TA
<dl class="function">
<dt>
<em></em>
<a id="#(FSM_PROCESS).DeployZone" >
<strong>FSM_PROCESS.DeployZone</strong>
</a>

View File

@@ -130,7 +130,7 @@
<hr/>
<p>AI CAP classes makes AI Controllables execute a Combat Air Patrol.</p>
<p>AI CAP classes makes AI Groups execute a Combat Air Patrol.</p>
</td>
</tr>
<tr>
@@ -160,7 +160,7 @@
<hr/>
<p>AI PATROL classes makes AI Controllables execute an Patrol.</p>
<p>AI PATROL classes makes AI Groups execute an Patrol.</p>
</td>
</tr>
<tr>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 KiB

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 KiB

After

Width:  |  Height:  |  Size: 103 KiB