ATC and Documentation

This commit is contained in:
funkyfranky
2017-09-22 16:53:55 +02:00
parent 2fa18ae6c7
commit 43a62ebf87
6 changed files with 670 additions and 107 deletions

View File

@@ -40,13 +40,15 @@
-- --
-- # Demo Missions -- # Demo Missions
-- --
-- ### [RAT Demo Missions](https://github.com/FlightControl-Master/MOOSE_MISSIONS/tree/Release/RAT%20-%20Random%20Air%20Traffic)
-- ### [ALL Demo Missions pack of the last release](https://github.com/FlightControl-Master/MOOSE_MISSIONS/releases) -- ### [ALL Demo Missions pack of the last release](https://github.com/FlightControl-Master/MOOSE_MISSIONS/releases)
-- --
-- ==== -- ====
-- --
-- # YouTube Channel -- # YouTube Channel
-- --
-- ### [RAT YouTube Channel](https://www.youtube.com/playlist?list=PL7ZUrU4zZUl1jirWIo4t4YxqN-HxjqRkL) -- ### RAT videos are work in progress.
-- ### [MOOSE YouTube Channel](https://www.youtube.com/playlist?list=PL7ZUrU4zZUl1jirWIo4t4YxqN-HxjqRkL)
-- --
-- === -- ===
-- --
@@ -104,7 +106,8 @@
-- @field #number respawn_delay Delay in seconds until repawn happens after landing. -- @field #number respawn_delay Delay in seconds until repawn happens after landing.
-- @field #table markerids Array with marker IDs. -- @field #table markerids Array with marker IDs.
-- @field #string livery Livery of the aircraft set by user. -- @field #string livery Livery of the aircraft set by user.
-- @field #string skill Skill of AI. -- @field #string skill Skill of AI.
-- @field #boolean ATC Enable ATC.
-- @extends Functional.Spawn#SPAWN -- @extends Functional.Spawn#SPAWN
---# RAT class, extends @{Spawn#SPAWN} ---# RAT class, extends @{Spawn#SPAWN}
@@ -232,11 +235,25 @@
-- * @{#RAT.SetMinDistance}(100) will cause only random destination airports to be selected which are **at least** 100 km away from the departure airport. -- * @{#RAT.SetMinDistance}(100) will cause only random destination airports to be selected which are **at least** 100 km away from the departure airport.
-- * @{#RAT.SetMaxDistance}(150) will allow only destination airports which are **less than** 150 km away from the departure airport. -- * @{#RAT.SetMaxDistance}(150) will allow only destination airports which are **less than** 150 km away from the departure airport.
-- --
-- ![Process](..\Presentations\RAT\RAT_Gaussian.png)
--
-- By default planes get a cruise altitude of ~20,000 ft ASL. The actual altitude is sampled from a Gaussian distribution. The picture shows this distribution
-- if one would spawn 1000 planes. As can be seen most planes get a cruising alt of around FL200. Other values are possible but less likely the further away
-- one gets from the expectation value.
--
-- The expectation value, i.e. the altitude most aircraft get, can be set with the function @{#RAT.SetFLcruise}().
-- It is possible to restrict the minimum cruise altitude by @{#RAT.SetFLmin}() and the maximum cruise altitude by @{#RAT.SetFLmax}()
--
-- The cruise altitude can also be given in meters ASL by the functions @{#RAT.SetCruiseAltitude}(), @{#RAT.SetMinCruiseAltitude}() and @{#RAT.SetMaxCruiseAltitude}().
--
-- For example:
--
-- * @{#RAT.SetFLcruise}(300) will cause most planes fly around FL300.
-- * @{#RAT.SetFLmin}(100) restricts the cruising alt such that no plane will fly below FL100. Note that this automatically changes the minimum distance from departure to destination.
-- That means that only destinations are possible for which the aircraft has had enought time to reach that flight level and descent again.
-- * @{#RAT.SetFLmax}(200) will restrict the cruise alt to maximum FL200, i.e. no aircraft will travel above this height.
--
-- --
-- Certain other options like the flight level can also be specified. However, note that this might not be a good idea for random departures and/or destinations.
-- For example the random route might be too short to reach that altitude, which would result in very high climb and descent rates or strange flight plans.
--
--
-- @field #RAT -- @field #RAT
RAT={ RAT={
ClassName = "RAT", -- Name of class: RAT = Random Air Traffic. ClassName = "RAT", -- Name of class: RAT = Random Air Traffic.
@@ -284,6 +301,7 @@ RAT={
markerids={}, -- Array with marker IDs. markerids={}, -- Array with marker IDs.
livery=nil, -- Livery of the aircraft. livery=nil, -- Livery of the aircraft.
skill="High", -- Skill of AI. skill="High", -- Skill of AI.
ATC=true, -- Enable ATC.
} }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -448,7 +466,7 @@ function RAT:New(groupname, alias)
self:_GetAirportsOfMap() self:_GetAirportsOfMap()
-- Init RAT ATC if not already done. -- Init RAT ATC if not already done.
if not RAT.ATC.init then if self.ATC and not RAT.ATC.init then
RAT:_ATCInit(self.airports_map) RAT:_ATCInit(self.airports_map)
end end
@@ -800,6 +818,14 @@ function RAT:MenuName(name)
self.SubMenuName=tostring(name) self.SubMenuName=tostring(name)
end end
--- Enable ATC, which manages the landing queue for RAT aircraft if they arrive simultaniously at the same airport.
-- @param #RAT self
-- @param #boolean switch true=enable ATC, false=disable ATC.
function RAT:EnableATC(switch)
switch=switch or true
self.ATC=switch
end
--- Set minimum distance between departure and destination. Default is 5 km. --- Set minimum distance between departure and destination. Default is 5 km.
-- Minimum distance should not be smaller than maybe ~500 meters to ensure that departure and destination are different. -- Minimum distance should not be smaller than maybe ~500 meters to ensure that departure and destination are different.
-- @param #RAT self -- @param #RAT self
@@ -858,7 +884,7 @@ end
--- Set max cruising altitude above sea level. --- Set max cruising altitude above sea level.
-- @param #RAT self -- @param #RAT self
-- @param #number alt Altitude ASL in meters. -- @param #number alt Altitude ASL in meters.
function RAT:SetMaCruiseAltitude(alt) function RAT:SetMaxCruiseAltitude(alt)
self.FLmaxuser=alt self.FLmaxuser=alt
end end
@@ -1007,7 +1033,9 @@ function RAT:_SpawnWithRoute(_departure, _destination)
self.alive=self.alive+1 self.alive=self.alive+1
-- ATC is monitoring this flight. -- ATC is monitoring this flight.
RAT:_ATCAddFlight(group:GetName(), destination:GetName()) if self.ATC then
RAT:_ATCAddFlight(group:GetName(), destination:GetName())
end
-- Set ROE, default is "weapon hold". -- Set ROE, default is "weapon hold".
self:_SetROE(group, self.roe) self:_SetROE(group, self.roe)
@@ -1774,7 +1802,7 @@ function RAT:Status(message, forID)
local Dholding=Pn:Get2DDistance(Hp) local Dholding=Pn:Get2DDistance(Hp)
-- If distance to holding point is less then 10 km we register the plane -- If distance to holding point is less then 10 km we register the plane
if Dholding<10000 and self.ratcraft[i].status~="Holding" then if self.ATC and Dholding<10000 and self.ratcraft[i].status~="Holding" then
RAT:_ATCRegisterFlight(group:GetName(), Tnow) RAT:_ATCRegisterFlight(group:GetName(), Tnow)
self.ratcraft[i].status="Holding" self.ratcraft[i].status="Holding"
end end
@@ -1801,7 +1829,9 @@ function RAT:Status(message, forID)
--text=text..string.format("Speed = %i km/h\n", vel) --text=text..string.format("Speed = %i km/h\n", vel)
text=text..string.format("Distance travelled = %6.1f km\n", self.ratcraft[i]["Distance"]/1000) text=text..string.format("Distance travelled = %6.1f km\n", self.ratcraft[i]["Distance"]/1000)
text=text..string.format("Distance to destination = %6.1f km\n", Ddestination/1000) text=text..string.format("Distance to destination = %6.1f km\n", Ddestination/1000)
text=text..string.format("Distance to holding point = %6.1f km", Dholding/1000) if self.ATC then
text=text..string.format("Distance to holding point = %6.1f km", Dholding/1000)
end
if not airborne then if not airborne then
text=text..string.format("\nTime on ground = %6.0f seconds\n", Tg) text=text..string.format("\nTime on ground = %6.0f seconds\n", Tg)
text=text..string.format("Position change = %8.1f m since %3.0f seconds.", Dg, dTlast) text=text..string.format("Position change = %8.1f m since %3.0f seconds.", Dg, dTlast)
@@ -2002,7 +2032,9 @@ function RAT:_OnLand(EventData)
self:_SetStatus(SpawnGroup, "Taxiing (after landing)") self:_SetStatus(SpawnGroup, "Taxiing (after landing)")
-- ATC plane landed. Take it out of the queue and set runway to free. -- ATC plane landed. Take it out of the queue and set runway to free.
RAT:_ATCFlightLanded(SpawnGroup:GetName()) if self.ATC then
RAT:_ATCFlightLanded(SpawnGroup:GetName())
end
if self.respawn_at_landing then if self.respawn_at_landing then
text="Event: Group "..SpawnGroup:GetName().." will be respawned." text="Event: Group "..SpawnGroup:GetName().." will be respawned."
@@ -2816,6 +2848,9 @@ end
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--- Initializes the ATC arrays and starts schedulers.
-- @param #RAT self
-- @param #table airports_map List of all airports of the map.
function RAT:_ATCInit(airports_map) function RAT:_ATCInit(airports_map)
if not RAT.ATC.init then if not RAT.ATC.init then
env.info("Starting RAT ATC") env.info("Starting RAT ATC")
@@ -2832,6 +2867,11 @@ function RAT:_ATCInit(airports_map)
end end
end end
--- Deletes a flight from ATC lists after it landed.
-- @param #RAT self
-- @param #table t Table.
-- @param #string entry Flight name which shall be deleted.
function RAT:_ATCDelFlight(t,entry) function RAT:_ATCDelFlight(t,entry)
for k,_ in pairs(t) do for k,_ in pairs(t) do
if k==entry then if k==entry then
@@ -2840,6 +2880,10 @@ function RAT:_ATCDelFlight(t,entry)
end end
end end
--- Adds andd initializes a new flight after it was spawned.
-- @param #RAT self
-- @param #string name Group name of the flight.
-- @param #string dest Name of the destination airport.
function RAT:_ATCAddFlight(name, dest) function RAT:_ATCAddFlight(name, dest)
env.info(string.format("ATC: Adding flight %s with destination %s.", name, dest)) env.info(string.format("ATC: Adding flight %s with destination %s.", name, dest))
RAT.ATC.flight[name]={} RAT.ATC.flight[name]={}
@@ -2847,6 +2891,10 @@ function RAT:_ATCAddFlight(name, dest)
RAT.ATC.flight[name].holding=-1 RAT.ATC.flight[name].holding=-1
end end
--- Registers a flight once it is near its holding point at the final destination.
-- @param #RAT self
-- @param #string name Group name of the flight.
-- @param #number time Time the fight first registered.
function RAT:_ATCRegisterFlight(name, time) function RAT:_ATCRegisterFlight(name, time)
env.info("ATC: Reg name "..name) env.info("ATC: Reg name "..name)
env.info("ATC: Reg time "..time) env.info("ATC: Reg time "..time)
@@ -2854,6 +2902,9 @@ function RAT:_ATCRegisterFlight(name, time)
RAT.ATC.flight[name].holding=0 RAT.ATC.flight[name].holding=0
end end
--- Takes care of organisational stuff after a plane has landed.
-- @param #RAT self
-- @param #string name Group name of flight.
function RAT:_ATCFlightLanded(name) function RAT:_ATCFlightLanded(name)
-- Destination airport. -- Destination airport.
@@ -2872,6 +2923,10 @@ function RAT:_ATCFlightLanded(name)
env.info(string.format("ATC: Flight %s landed at %s.", name, dest)) env.info(string.format("ATC: Flight %s landed at %s.", name, dest))
end end
--- Giving landing clearance for aircraft by setting user flag.
-- @param #RAT self
-- @param #string airport Name of destination airport.
-- @param #string flight Group name of flight, which gets landing clearence.
function RAT:_ATCClearForLanding(airport, flight) function RAT:_ATCClearForLanding(airport, flight)
-- Flight is cleared for landing. -- Flight is cleared for landing.
RAT.ATC.flight[flight].holding=RAT.ATC.onfinal RAT.ATC.flight[flight].holding=RAT.ATC.onfinal
@@ -2879,12 +2934,14 @@ function RAT:_ATCClearForLanding(airport, flight)
RAT.ATC.airport[airport].busy=true RAT.ATC.airport[airport].busy=true
-- Flight which is landing. -- Flight which is landing.
RAT.ATC.airport[airport].onfinal=flight RAT.ATC.airport[airport].onfinal=flight
env.info("ATC: setting user flag "..flight.." to 1.") -- Set user flag to 1 ==> stop condition for holding.
trigger.action.setUserFlag(flight, 1) trigger.action.setUserFlag(flight, 1)
local flagvalue=trigger.misc.getUserFlag(flight) --local flagvalue=trigger.misc.getUserFlag(flight)
env.info("ATC: user flag "..flight.." ="..flagvalue) env.info(RAT.id.."ATC: Flight "..flight.."cleared for landing.")
end end
--- ATC status report about flights.
-- @param #RAT self
function RAT:_ATCStatus() function RAT:_ATCStatus()
for name,_ in pairs(RAT.ATC.flight) do for name,_ in pairs(RAT.ATC.flight) do
@@ -2913,6 +2970,8 @@ function RAT:_ATCStatus()
end end
--- Main ATC function. Updates the landing queue of all airports and inceases holding time for all flights.
-- @param #RAT self
function RAT:_ATCCheck() function RAT:_ATCCheck()
-- Init queue of flights at all airports. -- Init queue of flights at all airports.
@@ -2950,6 +3009,8 @@ function RAT:_ATCCheck()
end end
end end
--- Creates a landing queue for all flights holding at airports. Aircraft with longest holding time gets first permission to land.
-- @param #RAT self
function RAT:_ATCQueue() function RAT:_ATCQueue()
--env.info("Queue:") --env.info("Queue:")
for airport,_ in pairs(RAT.ATC.airport) do for airport,_ in pairs(RAT.ATC.airport) do

View File

@@ -17,90 +17,7 @@
<a href="index.html">index</a> <a href="index.html">index</a>
</li></ul> </li></ul>
<ul> <ul>
<li><a href="AI_A2A.html">AI_A2A</a></li>
<li><a href="AI_A2A_Cap.html">AI_A2A_Cap</a></li>
<li><a href="AI_A2A_Dispatcher.html">AI_A2A_Dispatcher</a></li>
<li><a href="AI_A2A_GCI.html">AI_A2A_GCI</a></li>
<li><a href="AI_A2A_Patrol.html">AI_A2A_Patrol</a></li>
<li><a href="AI_Bai.html">AI_Bai</a></li>
<li><a href="AI_Balancer.html">AI_Balancer</a></li>
<li><a href="AI_Cap.html">AI_Cap</a></li>
<li><a href="AI_Cas.html">AI_Cas</a></li>
<li><a href="AI_Formation.html">AI_Formation</a></li>
<li><a href="AI_Patrol.html">AI_Patrol</a></li>
<li><a href="Account.html">Account</a></li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Assign.html">Assign</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="Cargo.html">Cargo</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="CommandCenter.html">CommandCenter</a></li>
<li><a href="Controllable.html">Controllable</a></li>
<li><a href="DCSAirbase.html">DCSAirbase</a></li>
<li><a href="DCSCoalitionObject.html">DCSCoalitionObject</a></li>
<li><a href="DCSCommand.html">DCSCommand</a></li>
<li><a href="DCSController.html">DCSController</a></li>
<li><a href="DCSGroup.html">DCSGroup</a></li>
<li><a href="DCSObject.html">DCSObject</a></li>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSVec3.html">DCSVec3</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCSZone.html">DCSZone</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Designate.html">Designate</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="DetectionManager.html">DetectionManager</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="Fsm.html">Fsm</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="Identifiable.html">Identifiable</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="Movement.html">Movement</a></li>
<li><a href="Object.html">Object</a></li>
<li><a href="Point.html">Point</a></li>
<li><a href="Positionable.html">Positionable</a></li>
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
<li><a href="Radio.html">Radio</a></li>
<li>Rat</li> <li>Rat</li>
<li><a href="Route.html">Route</a></li>
<li><a href="Scenery.html">Scenery</a></li>
<li><a href="ScheduleDispatcher.html">ScheduleDispatcher</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Settings.html">Settings</a></li>
<li><a href="Smoke.html">Smoke</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="SpawnStatic.html">SpawnStatic</a></li>
<li><a href="Spot.html">Spot</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2A.html">Task_A2A</a></li>
<li><a href="Task_A2A_Dispatcher.html">Task_A2A_Dispatcher</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_A2G_Dispatcher.html">Task_A2G_Dispatcher</a></li>
<li><a href="Task_Cargo.html">Task_Cargo</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Utils.html">Utils</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
<li><a href="routines.html">routines</a></li>
</ul> </ul>
</div> </div>
<div id="content"> <div id="content">
@@ -155,13 +72,15 @@
<h1>Demo Missions</h1> <h1>Demo Missions</h1>
<h3><a href="https://github.com/FlightControl-Master/MOOSE_MISSIONS/tree/Release/RAT%20-%20Random%20Air%20Traffic">RAT Demo Missions</a></h3>
<h3><a href="https://github.com/FlightControl-Master/MOOSE_MISSIONS/releases">ALL Demo Missions pack of the last release</a></h3> <h3><a href="https://github.com/FlightControl-Master/MOOSE_MISSIONS/releases">ALL Demo Missions pack of the last release</a></h3>
<hr/> <hr/>
<h1>YouTube Channel</h1> <h1>YouTube Channel</h1>
<h3><a href="https://www.youtube.com/playlist?list=PL7ZUrU4zZUl1jirWIo4t4YxqN-HxjqRkL">RAT YouTube Channel</a></h3> <h3>RAT videos are work in progress.</h3>
<h3><a href="https://www.youtube.com/playlist?list=PL7ZUrU4zZUl1jirWIo4t4YxqN-HxjqRkL">MOOSE YouTube Channel</a></h3>
<hr/> <hr/>
@@ -184,6 +103,12 @@
<h2><a id="#(RAT)">Type <code>RAT</code></a></h2> <h2><a id="#(RAT)">Type <code>RAT</code></a></h2>
<table class="function_list"> <table class="function_list">
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).ATC">RAT.ATC</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).AlphaDescent">RAT.AlphaDescent</a></td> <td class="name" nowrap="nowrap"><a href="##(RAT).AlphaDescent">RAT.AlphaDescent</a></td>
<td class="summary"> <td class="summary">
<p>Default angle of descenti in degrees. A value of 3.6 follows the 3:1 rule of 3 miles of travel and 1000 ft descent.</p> <p>Default angle of descenti in degrees. A value of 3.6 follows the 3:1 rule of 3 miles of travel and 1000 ft descent.</p>
@@ -193,6 +118,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).ClassName">RAT.ClassName</a></td> <td class="name" nowrap="nowrap"><a href="##(RAT).ClassName">RAT.ClassName</a></td>
<td class="summary"> <td class="summary">
<p>Name of the Class.</p> <p>Name of the Class.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).ClearForLanding">RAT:ClearForLanding(name)</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -223,6 +154,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).FLuser">RAT.FLuser</a></td> <td class="name" nowrap="nowrap"><a href="##(RAT).FLuser">RAT.FLuser</a></td>
<td class="summary"> <td class="summary">
<p>Flight level set by users explicitly.</p> <p>Flight level set by users explicitly.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).Livery">RAT:Livery(skins)</a></td>
<td class="summary">
<p>Set livery of aircraft.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -283,6 +220,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).SetCoalition">RAT:SetCoalition(friendly)</a></td> <td class="name" nowrap="nowrap"><a href="##(RAT).SetCoalition">RAT:SetCoalition(friendly)</a></td>
<td class="summary"> <td class="summary">
<p>Set the friendly coalitions from which the airports can be used as departure or destination.</p> <p>Set the friendly coalitions from which the airports can be used as departure or destination.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).SetCruiseAltitude">RAT:SetCruiseAltitude(alt)</a></td>
<td class="summary">
<p>Set cruising altitude.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -325,6 +268,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).SetFLmin">RAT:SetFLmin(height)</a></td> <td class="name" nowrap="nowrap"><a href="##(RAT).SetFLmin">RAT:SetFLmin(height)</a></td>
<td class="summary"> <td class="summary">
<p>Set min flight level.</p> <p>Set min flight level.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).SetMaxCruiseAltitude">RAT:SetMaxCruiseAltitude(alt)</a></td>
<td class="summary">
<p>Set max cruising altitude above sea level.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -337,6 +286,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).SetMaxDistance">RAT:SetMaxDistance(dist)</a></td> <td class="name" nowrap="nowrap"><a href="##(RAT).SetMaxDistance">RAT:SetMaxDistance(dist)</a></td>
<td class="summary"> <td class="summary">
<p>Set maximum distance between departure and destination.</p> <p>Set maximum distance between departure and destination.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).SetMinCruiseAltitude">RAT:SetMinCruiseAltitude(alt)</a></td>
<td class="summary">
<p>Set min cruising altitude above sea level.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -408,7 +363,7 @@
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).Tinactive">RAT.Tinactive</a></td> <td class="name" nowrap="nowrap"><a href="##(RAT).Tinactive">RAT.Tinactive</a></td>
<td class="summary"> <td class="summary">
<p>Time in seconds after which inactive units will be destroyed. Default is 180 seconds.</p> <p>Time in seconds after which inactive units will be destroyed. Default is 300 seconds.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -421,6 +376,60 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).Vcruisemax">RAT.Vcruisemax</a></td> <td class="name" nowrap="nowrap"><a href="##(RAT).Vcruisemax">RAT.Vcruisemax</a></td>
<td class="summary"> <td class="summary">
<p>Max cruise speed in m/s (250 m/s = 900 km/h = 486 kt) set by user.</p> <p>Max cruise speed in m/s (250 m/s = 900 km/h = 486 kt) set by user.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCAddFlight">RAT:_ATCAddFlight(name, dest)</a></td>
<td class="summary">
<p>Adds andd initializes a new flight after it was spawned.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCCheck">RAT:_ATCCheck()</a></td>
<td class="summary">
<p>Main ATC function.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCClearForLanding">RAT:_ATCClearForLanding(airport, flight)</a></td>
<td class="summary">
<p>Giving landing clearance for aircraft by setting user flag.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCDelFlight">RAT:_ATCDelFlight(t, entry)</a></td>
<td class="summary">
<p>Deletes a flight from ATC lists after it landed.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCFlightLanded">RAT:_ATCFlightLanded(name)</a></td>
<td class="summary">
<p>Takes care of organisational stuff after a plane has landed.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCInit">RAT:_ATCInit(airports_map)</a></td>
<td class="summary">
<p>Initializes the ATC arrays and starts schedulers.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCQueue">RAT:_ATCQueue()</a></td>
<td class="summary">
<p>Creates a landing queue for all flights holding at airports.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCRegisterFlight">RAT:_ATCRegisterFlight(name, time)</a></td>
<td class="summary">
<p>Registers a flight once it is near its holding point at the final destination.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCStatus">RAT:_ATCStatus()</a></td>
<td class="summary">
<p>ATC status report about flights.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -493,6 +502,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT)._InitAircraft">RAT:_InitAircraft(DCSgroup)</a></td> <td class="name" nowrap="nowrap"><a href="##(RAT)._InitAircraft">RAT:_InitAircraft(DCSgroup)</a></td>
<td class="summary"> <td class="summary">
<p>Initialize basic parameters of the aircraft based on its (template) group in the mission editor.</p> <p>Initialize basic parameters of the aircraft based on its (template) group in the mission editor.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._MinDistance">RAT:_MinDistance(alpha, beta, h)</a></td>
<td class="summary">
<p>Calculate min distance between departure and destination for given minimum flight level and climb/decent rates</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -739,12 +754,24 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).friendly">RAT.friendly</a></td> <td class="name" nowrap="nowrap"><a href="##(RAT).friendly">RAT.friendly</a></td>
<td class="summary"> <td class="summary">
<p>Possible departure/destination airport: all=blue+red+neutral, same=spawn+neutral, spawnonly=spawn, blue=blue+neutral, blueonly=blue, red=red+neutral, redonly=red.</p> <p>Possible departure/destination airport: all=blue+red+neutral, same=spawn+neutral, spawnonly=spawn, blue=blue+neutral, blueonly=blue, red=red+neutral, redonly=red.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).has_value">RAT:has_value(tab, val)</a></td>
<td class="summary">
<p>Utility function which checks if table contains a specific value.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).id">RAT.id</a></td> <td class="name" nowrap="nowrap"><a href="##(RAT).id">RAT.id</a></td>
<td class="summary"> <td class="summary">
<p>Some ID to identify who we are in output of the DCS.log file.</p> <p>Some ID to identify who we are in output of the DCS.log file.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).livery">RAT.livery</a></td>
<td class="summary">
<p>Livery of the aircraft set by user.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -775,6 +802,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).ngroups">RAT.ngroups</a></td> <td class="name" nowrap="nowrap"><a href="##(RAT).ngroups">RAT.ngroups</a></td>
<td class="summary"> <td class="summary">
<p>Number of groups to be spawned in total.</p> <p>Number of groups to be spawned in total.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).onboard_num">RAT.onboard_num</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -829,6 +862,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).rot">RAT.rot</a></td> <td class="name" nowrap="nowrap"><a href="##(RAT).rot">RAT.rot</a></td>
<td class="summary"> <td class="summary">
<p>ROT of spawned groups, default is no reaction. Possible: "noreaction", "passive", "evade".</p> <p>ROT of spawned groups, default is no reaction. Possible: "noreaction", "passive", "evade".</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).skill">RAT.skill</a></td>
<td class="summary">
<p>Skill of AI. </p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -902,7 +941,7 @@
<ul> <ul>
<li>A specific departure and/or destination airport can be chosen.</li> <li>A specific departure and/or destination airport can be chosen.</li>
<li>Valid coalitions can be set, e.g. only red, blue or neutral, all three <EFBFBD>colours<EFBFBD>.</li> <li>Valid coalitions can be set, e.g. only red, blue or neutral, all three "colours".</li>
<li>It is possible to start in air within a zone defined in the mission editor or within a zone above an airport of the map.</li> <li>It is possible to start in air within a zone defined in the mission editor or within a zone above an airport of the map.</li>
</ul> </ul>
@@ -936,7 +975,7 @@
<li>Activate the "LATE ACTIVATION" tick box. Note that this aircraft will not be spawned itself but serves a template for each RAT aircraft spawned when the mission starts. </li> <li>Activate the "LATE ACTIVATION" tick box. Note that this aircraft will not be spawned itself but serves a template for each RAT aircraft spawned when the mission starts. </li>
</ul> </ul>
<p>Voil<EFBFBD>, your already done!</p> <p>Voilà, your already done!</p>
<p>Optionally, you can set a specific livery for the aircraft or give it some weapons. <p>Optionally, you can set a specific livery for the aircraft or give it some weapons.
However, the aircraft will by default not engage any enemies. Think of them as beeing on a peaceful or ferry mission.</p> However, the aircraft will by default not engage any enemies. Think of them as beeing on a peaceful or ferry mission.</p>
@@ -1023,9 +1062,25 @@ This setting can be changed using the <a href="##(RAT).SetTakeoff">RAT.SetTakeof
<li><a href="##(RAT).SetMaxDistance">RAT.SetMaxDistance</a>(150) will allow only destination airports which are <strong>less than</strong> 150 km away from the departure airport.</li> <li><a href="##(RAT).SetMaxDistance">RAT.SetMaxDistance</a>(150) will allow only destination airports which are <strong>less than</strong> 150 km away from the departure airport.</li>
</ul> </ul>
<p><img src="..\Presentations\RAT\RAT_Gaussian.png" alt="Process"/></p>
<p>Certain other options like the flight level can also be specified. However, note that this might not be a good idea for random departures and/or destinations. <p>By default planes get a cruise altitude of ~20,000 ft ASL. The actual altitude is sampled from a Gaussian distribution. The picture shows this distribution
For example the random route might be too short to reach that altitude, which would result in very high climb and descent rates or strange flight plans.</p> if one would spawn 1000 planes. As can be seen most planes get a cruising alt of around FL200. Other values are possible but less likely the further away
one gets from the expectation value.</p>
<p>The expectation value, i.e. the altitude most aircraft get, can be set with the function <a href="##(RAT).SetFLcruise">RAT.SetFLcruise</a>().
It is possible to restrict the minimum cruise altitude by <a href="##(RAT).SetFLmin">RAT.SetFLmin</a>() and the maximum cruise altitude by <a href="##(RAT).SetFLmax">RAT.SetFLmax</a>()</p>
<p>The cruise altitude can also be given in meters ASL by the functions <a href="##(RAT).SetCruiseAltitude">RAT.SetCruiseAltitude</a>(), <a href="##(RAT).SetMinCruiseAltitude">RAT.SetMinCruiseAltitude</a>() and <a href="##(RAT).SetMaxCruiseAltitude">RAT.SetMaxCruiseAltitude</a>().</p>
<p>For example:</p>
<ul>
<li><a href="##(RAT).SetFLcruise">RAT.SetFLcruise</a>(300) will cause most planes fly around FL300.</li>
<li><a href="##(RAT).SetFLmin">RAT.SetFLmin</a>(100) restricts the cruising alt such that no plane will fly below FL100. Note that this automatically changes the minimum distance from departure to destination.
That means that only destinations are possible for which the aircraft has had enought time to reach that flight level and descent again. </li>
<li><a href="##(RAT).SetFLmax">RAT.SetFLmax</a>(200) will restrict the cruise alt to maximum FL200, i.e. no aircraft will travel above this height.</li>
</ul>
@@ -1043,6 +1098,20 @@ For example the random route might be too short to reach that altitude, which wo
<dl class="function"> <dl class="function">
<dt> <dt>
<em></em>
<a id="#(RAT).ATC" >
<strong>RAT.ATC</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em> <em>#number</em>
<a id="#(RAT).AlphaDescent" > <a id="#(RAT).AlphaDescent" >
<strong>RAT.AlphaDescent</strong> <strong>RAT.AlphaDescent</strong>
@@ -1071,6 +1140,27 @@ For example the random route might be too short to reach that altitude, which wo
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(RAT).ClearForLanding" >
<strong>RAT:ClearForLanding(name)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> name </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT).Commute" > <a id="#(RAT).Commute" >
<strong>RAT:Commute(switch)</strong> <strong>RAT:Commute(switch)</strong>
</a> </a>
@@ -1158,6 +1248,31 @@ Turn journey on=true or off=false. If no value is given switch=true.</p>
<p>Flight level set by users explicitly.</p> <p>Flight level set by users explicitly.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT).Livery" >
<strong>RAT:Livery(skins)</strong>
</a>
</dt>
<dd>
<p>Set livery of aircraft.</p>
<p>If more than one livery is specified in a table, the actually used one is chosen randomly from the selection.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#string skins </em></code>:
Name of livery or table of names of liveries.</p>
</li>
</ul>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@@ -1394,6 +1509,31 @@ Default is "same", so aircraft will use airports of the coalition their spawn te
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(RAT).SetCruiseAltitude" >
<strong>RAT:SetCruiseAltitude(alt)</strong>
</a>
</dt>
<dd>
<p>Set cruising altitude.</p>
<p>This is still be checked for consitancy with selected route and prone to radomization.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#number alt </em></code>:
Cruising altitude ASL in meters.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT).SetDeparture" > <a id="#(RAT).SetDeparture" >
<strong>RAT:SetDeparture(names)</strong> <strong>RAT:SetDeparture(names)</strong>
</a> </a>
@@ -1580,6 +1720,28 @@ Maximum FL in hundrets of feet.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(RAT).SetMaxCruiseAltitude" >
<strong>RAT:SetMaxCruiseAltitude(alt)</strong>
</a>
</dt>
<dd>
<p>Set max cruising altitude above sea level.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#number alt </em></code>:
Altitude ASL in meters.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT).SetMaxCruiseSpeed" > <a id="#(RAT).SetMaxCruiseSpeed" >
<strong>RAT:SetMaxCruiseSpeed(speed)</strong> <strong>RAT:SetMaxCruiseSpeed(speed)</strong>
</a> </a>
@@ -1627,6 +1789,28 @@ Distance in km.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(RAT).SetMinCruiseAltitude" >
<strong>RAT:SetMinCruiseAltitude(alt)</strong>
</a>
</dt>
<dd>
<p>Set min cruising altitude above sea level.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#number alt </em></code>:
Altitude ASL in meters.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT).SetMinDistance" > <a id="#(RAT).SetMinDistance" >
<strong>RAT:SetMinDistance(dist)</strong> <strong>RAT:SetMinDistance(dist)</strong>
</a> </a>
@@ -1890,7 +2074,7 @@ true=on, false=off.</p>
<p>Set the time after which inactive groups will be destroyed.</p> <p>Set the time after which inactive groups will be destroyed.</p>
<p>Default is 180 seconds.</p> <p>Default is 300 seconds.</p>
<h3>Parameter</h3> <h3>Parameter</h3>
<ul> <ul>
@@ -1913,7 +2097,7 @@ Time in seconds.</p>
</dt> </dt>
<dd> <dd>
<p>Time in seconds after which inactive units will be destroyed. Default is 180 seconds.</p> <p>Time in seconds after which inactive units will be destroyed. Default is 300 seconds.</p>
</dd> </dd>
</dl> </dl>
@@ -1948,6 +2132,207 @@ Time in seconds.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(RAT)._ATCAddFlight" >
<strong>RAT:_ATCAddFlight(name, dest)</strong>
</a>
</dt>
<dd>
<p>Adds andd initializes a new flight after it was spawned.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string name </em></code>:
Group name of the flight.</p>
</li>
<li>
<p><code><em>#string dest </em></code>:
Name of the destination airport.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCCheck" >
<strong>RAT:_ATCCheck()</strong>
</a>
</dt>
<dd>
<p>Main ATC function.</p>
<p>Updates the landing queue of all airports and inceases holding time for all flights.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCClearForLanding" >
<strong>RAT:_ATCClearForLanding(airport, flight)</strong>
</a>
</dt>
<dd>
<p>Giving landing clearance for aircraft by setting user flag.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string airport </em></code>:
Name of destination airport.</p>
</li>
<li>
<p><code><em>#string flight </em></code>:
Group name of flight, which gets landing clearence.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCDelFlight" >
<strong>RAT:_ATCDelFlight(t, entry)</strong>
</a>
</dt>
<dd>
<p>Deletes a flight from ATC lists after it landed.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#table t </em></code>:
Table.</p>
</li>
<li>
<p><code><em>#string entry </em></code>:
Flight name which shall be deleted.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCFlightLanded" >
<strong>RAT:_ATCFlightLanded(name)</strong>
</a>
</dt>
<dd>
<p>Takes care of organisational stuff after a plane has landed.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#string name </em></code>:
Group name of flight.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCInit" >
<strong>RAT:_ATCInit(airports_map)</strong>
</a>
</dt>
<dd>
<p>Initializes the ATC arrays and starts schedulers.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#table airports_map </em></code>:
List of all airports of the map.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCQueue" >
<strong>RAT:_ATCQueue()</strong>
</a>
</dt>
<dd>
<p>Creates a landing queue for all flights holding at airports.</p>
<p>Aircraft with longest holding time gets first permission to land.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCRegisterFlight" >
<strong>RAT:_ATCRegisterFlight(name, time)</strong>
</a>
</dt>
<dd>
<p>Registers a flight once it is near its holding point at the final destination.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string name </em></code>:
Group name of the flight.</p>
</li>
<li>
<p><code><em>#number time </em></code>:
Time the fight first registered.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCStatus" >
<strong>RAT:_ATCStatus()</strong>
</a>
</dt>
<dd>
<p>ATC status report about flights.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._AirportExists" > <a id="#(RAT)._AirportExists" >
<strong>RAT:_AirportExists(name)</strong> <strong>RAT:_AirportExists(name)</strong>
</a> </a>
@@ -2140,7 +2525,7 @@ Height [m] of departure airport. Note we implicitly assume that the height diffe
<h3>Return value</h3> <h3>Return value</h3>
<p><em>#number:</em> <p><em>#number:</em>
Maximal flight level in meters.</p> Maximal flight level in meters.</p>
</dd> </dd>
</dl> </dl>
@@ -2274,6 +2659,45 @@ Group of the aircraft in the mission editor.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(RAT)._MinDistance" >
<strong>RAT:_MinDistance(alpha, beta, h)</strong>
</a>
</dt>
<dd>
<p>Calculate min distance between departure and destination for given minimum flight level and climb/decent rates</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number alpha </em></code>:
Angle of climb [rad].</p>
</li>
<li>
<p><code><em>#number beta </em></code>:
Angle of descent [rad].</p>
</li>
<li>
<p><code><em>#number h </em></code>:
min height AGL.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#number:</em>
Minimum distance between departure and destiantion.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ModifySpawnTemplate" > <a id="#(RAT)._ModifySpawnTemplate" >
<strong>RAT:_ModifySpawnTemplate(waypoints)</strong> <strong>RAT:_ModifySpawnTemplate(waypoints)</strong>
</a> </a>
@@ -3253,6 +3677,39 @@ Waypoints for DCS task route or spawn template.</p>
<p>Possible departure/destination airport: all=blue+red+neutral, same=spawn+neutral, spawnonly=spawn, blue=blue+neutral, blueonly=blue, red=red+neutral, redonly=red.</p> <p>Possible departure/destination airport: all=blue+red+neutral, same=spawn+neutral, spawnonly=spawn, blue=blue+neutral, blueonly=blue, red=red+neutral, redonly=red.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT).has_value" >
<strong>RAT:has_value(tab, val)</strong>
</a>
</dt>
<dd>
<p>Utility function which checks if table contains a specific value.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#table tab </em></code>:
Table with elements to check.</p>
</li>
<li>
<p><code><em>#string val </em></code>:
The value we are looking for.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#boolean:</em>
True if element in the list, false otherwise. </p>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@@ -3267,6 +3724,20 @@ Waypoints for DCS task route or spawn template.</p>
<p>Some ID to identify who we are in output of the DCS.log file.</p> <p>Some ID to identify who we are in output of the DCS.log file.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(RAT).livery" >
<strong>RAT.livery</strong>
</a>
</dt>
<dd>
<p>Livery of the aircraft set by user.</p>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@@ -3337,6 +3808,23 @@ Waypoints for DCS task route or spawn template.</p>
<p>Number of groups to be spawned in total.</p> <p>Number of groups to be spawned in total.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(RAT).onboard_num" >
<strong>RAT.onboard_num</strong>
</a>
</dt>
<dd>
<p> Onboard number.</p>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@@ -3463,6 +3951,20 @@ Waypoints for DCS task route or spawn template.</p>
<p>ROT of spawned groups, default is no reaction. Possible: "noreaction", "passive", "evade".</p> <p>ROT of spawned groups, default is no reaction. Possible: "noreaction", "passive", "evade".</p>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(RAT).skill" >
<strong>RAT.skill</strong>
</a>
</dt>
<dd>
<p>Skill of AI. </p>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 KiB

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB