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
0 Note for Multiplayer SetupDue 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. |
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.
- AWACS.SetBullsEyeAlias() : Set the alias name of the Bulls Eye.
- AWACS.SetTOS() : Set time on station for AWACS and CAP.
- AWACS.SetReassignmentPause() : Pause this number of seconds before re-assigning a Player to a task.
- AWACS.SuppressScreenMessages() : Suppress message output on screen.
- AWACS.SetRadarBlur() : Set the radar blur faktor in percent.
- AWACS.SetColdWar() : Set to cold war - no fill-ins, no EPLRS, VID as standard.
- AWACS.SetModernEraDefensive() : Set to modern, EPLRS, BVR/IFF engagement, fill-ins.
- AWACS.SetModernEraAggressive() : Set to modern, EPLRS, BVR/IFF engagement, fill-ins.
- AWACS.SetPolicingModern() : Set to modern, EPLRS, VID engagement, fill-ins.
- AWACS.SetPolicingColdWar() : Set to cold war, no EPLRS, VID engagement, no fill-ins.
- AWACS.SetInterceptTimeline() : Set distances for TAC, Meld and Threat range calls.
- AWACS.SetAdditionalZone() : Add one additional defense zone, e.g. own border.
- AWACS.SetRejectionZone() : Add one foreign border. Targets beyond will be ignored for tasking.
- AWACS.DrawFEZ() : Show the FEZ on the F10 map.
- AWACS.SetAWACSDetails() : Set AWACS details.
- AWACS.AddGroupToDetection() : Add a GROUP or SET_GROUP object to INTEL detection, e.g. EWR.
- AWACS.SetSRS() : Set SRS details.
- AWACS.SetSRSVoiceCAP() : Set voice details for AI CAP planes, using Windows dektop TTS.
- AWACS.SetAICAPDetails() : Set AI CAP details.
- AWACS.SetEscort() : Set number of escorting planes for AWACS.
- AWACS.AddCAPAirWing() : Add an additional Ops.Airwing#AIRWING for CAP flights.
- AWACS.ZipLip() : Do not show messages on screen, no extra calls for player guidance, use short callsigns, no group tags.
- AWACS.AddFrequencyAndModulation() : Add additional frequencies with modulation which will receive AWACS SRS messages.
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)
Fields and Methods inherited from AWACS | Description |
---|---|
FIFO for Ops.Auftrag#AUFTRAG for AI CAP |
|
Coordinate of bulls eye |
|
name of the FEZ, e.g. Rock |
|
[User] Add another AirWing for AI CAP Flights under management |
|
[User] Add additional frequency and modulation for AWACS SRS output. |
|
[User] Add a radar GROUP object to the INTEL detection SET_GROUP |
|
Name of this class. |
|
[User] Draw a line around the FEZ on the F10 map. |
|
Act as GCI |
|
EWR group object for GCI ops |
|
[User] Get AWACS Name |
|
25nm - distance for "Meld" Call , usually shortly before the actual engagement |
|
if true we get more intel on targets, and EPLR on the AIC |
|
Set up a new AI AWACS. |
|
Set to true if you don't want group tags. |
|
Suppress missile callouts |
|
On After "AssignedAnchor" event. |
|
On After "AwacsShiftChange" event. |
|
On After "CheckedIn" event. |
|
On After "CheckedOut" event. |
|
On After "EscortShiftChange" event. |
|
On After "InterceptFailure" event. |
|
On After "LostCluster" event. |
|
On After "LostContact" event. |
|
On After "NewCluster" event. |
|
On After "NewContact" event. |
|
On After "ReAnchor" event. |
|
Interval in seconds for general picture |
|
Interval timestamp |
|
Assign players to CAP tasks when they are logged on |
|
if true additional callouts to guide/warn players |
|
Radar blur in % |
|
Wait this many seconds before re-assignment of a player |
|
[User] Set AI CAP Plane Details |
|
[User] Set additional defensive zone, e.g. |
|
[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 |
[User] Change the bulls eye alias for AWACS callout. |
|
AWACS:SetCallSignOptions(ShortCallsign, Keepnumber, CallsignTranslations, CallsignCustomFunc, ...) |
[User] Set player callsign options for TTS output. |
[User] Set AWACS to Cold War standards - ROE to VID, ROT to Passive (bypass and escape). |
|
[User] Set AWACS custom callsigns for TTS |
|
[User] For CAP flights: Replace ME callsigns with user-defined callsigns for use with TTS and on-screen messaging |
|
[User] Set AWACS Escorts Template |
|
AWACS:SetInterceptTimeline(TacDistance, MeldDistance, ThreatDistance) |
[User] Set AWACS intercept timeline support distance. |
[User] Set locale for localization. |
|
[User] Set the max mission range flights can be away from their home base. |
|
[User] Set AWACS to Modern Era standards - ROE to BVR, ROT to defensive (evade fire). |
|
[User] Set AWACS to Modern Era standards - ROE to BVR, ROT to return fire. |
|
[User] Set AWACS to Modern Era standards - ROE to IFF, ROT to defensive (evade fire). |
|
[User] Set AWACS Player Guidance - influences missile callout and the "New" label in group callouts. |
|
[User] Set AWACS to Policing standards - ROE to VID, ROT to Lock (bypass and escape). |
|
[User] Set AWACS to Policing standards - ROE to VID, ROT to Lock (bypass and escape). |
|
[User] Set AWACS Radar Blur - the radar contact count per group/cluster will be distored up or down by this number percent. |
|
[User] Change number of seconds AWACS waits until a Player is re-assigned a different task. |
|
[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. |
[User] Set AWACS Voice Details for AI CAP Planes - SRS TTS - see Sound.SRS for details |
|
[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. |
Triggers the FSM event "Start". |
|
[User] Do not show messages on screen |
|
Set to true to suppress all screen output. |
|
30nm - distance for "TAC" Call |
|
15nm - distance to declare untargeted (new) threats |
|
[User] Do not show messages on screen, no extra calls for player guidance, use short callsigns etc. |
|
AWACS:_AnnounceContact(Contact, IsNew, Group, IsBogeyDope, Tag, IsPopup, ReportingName, Tactical) |
[Internal] Announce a new contact |
[Internal] AWACS Assign Anchor Position to a Group |
|
[Internal] Assign a Pilot to a target |
|
[Internal] AWACS Menu for Bogey Dope |
|
[Internal] Check Enough AI CAP on Station |
|
[Internal] AWACS Menu for Check in |
|
[Internal] AWACS Menu for CheckInAI |
|
[Internal] Check merges for Players |
|
[Internal] AWACS Menu for Check Out |
|
[Internal] _CheckSubscribers |
|
[Internal] Check available tasks and status |
|
[Internal] Clean up mission stack |
|
[Internal] Clean up contacts list |
|
[Internal] AWACS Menu for Commit |
|
[Internal] AWACS Create a new Anchor Stack |
|
[Internal] AWACS Create a new Anchor Stack from a Marker - this then is the preferred station for players |
|
[Internal] AWACS Speak Bogey Dope entries |
|
AWACS:_CreatePicture(AO, Callsign, GID, MaxEntries, IsGeneral) |
[Internal] AWACS Speak Picture AO/EWR entries |
[Internal] Register Task for Group by GID |
|
[Internal] AWACS Menu for Declare |
|
[Internal] AWACS Delete a new Anchor Stack from a Marker - only works if no assignments are on the station |
|
[Internal] Event handler |
|
[Internal] Check for alive OpsGroup from Mission OpsGroups table |
|
[Internal] Get BR text for TTS - ie "Rock 214, 24 miles" and TTS "Rock 2 1 4, 24 miles" |
|
[Internal] Get blurred size of group or cluster |
|
[Internal] AWACS Get TTS compatible callsign |
|
[Internal] AWACS get free anchor stack for managed groups |
|
[Internal] Event handler |
|
[Internal] Select pilots available for tasking, return AI and Human |
|
[Internal] Check if a group has checked in |
|
[Internal] Get threat level as clear test |
|
[Internal] Init localization |
|
[Internal] AWACS Menu for Judy |
|
[Internal] Write stats to log |
|
[Internal] Meld Range Call to Pilot |
|
[Internal] Merged Call to Pilot |
|
[Internal] Create radio entry to tell players that CAP is on station in Anchor |
|
[Internal] Message a vector BR to a position |
|
[Internal] Missile Warning Callout |
|
[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 |
[Internal] AWACS Menu for Picture |
|
[Internal] Read assigned Group from a TaskID |
|
[Internal] Read registered Task for Group by its ID |
|
TODO [Internal] _RefreshMenuNonSubscribed |
|
[Internal] Remove GID (group) from Anchor Stack |
|
[Internal] Set ROE for AI CAP |
|
[Internal] AWACS set client menus |
|
[Internal] AWACS Menu for Show Info |
|
[Internal] AWACS Menu for Showtask |
|
[Internal] Start AWACS Escorts FlightGroup |
|
[Internal] Start INTEL detection when we reach the AWACS Orbit Zone |
|
[Internal] AWACS further Start Settings |
|
[Internal] _SubScribeTactRadio |
|
[Internal] TAC Range Call to Pilot |
|
[Internal] Select max 3 targets for picture, bogey dope etc |
|
[Internal] AWACS Menu for Abort |
|
[Internal] Threat Range Call to Pilot |
|
[Internal] Get BR text for TTS |
|
[Internal] Get BRA text for TTS |
|
[Internal] Return Bullseye BR for Alpha Check etc, returns e.g. |
|
[Internal] Change Bullseye string to be TTS friendly, "Bullseye 021, 16" returns e.g. |
|
[Internal] AWACS Menu for Unable |
|
[Internal] _UnsubScribeTactRadio |
|
AWACS:_UpdateContactEngagementTag(CID, Text, TAC, MELD, TaskStatus) |
[Internal] Update Contact Tag |
[Internal] Update contact from cluster data |
|
[Internal] AWACS Menu for VID |
|
Triggers the FSM event "Start" after a delay. |
|
Triggers the FSM event "Stop" after a delay. |
|
optional translations for callsigns |
|
if true use short (group) callsigns, e.g. "Ghost 1", else "Ghost 1 1" |
|
Coalition side. |
|
e.g."blue" |
|
if true, use the full string after # for a player custom callsign |
|
LID for log entries. |
|
Localization |
|
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 |
[Internal] onafterAwacsShiftChange |
|
[Internal] onafterCheckRadioQueue |
|
[Internal] onafterCheckTacticalQueue |
|
AWACS:onafterCheckedOut(From, Event, To, Group, AnchorStackNo, Angels, GID) |
[Internal] onafterCheckedOut |
[Internal] onafterEscortShiftChange |
|
AWACS:onafterFlightOnMission(From, Event, To, FlightGroup, Mission) |
On after "FlightOnMission". |
[Internal] onafterLostCluster |
|
[Internal] onafterLostContact |
|
[Internal] onafterNewCluster |
|
[Internal] onafterNewContact |
|
On after "ReAnchor". |
|
[Internal] onafterStart |
|
[Internal] onafterStatus |
|
[Internal] onafterStop |
|
[Internal] onbeforeStart |
|
Versioning. |
Fields and Methods inherited from FSM | Description |
---|---|
Adds an End 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. |
|
Adds a score for the FSM to be achieved. |
|
Adds a score for the FSM_PROCESS to be achieved. |
|
Add a new transition rule to the FSM. |
|
Get current state. |
|
Returns the End states. |
|
Returns a table of the SubFSM rules defined within the FSM. |
|
Returns a table with the scores defined. |
|
Returns the start state of the FSM. |
|
Get current state. |
|
Returns a table with the Subs defined. |
|
Returns a table of the transition rules defined within the FSM. |
|
Check if FSM is in state. |
|
Load call backs. |
|
Creates a new FSM object. |
|
Sets the start state of the FSM. |
|
Add to map. |
|
Call handler. |
|
Create transition. |
|
Delayed transition. |
|
Event map. |
|
Go sub. |
|
Handler. |
|
Is end state. |
|
Sub maps. |
|
Check if can do an event. |
|
Check if cannot do an event. |
|
Check if FSM is in state. |
|
Fields and Methods inherited from AWACS.AnchorAssignedEntry | Description |
---|---|
Fields and Methods inherited from AWACS.AnchorData | Description |
---|---|
FiFo of #AWACS.AnchorAssignedEntry |
|
Tag for this station |
|
FiFo of available stacks |
|
Fields and Methods inherited from AWACS.ManagedContact | Description |
---|---|
-- ID'ed or not (yet) |
|
--> GID |
|
--> TID |
|
-- NATO platform name |
|
|
|
-- Alpha, Charlie |
Fields and Methods inherited from AWACS.ManagedGroup | Description |
---|---|
-- Auftragsnummer for AI |
|
-- ManagedTask ID |
|
for AI |
|
TimeStamp |
Fields and Methods inherited from AWACS.ManagedTask | Description |
---|---|
Long descrition |
|
Fields and Methods inherited from AWACS.MenuStructure | Description |
---|---|
Fields and Methods inherited from AWACS.MonitoringData | Description |
---|---|
Fields and Methods inherited from AWACS.RadioEntry | Description |
---|---|
Fields and Methods inherited from AWACS.TaskDescription | Description |
---|---|
Fields and Methods inherited from AWACS.TaskStatus | Description |
---|---|
Fields and Methods inherited from RadioEntry | Description |
---|---|
Ops AWACS Class
Field(s)
name of the FEZ, e.g. Rock
not yet arrived or gone again
Name of this class.
Act as GCI
25nm - distance for "Meld" Call , usually shortly before the actual engagement
if true we get more intel on targets, and EPLR on the AIC
Set to true if you don't want group tags.
Suppress missile callouts
Interval in seconds for general picture
Interval timestamp
Assign players to CAP tasks when they are logged on
if true additional callouts to guide/warn players
Radar blur in %
Wait this many seconds before re-assignment of a player
self.Speed = UTILS.KnotsToAltKIAS(speed,self.AwacsAngels*1000)
Set to true to suppress all screen output.
30nm - distance for "TAC" Call
15nm - distance to declare untargeted (new) threats
optional translations for callsigns
if true use short (group) callsigns, e.g. "Ghost 1", else "Ghost 1 1"
Coalition side.
e.g."blue"
if true, use the full string after # for a player custom callsign
LID for log entries.
Localization
Only assing AI/Pilots to targets max this far away
Versioning.
Function(s)
[User] Add another AirWing for AI CAP Flights under management
Defined in:
AWACS
Parameters:
Ops.Airwing#AIRWING AirWing
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:
Wrapper.Group#GROUP Group
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.
[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:
Core.Zone#ZONE Zone
#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"
[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.
[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"
[User] Set the max mission range flights can be away from their home base.
[User] Set AWACS to Modern Era standards - ROE to BVR, ROT to defensive (evade fire).
Radar blur 15%.
[User] Set AWACS to Modern Era standards - ROE to BVR, ROT to return fire.
Radar blur 15%.
[User] Set AWACS to Modern Era standards - ROE to IFF, ROT to defensive (evade fire).
Radar blur 15%.
[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.
[User] Set AWACS to Policing standards - ROE to VID, ROT to Lock (bypass and escape).
Radar blur 15%.
[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.
[User] Change number of seconds AWACS waits until a Player is re-assigned a different task.
Defaults to 180.
[User] Set rejection zone, e.g.
a border of a foreign country. Detected bogeys in here won't be engaged.
Defined in:
AWACS
Parameters:
Core.Zone#ZONE Zone
#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.
[Internal] Announce a new contact
Defined in:
AWACS
Parameters:
#AWACS.ManagedContact Contact
#boolean IsNew
Is a new contact
Wrapper.Group#GROUP Group
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
Utilities.FiFo#FIFO Targets
FiFo of #AWACS.ManagedContact Targets
Return value:
self
[Internal] AWACS Menu for Bogey Dope
Defined in:
AWACS
Parameters:
Wrapper.Group#GROUP Group
Group to use
#boolean Tactical
Check for tactical info
Return value:
self
[Internal] Check Enough AI CAP on Station
Defined in:
AWACS
[Internal] AWACS Menu for Check in
[Internal] AWACS Menu for CheckInAI
Defined in:
AWACS
Parameters:
Ops.FlightGroup#FLIGHTGROUP FlightGroup
to use
Wrapper.Group#GROUP Group
Group to use
#number AuftragsNr
Ops.Auftrag#AUFTRAG.auftragsnummer
Return value:
self
[Internal] Check merges for Players
[Internal] AWACS Menu for Check Out
Defined in:
AWACS
Parameters:
Wrapper.Group#GROUP Group
Group to use
#number GID
GroupID
#boolean dead
If true, group is dead crashed or otherwise n/a
Return value:
self
[Internal] Check available tasks and status
[Internal] Clean up mission stack
Defined in:
AWACS
Return values:
#number:
CAPMissions
#number:
Alert5Missions
#number:
InterceptMissions
[Internal] Clean up contacts list
[Internal] AWACS Menu for Commit
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
[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
#AWACS.TaskDescription Description
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
Ops.Auftrag#AUFTRAG Auftrag
The Auftrag for this task if any
Ops.Intel#INTEL.Cluster Cluster
Intel Cluster for this task
Ops.Intel#INTEL.Contact Contact
Intel Contact for this task
Return value:
#number:
TID Task ID created
[Internal] AWACS Menu for Declare
[Internal] AWACS Delete a new Anchor Stack from a Marker - only works if no assignments are on the station
[Internal] Event handler
[Internal] Check for alive OpsGroup from Mission OpsGroups table
[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:
Wrapper.Group#GROUP Group
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:
Wrapper.Group#GROUP Group
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:
Wrapper.Group#GROUP Group
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] AWACS Menu for Judy
[Internal] Meld Range Call to Pilot
[Internal] Merged Call to Pilot
[Internal] Create radio entry to tell players that CAP is on station in Anchor
[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
Core.Point#COORDINATE Coordinate
The Coordinate to use
#number Angels
(Optional) Add Angels
Return value:
self
[Internal] Missile Warning Callout
Defined in:
AWACS
Parameters:
Core.Point#COORDINATE Coordinate
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
[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:
Wrapper.Group#GROUP Group
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
[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:
Ops.FlightGroup#FLIGHTGROUP FlightGroup
Wrapper.Group#GROUP Group
Return value:
self
[Internal] AWACS set client menus
[Internal] AWACS Menu for Show Info
[Internal] AWACS Menu for Showtask
[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
[Internal] AWACS further Start Settings
Defined in:
AWACS
Parameters:
Ops.FlightGroup#FLIGHTGROUP FlightGroup
Ops.Auftrag#AUFTRAG Mission
Return value:
self
[Internal] _SubScribeTactRadio
[Internal] TAC Range Call to Pilot
[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
[Internal] Threat Range Call to Pilot
[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:
Core.Point#COORDINATE Coordinate
#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
[Internal] _UnsubScribeTactRadio
[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
[Internal] AWACS Menu for VID
Defined in:
AWACS
Parameters:
Wrapper.Group#GROUP Group
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
#AWACS.AnchorData Anchor
#number AnchorStackNo
AnchorAngels
Return value:
self
[Internal] onafterAwacsShiftChange
[Internal] onafterCheckRadioQueue
[Internal] onafterCheckTacticalQueue
[Internal] onafterCheckedOut
Defined in:
AWACS
Parameters:
#string From
#string Event
#string To
#AWACS.ManagedGroup.GID Group
ID
#number AnchorStackNo
#number Angels
GID
Return value:
self
[Internal] onafterEscortShiftChange
On after "FlightOnMission".
Defined in:
AWACS
Parameters:
#string From
From state.
#string Event
Event.
#string To
To state.
Ops.FlightGroup#FLIGHTGROUP FlightGroup
on mission.
Ops.Auftrag#AUFTRAG Mission
The requested mission.
Return value:
self
[Internal] onafterLostCluster
Defined in:
AWACS
Parameters:
#string From
#string Event
#string To
Ops.Intel#INTEL.Cluster Cluster
Ops.Auftrag#AUFTRAG Mission
Return value:
self
[Internal] onafterLostContact
Defined in:
AWACS
Parameters:
#string From
#string Event
#string To
Ops.Intel#INTEL.Contact Contact
Return value:
self
[Internal] onafterNewCluster
Defined in:
AWACS
Parameters:
#string From
#string Event
#string To
Ops.Intel#INTEL.Cluster Cluster
Return value:
self
[Internal] onafterNewContact
Defined in:
AWACS
Parameters:
#string From
#string Event
#string To
Ops.Intel#INTEL.Contact Contact
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
[Internal] onafterStatus
[Internal] onafterStop
[Internal] onbeforeStart
Field(s)
name of the FEZ, e.g. Rock
not yet arrived or gone again
Name of this class.
Act as GCI
25nm - distance for "Meld" Call , usually shortly before the actual engagement
if true we get more intel on targets, and EPLR on the AIC
Set to true if you don't want group tags.
Suppress missile callouts
Interval in seconds for general picture
Interval timestamp
Assign players to CAP tasks when they are logged on
if true additional callouts to guide/warn players
Radar blur in %
Wait this many seconds before re-assignment of a player
self.Speed = UTILS.KnotsToAltKIAS(speed,self.AwacsAngels*1000)
Set to true to suppress all screen output.
30nm - distance for "TAC" Call
15nm - distance to declare untargeted (new) threats
optional translations for callsigns
if true use short (group) callsigns, e.g. "Ghost 1", else "Ghost 1 1"
Coalition side.
e.g."blue"
if true, use the full string after # for a player custom callsign
LID for log entries.
Localization
Only assing AI/Pilots to targets max this far away
Versioning.
Function(s)
Adds an End 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.
Core.Fsm#FSM_PROCESS Process
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.
Returns the End states.
Returns a table of the SubFSM rules defined within the FSM.
Returns a table with the scores defined.
Returns the start state of the FSM.
Get current state.
Returns a table with the Subs defined.
Returns a table of the transition rules defined within the FSM.
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.
Sets the start state of the FSM.
Add to map.
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.
Go sub.
Defined in:
Parameters:
#string ParentFrom
Parent from state.
#string ParentEvent
Parent event name.
Return value:
#table:
Subs.
Handler.
Is end state.
Defined in:
Parameter:
#string Current
Current state name.
Return values:
#table:
FSM parent.
#string:
Event name.
Sub maps.
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.
Contact Data
Field(s)
-- ID'ed or not (yet)
--> GID
--> TID
-- NATO platform name
AWACS.TaskStatus
-- Alpha, Charlie
Function(s)
Group Data
Field(s)
-- Auftragsnummer for AI
-- ManagedTask ID
TimeStamp
Function(s)
Field(s)
Long descrition