veafCombatMission — The MISSIONS menu¶
Module ID: COMBATMISSION | File: veafCombatMission.lua
See it in game: step 11 “On-demand CAP and the Senaki raid” of the demo mission.
Purpose¶
Offers players, from the F10 MISSIONS radio menu, scenarios the mission maker prepared in the DCS editor and declared in YAML. Two families:
- CAP missions (
cap_missions:) — on-demand combat air patrols; - combat missions (
combat_missions:) — scenarios with a briefing, elements, and remaining-enemy tracking.
The module is enabled by default (veaf.registerModule(..., { enable = true }, 100)). It builds
no menu at all when no mission is declared.
Dependencies¶
veafRadio— the F10MISSIONSmenuveafSpawn— spawns a mission's groupsveafSecurity— for missions declaredsecured: trueveafRemote— the/airremote module (optional)
The F10 menu¶
The menu follows the mission's language (
mission.language). The labels below are the ones an English mission shows.
At the root of MISSIONS:
| Entry | Effect |
|---|---|
HELP |
Recalls how the menu works (absent when help menus are disabled) |
List available |
Lists the declared missions |
List active |
Lists running missions, with their remaining enemy count |
Then one submenu per mission, and inside it:
| Entry | Effect |
|---|---|
Get info |
The mission's briefing and state |
Activate mission |
Starts the mission (shown while it is inactive) |
Deactivate mission |
Stops it (shown while it is active) |
A mission declared secured: true has its activation entries routed through the security check: on
the F10 menu, the group acts at the level of its lowest-graded occupant (see
veafSecurity).
A combat mission also offers skill and scale submenus, which set the difficulty and the
number of groups engaged.
When the mission has an opposition level, each skill also carries
the Auto scale (opposition level) entry: it activates the scale of one enemy group per two players,
rounded up, within the scales offered (level 6 → scale 3).
The aliases¶
veafShortcuts ships two shortcuts, and they do not bypass security
(setBypassSecurity(false)):
| Alias | What it does |
|---|---|
-airstart |
Starts a combat mission — the name goes right after |
-airstop |
Stops a combat mission |
-airstart Frappe-Nord
-airstop Frappe-Nord
The /air remote module¶
Registered with veafRemote under the name air, it answers in chat:
| Command | Effect |
|---|---|
/air list |
Lists the available missions |
/air start <mission> |
Starts the named mission |
/air start <mission> silent |
Starts it with no on-screen message |
/air stop <mission> |
Stops it |
/air stop <mission> silent |
Stops it with no message |
mission.yaml configuration¶
modules:
COMBATMISSION:
enabled: true # required for cap_missions: and combat_missions:
# ── CAP missions ──────────────────────────────────────────────────────────────
cap_missions:
- group_name: "CAP Group" # REQUIRED — logical name; the DCS group must be called "OnDemand-CAP Group"
menu_name: "North CAP" # F10 menu label; group_name when omitted (not friendly_name)
briefing: "Patrol the northern sector and engage threats."
default: false # true = Activate / Deactivate reserved to authorised pilots
activated: true # true = the CAP shows in the F10 menu
# ── Combat missions ──────────────────────────────────────────────────────
combat_missions:
- name: "Strike-Alpha" # REQUIRED — internal identifier
friendly_name: "Strike Alpha" # F10 menu label
secured: false # true = activation reserved to authorised pilots
radio_menu_enabled: true # show in the F10 menu
briefing: |
Destroy the armoured column in grid square BQ-123.
Expect AAA and MANPADS.
elements:
- name: "Element Alpha 1" # element's internal name
groups: # DCS group names in this element
- "STRIKE-GROUP-1"
- "STRIKE-GROUP-2"
scalable: true # true = the group count follows the skill setting
cap_missions[] fields¶
| Field | Type | Default | Required | Description |
|---|---|---|---|---|
group_name |
string | — | Yes | Logical name of the CAP flight. The DCS group placed in the editor must be named OnDemand-<group_name>: the runtime prefixes OnDemand- (since v5). E.g. group_name: CAP-Alpha → DCS group OnDemand-CAP-Alpha |
menu_name |
string | — | No | F10 menu label |
briefing |
string | — | No | Briefing text shown to players |
default |
boolean | false |
No | Secures the CAP's Activate / Deactivate commands: true reserves them to pilots with the required security level. With false, the default, any player can start or stop the CAP. It is the secured parameter of veafCombatMission.addCapMission; the key's name does not say so |
activated |
boolean | true |
No | Shows the CAP in the F10 menu, in skill levels (Good, Excellent) and sizes (1, 2 groups). With false, it has no menu entry. It is the radioMenuEnabled parameter of veafCombatMission.addCapMission. Neither key starts the CAP: a CAP only flies once it is activated |
combat_missions[] fields¶
| Field | Type | Default | Required | Description |
|---|---|---|---|---|
name |
string | — | Yes | Internal identifier |
friendly_name |
string | — | No | F10 menu label |
secured |
boolean | false |
No | Activation reserved to authorised pilots — on the F10 menu the group acts at its lowest-graded occupant's level (see veafSecurity) |
radio_menu_enabled |
boolean | true |
No | Show in the F10 menu |
briefing |
string | — | No | Multi-line briefing text |
elements |
object[] | [] |
No | Mission element definitions |
elements[].name |
string | — | No | Element's internal name |
elements[].groups |
string[] | — | No | DCS group names in this element |
elements[].scalable |
boolean | true |
No | Scale the group count with difficulty |
Minimal example¶
modules:
COMBATMISSION:
enabled: true
cap_missions:
- group_name: "CAP-Alpha"
menu_name: "CAP"
combat_missions:
- name: "Strike-North"
briefing: "Destroy the northern targets."
elements:
- groups: ["Strike-Group-1"]
Module constants¶
| Constant | Value | Role |
|---|---|---|
SecondsBetweenWatchdogChecks |
30 |
Interval between two mission-state checks |
MinimumSpacingBetweenClones |
300 |
Minimum distance, in metres, between two clones of the same group |
RadioMenuName |
menu.combatmission.root |
i18n key for the F10 menu's name, resolved when the menu is built |
See also¶
- veafCasMission — on-demand CAS missions, a separate module
- veafSecurity — what
secured: truemeans for a pilot - mission.yaml reference — every top-level section