From 76817db137a6257b9773512201e4ab8a85b82060 Mon Sep 17 00:00:00 2001 From: Ambroise Garel <47314805+akaAgar@users.noreply.github.com> Date: Sun, 27 Jul 2025 21:39:18 +0200 Subject: [PATCH] Added "number of wingmen" setting --- Script/The Universal Mission/Settings.lua | 9 +++++++-- Script/The Universal Mission/Wingmen.lua | 8 +++++++- Script/The Universal Mission/WingmenMenu.lua | 1 + 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Script/The Universal Mission/Settings.lua b/Script/The Universal Mission/Settings.lua index 8aae018..fa1be63 100644 --- a/Script/The Universal Mission/Settings.lua +++ b/Script/The Universal Mission/Settings.lua @@ -22,6 +22,7 @@ TUM.settings.id = { TARGET_LOCATION = 9, TASKING = 10, TIME_PERIOD = 11, + WINGMEN = 12, } do @@ -39,6 +40,7 @@ do [TUM.settings.id.TARGET_LOCATION] = "Target location", [TUM.settings.id.TASKING] = "Mission type", [TUM.settings.id.TIME_PERIOD] = "Time period", + [TUM.settings.id.WINGMEN] = "Wingmen", } local SETTING_VALUES = { @@ -52,6 +54,7 @@ do [TUM.settings.id.TARGET_LOCATION] = { }, [TUM.settings.id.TASKING] = { "Antiship strike", "Ground attack", "Interception", "SEAD", "Strike" }, -- Must match values in the DCSEx.enums.taskFamily enum [TUM.settings.id.TIME_PERIOD] = { "World War 2", "Korea War", "Vietnam War", "Late Cold War", "Modern" }, -- Must match values in the DCSEx.enums.timePeriod enum + [TUM.settings.id.WINGMEN] = { "None", "One", "Two", "Three" } } local function getFaction(side) @@ -74,7 +77,8 @@ do [TUM.settings.id.TARGET_COUNT] = 2, [TUM.settings.id.TARGET_LOCATION] = 1, [TUM.settings.id.TASKING] = DCSEx.enums.taskFamily.GROUND_ATTACK, - [TUM.settings.id.TIME_PERIOD] = DCSEx.enums.timePeriod.MODERN + [TUM.settings.id.TIME_PERIOD] = DCSEx.enums.timePeriod.MODERN, + [TUM.settings.id.WINGMEN] = 2 } -- TODO: set default time period according to mission year @@ -155,6 +159,7 @@ do TUM.settings.id.ENEMY_AIR_DEFENSE, TUM.settings.id.ENEMY_AIR_FORCE, -1, + TUM.settings.id.WINGMEN, TUM.settings.id.AI_CAP, } @@ -175,7 +180,7 @@ do end if showScoreMultiplier then - local settingMultiplier = TUM.playerScore.getScoreMultiplier(v, settings[v]) + local settingMultiplier = TUM.playerScore.getScoreMultiplierMod(v, settings[v]) if settingMultiplier > 0.0 then summary = summary.." (+"..tostring(math.ceil(settingMultiplier * 100)).."% xp)" diff --git a/Script/The Universal Mission/Wingmen.lua b/Script/The Universal Mission/Wingmen.lua index d1ca81d..8c16dc5 100644 --- a/Script/The Universal Mission/Wingmen.lua +++ b/Script/The Universal Mission/Wingmen.lua @@ -38,6 +38,8 @@ do function TUM.wingmen.create() TUM.wingmen.removeAll() -- Destroy all pre-existing wingmen + if TUM.settings.getValue(TUM.settings.id.WINGMEN) <= 1 then return end -- No wingmen + TUM.log("Creating wingmen...") local player = world:getPlayer() @@ -62,12 +64,16 @@ do wingmanCallsign = DCSEx.unitCallsignMaker.getCallsign(playerTypeName) end + local unitCount = TUM.settings.getValue(TUM.settings.id.WINGMEN) - 1 + local unitList = {} + for _=1,unitCount do table.insert(unitList, playerTypeName) end + -- Select proper payload for mission local groupInfo = DCSEx.unitGroupMaker.create( TUM.settings.getPlayerCoalition(), playerCategory, DCSEx.math.randomPointInCircle(DCSEx.math.vec3ToVec2(player:getPoint()), 500, 250), - { playerTypeName, playerTypeName }, + unitList, { altitude = math.min(player:getPoint().y + 1524, 3048), -- spawn at player altitude + 5,000ft, up to a max of 10,000ft (to avoid crashes into nearby hills) callsign = wingmanCallsign, diff --git a/Script/The Universal Mission/WingmenMenu.lua b/Script/The Universal Mission/WingmenMenu.lua index 8c48ff3..58cd8f8 100644 --- a/Script/The Universal Mission/WingmenMenu.lua +++ b/Script/The Universal Mission/WingmenMenu.lua @@ -76,6 +76,7 @@ do function TUM.wingmenMenu.create() if TUM.settings.getValue(TUM.settings.id.MULTIPLAYER) then return end -- No wingmen in multiplayer + if TUM.settings.getValue(TUM.settings.id.WINGMEN) <= 1 then return end -- No wingmen local rootPath = missionCommands.addSubMenu("✈ Flight") missionCommands.addCommand("Cover me!", rootPath, radioCommandCoverMe, nil)