Banner Image

Module Ops.AWACS

Ops - MOOSE AI AWACS Operations using text-to-speech.


AWACS - MOOSE AI AWACS Operations using text-to-speech.


Example Missions:

Demo missions can be found on GitHub.

Videos:

Demo videos can be found on Youtube


Author: applevangelist

Global(s)

Global AWACS

Of all men's miseries the bitterest is this: to know so much and to have control over nothing. (Herodotus)


AWACS AI Air Controller

  • WIP (beta)
  • AWACS replacement for the in-game AWACS
  • Will control a fighter engagement zone and assign tasks to AI and human CAP flights
  • Callouts referenced from:
    * References from ARN33396 ATP 3-52.4 (Sep 2021) (Combined Forces)
    *
    References from CNATRA P-877 (Rev 12-20) (NAVY)
  • FSM events that the mission designer can hook into
  • Can also be used as GCI Controller

0 Note for Multiplayer Setup

Due to DCS limitations you need to set up a second, "normal" AWACS plane in multi-player/server environments to keep the EPLRS/DataLink going in these environments.

#AWACS AWACS

Of all men's miseries the bitterest is this: to know so much and to have control over nothing. (Herodotus)


AWACS AI Air Controller

  • WIP (beta)
  • AWACS replacement for the in-game AWACS
  • Will control a fighter engagement zone and assign tasks to AI and human CAP flights
  • Callouts referenced from:
    * References from ARN33396 ATP 3-52.4 (Sep 2021) (Combined Forces)
    *
    References from CNATRA P-877 (Rev 12-20) (NAVY)
  • FSM events that the mission designer can hook into
  • Can also be used as GCI Controller

0 Note for Multiplayer Setup

Due to DCS limitations you need to set up a second, "normal" AWACS plane in multi-player/server environments to keep the EPLRS/DataLink going in these environments.

Though working in single player, the situational awareness screens of the e.g. F14/16/18 will else not receive datalink targets.

1 Prerequisites

The radio callouts in this class are exclusively created with Text-To-Speech (TTS), based on the Moose Sound.SRS Class, and output is via Ciribob's SRS system Ensure you have this covered and working before tackling this class. TTS generation can thus be done via the Windows built-in system or via Google TTS; the latter offers a wider range of voices and options, but you need to set up your own Google product account for this to work correctly.

2 Mission Design - Operational Priorities

Basic operational target of the AWACS is to control a Fighter Engagement Zone, or FEZ, and defend itself.

3 Airwing(s)

The AWACS plane, the optional escort planes, and the AI CAP planes work based on the Ops.Airwing class. Read and understand the manual for this class in order to set everything up correctly. You will at least need one Squadron containing the AWACS plane itself.

Set up the Airwing

       local AwacsAW = AIRWING:New("AirForce WH-1","AirForce One")
       AwacsAW:SetMarker(false)
       AwacsAW:SetAirbase(AIRBASE:FindByName(AIRBASE.Caucasus.Kutaisi))
       AwacsAW:SetRespawnAfterDestroyed(900)
       AwacsAW:SetTakeoffAir()
       AwacsAW:__Start(2)

Add the AWACS template Squadron - Note: remove the task AWACS in the mission editor under "Advanced Waypoint Actions" from the template to remove the DCS F10 AWACS menu

       local Squad_One = SQUADRON:New("Awacs One",2,"Awacs North")
       Squad_One:AddMissionCapability({AUFTRAG.Type.ORBIT},100)
       Squad_One:SetFuelLowRefuel(true)
       Squad_One:SetFuelLowThreshold(0.2)
       Squad_One:SetTurnoverTime(10,20)
       AwacsAW:AddSquadron(Squad_One)
       AwacsAW:NewPayload("Awacs One One",-1,{AUFTRAG.Type.ORBIT},100)

Add Escorts Squad (recommended, optional)

       local Squad_Two = SQUADRON:New("Escorts",4,"Escorts North")
       Squad_Two:AddMissionCapability({AUFTRAG.Type.ESCORT})
       Squad_Two:SetFuelLowRefuel(true)
       Squad_Two:SetFuelLowThreshold(0.3)
       Squad_Two:SetTurnoverTime(10,20)
       Squad_Two:SetTakeoffAir()
       Squad_Two:SetRadio(255,radio.modulation.AM)
       AwacsAW:AddSquadron(Squad_Two)
       AwacsAW:NewPayload("Escorts",-1,{AUFTRAG.Type.ESCORT},100)

Add CAP Squad (recommended, optional)

       local Squad_Three = SQUADRON:New("CAP",10,"CAP North")
       Squad_Three:AddMissionCapability({AUFTRAG.Type.ALERT5, AUFTRAG.Type.CAP, AUFTRAG.Type.GCICAP, AUFTRAG.Type.INTERCEPT},80)
       Squad_Three:SetFuelLowRefuel(true)
       Squad_Three:SetFuelLowThreshold(0.3)
       Squad_Three:SetTurnoverTime(10,20)
       Squad_Three:SetTakeoffAir()
       Squad_Two:SetRadio(255,radio.modulation.AM)
       AwacsAW:AddSquadron(Squad_Three)
       AwacsAW:NewPayload("Aerial-1-2",-1,{AUFTRAG.Type.ALERT5,AUFTRAG.Type.CAP, AUFTRAG.Type.GCICAP, AUFTRAG.Type.INTERCEPT},100)

4 Zones

For the setup, you need to set up a couple of zones:

  • An Orbit Zone, where your AWACS will orbit
  • A Fighter Engagement Zone or FEZ
  • A zone where your CAP flights will be stationed, waiting for assignments
  • Optionally, an additional zone you wish to defend
  • Optionally, a border of the opposing party
  • Also, and move your BullsEye in the mission accordingly - this will be the key reference point for most AWACS callouts

4.1 Strategic considerations

Your AWACS is an HVT or high-value-target. Thus it makes sense to position the Orbit Zone in a way that your FEZ and thus your CAP flights defend it. It should hence be positioned behind the FEZ, away from the direction of enemy engagement. The zone for CAP stations should be close to the FEZ, but not inside it. The optional additional defense zone can be anywhere, but keep an eye on the location so your CAP flights don't take ages to get there. The optional border is useful for e.g. "cold war" scenarios - planes across the border will not be considered as targets by AWACS.

5 Set up AWACS

       -- Set up AWACS called "AWACS North". It will use the AwacsAW Airwing set up above and be of the "blue" coalition. Homebase is Kutaisi.
       -- The AWACS Orbit Zone is a round zone set in the mission editor named "Awacs Orbit", the FEZ is a Polygon-Zone called "Rock" we have also
       -- set up in the mission editor with a late activated helo named "Rock#ZONE_POLYGON". Note this also sets the BullsEye to be referenced as "Rock".
       -- The CAP station zone is called "Fremont". We will be on 255 AM.
       local testawacs = AWACS:New("AWACS North",AwacsAW,"blue",AIRBASE.Caucasus.Kutaisi,"Awacs Orbit",ZONE:FindByName("Rock"),"Fremont",255,radio.modulation.AM )
       -- set two escorts
       testawacs:SetEscort(2)
       -- Callsign will be "Focus". We'll be a Angels 30, doing 300 knots, orbit leg to 88deg with a length of 25nm.
       testawacs:SetAwacsDetails(CALLSIGN.AWACS.Focus,1,30,300,88,25)
       -- Set up SRS on port 5010 - change the below to your path and port
       testawacs:SetSRS("C:\\Program Files\\DCS-SimpleRadio-Standalone","female","en-GB",5010)
       -- Add a "red" border we don't want to cross, set up in the mission editor with a late activated helo named "Red Border#ZONE_POLYGON"
       testawacs:SetRejectionZone(ZONE:FindByName("Red Border"))
       -- Our CAP flight will have the callsign "Ford", we want 4 AI planes, Time-On-Station is four hours, doing 300 kn IAS.
       testawacs:SetAICAPDetails(CALLSIGN.Aircraft.Ford,4,4,300)
       -- We're modern (default), e.g. we have EPLRS and get more fill-in information on detections
       testawacs:SetModernEra()
       -- And start
       testawacs:__Start(5)

5.1 Alternative - Set up as GCI (no AWACS plane needed) Theater Air Control System (TACS)

       -- Set up as TACS called "GCI Senaki". It will use the AwacsAW Airwing set up above and be of the "blue" coalition. Homebase is Senaki.
       -- No need to set the AWACS Orbit Zone; the FEZ is still a Polygon-Zone called "Rock" we have also
       -- set up in the mission editor with a late activated helo named "Rock#ZONE_POLYGON". Note this also sets the BullsEye to be referenced as "Rock".
       -- The CAP station zone is called "Fremont". We will be on 255 AM. Note the Orbit Zone is given as *nil* in the `New()`-Statement
       local testawacs = AWACS:New("GCI Senaki",AwacsAW,"blue",AIRBASE.Caucasus.Senaki_Kolkhi,nil,ZONE:FindByName("Rock"),"Fremont",255,radio.modulation.AM )
       -- Set up SRS on port 5010 - change the below to your path and port
       testawacs:SetSRS("C:\\Program Files\\DCS-SimpleRadio-Standalone","female","en-GB",5010)
       -- Add a "red" border we don't want to cross, set up in the mission editor with a late activated helo named "Red Border#ZONE_POLYGON"
       testawacs:SetRejectionZone(ZONE:FindByName("Red Border"))
       -- Our CAP flight will have the callsign "Ford", we want 4 AI planes, Time-On-Station is four hours, doing 300 kn IAS.
       testawacs:SetAICAPDetails(CALLSIGN.Aircraft.Ford,4,4,300)
       -- We're modern (default), e.g. we have EPLRS and get more fill-in information on detections
       testawacs:SetModernEra()
       -- Give it a fancy callsign
       testawacs:SetAwacsDetails(CALLSIGN.AWACS.Wizard)
       -- And start as GCI using a group name "Blue EWR" as main EWR station
       testawacs:SetAsGCI(GROUP:FindByName("Blue EWR"),2)
       -- Set Custom CAP Flight Callsigns for use with TTS
       testawacs:SetCustomCallsigns({
         Devil = 'Bengal',
         Snake = 'Winder',
         Colt = 'Camelot',
         Enfield = 'Victory',
         Uzi = 'Evil Eye'
       })
       testawacs:__Start(4)

6 Menu entries

Note on Radio Menu entries: Due to a DCS limitation, these are on GROUP level and not individual (UNIT level). Hence, either put each player in his/her own group, or ensure that only the flight lead will use the menu. Recommend the 1st option, unless you have a disciplined team.

6.1 Check-in

In the base setup, you need to check in to the AWACS to get the full menu. This can be done once the AWACS is airborne. You will get an Alpha Check callout and be assigned a CAP station.

6.2 Check-out

You can check-out anytime, of course.

6.3 Picture

Get a picture from the AWACS. It will call out the three most important groups. References are always to the (named) BullsEye position. Note that AWACS will anyway do a regular picture call to all stations every five minutes.

6.4 Bogey Dope

Get bogey dope from the AWACS. It will call out the closest bogey group, if any. Reference is BRAA to the Player position.

6.5 Declare

AWACS will declare, if the bogey closest to the calling player in a 3nm circle is hostile, friendly or neutral.

6.6 Tasking

Tasking will show you the current task with "Showtask". Updated directions are shown, also. You can decline a requested task with "unable", and abort any task but CAP station with "abort". You can "commit" to a requested task within 3 minutes. "VID" - if AWACS is set to Visial ID or VID oncoming planes first, there will also be an "VID" entry. Similar to "Declare" you can declare the requested contact to be hostile, friendly or neutral if you are close enough to it (3nm). If hostile, at the time of writing, an engagement task will be assigned to you (not: requested). If neutral/friendly, contact will be excluded from further tasking.

7 Air-to-Air Timeline Support

To support your engagement timeline, AWACS will make Tac-Range, Meld, Merge and Threat call-outs to the player/group (Figure 7-3, CNATRA P-877). Default settings in NM are

       Tac Distance = 45
       Meld Distance = 35
       Threat Distance = 25
       Merge Distance = 5 

8 Bespoke Player CallSigns

Append the GROUP name of your client slots with "#CallSign" to use bespoke callsigns in AWACS callouts. E.g. "Player F14#Ghostrider" will be refered to as "Ghostrider" plus group number, e.g. "Ghostrider 9". Alternatively, if you have set up your Player name in the "Logbook" in the mission editor main screen as e.g. "Pikes | Goose", you will be addressed as "Goose" by the AWACS callouts.

9 Options

There's a number of functions available, to set various options for the setup.

9.1 Single Options

Further single options (set before starting your AWACS instance, but after :New())

       testawacs.PlayerGuidance = true -- allow missile warning call-outs.
       testawacs.NoGroupTags = false -- use group tags like Alpha, Bravo .. etc in call outs.
       testawacs.callsignshort = true -- use short callsigns, e.g. "Moose 1", not "Moose 1-1".
       testawacs.DeclareRadius = 5 -- you need to be this close to the lead unit for declare/VID to work, in NM.
       testawacs.MenuStrict = true -- Players need to check-in to see the menu; check-in still require to use the menu.
       testawacs.maxassigndistance = 100 -- Don't assign targets further out than this, in NM.
       testawacs.debug = false -- set to true to produce more log output.
       testawacs.NoMissileCalls = true -- suppress missile callouts
       testawacs.PlayerCapAssignment = true -- no intercept task assignments for players
       testawacs.invisible = false -- set AWACS to be invisible to hostiles
       testawacs.immortal = false -- set AWACS to be immortal
       -- By default, the radio queue is checked every 10 secs. This is altered by the calculated length of the sentence to speak
       -- over the radio. Google and Windows speech speed is different. Use the below to fine-tune the setup in case of overlapping
       -- messages or too long pauses
       testawacs.GoogleTTSPadding = 1 -- seconds
       testawacs.WindowsTTSPadding = 2.5 -- seconds
       testawacs.PikesSpecialSwitch = false -- if set to true, AWACS will omit the "doing xy knots" on the station assignement callout
       testawacs.IncludeHelicopters = false -- if set to true, Helicopter pilots will also get the AWACS Menu and options

9.2 Bespoke random voices for AI CAP (Google TTS only)

Currently there are 10 voices defined which are randomly assigned to the AI CAP flights:

Defaults are:

     testawacs.CapVoices = {
       [1] = "de-DE-Wavenet-A",
       [2] = "de-DE-Wavenet-B",
       [3] = "fr-FR-Wavenet-A",
       [4] = "fr-FR-Wavenet-B",
       [5] = "en-GB-Wavenet-A",
       [6] = "en-GB-Wavenet-B",
       [7] = "en-GB-Wavenet-D",
       [8] = "en-AU-Wavenet-B",
       [9] = "en-US-Wavenet-J",
       [10] = "en-US-Wavenet-H",
      }

10 Using F10 map markers to create new player station points

You can use F10 map markers to create new station points for human CAP flights. The latest created station will take priority for (new) station assignments for humans. Enable this option with

       testawacs.AllowMarkers = true

Set a marker on the map and add the following text to create a station: "AWACS Station London" - "AWACS Station" are the necessary keywords, "London" in this example will be the name of the new station point. The user marker can then be deleted, an info marker point at the same place will remain. You can delete a player station point the same way: "AWACS Delete London"; note this will only work if currently there are no assigned flights on this station. Lastly, you can move the station around with keyword "Move": "AWACS Move London".

11 Localization

Localization for English text is build-in. Default setting is English. Change with AWACS.SetLocale()

11.1 Adding Localization

A list of fields to be defined follows below. Note that in some cases string.format() is used to format texts for screen and SRS. Hence, the %d, %s and %f special characters need to appear in the exact same amount and order of appearance in the localized text or it will create errors. To add a localization, the following texts need to be translated and set in your mission script before AWACS.Start():

 AWACS.Messages = {
   EN =
     {
     DEFEND = "%s, %s! %s! %s! Defend!",
     VECTORTO = "%s, %s. Vector%s %s",
     VECTORTOTTS = "%s, %s, Vector%s %s",
     ANGELS = ". Angels ",
     ZERO = "zero",
     VANISHED = "%s, %s Group. Vanished.",
     VANISHEDTTS = "%s, %s group vanished.",
     SHIFTCHANGE = "%s shift change for %s control.",
     GROUPCAP = "Group",
     GROUP = "group",
     MILES = "miles",
     THOUSAND = "thousand",
     BOGEY = "Bogey",
     ALLSTATIONS = "All Stations",
     PICCLEAN = "%s. %s. Picture Clean.",
     PICTURE = "Picture",
     ONE = "One",
     GROUPMULTI = "groups",
     NOTCHECKEDIN = "%s. %s. Negative. You are not checked in.",
     CLEAN = "%s. %s. Clean.",
     DOPE = "%s. %s. Bogey Dope. ",
     VIDPOS = "%s. %s. Copy, target identified as %s.",
     VIDNEG = "%s. %s. Negative, get closer to target.",
     FFNEUTRAL = "Neutral",
     FFFRIEND = "Friendly",
     FFHOSTILE = "Hostile",
     FFSPADES = "Spades",
     FFCLEAN = "Clean",
     COPY = "%s. %s. Copy.",
     TARGETEDBY = "Targeted by %s.",
     STATUS = "Status",
     ALREADYCHECKEDIN = "%s. %s. Negative. You are already checked in.",
     ALPHACHECK = "Alpha Check",
     CHECKINAI = "%s. %s. Checking in as fragged. Expected playtime %d hours. Request Alpha Check %s.",
     SAFEFLIGHT = "%s. %s. Copy. Have a safe flight home.",
     VERYLOW = "very low",
     AIONSTATION = "%s. %s. On station over anchor %d at angels  %d. Ready for tasking.",
     POPUP = "Pop-up",
     NEWGROUP = "New group",
     HIGH= " High.",
     VERYFAST = " Very fast.",
     FAST = " Fast.",
     THREAT = "Threat",
     MERGED = "Merged",
     SCREENVID = "Intercept and VID %s group.",
     SCREENINTER = "Intercept %s group.",
     ENGAGETAG = "Targeted by %s.",
     REQCOMMIT = "%s. %s group. %s. %s, request commit.",
     AICOMMIT = "%s. %s group. %s. %s, commit.",
     COMMIT = "Commit",
     SUNRISE = "%s. All stations, SUNRISE SUNRISE SUNRISE, %s.",
     AWONSTATION = "%s on station for %s control.",
     STATIONAT = "%s. %s. Station at %s at angels %d.",
     STATIONATLONG = "%s. %s. Station at %s at angels %d doing %d knots.",
     STATIONSCREEN = "%s. %s.\nStation at %s\nAngels %d\nSpeed %d knots\nCoord %s\nROE %s.",
     STATIONTASK = "Station at %s\nAngels %d\nSpeed %d knots\nCoord %s\nROE %s",
     VECTORSTATION = " to Station",
     TEXTOPTIONS1 = "Lost friendly flight",
     TEXTOPTIONS2 =  "Vanished friendly flight",
     TEXTOPTIONS3 =  "Faded friendly contact",
     TEXTOPTIONS4 =  "Lost contact with",
     },
    } 

e.g.

       testawacs.Messages = {
         DE = {
           ...
           FFNEUTRAL = "Neutral",
           FFFRIEND = "Freund",
           FFHOSTILE = "Feind",
           FFSPADES = "Uneindeutig",
           FFCLEAN = "Sauber",
           ...
         },

12 Discussion

If you have questions or suggestions, please visit the MOOSE Discord #ops-awacs channel.

Type(s)

AWACS , extends Core.Fsm#FSM
Fields and Methods inherited from AWACS Description

AWACS.AICAPCAllName

AWACS.AICAPCAllNumber

AWACS.AICAPMissions

FIFO for Ops.Auftrag#AUFTRAG for AI CAP

AWACS.AIRequested

AWACS.AIonCAP

AWACS.AOCoordinate

Coordinate of bulls eye

AWACS.AOName

name of the FEZ, e.g. Rock

AWACS.AccessKey

AWACS:AddCAPAirWing(AirWing, Zone)

[User] Add another AirWing for AI CAP Flights under management

AWACS:AddFrequencyAndModulation(Frequency, Modulation)

[User] Add additional frequency and modulation for AWACS SRS output.

AWACS:AddGroupToDetection(Group)

[User] Add a radar GROUP object to the INTEL detection SET_GROUP

AWACS.AirWing

AWACS.Airbase

AWACS.AllowMarkers

AWACS.AnchorBaseAngels

AWACS.AnchorNames

AWACS.AnchorStacks

AWACS.AwacsAngels

AWACS.AwacsFG

AWACS.AwacsInZone

AWACS.AwacsMission

AWACS.AwacsMissionReplacement

AWACS.AwacsROE

AWACS.AwacsROT

AWACS.AwacsReady

AWACS.AwacsSRS

AWACS.AwacsTimeOnStation

AWACS.AwacsTimeStamp

AWACS.Backend

AWACS.BorderZone

AWACS.CAPAirwings

AWACS.CAPCulture

AWACS.CAPGender

AWACS.CAPIdleAI

AWACS.CAPIdleHuman

AWACS.CAPTimeOnStation

AWACS.CAPVoice

AWACS.CID

AWACS.CallSign

AWACS.CallSignClear

AWACS.CallSignNo

AWACS.CapSpeedBase

AWACS.CapVoices

AWACS.CatchAllFGs

AWACS.CatchAllMissions

AWACS.ClassName

Name of this class.

AWACS.Contacts

AWACS.ContactsAO

AWACS.ControlZone

AWACS.Countactcounter

AWACS.Culture

AWACS.DetectionSet

AWACS:DrawFEZ()

[User] Draw a line around the FEZ on the F10 map.

AWACS.EscortMission

AWACS.EscortMissionReplacement

AWACS.EscortNumber

AWACS.EscortsTimeOnStation

AWACS.EscortsTimeStamp

AWACS.FlightGroups

AWACS.Frequency

AWACS.GCI

Act as GCI

AWACS.GCIGroup

EWR group object for GCI ops

AWACS.Gender

AWACS:GetName()

[User] Get AWACS Name

AWACS.GoogleTTSPadding

AWACS.HasEscorts

AWACS.Heading

AWACS.IFF

AWACS.IncludeHelicopters

AWACS.Leg

AWACS.ManagedGrpID

AWACS.ManagedGrps

AWACS.ManagedTaskID

AWACS.ManagedTasks

AWACS.MarkerOps

AWACS.MaxAIonCAP

AWACS.MaxMissionRange

AWACS.MeldDistance

25nm - distance for "Meld" Call , usually shortly before the actual engagement

AWACS.MenuStrict

AWACS.Messages

AWACS.ModernEra

if true we get more intel on targets, and EPLR on the AIC

AWACS.Modulation

AWACS.MonitoringData

AWACS.MonitoringOn

AWACS:New(Name, AirWing, Coalition, AirbaseName, AwacsOrbit, OpsZone, StationZone, Frequency, Modulation)

Set up a new AI AWACS.

AWACS.NoGroupTags

Set to true if you don't want group tags.

AWACS.NoMissileCalls

Suppress missile callouts

AWACS:OnAfterAssignedAnchor(From, Event, To)

On After "AssignedAnchor" event.

AWACS:OnAfterAwacsShiftChange(From, Event, To)

On After "AwacsShiftChange" event.

AWACS:OnAfterCheckedIn(From, Event, To)

On After "CheckedIn" event.

AWACS:OnAfterCheckedOut(From, Event, To)

On After "CheckedOut" event.

AWACS:OnAfterEscortShiftChange(From, Event, To)

On After "EscortShiftChange" event.

AWACS:OnAfterIntercept(From, Event, To)

On After "InterceptFailure" event.

AWACS:OnAfterLostCluster(From, Event, To)

On After "LostCluster" event.

AWACS:OnAfterLostContact(From, Event, To)

On After "LostContact" event.

AWACS:OnAfterNewCluster(From, Event, To)

On After "NewCluster" event.

AWACS:OnAfterNewContact(From, Event, To)

On After "NewContact" event.

AWACS:OnAfterReAnchor(From, Event, To)

On After "ReAnchor" event.

AWACS.OpenTasks

AWACS.OpsZone

AWACS.OrbitZone

AWACS.PathToGoogleKey

AWACS.PathToSRS

AWACS.Phonetic

AWACS.PictureAO

AWACS.PictureEWR

AWACS.PictureInterval

Interval in seconds for general picture

AWACS.PictureTimeStamp

Interval timestamp

AWACS.PlayerCapAssignment

Assign players to CAP tasks when they are logged on

AWACS.PlayerGuidance

if true additional callouts to guide/warn players

AWACS.PlayerStationName

AWACS.Port

AWACS.PrioRadioQueue

AWACS.ROE

AWACS.ROT

AWACS.RadarBlur

Radar blur in %

AWACS.RadioQueue

AWACS.ReassignmentPause

Wait this many seconds before re-assignment of a player

AWACS.RejectZone

AWACS.RejectZoneSet

AWACS:SetAICAPDetails(Callsign, MaxAICap, TOS, Speed)

[User] Set AI CAP Plane Details

AWACS:SetAdditionalZone(Zone, Draw)

[User] Set additional defensive zone, e.g.

AWACS:SetAsGCI(EWR, Delay)

[User] Set this instance to act as GCI TACS Theater Air Control System

AWACS:SetAwacsDetails(CallSign, CallSignNo, Angels, Speed, Heading, Leg)

[User] Set AWACS flight details

AWACS:SetBullsEyeAlias(Name)

[User] Change the bulls eye alias for AWACS callout.

AWACS:SetCallSignOptions(ShortCallsign, Keepnumber, CallsignTranslations, CallsignCustomFunc, ...)

[User] Set player callsign options for TTS output.

AWACS:SetColdWar()

[User] Set AWACS to Cold War standards - ROE to VID, ROT to Passive (bypass and escape).

AWACS:SetCustomAWACSCallSign(CallsignTable)

[User] Set AWACS custom callsigns for TTS

AWACS:SetCustomCallsigns(translationTable)

[User] For CAP flights: Replace ME callsigns with user-defined callsigns for use with TTS and on-screen messaging

AWACS:SetEscort(EscortNumber)

[User] Set AWACS Escorts Template

AWACS:SetInterceptTimeline(TacDistance, MeldDistance, ThreatDistance)

[User] Set AWACS intercept timeline support distance.

AWACS:SetLocale(Locale)

[User] Set locale for localization.

AWACS:SetMaxMissionRange(NM)

[User] Set the max mission range flights can be away from their home base.

AWACS:SetModernEra()

[User] Set AWACS to Modern Era standards - ROE to BVR, ROT to defensive (evade fire).

AWACS:SetModernEraAggressive()

[User] Set AWACS to Modern Era standards - ROE to BVR, ROT to return fire.

AWACS:SetModernEraDefensive()

[User] Set AWACS to Modern Era standards - ROE to IFF, ROT to defensive (evade fire).

AWACS:SetPlayerGuidance(Switch)

[User] Set AWACS Player Guidance - influences missile callout and the "New" label in group callouts.

AWACS:SetPolicingColdWar()

[User] Set AWACS to Policing standards - ROE to VID, ROT to Lock (bypass and escape).

AWACS:SetPolicingModern()

[User] Set AWACS to Policing standards - ROE to VID, ROT to Lock (bypass and escape).

AWACS:SetRadarBlur(Percent)

[User] Set AWACS Radar Blur - the radar contact count per group/cluster will be distored up or down by this number percent.

AWACS:SetReassignmentPause(Seconds)

[User] Change number of seconds AWACS waits until a Player is re-assigned a different task.

AWACS:SetRejectionZone(Zone, Draw)

[User] Set rejection zone, e.g.

AWACS:SetSRS(PathToSRS, Gender, Culture, Port, Voice, Volume, PathToGoogleKey, AccessKey, Backend)

[User] Set AWACS SRS TTS details - see Sound.SRS for details.

AWACS:SetSRSVoiceCAP(Gender, Culture, Voice)

[User] Set AWACS Voice Details for AI CAP Planes - SRS TTS - see Sound.SRS for details

AWACS:SetTOS(AICHours, CapHours)

[User] Set TOS Time-on-Station in Hours

AWACS:SetTacticalRadios(BaseFreq, Increase, Modulation, Interval, Number)

[User] Set the tactical information option, create 10 radio channels groups can subscribe and get Bogey Dope on a specific frequency automatically.

AWACS.ShiftChangeAwacsFlag

AWACS.ShiftChangeAwacsRequested

AWACS.ShiftChangeEscortsFlag

AWACS.ShiftChangeEscortsRequested

AWACS.Shipsize

AWACS.Speed

AWACS.SpeedBase

AWACS:Start()

Triggers the FSM event "Start".

AWACS.StationZone

AWACS:SuppressScreenMessages(Switch)

[User] Do not show messages on screen

AWACS.SuppressScreenOutput

Set to true to suppress all screen output.

AWACS.THREATLEVEL

AWACS.TacDistance

30nm - distance for "TAC" Call

AWACS.TacticalBaseFreq

AWACS.TacticalFrequencies

AWACS.TacticalIncrFreq

AWACS.TacticalInterval

AWACS.TacticalMenu

AWACS.TacticalModulation

AWACS.TacticalQueue

AWACS.TacticalSRS

AWACS.TacticalSRSQ

AWACS.TacticalSubscribers

AWACS.TaskDescription

AWACS.TaskStatus

AWACS.TaskedCAPAI

AWACS.TaskedCAPHuman

AWACS.ThreatDistance

15nm - distance to declare untargeted (new) threats

AWACS.Voice

AWACS.Volume

AWACS.WindowsTTSPadding

AWACS:ZipLip()

[User] Do not show messages on screen, no extra calls for player guidance, use short callsigns etc.

AWACS.ZoneSet

AWACS:_AnnounceContact(Contact, IsNew, Group, IsBogeyDope, Tag, IsPopup, ReportingName, Tactical)

[Internal] Announce a new contact

AWACS:_AssignAnchorToID(GID, HasOwnStation, StationName)

[Internal] AWACS Assign Anchor Position to a Group

AWACS:_AssignPilotToTarget(Pilots, Targets)

[Internal] Assign a Pilot to a target

AWACS:_BogeyDope(Group, Tactical)

[Internal] AWACS Menu for Bogey Dope

AWACS:_CheckAICAPOnStation()

[Internal] Check Enough AI CAP on Station

AWACS:_CheckAwacsStatus()

AWACS:_CheckIn(Group)

[Internal] AWACS Menu for Check in

AWACS:_CheckInAI(FlightGroup, Group, AuftragsNr)

[Internal] AWACS Menu for CheckInAI

AWACS:_CheckMerges()

[Internal] Check merges for Players

AWACS:_CheckOut(Group, GID, dead)

[Internal] AWACS Menu for Check Out

AWACS:_CheckSubscribers()

[Internal] _CheckSubscribers

AWACS:_CheckTaskQueue()

[Internal] Check available tasks and status

AWACS:_CleanUpAIMissionStack()

[Internal] Clean up mission stack

AWACS:_CleanUpContacts()

[Internal] Clean up contacts list

AWACS:_Commit(Group)

[Internal] AWACS Menu for Commit

AWACS:_ConsistencyCheck()

AWACS:_CreateAnchorStack()

[Internal] AWACS Create a new Anchor Stack

AWACS:_CreateAnchorStackFromMarker(Name, Coord)

[Internal] AWACS Create a new Anchor Stack from a Marker - this then is the preferred station for players

AWACS:_CreateBogeyDope(Callsign, GID, Tactical)

[Internal] AWACS Speak Bogey Dope entries

AWACS:_CreatePicture(AO, Callsign, GID, MaxEntries, IsGeneral)

[Internal] AWACS Speak Picture AO/EWR entries

AWACS:_CreateTaskForGroup(GroupID, Description, ScreenText, Object, TaskStatus, Auftrag, Cluster, Contact)

[Internal] Register Task for Group by GID

AWACS:_Declare(Group)

[Internal] AWACS Menu for Declare

AWACS:_DeleteAnchorStackFromMarker(Name, Coord)

[Internal] AWACS Delete a new Anchor Stack from a Marker - only works if no assignments are on the station

AWACS:_EventHandler(EventData)

[Internal] Event handler

AWACS:_GetAliveOpsGroupFromTable(OpsGroups)

[Internal] Check for alive OpsGroup from Mission OpsGroups table

AWACS:_GetBRAfromBullsOrAO(clustercoordinate)

[Internal] Get BR text for TTS - ie "Rock 214, 24 miles" and TTS "Rock 2 1 4, 24 miles"

AWACS:_GetBlurredSize(size)

[Internal] Get blurred size of group or cluster

AWACS:_GetCallSign(Group, GID, IsPlayer)

[Internal] AWACS Get TTS compatible callsign

AWACS:_GetFreeAnchorStack()

[Internal] AWACS get free anchor stack for managed groups

AWACS:_GetGIDFromGroupOrName(Group)

[Internal] Event handler

AWACS:_GetIdlePilots()

[Internal] Select pilots available for tasking, return AI and Human

AWACS:_GetManagedGrpID(Group)

[Internal] Check if a group has checked in

AWACS:_GetThreatLevelText(threatlevel)

[Internal] Get threat level as clear test

AWACS:_InitLocalization()

[Internal] Init localization

AWACS:_Judy(Group)

[Internal] AWACS Menu for Judy

AWACS:_LogStatistics()

[Internal] Write stats to log

AWACS:_MeldRangeCall(GID, Contact)

[Internal] Meld Range Call to Pilot

AWACS:_MergedCall(GID)

[Internal] Merged Call to Pilot

AWACS:_MessageAIReadyForTasking(GID)

[Internal] Create radio entry to tell players that CAP is on station in Anchor

AWACS:_MessageVector(GID, Tag, Coordinate, Angels)

[Internal] Message a vector BR to a position

AWACS:_MissileWarning(Coordinate, Type, Warndist)

[Internal] Missile Warning Callout

AWACS:_MoveAnchorStackFromMarker(Name, Coord)

[Internal] AWACS Move a new Anchor Stack from a Marker

AWACS:_NewRadioEntry(TextTTS, TextScreen, GID, IsGroup, ToScreen, IsNew, FromAI, IsPrio, Tactical)

[Internal] Create a AIC-TTS message entry

AWACS:_Picture(Group, IsGeneral)

[Internal] AWACS Menu for Picture

AWACS:_ReadAssignedGroupFromTID(TaskID)

[Internal] Read assigned Group from a TaskID

AWACS:_ReadAssignedTaskFromGID(GroupID)

[Internal] Read registered Task for Group by its ID

AWACS:_RefreshMenuNonSubscribed()

TODO [Internal] _RefreshMenuNonSubscribed

AWACS:_RemoveIDFromAnchor(ID, AnchorStackNo, Angels, GID)

[Internal] Remove GID (group) from Anchor Stack

AWACS:_SetAIROE(FlightGroup, Group)

[Internal] Set ROE for AI CAP

AWACS:_SetClientMenus()

[Internal] AWACS set client menus

AWACS:_ShowAwacsInfo(Group)

[Internal] AWACS Menu for Show Info

AWACS:_Showtask(Group)

[Internal] AWACS Menu for Showtask

AWACS:_StartEscorts(Shiftchange)

[Internal] Start AWACS Escorts FlightGroup

AWACS:_StartIntel(awacs)

[Internal] Start INTEL detection when we reach the AWACS Orbit Zone

AWACS:_StartSettings(FlightGroup, Mission)

[Internal] AWACS further Start Settings

AWACS:_SubScribeTactRadio(Group, Frequency)

[Internal] _SubScribeTactRadio

AWACS:_TACRangeCall(GID, Contact)

[Internal] TAC Range Call to Pilot

AWACS:_TargetSelectionProcess(Untargeted)

[Internal] Select max 3 targets for picture, bogey dope etc

AWACS:_TaskAbort(Group)

[Internal] AWACS Menu for Abort

AWACS:_ThreatRangeCall(GID, Contact)

[Internal] Threat Range Call to Pilot

AWACS:_ToStringBR(FromCoordinate, ToCoordinate)

[Internal] Get BR text for TTS

AWACS:_ToStringBRA(FromCoordinate, ToCoordinate, Altitude)

[Internal] Get BRA text for TTS

AWACS:_ToStringBULLS(Coordinate, ssml, TTS)

[Internal] Return Bullseye BR for Alpha Check etc, returns e.g.

AWACS:_ToStringBullsTTS(Text)

[Internal] Change Bullseye string to be TTS friendly, "Bullseye 021, 16" returns e.g.

AWACS:_Unable(Group)

[Internal] AWACS Menu for Unable

AWACS:_UnsubScribeTactRadio(Group)

[Internal] _UnsubScribeTactRadio

AWACS:_UpdateContactEngagementTag(CID, Text, TAC, MELD, TaskStatus)

[Internal] Update Contact Tag

AWACS:_UpdateContactFromCluster(CID)

[Internal] Update contact from cluster data

AWACS:_VID(Group, Declaration)

[Internal] AWACS Menu for VID

AWACS:__Start(delay)

Triggers the FSM event "Start" after a delay.

AWACS:__Stop(delay)

Triggers the FSM event "Stop" after a delay.

AWACS.callsignCustomArgs

AWACS.callsignCustomFunc

AWACS.callsignTranslations

optional translations for callsigns

AWACS.callsignshort

if true use short (group) callsigns, e.g. "Ghost 1", else "Ghost 1 1"

AWACS.callsigntxt

AWACS.clientmenus

AWACS.clientset

AWACS.coalition

Coalition side.

AWACS.coalitiontxt

e.g."blue"

AWACS.debug

AWACS.gettext

AWACS.intel

AWACS.intelstarted

AWACS.keepnumber

if true, use the full string after # for a player custom callsign

AWACS.lid

LID for log entries.

AWACS.locale

Localization

AWACS.maxassigndistance

Only assing AI/Pilots to targets max this far away

AWACS:onafterAssignAnchor(From, Event, To, GID, HasOwnStation, HasOwnStation, StationName)

[Internal] onafterAssignAnchor

AWACS:onafterAssignedAnchor(From, Event, To, GID, Anchor, AnchorStackNo, AnchorAngels)

[Internal] onafterAssignedAnchor

AWACS:onafterAwacsShiftChange(From, Event, To)

[Internal] onafterAwacsShiftChange

AWACS:onafterCheckRadioQueue(From, Event, To)

[Internal] onafterCheckRadioQueue

AWACS:onafterCheckTacticalQueue(From, Event, To)

[Internal] onafterCheckTacticalQueue

AWACS:onafterCheckedOut(From, Event, To, Group, AnchorStackNo, Angels, GID)

[Internal] onafterCheckedOut

AWACS:onafterEscortShiftChange(From, Event, To)

[Internal] onafterEscortShiftChange

AWACS:onafterFlightOnMission(From, Event, To, FlightGroup, Mission)

On after "FlightOnMission".

AWACS:onafterLostCluster(From, Event, To, Cluster, Mission)

[Internal] onafterLostCluster

AWACS:onafterLostContact(From, Event, To, Contact)

[Internal] onafterLostContact

AWACS:onafterNewCluster(From, Event, To, Cluster)

[Internal] onafterNewCluster

AWACS:onafterNewContact(From, Event, To, Contact)

[Internal] onafterNewContact

AWACS:onafterReAnchor(From, Event, To, GID)

On after "ReAnchor".

AWACS:onafterStart(From, Event, To)

[Internal] onafterStart

AWACS:onafterStatus(From, Event, To)

[Internal] onafterStatus

AWACS:onafterStop(From, Event, To)

[Internal] onafterStop

AWACS:onbeforeStart(From, Event, To)

[Internal] onbeforeStart

AWACS.sunrisedone

AWACS.verbose

AWACS.version

Versioning.

Fields and Methods inherited from FSM Description

AWACS:AddEndState(State)

Adds an End state.

AWACS:AddProcess(From, Event, Process, ReturnEvents)

Set the default #FSM_PROCESS template with key ProcessName providing the ProcessClass and the process object when it is assigned to a Wrapper.Controllable by the task.

AWACS:AddScore(State, ScoreText, Score)

Adds a score for the FSM to be achieved.

AWACS:AddScoreProcess(From, Event, State, ScoreText, Score)

Adds a score for the FSM_PROCESS to be achieved.

AWACS:AddTransition(From, Event, To)

Add a new transition rule to the FSM.

AWACS.CallScheduler

AWACS.Events

AWACS:GetCurrentState()

Get current state.

AWACS:GetEndStates()

Returns the End states.

AWACS:GetProcess(From, Event)

AWACS:GetProcesses()

Returns a table of the SubFSM rules defined within the FSM.

AWACS:GetScores()

Returns a table with the scores defined.

AWACS:GetStartState()

Returns the start state of the FSM.

AWACS:GetState()

Get current state.

AWACS:GetSubs()

Returns a table with the Subs defined.

AWACS:GetTransitions()

Returns a table of the transition rules defined within the FSM.

AWACS:Is(State)

Check if FSM is in state.

AWACS:LoadCallBacks(CallBackTable)

Load call backs.

AWACS:New()

Creates a new FSM object.

AWACS.Scores

AWACS:SetProcess(From, Event, Fsm)

AWACS:SetStartState(State)

Sets the start state of the FSM.

AWACS._EndStates

AWACS._EventSchedules

AWACS._Processes

AWACS._Scores

AWACS._StartState

AWACS._Transitions

AWACS:_add_to_map(Map, Event)

Add to map.

AWACS:_call_handler(step, trigger, params, EventName)

Call handler.

AWACS:_create_transition(EventName)

Create transition.

AWACS:_delayed_transition(EventName)

Delayed transition.

AWACS:_eventmap(Events, EventStructure)

Event map.

AWACS:_gosub(ParentFrom, ParentEvent)

Go sub.

AWACS:_handler(EventName, ...)

Handler.

AWACS:_isendstate(Current)

Is end state.

AWACS:_submap(subs, sub, name)

Sub maps.

AWACS:can(e)

Check if can do an event.

AWACS:cannot(e)

Check if cannot do an event.

AWACS.current

AWACS.endstates

AWACS:is(State, state)

Check if FSM is in state.

AWACS.options

AWACS.subs

Fields and Methods inherited from AWACS.AnchorAssignedEntry Description

AWACS.AnchorAssignedEntry.Angels

AWACS.AnchorAssignedEntry.ID

Ops AWACS Class

Field(s)

Utilities.FiFo#FIFO AWACS.AICAPMissions

FIFO for Ops.Auftrag#AUFTRAG for AI CAP

#number AWACS.AIonCAP
Core.Point#COORDINATE AWACS.AOCoordinate

Coordinate of bulls eye

#string AWACS.AOName

name of the FEZ, e.g. Rock

#boolean AWACS.AwacsInZone

not yet arrived or gone again

#string AWACS.AwacsROE
#string AWACS.AwacsROT
#boolean AWACS.AwacsReady
#number AWACS.CallSign
#string AWACS.ClassName

Name of this class.

#number AWACS.Frequency
#boolean AWACS.GCI

Act as GCI

Wrapper.Group#GROUP AWACS.GCIGroup

EWR group object for GCI ops

#boolean AWACS.HasEscorts
#table AWACS.IFF
#number AWACS.MeldDistance

25nm - distance for "Meld" Call , usually shortly before the actual engagement

#boolean AWACS.MenuStrict
#boolean AWACS.ModernEra

if true we get more intel on targets, and EPLR on the AIC

#boolean AWACS.NoGroupTags

Set to true if you don't want group tags.

#boolean AWACS.NoMissileCalls

Suppress missile callouts

#number AWACS.PictureInterval

Interval in seconds for general picture

#number AWACS.PictureTimeStamp

Interval timestamp

#boolean AWACS.PlayerCapAssignment

Assign players to CAP tasks when they are logged on

#boolean AWACS.PlayerGuidance

if true additional callouts to guide/warn players

#table AWACS.ROE
#table AWACS.ROT
#number AWACS.RadarBlur

Radar blur in %

#number AWACS.ReassignmentPause

Wait this many seconds before re-assignment of a player

AWACS.Speed

self.Speed = UTILS.KnotsToAltKIAS(speed,self.AwacsAngels*1000)

#boolean AWACS.SuppressScreenOutput

Set to true to suppress all screen output.

#number AWACS.TacDistance

30nm - distance for "TAC" Call

#number AWACS.ThreatDistance

15nm - distance to declare untargeted (new) threats

#table AWACS.callsignTranslations

optional translations for callsigns

#boolean AWACS.callsignshort

if true use short (group) callsigns, e.g. "Ghost 1", else "Ghost 1 1"

#number AWACS.coalition

Coalition side.

#string AWACS.coalitiontxt

e.g."blue"

#boolean AWACS.debug
#boolean AWACS.keepnumber

if true, use the full string after # for a player custom callsign

#string AWACS.lid

LID for log entries.

#string AWACS.locale

Localization

#number AWACS.maxassigndistance

Only assing AI/Pilots to targets max this far away

#number AWACS.verbose
#string AWACS.version

Versioning.

Function(s)

[User] Add another AirWing for AI CAP Flights under management

Defined in:

AWACS

Parameters:

The AirWing to (also) obtain CAP flights from

(optional) This AirWing has it's own station zone, AI CAP will be send there

Return value:

self

[User] Add additional frequency and modulation for AWACS SRS output.

Defined in:

AWACS

Parameters:

#number Frequency

The frequency to add, e.g. 132.5

#number Modulation

The modulation to add for the frequency, e.g. radio.modulation.AM

Return value:

self

[User] Add a radar GROUP object to the INTEL detection SET_GROUP

Defined in:

AWACS

Parameter:

The GROUP to be added. Can be passed as SET_GROUP.

Return value:

self

[User] Draw a line around the FEZ on the F10 map.

Defined in:

AWACS

Return value:

self

[User] Get AWACS Name

Defined in:

AWACS

Return value:

#string:

Name of this instance

Set up a new AI AWACS.

Defined in:

AWACS

Parameters:

#string Name

Name of this AWACS for the radio menu.

#string AirWing

The core Ops.Airwing#AIRWING managing the AWACS, Escort and (optionally) AI CAP planes for us.

#number Coalition

Coalition, e.g. coalition.side.BLUE. Can also be passed as "blue", "red" or "neutral".

#string AirbaseName

Name of the home airbase.

#string AwacsOrbit

Name of the round, mission editor created zone where this AWACS orbits.

#string OpsZone

Name of the round, mission editor created Fighter Engagement operations zone (FEZ) this AWACS controls. Can be passed as #ZONE_POLYGON. The name of the zone will be used in reference calls as bulls eye name, so ensure a radio friendly name that does not collide with NATOPS keywords.

#string StationZone

Name of the round, mission editor created anchor zone where CAP groups will be stationed. Usually a short city name.

#number Frequency

Radio frequency, e.g. 271.

#number Modulation

Radio modulation, e.g. radio.modulation.AM or radio.modulation.FM.

Return value:

self

Usage:

You can set up the OpsZone/FEZ in a number of ways:
* As a string denominating a normal, round zone you have created and named in the mission editor, e.g. "Rock".
* As a polygon zone, defined e.g. like `ZONE_POLYGON:New("Rock",GROUP:FindByName("RockZone"))` where "RockZone" is the name of a late activated helo, and it\'s waypoints (not more than 10) describe a closed polygon zone in the mission editor.
* As a string denominating a polygon zone from the mission editor (same late activated helo, but named "Rock#ZONE_POLYGON" in the mission editor. Here, Moose will auto-create a polygon zone when loading, and name it "Rock". Pass as `ZONE:FindByName("Rock")`.

On After "AssignedAnchor" event.

AI or Player has been assigned a CAP station.

Defined in:

AWACS

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

On After "AwacsShiftChange" event.

AWACS shift change.

Defined in:

AWACS

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

On After "CheckedIn" event.

AI or Player checked in.

Defined in:

AWACS

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

On After "CheckedOut" event.

AI or Player checked out.

Defined in:

AWACS

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

On After "EscortShiftChange" event.

AWACS escorts shift change.

Defined in:

AWACS

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

On After "InterceptFailure" event.

Intercept failure.

Defined in:

AWACS

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

On After "LostCluster" event.

AWACS lost a radar cluster.

Defined in:

AWACS

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

On After "LostContact" event.

AWACS lost a radar contact.

Defined in:

AWACS

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

On After "NewCluster" event.

AWACS detected a cluster.

Defined in:

AWACS

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

On After "NewContact" event.

AWACS detected a contact.

Defined in:

AWACS

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

On After "ReAnchor" event.

AI or Player has been send back to station.

Defined in:

AWACS

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

[User] Set AI CAP Plane Details

Defined in:

AWACS

Parameters:

#number Callsign

Callsign name of AI CAP, e.g. CALLSIGN.Aircraft.Dodge. Defaults to CALLSIGN.Aircraft.Colt. Note that not all available callsigns work for all plane types.

#number MaxAICap

Maximum number of AI CAP planes on station that AWACS will set up automatically. Default to 4.

#number TOS

Time on station, in hours. AI planes might go back to base earlier if they run out of fuel or missiles.

#number Speed

Airspeed to be used in knots. Will be adjusted to flight height automatically. Defaults to 270.

Return value:

self

[User] Set additional defensive zone, e.g.

the zone behind the FEZ to also be defended

Defined in:

AWACS

Parameters:

#boolean Draw

Draw lines around this zone if true

Return value:

self

[User] Set this instance to act as GCI TACS Theater Air Control System

Defined in:

AWACS

Parameters:

The main Early Warning Radar (EWR) GROUP object for GCI.

#number Delay

(option) Start after this many seconds (optional).

Return value:

self

[User] Set AWACS flight details

Defined in:

AWACS

Parameters:

#number CallSign

Defaults to CALLSIGN.AWACS.Magic

#number CallSignNo

Defaults to 1

#number Angels

Defaults to 25 (i.e. 25000 ft)

#number Speed

Defaults to 250kn

#number Heading

Defaults to 0 (North)

#number Leg

Defaults to 25nm

Return value:

self

[User] Change the bulls eye alias for AWACS callout.

Defaults to "Rock"

Defined in:

AWACS

Parameter:

#string Name

Return value:

self

[User] Set player callsign options for TTS output.

See Wrapper.Group#GROUP.GetCustomCallSign() on how to set customized callsigns.

Defined in:

AWACS

Parameters:

#boolean ShortCallsign

If true, only call out the major flight number

#boolean Keepnumber

If true, keep the customized callsign in the #GROUP name as-is, no amendments or numbers.

#table CallsignTranslations

(Optional) Table to translate between DCS standard callsigns and bespoke ones. Does not apply if using customized. callsigns from playername or group name.

#func CallsignCustomFunc

(Optional) For player names only(!). If given, this function will return the callsign. Needs to take the groupname and the playername as first two arguments.

#arg ...

(Optional) Comma separated arguments to add to the custom function call after groupname and playername.

Return value:

self

[User] Set AWACS to Cold War standards - ROE to VID, ROT to Passive (bypass and escape).

Radar blur 25%. Sets TAC/Meld/Threat call distances to 35, 25 and 15 nm.

Defined in:

AWACS

Return value:

self

[User] Set AWACS custom callsigns for TTS

Defined in:

AWACS

Parameter:

#table CallsignTable

Table of custom callsigns to use with TTS

Return value:

self

Usage:

You can overwrite the standard AWACS callsign for TTS usage with your own naming, e.g. like so:
             testawacs:SetCustomAWACSCallSign({
               [1]="Overlord", -- Overlord
               [2]="Bookshelf", -- Magic
               [3]="Wizard", -- Wizard
               [4]="Focus", -- Focus
               [5]="Darkstar", -- Darkstar
               })
The default callsign used in AWACS is "Magic". With the above change, the AWACS will call itself "Bookshelf" over TTS instead.

[User] For CAP flights: Replace ME callsigns with user-defined callsigns for use with TTS and on-screen messaging

Defined in:

AWACS

Parameter:

#table translationTable

with DCS callsigns as keys and replacements as values

Return value:

self

Usage:

           -- Set Custom CAP Flight Callsigns for use with TTS
           testawacs:SetCustomCallsigns({
             Devil = 'Bengal',
             Snake = 'Winder',
             Colt = 'Camelot',
             Enfield = 'Victory',
             Uzi = 'Evil Eye'
           })

[User] Set AWACS Escorts Template

Defined in:

AWACS

Parameter:

#number EscortNumber

Number of fighther planes to accompany this AWACS. 0 or nil means no escorts.

Return value:

self

[User] Set AWACS intercept timeline support distance.

Defined in:

AWACS

Parameters:

#number TacDistance

Distance for TAC call, default 45nm

#number MeldDistance

Distance for Meld call, default 35nm

#number ThreatDistance

Distance for Threat call, default 25nm

Return value:

self

[User] Set locale for localization.

Defaults to "en"

Defined in:

AWACS

Parameter:

#string Locale

The locale to use

Return value:

self

[User] Set the max mission range flights can be away from their home base.

Defined in:

AWACS

Parameter:

#number NM

Distance in nautical miles

Return value:

self

[User] Set AWACS to Modern Era standards - ROE to BVR, ROT to defensive (evade fire).

Radar blur 15%.

Defined in:

AWACS

Return value:

self

[User] Set AWACS to Modern Era standards - ROE to BVR, ROT to return fire.

Radar blur 15%.

Defined in:

AWACS

Return value:

self

[User] Set AWACS to Modern Era standards - ROE to IFF, ROT to defensive (evade fire).

Radar blur 15%.

Defined in:

AWACS

Return value:

self

[User] Set AWACS Player Guidance - influences missile callout and the "New" label in group callouts.

Defined in:

AWACS

Parameter:

#boolean Switch

If true (default) it is on, if false, it is off.

Return value:

self

[User] Set AWACS to Policing standards - ROE to VID, ROT to Lock (bypass and escape).

Radar blur 25%. Sets TAC/Meld/Threat call distances to 35, 25 and 15 nm.

Defined in:

AWACS

Return value:

self

[User] Set AWACS to Policing standards - ROE to VID, ROT to Lock (bypass and escape).

Radar blur 15%.

Defined in:

AWACS

Return value:

self

[User] Set AWACS Radar Blur - the radar contact count per group/cluster will be distored up or down by this number percent.

Defaults to 15 in Modern Era and 25 in Cold War.

Defined in:

AWACS

Parameter:

#number Percent

Return value:

self

[User] Change number of seconds AWACS waits until a Player is re-assigned a different task.

Defaults to 180.

Defined in:

AWACS

Parameter:

#number Seconds

Return value:

self

[User] Set rejection zone, e.g.

a border of a foreign country. Detected bogeys in here won't be engaged.

Defined in:

AWACS

Parameters:

#boolean Draw

Draw lines around this zone if true

Return value:

self

[User] Set AWACS SRS TTS details - see Sound.SRS for details.

SetSRS() will try to use as many attributes configured with Sound.SRS#MSRS.LoadConfigFile() as possible.

Defined in:

AWACS

Parameters:

#string PathToSRS

Defaults to "C:\Program Files\DCS-SimpleRadio-Standalone"

#string Gender

Defaults to "male"

#string Culture

Defaults to "en-US"

#number Port

Defaults to 5002

#string Voice

(Optional) Use a specifc voice with the Sound.SRS#SetVoice function, e.g, :SetVoice("Microsoft Hedda Desktop"). Note that this must be installed on your windows system. Can also be Google voice types, if you are using Google TTS.

#number Volume

Volume - between 0.0 (silent) and 1.0 (loudest)

#string PathToGoogleKey

(Optional) Path to your google key if you want to use google TTS; if you use a config file for MSRS, hand in nil here.

#string AccessKey

(Optional) Your Google API access key. This is necessary if DCS-gRPC is used as backend; if you use a config file for MSRS, hand in nil here.

#string Backend

(Optional) Your MSRS Backend if different from your config file settings, e.g. MSRS.Backend.SRSEXE or MSRS.Backend.GRPC

Return value:

self

[User] Set AWACS Voice Details for AI CAP Planes - SRS TTS - see Sound.SRS for details

Defined in:

AWACS

Parameters:

#string Gender

Defaults to "male"

#string Culture

Defaults to "en-US"

#string Voice

(Optional) Use a specifc voice with the MSRS.SetVoice function, e.g, :SetVoice("Microsoft Hedda Desktop"). Note that this must be installed on your windows system. Can also be Google voice types, if you are using Google TTS.

Return value:

self

[User] Set TOS Time-on-Station in Hours

Defined in:

AWACS

Parameters:

#number AICHours

AWACS stays this number of hours on station before shift change, default is 4.

#number CapHours

(optional) CAP stays this number of hours on station before shift change, default is 4.

Return value:

self

[User] Set the tactical information option, create 10 radio channels groups can subscribe and get Bogey Dope on a specific frequency automatically.

You need to set up SRS first before using this!

Defined in:

AWACS

Parameters:

#number BaseFreq

Base Frequency to use, defaults to 130.

#number Increase

Increase to use, defaults to 0.5, thus channels created are 130, 130.5, 131 .. etc.

#number Modulation

Modulation to use, defaults to radio.modulation.AM.

#number Interval

Seconds between each update call.

#number Number

Number of Frequencies to create, can be 1..10.

Return value:

self

Triggers the FSM event "Start".

Starts the AWACS. Initializes parameters and starts event handlers.

Defined in:

AWACS

[User] Do not show messages on screen

Defined in:

AWACS

Parameter:

#boolean Switch

If true, no messages will be shown on screen.

Return value:

self

[User] Do not show messages on screen, no extra calls for player guidance, use short callsigns etc.

Defined in:

AWACS

Return value:

self

[Internal] Announce a new contact

Defined in:

AWACS

Parameters:

#boolean IsNew

Is a new contact

Announce to Group if not nil

#boolean IsBogeyDope

If true, this is a bogey dope announcement

#string Tag

Tag name for this contact. Alpha, Brave, Charlie ...

#boolean IsPopup

This is a pop-up group

#string ReportingName

The NATO code reporting name for the contact, e.g. "Foxbat". "Bogey" if unknown.

#boolean Tactical

Return value:

self

[Internal] AWACS Assign Anchor Position to a Group

Defined in:

AWACS

Parameters:

#number GID

Managed Group ID

#boolean HasOwnStation

#string StationName

Return value:

self

[Internal] Assign a Pilot to a target

Defined in:

AWACS

Parameters:

#table Pilots

Table of #AWACS.ManagedGroup Pilot

FiFo of #AWACS.ManagedContact Targets

Return value:

self

[Internal] AWACS Menu for Bogey Dope

Defined in:

AWACS

Parameters:

Group to use

#boolean Tactical

Check for tactical info

Return value:

self

[Internal] Check Enough AI CAP on Station

Defined in:

AWACS

Return value:

self

Defined in:

AWACS

[Internal] AWACS Menu for Check in

Defined in:

AWACS

Parameter:

Group to use

Return value:

self

[Internal] AWACS Menu for CheckInAI

Defined in:

AWACS

Parameters:

to use

Group to use

#number AuftragsNr

Ops.Auftrag#AUFTRAG.auftragsnummer

Return value:

self

[Internal] Check merges for Players

Defined in:

AWACS

Return value:

self

[Internal] AWACS Menu for Check Out

Defined in:

AWACS

Parameters:

Group to use

#number GID

GroupID

#boolean dead

If true, group is dead crashed or otherwise n/a

Return value:

self

[Internal] _CheckSubscribers

Defined in:

AWACS

Return value:

self

[Internal] Check available tasks and status

Defined in:

AWACS

Return value:

self

[Internal] Clean up mission stack

Defined in:

AWACS

Return values:

#number:

CAPMissions

#number:

Alert5Missions

#number:

InterceptMissions

[Internal] Clean up contacts list

Defined in:

AWACS

Return value:

self

[Internal] AWACS Menu for Commit

Defined in:

AWACS

Parameter:

Group to use

Return value:

self

Defined in:

AWACS

[Internal] AWACS Create a new Anchor Stack

Defined in:

AWACS

Return values:

#boolean:

success

#number:

AnchorStackNo

[Internal] AWACS Create a new Anchor Stack from a Marker - this then is the preferred station for players

Defined in:

AWACS

Parameters:

Name

Coord

Return value:

self

[Internal] AWACS Speak Bogey Dope entries

Defined in:

AWACS

Parameters:

#string Callsign

Callsign to address

#number GID

GroupID for comms

#boolean Tactical

Is for tactical info

Return value:

self

[Internal] AWACS Speak Picture AO/EWR entries

Defined in:

AWACS

Parameters:

#boolean AO

If true this is for AO, else EWR

#string Callsign

Callsign to address

#number GID

GroupID for comms

#number MaxEntries

Max entries to show

#boolean IsGeneral

Is a general picture, address all stations

Return value:

self

[Internal] Register Task for Group by GID

Defined in:

AWACS

Parameters:

#number GroupID

ManagedGroup ID

Short Description Task Type

#string ScreenText

Long task description for screen output

#table Object

Object for Ops.Target#TARGET assignment

#AWACS.TaskStatus TaskStatus

Status of this task

The Auftrag for this task if any

Intel Cluster for this task

Intel Contact for this task

Return value:

#number:

TID Task ID created

[Internal] AWACS Menu for Declare

Defined in:

AWACS

Parameter:

Group to use

Return value:

self

[Internal] AWACS Delete a new Anchor Stack from a Marker - only works if no assignments are on the station

Defined in:

AWACS

Parameters:

Name

Coord

Return value:

self

[Internal] Event handler

Defined in:

AWACS

Parameter:

Return value:

self

[Internal] Check for alive OpsGroup from Mission OpsGroups table

Defined in:

AWACS

Parameter:

#table OpsGroups

Return value:

[Internal] Get BR text for TTS - ie "Rock 214, 24 miles" and TTS "Rock 2 1 4, 24 miles"

Defined in:

AWACS

Parameter:

Core.Point#COORDINATE clustercoordinate

Return values:

#string:

BRAText

#string:

BRATextTTS

[Internal] Get blurred size of group or cluster

Defined in:

AWACS

Parameter:

#number size

Return values:

#number:

adjusted size

#string:

AWACS.Shipsize entry for size 1..4

[Internal] AWACS Get TTS compatible callsign

Defined in:

AWACS

Parameters:

Group to use

#number GID

GID to use

#boolean IsPlayer

Check in player if true

Return value:

#string:

Callsign

[Internal] AWACS get free anchor stack for managed groups

Defined in:

AWACS

Return values:

#number:

AnchorStackNo

#boolean:

free

[Internal] Event handler

Defined in:

AWACS

Parameter:

Group, can also be passed as #string group name

Return values:

#boolean:

found

#number:

GID

#string:

CallSign

[Internal] Select pilots available for tasking, return AI and Human

Defined in:

AWACS

Return values:

#table:

AIPilots Table of #AWACS.ManagedGroup

#table:

HumanPilots Table of #AWACS.ManagedGroup

[Internal] Check if a group has checked in

Defined in:

AWACS

Parameter:

Group to check

Return values:

#number:

ID

#boolean:

CheckedIn

#string:

CallSign

[Internal] Get threat level as clear test

Defined in:

AWACS

Parameter:

#number threatlevel

Return value:

#string:

threattext

[Internal] Init localization

Defined in:

AWACS

Return value:

self

[Internal] AWACS Menu for Judy

Defined in:

AWACS

Parameter:

Group to use

Return value:

self

[Internal] Write stats to log

Defined in:

AWACS

Return value:

self

[Internal] Meld Range Call to Pilot

Defined in:

AWACS

Parameters:

#number GID

GID

Return value:

self

[Internal] Merged Call to Pilot

Defined in:

AWACS

Parameter:

#number GID

Return value:

self

[Internal] Create radio entry to tell players that CAP is on station in Anchor

Defined in:

AWACS

Parameter:

#number GID

Group ID

Return value:

self

[Internal] Message a vector BR to a position

Defined in:

AWACS

Parameters:

#number GID

Group GID

#string Tag

(optional) Text to add after Vector, e.g. " to Anchor" - NOTE the leading space

The Coordinate to use

#number Angels

(Optional) Add Angels

Return value:

self

[Internal] Missile Warning Callout

Defined in:

AWACS

Parameters:

Where the shot happened

#string Type

Type to call out, e.i. "SAM" or "Missile"

#number Warndist

Distance in NM to find friendly planes

Return value:

self

[Internal] AWACS Move a new Anchor Stack from a Marker

Defined in:

AWACS

Parameters:

Name

Coord

Return value:

self

[Internal] Create a AIC-TTS message entry

Defined in:

AWACS

Parameters:

#string TextTTS

Text to speak

#string TextScreen

Text for screen

#number GID

Group ID #AWACS.ManagedGroup GID

#boolean IsGroup

Has a group

#boolean ToScreen

Show on screen

#boolean IsNew

New

#boolean FromAI

From AI

#boolean IsPrio

Priority entry

#boolean Tactical

Is for tactical info

Return value:

self

[Internal] AWACS Menu for Picture

Defined in:

AWACS

Parameters:

Group to use

#boolean IsGeneral

General picture if true, address no-one specific

Return value:

self

[Internal] Read assigned Group from a TaskID

Defined in:

AWACS

Parameter:

#number TaskID

ManagedTask ID

Return value:

Group structure or nil if n/e

[Internal] Read registered Task for Group by its ID

Defined in:

AWACS

Parameter:

#number GroupID

ManagedGroup ID

Return value:

Task or nil if n/e

TODO [Internal] _RefreshMenuNonSubscribed

Defined in:

AWACS

Return value:

self

[Internal] Remove GID (group) from Anchor Stack

Defined in:

AWACS

Parameters:

#number AnchorStackNo

#number Angels

GID

Return value:

self

[Internal] Set ROE for AI CAP

Defined in:

AWACS

Parameters:

Return value:

self

[Internal] AWACS set client menus

Defined in:

AWACS

Return value:

self

[Internal] AWACS Menu for Show Info

Defined in:

AWACS

Parameter:

Group to use

Return value:

self

[Internal] AWACS Menu for Showtask

Defined in:

AWACS

Parameter:

Group to use

Return value:

self

[Internal] Start AWACS Escorts FlightGroup

Defined in:

AWACS

Parameter:

#boolean Shiftchange

This is a shift change call

Return value:

self

[Internal] Start INTEL detection when we reach the AWACS Orbit Zone

Defined in:

AWACS

Parameter:

Return value:

self

[Internal] AWACS further Start Settings

Defined in:

AWACS

Parameters:

Return value:

self

[Internal] _SubScribeTactRadio

Defined in:

AWACS

Parameters:

#number Frequency

Return value:

self

[Internal] TAC Range Call to Pilot

Defined in:

AWACS

Parameters:

#number GID

GID

Return value:

self

[Internal] Select max 3 targets for picture, bogey dope etc

Defined in:

AWACS

Parameter:

#boolean Untargeted

Return not yet targeted contacts only

Return values:

#boolean:

HaveTargets True if targets could be found, else false

Targetselection

[Internal] AWACS Menu for Abort

Defined in:

AWACS

Parameter:

Group to use

Return value:

self

[Internal] Threat Range Call to Pilot

Defined in:

AWACS

Parameters:

GID

Contact

Return value:

self

[Internal] Get BR text for TTS

Defined in:

AWACS

Parameters:

Core.Point#COORDINATE FromCoordinate

Core.Point#COORDINATE ToCoordinate

Return values:

#string:

BRText Desired Output (BR) "214, 35 miles"

#string:

BRTextTTS Desired Output (BR) "2 1 4, 35 miles"

[Internal] Get BRA text for TTS

Defined in:

AWACS

Parameters:

Core.Point#COORDINATE FromCoordinate

Core.Point#COORDINATE ToCoordinate

#number Altitude

Altitude in meters

Return values:

#string:

BRText Desired Output (BRA) "214, 35 miles, 20 thousand"

#string:

BRTextTTS Desired Output (BRA) "2 1 4, 35 miles, 20 thousand"

[Internal] Return Bullseye BR for Alpha Check etc, returns e.g.

"Rock 021, 16" ("Rock" being the set BE name)

Defined in:

AWACS

Parameters:

#boolean ssml

Add SSML tag

#boolean TTS

For non-Alpha checks, hand back in format "Rock 0 2 1, 16"

Return value:

#string:

BullseyeBR

[Internal] Change Bullseye string to be TTS friendly, "Bullseye 021, 16" returns e.g.

"Bulls eye 0 2 1. 1 6"

Defined in:

AWACS

Parameter:

#string Text

Input text

Return value:

#string:

BullseyeBRTTS

[Internal] AWACS Menu for Unable

Defined in:

AWACS

Parameter:

Group to use

Return value:

self

[Internal] _UnsubScribeTactRadio

Defined in:

AWACS

Parameter:

Return value:

self

[Internal] Update Contact Tag

Defined in:

AWACS

Parameters:

#number CID

Contact ID

#string Text

Text to be used

#boolean TAC

TAC Call done

#boolean MELD

MELD Call done

#string TaskStatus

Overwrite status with #AWACS.TaskStatus Status

Return value:

self

[Internal] Update contact from cluster data

Defined in:

AWACS

Parameter:

#number CID

Contact ID

Return value:

self

[Internal] AWACS Menu for VID

Defined in:

AWACS

Parameters:

Group to use

#string Declaration

Text declaration the player used

Return value:

self

Triggers the FSM event "Start" after a delay.

Starts the AWACS. Initializes parameters and starts event handlers.

Defined in:

AWACS

Parameter:

#number delay

Delay in seconds.

Triggers the FSM event "Stop" after a delay.

Stops the AWACS and all its event handlers.

Defined in:

AWACS

Parameter:

#number delay

Delay in seconds.

[Internal] onafterAssignAnchor

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

#number GID

Group ID

#boolean HasOwnStation

#string HasOwnStation

StationName

Return value:

self

[Internal] onafterAssignedAnchor

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

#number GID

Managed Group ID

#number AnchorStackNo

AnchorAngels

Return value:

self

[Internal] onafterAwacsShiftChange

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

Return value:

self

[Internal] onafterCheckRadioQueue

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

Return value:

self

[Internal] onafterCheckTacticalQueue

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

Return value:

self

[Internal] onafterCheckedOut

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

#number AnchorStackNo

#number Angels

GID

Return value:

self

[Internal] onafterEscortShiftChange

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

Return value:

self

On after "FlightOnMission".

Defined in:

AWACS

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

on mission.

The requested mission.

Return value:

self

[Internal] onafterLostCluster

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

Return value:

self

[Internal] onafterLostContact

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

Return value:

self

[Internal] onafterNewCluster

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

Return value:

self

[Internal] onafterNewContact

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

Return value:

self

On after "ReAnchor".

Defined in:

AWACS

Parameters:

#string From

From state.

#string Event

Event.

#string To

To state.

#number GID

Group ID to check and re-anchor if possible

Return value:

self

[Internal] onafterStart

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

Return value:

self

[Internal] onafterStatus

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

Return value:

self

[Internal] onafterStop

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

Return value:

self

[Internal] onbeforeStart

Defined in:

AWACS

Parameters:

#string From

#string Event

#string To

Return value:

self

Field(s)

Utilities.FiFo#FIFO AWACS.AICAPMissions

FIFO for Ops.Auftrag#AUFTRAG for AI CAP

#number AWACS.AIonCAP
Core.Point#COORDINATE AWACS.AOCoordinate

Coordinate of bulls eye

#string AWACS.AOName

name of the FEZ, e.g. Rock

#boolean AWACS.AwacsInZone

not yet arrived or gone again

#string AWACS.AwacsROE
#string AWACS.AwacsROT
#boolean AWACS.AwacsReady
#number AWACS.CallSign
#string AWACS.ClassName

Name of this class.

#number AWACS.Frequency
#boolean AWACS.GCI

Act as GCI

Wrapper.Group#GROUP AWACS.GCIGroup

EWR group object for GCI ops

#boolean AWACS.HasEscorts
#table AWACS.IFF
#number AWACS.MeldDistance

25nm - distance for "Meld" Call , usually shortly before the actual engagement

#boolean AWACS.MenuStrict
#boolean AWACS.ModernEra

if true we get more intel on targets, and EPLR on the AIC

#boolean AWACS.NoGroupTags

Set to true if you don't want group tags.

#boolean AWACS.NoMissileCalls

Suppress missile callouts

#number AWACS.PictureInterval

Interval in seconds for general picture

#number AWACS.PictureTimeStamp

Interval timestamp

#boolean AWACS.PlayerCapAssignment

Assign players to CAP tasks when they are logged on

#boolean AWACS.PlayerGuidance

if true additional callouts to guide/warn players

#table AWACS.ROE
#table AWACS.ROT
#number AWACS.RadarBlur

Radar blur in %

#number AWACS.ReassignmentPause

Wait this many seconds before re-assignment of a player

AWACS.Speed

self.Speed = UTILS.KnotsToAltKIAS(speed,self.AwacsAngels*1000)

#boolean AWACS.SuppressScreenOutput

Set to true to suppress all screen output.

#number AWACS.TacDistance

30nm - distance for "TAC" Call

#number AWACS.ThreatDistance

15nm - distance to declare untargeted (new) threats

#table AWACS.callsignTranslations

optional translations for callsigns

#boolean AWACS.callsignshort

if true use short (group) callsigns, e.g. "Ghost 1", else "Ghost 1 1"

#number AWACS.coalition

Coalition side.

#string AWACS.coalitiontxt

e.g."blue"

#boolean AWACS.debug
#boolean AWACS.keepnumber

if true, use the full string after # for a player custom callsign

#string AWACS.lid

LID for log entries.

#string AWACS.locale

Localization

#number AWACS.maxassigndistance

Only assing AI/Pilots to targets max this far away

#number AWACS.verbose
#string AWACS.version

Versioning.

Function(s)

Adds an End state.

Defined in:

Parameter:

#string State

The FSM state.

Set the default #FSM_PROCESS template with key ProcessName providing the ProcessClass and the process object when it is assigned to a Wrapper.Controllable by the task.

Defined in:

Parameters:

#table From

Can contain a string indicating the From state or a table of strings containing multiple From states.

#string Event

The Event name.

An sub-process FSM.

#table ReturnEvents

A table indicating for which returned events of the SubFSM which Event must be triggered in the FSM.

Return value:

The SubFSM.

Adds a score for the FSM to be achieved.

Defined in:

Parameters:

#string State

is the state of the process when the score needs to be given. (See the relevant state descriptions of the process).

#string ScoreText

is a text describing the score that is given according the status.

#number Score

is a number providing the score of the status.

Return value:

#FSM:

self

Adds a score for the FSM_PROCESS to be achieved.

Defined in:

Parameters:

#string From

is the From State of the main process.

#string Event

is the Event of the main process.

#string State

is the state of the process when the score needs to be given. (See the relevant state descriptions of the process).

#string ScoreText

is a text describing the score that is given according the status.

#number Score

is a number providing the score of the status.

Return value:

#FSM:

self

Add a new transition rule to the FSM.

A transition rule defines when and if the FSM can transition from a state towards another state upon a triggered event.

Defined in:

Parameters:

#table From

Can contain a string indicating the From state or a table of strings containing multiple From states.

#string Event

The Event name.

#string To

The To state.

Get current state.

Defined in:

Return value:

#string:

Current FSM state.

Returns the End states.

Defined in:

Return value:

#table:

End states.

Defined in:

Parameters:

From

Event

Returns a table of the SubFSM rules defined within the FSM.

Defined in:

Return value:

#table:

Sub processes.

Returns a table with the scores defined.

Defined in:

Return value:

#table:

Scores.

Returns the start state of the FSM.

Defined in:

Return value:

#string:

A string containing the start state.

Get current state.

Defined in:

Return value:

#string:

Current FSM state.

Returns a table with the Subs defined.

Defined in:

Return value:

#table:

Sub processes.

Returns a table of the transition rules defined within the FSM.

Defined in:

Return value:

#table:

Transitions.

Check if FSM is in state.

Defined in:

Parameter:

#string State

State name.

Return value:

#boolean:

If true, FSM is in this state.

Load call backs.

Defined in:

Parameter:

#table CallBackTable

Table of call backs.

Creates a new FSM object.

Defined in:

Return value:

#FSM:

Defined in:

Parameters:

From

Event

Fsm

Sets the start state of the FSM.

Defined in:

Parameter:

#string State

A string defining the start state.

Add to map.

Defined in:

Parameters:

#table Map

Map.

#table Event

Event table.

Call handler.

Defined in:

Parameters:

#string step

Step "onafter", "onbefore", "onenter", "onleave".

#string trigger

Trigger.

#table params

Parameters.

#string EventName

Event name.

Return value:

Value.

Create transition.

Defined in:

Parameter:

#string EventName

Event name.

Return value:

#function:

Function.

Delayed transition.

Defined in:

Parameter:

#string EventName

Event name.

Return value:

#function:

Function.

Event map.

Defined in:

Parameters:

#table Events

Events.

#table EventStructure

Event structure.

Go sub.

Defined in:

Parameters:

#string ParentFrom

Parent from state.

#string ParentEvent

Parent event name.

Return value:

#table:

Subs.

Handler.

Defined in:

Parameters:

#string EventName

Event name.

...

Arguments.

Is end state.

Defined in:

Parameter:

#string Current

Current state name.

Return values:

#table:

FSM parent.

#string:

Event name.

Sub maps.

Defined in:

Parameters:

#table subs

Subs.

#table sub

Sub.

#string name

Name.

Check if can do an event.

Defined in:

Parameter:

#string e

Event name.

Return values:

#boolean:

If true, FSM can do the event.

#string:

To state.

Check if cannot do an event.

Defined in:

Parameter:

#string e

Event name.

Return value:

#boolean:

If true, FSM cannot do the event.

Check if FSM is in state.

Defined in:

Parameters:

#string State

State name.

state

Return value:

#boolean:

If true, FSM is in this state.

Field(s)

Function(s)

Field(s)

#boolean RadioEntry.IsNew

Function(s)