diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..480f0a2 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,72 @@ +# Copilot instructions for DCS_MissionDev + +These notes teach AI coding agents how to be productive in this DCS World mission-scripting workspace. Keep responses concrete, reference the files below, and prefer making small targeted edits over broad rewrites. + +## Big picture + +- This repo is a DCS mission lab focused on Lua scripting for the MOOSE, MIST, CTLD, and CSAR ecosystems. +- Structure: + - Root hosts shared framework scripts and utilities: `Moose_.lua`, `Moose.lua`, `mist.lua`, multiple pinned `mist_*` versions, `CTLD.lua`, `CSAR.lua`, plus helper and mission glue scripts (e.g., `NukeBlockerScriptv1_2_1.lua`, `OnBirthMessage.lua`). + - Mission families live under `DCS_/...` with individual `.miz` files and scenario folders. + - Purpose-built modules live under `Moose_*/*` with a main Lua, demo `.miz`, and a README describing setup. +- Loading order matters in DCS: framework(s) first, then modules, then mission glue. Typical trigger order: `Moose_.lua` → framework/middleware → module script(s) → custom mission logic. + +## Core modules and patterns (examples in repo) + +- Zone Capture (dual coalition): `Moose_DualCoalitionZoneCapture/Moose_DualCoalitionZoneCapture.lua` + - Edit-only config tables: `ZONE_CONFIG` (BLUE/RED/NEUTRAL lists) and `ZONE_SETTINGS` (scan/capture/guard). + - Uses MOOSE classes like `ZONE`, `ZONE_CAPTURE_COALITION`, `COMMANDCENTER`, `MISSION`; logs via `env.info` with `[CAPTURE Module]` prefix. + - Visuals driven by `ZONE_COLORS`; contested/attacked overrides ownership color. +- Dynamic Ground Battle: `Moose_DynamicGroundBattle/Moose_DynamicGroundBattle.lua` + - User-edit section defines red/blue `ZONE:New(...)`, warehouse `STATIC:FindByName(...)`, and template arrays. After the “DO NOT EDIT BELOW THIS LINE” banner core logic runs. + - Spawn rates scale with warehouse survival; periodic tasking (`ASSIGN_TASKS_SCHED`) retasks idle groups; optional infantry movement via `MOVING_INFANTRY_PATROLS`. +- CTLD: `CTLD.lua` + - Large, configurable logistics/troop script; user config at top: smoke, hover pickup, crate rules, pickup/drop/wp zones, vehicle weights, JTAC settings, and transport pilot names. + - Important distances: `ctld.maximumDistanceLogistic`, `ctld.minimumDeployDistance`, etc. Keep names matching ME zones strictly. +- CSAR: `CSAR.lua` + - Note: the current file contains an HTML GitHub page artifact. When updating, replace with the raw Lua from ciribob/DCS-CSAR (use the Raw file, not the HTML page). + +## Developer workflows (what to run and how) + +- Script load in missions (Mission Editor → Triggers): + 1) DO SCRIPT FILE `Moose_.lua` + 2) DO SCRIPT FILE your module(s) (e.g., DualCoalitionZoneCapture or DynamicGroundBattle) + 3) DO SCRIPT FILE mission glue (CTLD/CSAR/others), respecting their config requirements +- Fast mission patching without opening the editor: `Patch-MooseMissions/` + - Use `Patch-MooseMissions.ps1` to inject or replace a Lua inside a `.miz` and auto-bump version numbers. + - See `Patch-MooseMissions/README.md` for examples (pipeline-friendly; default script location inside miz: `l10n/DEFAULT/*.lua`). +- Versioning conventions for missions: filenames embed the version (`F99th-Operation Ronin 1.4.miz` → next `1.5`); the patcher respects X, X.Y, X.Y.Z. +- Debugging: + - Prefer `env.info("[Tag] message")`; check `Saved Games\DCS\Logs\DCS.log`. Modules log with distinct prefixes (e.g., `[CAPTURE Module]`). + - Common issues: wrong zone/group/static names; framework not loaded first; CTLD/CSAR configs mismatched with ME. Fix by aligning names and load order. + +## Conventions and gotchas (repo-specific) + +- Name matching is strict across modules. Examples to copy: + - Zones: `"Capture Zone-1"`, `"FrontLine7"`, etc. + - HQ groups: `BLUEHQ`, `REDHQ` for MOOSE `COMMANDCENTER`/`MISSION` creation. + - Warehouses: use Static object Unit Name: `RedWarehouse1-1`, `BlueWarehouse3-1`. +- Module layout: top “user config” section, followed by `-- DO NOT EDIT BELOW THIS LINE` guard. Keep PRs to config when possible; avoid editing engine logic unless necessary. +- Framework pinning: multiple `mist_*` versions live alongside `mist.lua`. Mission scripts may expect a specific version; don’t silently swap them—load the version matching the mission. +- CTLD settings commonly used here: `ctld.enableCrates`, `ctld.slingLoad`, `ctld.pickupZones`, `ctld.dropOffZones`, `ctld.wpZones`, `ctld.transportPilotNames`. Follow the existing style when extending. +- CSAR file hygiene: replace HTML artifacts with raw Lua. Verify by ensuring the file starts with Lua, not ``. + +## Integration points + +- MOOSE: all advanced orchestration depends on `Moose_.lua`/`Moose.lua` APIs (`ZONE`, `GROUP`, `STATIC`, `ZONE_CAPTURE_COALITION`, `COMMANDCENTER`, `MISSION`, `SCORING`). Load it first. +- CTLD/CSAR interop: DynamicGroundBattle notes CTLD troops integrate automatically; ensure CTLD is active if you expect troop drops to influence zones. +- VoiceAttack: profiles under `Moose_CTLD_Pure/Voice Attack/` are player tooling, not runtime dependencies. Don’t reference them from mission scripts. + +## Making changes safely + +- When adding new zones/templates/warehouses, update the corresponding arrays in the module’s user config and mirror the names in the Mission Editor. +- When changing visuals or scan cadence, update `ZONE_COLORS` and `ZONE_SETTINGS` in Zone Capture, or scheduler values in Dynamic Ground Battle. +- For patching `.miz` with new `Moose_.lua`/scripts, prefer the PowerShell patcher; it preserves originals and bumps the version. + +## Pointers to examples in this repo + +- Dual coalition capture: `Moose_DualCoalitionZoneCapture/README.md` and example `.miz` in same folder. +- Dynamic ground battle: `Moose_DynamicGroundBattle/README.md`. +- Mission patching: `Patch-MooseMissions/README.md`. + +If anything above is ambiguous (e.g., CSAR expected version, CTLD defaults for a specific mission family), ask for the target mission and we’ll codify the exact load order and script set. \ No newline at end of file diff --git a/DCS_Kola/Operation_Polar_Shield/F99th-Operation_Polar_Shield_1.2.2.miz b/DCS_Kola/Operation_Polar_Shield/F99th-Operation_Polar_Shield_1.2.2.miz index 1eecabd..29128ad 100644 Binary files a/DCS_Kola/Operation_Polar_Shield/F99th-Operation_Polar_Shield_1.2.2.miz and b/DCS_Kola/Operation_Polar_Shield/F99th-Operation_Polar_Shield_1.2.2.miz differ diff --git a/DCS_Kola/Operation_Polar_Shield/F99th-Operation_Polar_Shield_1.2.3.miz b/DCS_Kola/Operation_Polar_Shield/F99th-Operation_Polar_Shield_1.2.3.miz new file mode 100644 index 0000000..9aa93d7 Binary files /dev/null and b/DCS_Kola/Operation_Polar_Shield/F99th-Operation_Polar_Shield_1.2.3.miz differ diff --git a/Moose_CTLD_Pure/Moose_CTLD.lua b/Moose_CTLD_Pure/Moose_CTLD.lua index bf01cd2..d6a7edf 100644 --- a/Moose_CTLD_Pure/Moose_CTLD.lua +++ b/Moose_CTLD_Pure/Moose_CTLD.lua @@ -186,6 +186,7 @@ CTLD.Messages = { CTLD.Config = { CoalitionSide = coalition.side.BLUE, -- default coalition this instance serves (menus created for this side) + CountryId = nil, -- optional explicit country id for spawned groups; falls back per coalition AllowedAircraft = { -- transport-capable unit type names (case-sensitive as in DCS DB) 'UH-1H','Mi-8MTV2','Mi-24P','SA342M','SA342L','SA342Minigun','Ka-50','Ka-50_3','AH-64D_BLK_II','UH-60L','CH-47Fbl1','CH-47F','Mi-17','GazelleAI' }, @@ -196,7 +197,7 @@ CTLD.Config = { -- 2 = INFO - Important state changes, initialization, cleanup (default for production) -- 3 = VERBOSE - Detailed operational info (zone validation, menus, builds, MEDEVAC events) -- 4 = DEBUG - Everything including hover checks, crate pickups, detailed troop spawns - LogLevel = 1, + LogLevel = 4, -- Per-aircraft capacity limits (realistic cargo/troop capacities) -- Set maxCrates = 0 and maxTroops = 0 for attack helicopters with no cargo capability @@ -254,9 +255,9 @@ CTLD.Config = { -- Air-spawn settings for CTLD-built drones (AIRPLANE category entries in the catalog like MQ-9 / WingLoong) DroneAirSpawn = { - Enabled = true, -- when true, AIRPLANE catalog items that opt-in can spawn in the air at a set altitude - AltitudeMeters = 3048, -- default spawn altitude ASL (meters) - 10,000 feet - SpeedMps = 120 -- default initial speed in m/s + Enabled = true, -- when true, AIRPLANE catalog items that opt-in can spawn in the air at a set altitude + AltitudeMeters = 3048, -- default spawn altitude ASL (meters) - 10,000 feet + SpeedMps = 120 -- default initial speed in m/s }, DropCrateForwardOffset = 35, -- meters: drop loaded crates this far in front of the aircraft (instead of directly under) RestrictFOBToZones = false, -- if true, recipes marked isFOB only build inside configured FOBZones @@ -1198,28 +1199,29 @@ local LOG_INFO = 2 local LOG_VERBOSE = 3 local LOG_DEBUG = 4 +local _logLevelLabels = { + [LOG_ERROR] = 'ERROR', + [LOG_INFO] = 'INFO', + [LOG_VERBOSE] = 'VERBOSE', + [LOG_DEBUG] = 'DEBUG', +} + local function _log(level, msg) local logLevel = CTLD.Config and CTLD.Config.LogLevel or LOG_INFO - if level <= logLevel then - _logVerbose('' .. msg) + if level > logLevel or level == LOG_NONE then return end + local label = _logLevelLabels[level] or tostring(level) + local text = string.format('[Moose_CTLD][%s] %s', label, tostring(msg)) + if env and env.info then + env.info(text) + else + print(text) end end -local function _logError(msg) - _log(LOG_ERROR, msg) -end - -local function _logInfo(msg) - _log(LOG_INFO, msg) -end - -local function _logVerbose(msg) - _log(LOG_VERBOSE, msg) -end - -local function _logDebug(msg) - _log(LOG_DEBUG, msg) -end +local function _logError(msg) _log(LOG_ERROR, msg) end +local function _logInfo(msg) _log(LOG_INFO, msg) end +local function _logVerbose(msg) _log(LOG_VERBOSE, msg) end +local function _logDebug(msg) _log(LOG_DEBUG, msg) end -- ========================= -- Zone and Unit Utilities @@ -1402,9 +1404,29 @@ function CTLD:_nearestActivePickupZone(unit) return _nearestZonePoint(unit, self:_collectActivePickupDefs()) end +local function _defaultCountryForSide(side) + if not (country and country.id) then return nil end + if side == coalition.side.BLUE then + return country.id.USA or country.id.CJTF_BLUE + elseif side == coalition.side.RED then + return country.id.RUSSIA or country.id.CJTF_RED + elseif side == coalition.side.NEUTRAL then + return country.id.UN or country.id.CJTF_NEUTRAL or country.id.USA + end + return nil +end + local function _coalitionAddGroup(side, category, groupData, ctldConfig) -- Enforce side/category in groupData just to be safe groupData.category = category + local countryId = ctldConfig and ctldConfig.CountryId + if not countryId then + countryId = _defaultCountryForSide(side) + if ctldConfig then ctldConfig.CountryId = countryId end + end + if countryId then + groupData.country = countryId + end -- Apply air-spawn altitude adjustment for AIRPLANE category if DroneAirSpawn is enabled if category == Group.Category.AIRPLANE and ctldConfig and ctldConfig.DroneAirSpawn and ctldConfig.DroneAirSpawn.Enabled then @@ -1424,7 +1446,8 @@ local function _coalitionAddGroup(side, category, groupData, ctldConfig) end end - return coalition.addGroup(side, category, groupData) + local addCountry = countryId or side + return coalition.addGroup(addCountry, category, groupData) end local function _spawnStaticCargo(side, point, cargoType, name) @@ -2264,6 +2287,8 @@ function CTLD:New(cfg) end o.Side = o.Config.CoalitionSide + o.CountryId = o.Config.CountryId or _defaultCountryForSide(o.Side) + o.Config.CountryId = o.CountryId o.MenuRoots = {} o.MenusByGroup = {} @@ -7736,6 +7761,28 @@ function CTLD:_CreateMobileMASH(group, position, catalogDef) if not cfg or not cfg.Enabled then return end if not cfg.MobileMASH or not cfg.MobileMASH.Enabled then return end + -- Ensure we have a MOOSE GROUP instance (coalition.addGroup returns a raw DCS group) + local mashGroup = group + if mashGroup and not (mashGroup.IsAlive and mashGroup.GetCoordinate) then + local rawName = (mashGroup.GetName and mashGroup:GetName()) or (mashGroup.getName and mashGroup:getName()) + if rawName and GROUP and GROUP.FindByName then + local found = GROUP:FindByName(rawName) + if found then + mashGroup = found + else + _logError(string.format('[MobileMASH] Could not resolve MOOSE group for %s; aborting Mobile MASH setup', rawName)) + return + end + else + _logError('[MobileMASH] Missing group reference for Mobile MASH deployment; aborting') + return + end + end + if not mashGroup then + _logError('[MobileMASH] Mobile MASH group resolution failed; aborting') + return + end + local side = catalogDef.side or self.Side if not CTLD._mobileMASHCounter then CTLD._mobileMASHCounter = {} end if not CTLD._mobileMASHCounter[side] then CTLD._mobileMASHCounter[side] = 0 end @@ -7750,7 +7797,7 @@ function CTLD:_CreateMobileMASH(group, position, catalogDef) position = {x = position.x, z = position.z}, radius = radius, side = side, - group = group, + group = mashGroup, isMobile = true, catalogKey = catalogDef.description or 'Mobile MASH' } @@ -7760,8 +7807,8 @@ function CTLD:_CreateMobileMASH(group, position, catalogDef) CTLD._mashZones[mashId] = mashData -- Draw on F10 map - local circleId = mashId .. '_circle' - local textId = mashId .. '_text' + local circleId = _nextMarkupId() + local textId = _nextMarkupId() local p = {x = position.x, y = 0, z = position.z} local borderColor = cfg.MASHZoneColors.border or {1, 1, 0, 0.85} @@ -7791,15 +7838,16 @@ function CTLD:_CreateMobileMASH(group, position, catalogDef) local ctldInstance = self local scheduler = SCHEDULER:New(nil, function() -- Check if group still exists - if not group or not group:IsAlive() then + if not mashGroup or not mashGroup:IsAlive() then ctldInstance:_RemoveMobileMASH(mashId) return end -- Send periodic announcement - local currentPos = group:GetCoordinate() - if currentPos then - local currentGrid = ctldInstance:_GetMGRSString({x = currentPos.x, z = currentPos.z}) + local coord = mashGroup:GetCoordinate() + if coord then + local vec3 = coord:GetVec3() + local currentGrid = ctldInstance:_GetMGRSString({x = vec3.x, z = vec3.z}) local announceMsg = _fmtTemplate(CTLD.Messages.medevac_mash_announcement, { mash_id = CTLD._mobileMASHCounter[side], grid = currentGrid, @@ -7814,7 +7862,7 @@ function CTLD:_CreateMobileMASH(group, position, catalogDef) -- Set up death event handler for this specific MASH local ctldInstance = self - local mashGroupName = group:GetName() + local mashGroupName = mashGroup:GetName() local eventHandler = EVENTHANDLER:New() eventHandler:HandleEvent(EVENTS.Dead) diff --git a/Moose_CTLD_Pure/Voice Attack/CTLD_TEST.vap b/Moose_CTLD_Pure/Voice Attack/CTLD_TEST.vap new file mode 100644 index 0000000..e4d11eb --- /dev/null +++ b/Moose_CTLD_Pure/Voice Attack/CTLD_TEST.vap @@ -0,0 +1,25 @@ + + + DCS CTLD Menu Navigation + a8f7c9d2-4e6b-4c1a-9f3e-2a8d7c6b5e4f + + + 3a7f2b1e-8c4d-4f9a-b2e1-5d6c7a8b9c0d + load troops + + + {RALT}\{F2}{F1}{F1} + + + + + 4b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e + show status;ctld status;check status + + + {RALT}\{F5}{F2} + + + + + diff --git a/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile.vap b/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile.vap new file mode 100644 index 0000000..ccc61c8 --- /dev/null +++ b/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile.vap @@ -0,0 +1,1138 @@ + + + DCS CTLD Menu Navigation + a8f7c9d2-4e6b-4c1a-9f3e-2a8d7c6b5e4f + + + + 3a7f2b1e-8c4d-4f9a-b2e1-5d6c7a8b9c0d + load troops + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F1 + + + 300 + + + F1 + + + + + 4b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e + deploy troops;deploy hold;deploy defend + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F1 + + + 300 + + + F2 + + + + + 5c9d0e1f-2a3b-4c5d-6e7f-8a9b0c1d2e3f + deploy attack;troops attack + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F1 + + + 300 + + + F3 + + + + + + + 6d0e1f2a-3b4c-5d6e-7f8a-9b0c1d2e3f4a + build here;build at position + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F2 + + + 300 + + + F1 + + + + + 7e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b + refresh buildable list;refresh build list + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F2 + + + 300 + + + F4 + + + + + + + 8f2a3b4c-5d6e-7f8a-9b0c-1d2e3f4a5b6c + list medevac;active medevac requests + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F3 + + + 300 + + + F1 + + + + + 9a3b4c5d-6e7f-8a9b-0c1d-2e3f4a5b6c7d + nearest medevac location;medevac location + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F3 + + + 300 + + + F2 + + + + + 0b4c5d6e-7f8a-9b0c-1d2e-3f4a5b6c7d8e + salvage points;check salvage + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F3 + + + 300 + + + F3 + + + + + 1c5d6e7f-8a9b-0c1d-2e3f-4a5b6c7d8e9f + vectors to medevac;medevac vectors + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F3 + + + 300 + + + F4 + + + + + 2d6e7f8a-9b0c-1d2e-3f4a-5b6c7d8e9f0a + mash locations;show mash + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F3 + + + 300 + + + F5 + + + + + 3e7f8a9b-0c1d-2e3f-4a5b-6c7d8e9f0a1b + smoke crew locations;mark crews + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F3 + + + 300 + + + F6 + + + + + 4f8a9b0c-1d2e-3f4a-5b6c-7d8e9f0a1b2c + smoke mash zones;mark mash + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F3 + + + 300 + + + F7 + + + + + + + 5a9b0c1d-2e3f-4a5b-6c7d-8e9f0a1b2c3d + drop one crate;drop crate + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F4 + + + 300 + + + F1 + + + + + 6b0c1d2e-3f4a-5b6c-7d8e-9f0a1b2c3d4e + drop all crates;drop cargo + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F4 + + + 300 + + + F2 + + + + + 7c1d2e3f-4a5b-6c7d-8e9f-0a1b2c3d4e5f + mark nearest crate;smoke crate;remark crate + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F4 + + + 300 + + + F3 + + + + + 8d2e3f4a-5b6c-7d8e-9f0a-1b2c3d4e5f6a + show inventory;check inventory;zone inventory + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F4 + + + 300 + + + F4 + + + + + + + 9e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b + create drop zone;mark drop zone + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F3 + + + 300 + + + F1 + + + + + 0f4a5b6c-7d8e-9f0a-1b2c-3d4e5f6a7b8c + smoke green;green smoke + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F3 + + + 300 + + + F2 + + + 300 + + + F1 + + + + + 1a5b6c7d-8e9f-0a1b-2c3d-4e5f6a7b8c9d + smoke red;red smoke + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F3 + + + 300 + + + F2 + + + 300 + + + F2 + + + + + 2b6c7d8e-9f0a-1b2c-3d4e-5f6a7b8c9d0e + smoke white;white smoke + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F3 + + + 300 + + + F2 + + + 300 + + + F3 + + + + + 3c7d8e9f-0a1b-2c3d-4e5f-6a7b8c9d0e1f + smoke orange;orange smoke + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F3 + + + 300 + + + F2 + + + 300 + + + F4 + + + + + 4d8e9f0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a + smoke blue;blue smoke + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F3 + + + 300 + + + F2 + + + 300 + + + F5 + + + + + + + 5e9f0a1b-2c3d-4e5f-6a7b-8c9d0e1f2a3b + vectors to crate;find crate;nearest crate + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F4 + + + 300 + + + F1 + + + + + 6f0a1b2c-3d4e-5f6a-7b8c-9d0e1f2a3b4c + vectors to pickup;find pickup zone;nearest pickup + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F4 + + + 300 + + + F2 + + + + + 7a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d + smoke nearest zone;mark nearest zone + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F4 + + + 300 + + + F3 + + + + + 8b2c3d4e-5f6a-7b8c-9d0e-1f2a3b4c5d6e + smoke all zones;mark all zones;smoke nearby zones + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F4 + + + 300 + + + F4 + + + + + 9c3d4e5f-6a7b-8c9d-0e1f-2a3b4c5d6e7f + vectors to mash;find mash;nearest mash + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F4 + + + 300 + + + F6 + + + + + 0d4e5f6a-7b8c-9d0e-1f2a-3b4c5d6e7f8a + enable hover coach;hover coach on + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F4 + + + 300 + + + F7 + + + + + 1e5f6a7b-8c9d-0e1f-2a3b-4c5d6e7f8a9b + disable hover coach;hover coach off + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F4 + + + 300 + + + F8 + + + + + + + 2f6a7b8c-9d0e-1f2a-3b4c-5d6e7f8a9b0c + show status;ctld status;check status + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F5 + + + 300 + + + F2 + + + + + 3a7b8c9d-0e1f-2a3b-4c5d-6e7f8a9b0c1d + draw zones on map;show zones;mark zones on map + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F5 + + + 300 + + + F3 + + + + + 4b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d3e + clear map drawings;clear map marks;remove zone marks + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F5 + + + 300 + + + F4 + + + + + 5c9d0e1f-2a3b-4c5d-6e7f-8a9b0c1d2e4f + medevac statistics;medevac stats;show medevac stats + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F5 + + + 300 + + + F5 + + + + + + + a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d + quick pickup;pickup mode + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F1 + + + 300 + + + F1 + + + + + b2c3d4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e + quick deploy;fast deploy + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F1 + + + 300 + + + F3 + + + + + c3d4e5f6-7a8b-9c0d-1e2f-3a4b5c6d7e8f + quick build;fast build + + + RALT + + + 200 + + + BACKSLASH + + + 300 + + + F2 + + + 300 + + + F2 + + + 300 + + + F1 + + + + + diff --git a/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile.xml b/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile.xml deleted file mode 100644 index 7c78040..0000000 --- a/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile.xml +++ /dev/null @@ -1,378 +0,0 @@ - - - - - - - - - - - load troops - - - Send keys to active window - {RALT}\\{F2}{F1}{F1} - - - - - - deploy troops;deploy hold;deploy defend - - - Send keys to active window - {RALT}\\{F2}{F1}{F3} - - - - - - deploy attack;troops attack - - - Send keys to active window - {RALT}\\{F2}{F1}{F4} - - - - - - - build here;build at position - - - Send keys to active window - {RALT}\\{F2}{F2}{F1} - - - - - - refresh buildable list;refresh build list - - - Send keys to active window - {RALT}\\{F2}{F2}{F4} - - - - - - - list medevac;active medevac requests - - - Send keys to active window - {RALT}\\{F2}{F3}{F1} - - - - - - nearest medevac location;medevac location - - - Send keys to active window - {RALT}\\{F2}{F3}{F2} - - - - - - salvage points;check salvage - - - Send keys to active window - {RALT}\\{F2}{F3}{F3} - - - - - - vectors to medevac;medevac vectors - - - Send keys to active window - {RALT}\\{F2}{F3}{F4} - - - - - - mash locations;show mash - - - Send keys to active window - {RALT}\\{F2}{F3}{F5} - - - - - - smoke crew locations;mark crews - - - Send keys to active window - {RALT}\\{F2}{F3}{F6} - - - - - - smoke mash zones;mark mash - - - Send keys to active window - {RALT}\\{F2}{F3}{F7} - - - - - - - drop one crate;drop crate - - - Send keys to active window - {RALT}\\{F2}{F3}{F1} - - - - - - drop all crates;drop cargo - - - Send keys to active window - {RALT}\\{F2}{F3}{F2} - - - - - - mark nearest crate;smoke crate;remark crate - - - Send keys to active window - {RALT}\\{F2}{F3}{F3} - - - - - - show inventory;check inventory;zone inventory - - - Send keys to active window - {RALT}\\{F2}{F4} - - - - - - - create drop zone;mark drop zone - - - Send keys to active window - {RALT}\\{F3}{F1} - - - - - - smoke green;green smoke - - - Send keys to active window - {RALT}\\{F3}{F2}{F1} - - - - - - smoke red;red smoke - - - Send keys to active window - {RALT}\\{F3}{F2}{F2} - - - - - - smoke white;white smoke - - - Send keys to active window - {RALT}\\{F3}{F2}{F3} - - - - - - smoke orange;orange smoke - - - Send keys to active window - {RALT}\\{F3}{F2}{F4} - - - - - - smoke blue;blue smoke - - - Send keys to active window - {RALT}\\{F3}{F2}{F5} - - - - - - - vectors to crate;find crate;nearest crate - - - Send keys to active window - {RALT}\\{F4}{F1} - - - - - - vectors to pickup;find pickup zone;nearest pickup - - - Send keys to active window - {RALT}\\{F4}{F2} - - - - - - smoke nearest zone;mark nearest zone - - - Send keys to active window - {RALT}\\{F4}{F3} - - - - - - smoke all zones;mark all zones;smoke nearby zones - - - Send keys to active window - {RALT}\\{F4}{F4} - - - - - - vectors to mash;find mash;nearest mash - - - Send keys to active window - {RALT}\\{F4}{F6} - - - - - - enable hover coach;hover coach on - - - Send keys to active window - {RALT}\\{F4}{F7} - - - - - - disable hover coach;hover coach off - - - Send keys to active window - {RALT}\\{F4}{F8} - - - - - - - show status;ctld status;check status - - - Send keys to active window - {RALT}\\{F5}{F2} - - - - - - draw zones on map;show zones;mark zones on map - - - Send keys to active window - {RALT}\\{F5}{F3} - - - - - - clear map drawings;clear map marks;remove zone marks - - - Send keys to active window - {RALT}\\{F5}{F4} - - - - - - medevac statistics;medevac stats;show medevac stats - - - Send keys to active window - {RALT}\\{F5}{F5} - - - - - - - quick pickup;pickup mode - - - Send keys to active window - {RALT}\\{F2}{F1}{F1} - - - - - - quick deploy;fast deploy - - - Send keys to active window - {RALT}\\{F2}{F1}{F3} - - - - - - quick build;fast build - - - Send keys to active window - {RALT}\\{F2}{F2}{F1} - - - - - - diff --git a/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile_F10.vap b/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile_F10.vap new file mode 100644 index 0000000..9cd3339 --- /dev/null +++ b/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile_F10.vap @@ -0,0 +1,1497 @@ + + + CTLD Voice Menu (F10) + f2c64b1e-0e5a-4cae-9f4d-0b1c2d3e4f5a + + + + c101a001-7e5f-4d2c-8b3a-1c2d3e4f5a60 + load troops;load infantry + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F1 + + + 250 + + + F1 + + + + + c101a002-7e5f-4d2c-8b3a-1c2d3e4f5a61 + load assault squad;load assault team + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F1 + + + 250 + + + F2 + + + 250 + + + F1 + + + + + c101a003-7e5f-4d2c-8b3a-1c2d3e4f5a62 + load manpads team;load aa squad + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F1 + + + 250 + + + F2 + + + 250 + + + F2 + + + + + c101a004-7e5f-4d2c-8b3a-1c2d3e4f5a63 + load anti tank team;load at squad + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F1 + + + 250 + + + F2 + + + 250 + + + F3 + + + + + c101a005-7e5f-4d2c-8b3a-1c2d3e4f5a64 + load mortar team;load mortar squad + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F1 + + + 250 + + + F2 + + + 250 + + + F4 + + + + + c101a006-7e5f-4d2c-8b3a-1c2d3e4f5a65 + deploy troops hold;deploy hold + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F1 + + + 250 + + + F3 + + + + + c101a007-7e5f-4d2c-8b3a-1c2d3e4f5a66 + deploy troops attack;deploy attack + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F1 + + + 250 + + + F4 + + + + + + + c101a008-7e5f-4d2c-8b3a-1c2d3e4f5a67 + build here;build at position + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F2 + + + 250 + + + F1 + + + + + c101a009-7e5f-4d2c-8b3a-1c2d3e4f5a68 + open build advanced;build advanced menu + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F2 + + + 250 + + + F2 + + + + + c101a00a-7e5f-4d2c-8b3a-1c2d3e4f5a69 + open buildable near you;show buildable list + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F2 + + + 250 + + + F3 + + + + + c101a00b-7e5f-4d2c-8b3a-1c2d3e4f5a6a + refresh build list;refresh buildable list + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F2 + + + 250 + + + F4 + + + + + + + c101a00c-7e5f-4d2c-8b3a-1c2d3e4f5a6b + list medevac requests;active medevac + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F3 + + + 250 + + + F1 + + + + + c101a00d-7e5f-4d2c-8b3a-1c2d3e4f5a6c + nearest medevac location;medevac location + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F3 + + + 250 + + + F2 + + + + + c101a00e-7e5f-4d2c-8b3a-1c2d3e4f5a6d + check salvage points;show salvage + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F3 + + + 250 + + + F3 + + + + + c101a00f-7e5f-4d2c-8b3a-1c2d3e4f5a6e + vectors to medevac;medevac vectors + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F3 + + + 250 + + + F4 + + + + + c101a010-7e5f-4d2c-8b3a-1c2d3e4f5a6f + show mash locations;list mash + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F3 + + + 250 + + + F5 + + + + + c101a011-7e5f-4d2c-8b3a-1c2d3e4f5a70 + smoke crew locations;mark crews + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F3 + + + 250 + + + F6 + + + + + c101a012-7e5f-4d2c-8b3a-1c2d3e4f5a71 + smoke mash zones;mark mash + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F3 + + + 250 + + + F7 + + + + + c101a013-7e5f-4d2c-8b3a-1c2d3e4f5a72 + medevac guide;salvage guide + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F1 + + + 250 + + + F3 + + + 250 + + + F8 + + + + + + + c101a014-7e5f-4d2c-8b3a-1c2d3e4f5a73 + open request crate;request crate menu + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F2 + + + 250 + + + F1 + + + 200 + + + + + c101a015-7e5f-4d2c-8b3a-1c2d3e4f5a74 + open recipe info;recipe info menu + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F2 + + + 250 + + + F2 + + + 200 + + + + + c101a016-7e5f-4d2c-8b3a-1c2d3e4f5a75 + drop one crate;drop crate + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F2 + + + 250 + + + F3 + + + 250 + + + F1 + + + + + c101a017-7e5f-4d2c-8b3a-1c2d3e4f5a76 + drop all crates;drop cargo + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F2 + + + 250 + + + F3 + + + 250 + + + F2 + + + + + c101a018-7e5f-4d2c-8b3a-1c2d3e4f5a77 + remark nearest crate;smoke crate + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F2 + + + 250 + + + F3 + + + 250 + + + F3 + + + + + c101a019-7e5f-4d2c-8b3a-1c2d3e4f5a78 + show zone inventory;check inventory + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F2 + + + 250 + + + F4 + + + + + + + c101a01a-7e5f-4d2c-8b3a-1c2d3e4f5a79 + create drop zone;mark drop zone + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F3 + + + 250 + + + F1 + + + + + c101a01b-7e5f-4d2c-8b3a-1c2d3e4f5a7a + smoke green;green smoke + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F3 + + + 250 + + + F2 + + + 250 + + + F1 + + + + + c101a01c-7e5f-4d2c-8b3a-1c2d3e4f5a7b + smoke red;red smoke + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F3 + + + 250 + + + F2 + + + 250 + + + F2 + + + + + c101a01d-7e5f-4d2c-8b3a-1c2d3e4f5a7c + smoke white;white smoke + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F3 + + + 250 + + + F2 + + + 250 + + + F3 + + + + + c101a01e-7e5f-4d2c-8b3a-1c2d3e4f5a7d + smoke orange;orange smoke + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F3 + + + 250 + + + F2 + + + 250 + + + F4 + + + + + c101a01f-7e5f-4d2c-8b3a-1c2d3e4f5a7e + smoke blue;blue smoke + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F3 + + + 250 + + + F2 + + + 250 + + + F5 + + + + + + + c101a020-7e5f-4d2c-8b3a-1c2d3e4f5a7f + vectors to crate;find crate + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F4 + + + 250 + + + F1 + + + + + c101a021-7e5f-4d2c-8b3a-1c2d3e4f5a80 + vectors to pickup zone;find pickup zone + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F4 + + + 250 + + + F2 + + + + + c101a022-7e5f-4d2c-8b3a-1c2d3e4f5a81 + smoke nearest zone;mark nearest zone + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F4 + + + 250 + + + F3 + + + + + c101a023-7e5f-4d2c-8b3a-1c2d3e4f5a82 + smoke all zones;mark all zones + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F4 + + + 250 + + + F4 + + + + + c101a024-7e5f-4d2c-8b3a-1c2d3e4f5a83 + vectors to medevac crew;find medevac crew + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F4 + + + 250 + + + F5 + + + + + c101a025-7e5f-4d2c-8b3a-1c2d3e4f5a84 + vectors to mash;find mash + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F4 + + + 250 + + + F6 + + + + + c101a026-7e5f-4d2c-8b3a-1c2d3e4f5a85 + enable hover coach;hover coach on + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F4 + + + 250 + + + F7 + + + + + c101a027-7e5f-4d2c-8b3a-1c2d3e4f5a86 + disable hover coach;hover coach off + + + RALT+BACKSLASH + + + 200 + + + F10 + + + 250 + + + F2 + + + 250 + + + F4 + + + 250 + + + F8 + + + + + diff --git a/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile_F10_commands.html b/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile_F10_commands.html new file mode 100644 index 0000000..cb0ead3 --- /dev/null +++ b/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile_F10_commands.html @@ -0,0 +1,587 @@ + + + + + CTLD VoiceAttack Profile — Command Reference + + + +
+
+

CTLD VoiceAttack Command Reference

+

All phrases below assume the VoiceAttack profile sends Right Alt + Backslash to open the radio menu, then F10 > F2 to enter the CTLD root. Speak any phrase shown to run the navigation sequence automatically.

+
+ +
+ Pro Tip: Fine-tune the pause durations inside VoiceAttack if your DCS instance needs more/less time for menus to populate. You can also add your own synonyms by editing the command string list for any entry. +
+ +

Operations — Troop Transport

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PhrasesActionMenu Path
+ load troops + load infantry + Load default troop package.Operations → Troop Transport → Load Troops
+ load assault squad + load assault team + Load Assault Squad preset (AS).Operations → Troop Transport → Load Troops (Type) → Assault Squad
+ load manpads team + load aa squad + Load MANPADS Team preset (AA).Operations → Troop Transport → Load Troops (Type) → MANPADS Team
+ load anti tank team + load at squad + Load Anti-Tank Team preset (AT).Operations → Troop Transport → Load Troops (Type) → AT Team
+ load mortar team + load mortar squad + Load Mortar Team preset (AR).Operations → Troop Transport → Load Troops (Type) → Mortar Team
+ deploy troops hold + deploy hold + Unload troops with Hold/Defend behavior.Operations → Troop Transport → Deploy [Hold Position]
+ deploy troops attack + deploy attack + Unload troops with Attack/Advance behavior.Operations → Troop Transport → Deploy [Attack]
+ +

Operations — Build

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PhrasesActionMenu Path
+ build here + build at position + Build using nearby crates (with confirm/cooldown rules).Operations → Build → Build Here
+ open build advanced + build advanced menu + Open the dynamic build menu.Operations → Build → Build (Advanced)
+ open buildable near you + show buildable list + Focus the “Buildable Near You” submenu.Operations → Build → Build (Advanced) → Buildable Near You
+ refresh build list + refresh buildable list + Rescan crate availability for builds.Operations → Build → Refresh Buildable List
+ +

Operations — MEDEVAC

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PhrasesActionMenu Path
+ list medevac requests + active medevac + Show all active MEDEVAC crews.Operations → MEDEVAC → List Active MEDEVAC Requests
+ nearest medevac location + medevac location + Display nearest crew position.Operations → MEDEVAC → Nearest MEDEVAC Location
+ check salvage points + show salvage + Report coalition salvage totals.Operations → MEDEVAC → Coalition Salvage Points
+ vectors to medevac + medevac vectors + Provide bearing/range to nearest crew.Operations → MEDEVAC → Vectors to Nearest MEDEVAC
+ show mash locations + list mash + List all MASH delivery zones.Operations → MEDEVAC → MASH Locations
+ smoke crew locations + mark crews + Drop smoke on every active crew.Operations → MEDEVAC → Pop Smoke at Crew Locations
+ smoke mash zones + mark mash + Drop smoke on all MASH zones.Operations → MEDEVAC → Pop Smoke at MASH Zones
+ medevac guide + salvage guide + Show in-game MEDEVAC/salvage quick reference.Operations → MEDEVAC → MASH & Salvage System – Guide
+ +

Logistics

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PhrasesActionMenu Path
+ open request crate + request crate menu + Open the crate request submenu (choose item manually).Logistics → Request Crate
+ open recipe info + recipe info menu + Open recipe info submenu.Logistics → Recipe Info
+ drop one crate + drop crate + Drop a single loaded crate.Logistics → Crate Management → Drop One Loaded Crate
+ drop all crates + drop cargo + Drop every loaded crate.Logistics → Crate Management → Drop All Loaded Crates
+ remark nearest crate + smoke crate + Smoke the nearest friendly crate.Logistics → Crate Management → Re-mark Nearest Crate (Smoke)
+ show zone inventory + check inventory + Show stock at nearest supply/FOB zone.Logistics → Show Inventory at Nearest Zone
+ +

Field Tools

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PhrasesActionMenu Path
+ create drop zone + mark drop zone + Create a player drop zone (AO).Field Tools → Create Drop Zone (AO)
+ smoke green + green smoke + Drop green smoke at your position.Field Tools → Smoke My Location → Green
+ smoke red + red smoke + Drop red smoke at your position.Field Tools → Smoke My Location → Red
+ smoke white + white smoke + Drop white smoke at your position.Field Tools → Smoke My Location → White
+ smoke orange + orange smoke + Drop orange smoke at your position.Field Tools → Smoke My Location → Orange
+ smoke blue + blue smoke + Drop blue smoke at your position.Field Tools → Smoke My Location → Blue
+ +

Navigation & Hover Coach

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PhrasesActionMenu Path
+ vectors to crate + find crate + Show bearing/range to nearest friendly crate.Navigation → Request Vectors to Nearest Crate
+ vectors to pickup zone + find pickup zone + Show bearing/range to nearest supply zone.Navigation → Vectors to Nearest Pickup Zone
+ smoke nearest zone + mark nearest zone + Smoke the closest zone (pickup/drop/FOB/MASH).Navigation → Smoke Nearest Zone (Pickup/Drop/FOB/MASH)
+ smoke all zones + mark all zones + Smoke every zone within 5 km.Navigation → Smoke All Nearby Zones (5km)
+ vectors to medevac crew + find medevac crew + Show bearing/range to the nearest crew (shortcut).Navigation → Vectors to Nearest MEDEVAC Crew
+ vectors to mash + find mash + Show bearing/range to nearest MASH.Navigation → Vectors to Nearest MASH
+ enable hover coach + hover coach on + Enable hover coach prompts for this group.Navigation → Hover Coach: Enable
+ disable hover coach + hover coach off + Disable hover coach prompts for this group.Navigation → Hover Coach: Disable
+ +
+ Generated for CTLD_VoiceAttack_Profile_F10.vap (Right Alt + Backslash → F10 → F2). Tweak phrases or delays directly inside VoiceAttack to match your mission's pace. +
+
+ + diff --git a/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile_Fixed.vap b/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile_Fixed.vap new file mode 100644 index 0000000..113a59d --- /dev/null +++ b/Moose_CTLD_Pure/Voice Attack/CTLD_VoiceAttack_Profile_Fixed.vap @@ -0,0 +1,74 @@ + + + DCS CTLD Menu Navigation + a8f7c9d2-4e6b-4c1a-9f3e-2a8d7c6b5e4f + + + + load troops + + + 3a7f2b1e-8c4d-4f9a-b2e1-5d6c7a8b9c0d + PressKey + 0 + + 165 + + + + 3a7f2b1e-8c4d-4f9a-b2e1-5d6c7a8b9c0e + Pause + 200 + + + 3a7f2b1e-8c4d-4f9a-b2e1-5d6c7a8b9c0f + PressKey + 0 + + 220 + + + + 3a7f2b1e-8c4d-4f9a-b2e1-5d6c7a8b9c10 + Pause + 300 + + + 3a7f2b1e-8c4d-4f9a-b2e1-5d6c7a8b9c11 + PressKey + 0 + + 113 + + + + 3a7f2b1e-8c4d-4f9a-b2e1-5d6c7a8b9c12 + Pause + 300 + + + 3a7f2b1e-8c4d-4f9a-b2e1-5d6c7a8b9c13 + PressKey + 0 + + 112 + + + + 3a7f2b1e-8c4d-4f9a-b2e1-5d6c7a8b9c14 + Pause + 300 + + + 3a7f2b1e-8c4d-4f9a-b2e1-5d6c7a8b9c15 + PressKey + 0 + + 112 + + + + 3a7f2b1e-8c4d-4f9a-b2e1-5d6c7a8b9c0d + + + diff --git a/Moose_CTLD_Pure/catalogs/Moose_CTLD_Catalog.lua b/Moose_CTLD_Pure/catalogs/Moose_CTLD_Catalog.lua index 5184ff1..91bbe9c 100644 --- a/Moose_CTLD_Pure/catalogs/Moose_CTLD_Catalog.lua +++ b/Moose_CTLD_Pure/catalogs/Moose_CTLD_Catalog.lua @@ -263,7 +263,7 @@ local troops = {} troops['AS'] = { label = 'Assault Squad', size = 8, - unitsBlue = { 'Soldier M4', 'Infantry M249' }, + unitsBlue = { 'Soldier M4', 'Soldier M249' }, unitsRed = { 'Infantry AK', 'Infantry AK' }, units = { 'Infantry AK' }, }