From 69ea6b6d19a3ecea91bb52b77122c931181d548e Mon Sep 17 00:00:00 2001 From: Ambroise Garel <47314805+akaAgar@users.noreply.github.com> Date: Thu, 18 Sep 2025 15:02:34 +0200 Subject: [PATCH] Added DCSEx.enums.taskFlag.FRIENDLY_TARGET --- Script/DCS extensions/Enums.lua | 1 + Script/The Universal Mission/ObjectivesMaker.lua | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Script/DCS extensions/Enums.lua b/Script/DCS extensions/Enums.lua index fcf30bf..8987302 100644 --- a/Script/DCS extensions/Enums.lua +++ b/Script/DCS extensions/Enums.lua @@ -62,6 +62,7 @@ DCSEx.enums.taskFlag = { ON_ROADS = 5, PARKED_AIRCRAFT_TARGET = 6, SCENERY_TARGET = 7, + FRIENDLY_TARGET = 8 } ------------------------------------- diff --git a/Script/The Universal Mission/ObjectivesMaker.lua b/Script/The Universal Mission/ObjectivesMaker.lua index d482720..7e25db3 100644 --- a/Script/The Universal Mission/ObjectivesMaker.lua +++ b/Script/The Universal Mission/ObjectivesMaker.lua @@ -174,7 +174,19 @@ do groupOptions.parkingID = parkingInfo.parkingID end - local units = Library.factions.getUnits(TUM.settings.getEnemyFaction(), objectiveDB.targetFamilies, math.random(objectiveDB.targetCount[1], objectiveDB.targetCount[2])) + -- Target group belongs to the enemy coalition, unless DCSEx.enums.taskFlag.FRIENDLY_TARGET is set + local groupCoalition = TUM.settings.getEnemyCoalition() + local groupFaction = TUM.settings.getEnemyFaction() + if DCSEx.table.contains(objectiveDB.flags, DCSEx.enums.taskFlag.FRIENDLY_TARGET) then + groupCoalition = TUM.settings.getPlayerCoalition() + groupFaction = TUM.settings.getPlayerFaction() + + -- Friendly target groups are immortal and invisible, so AI won't kill them before the player got a chance to interact with them + groupOptions.immortal = true + groupOptions.invisible = true + end + + local units = Library.factions.getUnits(groupFaction, objectiveDB.targetFamilies, math.random(objectiveDB.targetCount[1], objectiveDB.targetCount[2])) local groupInfo = nil if objectiveDB.targetFamilies[1] == DCSEx.enums.unitFamily.STATIC_STRUCTURE then @@ -183,7 +195,7 @@ do groupInfo.unitsID = { DCSEx.unitGroupMaker.createStatic(TUM.settings.getEnemyCoalition(), objective.point2, units[1], "") } end else - groupInfo = DCSEx.unitGroupMaker.create(TUM.settings.getEnemyCoalition(), DCSEx.dcs.getUnitCategoryFromFamily(objectiveDB.targetFamilies[1]), objective.point2, units, groupOptions) + groupInfo = DCSEx.unitGroupMaker.create(groupCoalition, DCSEx.dcs.getUnitCategoryFromFamily(objectiveDB.targetFamilies[1]), objective.point2, units, groupOptions) end if not groupInfo then