@jtff/miztemplate-lib 3.7.6 → 3.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lua/src/020-mission_functions.lua +112 -38
- package/package.json +1 -1
|
@@ -434,12 +434,24 @@ function deleteSubRangeUnits(param)
|
|
|
434
434
|
local subRangeConfig = param[3]
|
|
435
435
|
local radioCommandSubRange = param[4]
|
|
436
436
|
local blnMute = param[5]
|
|
437
|
-
for i = 1, #groupsToSpawn do
|
|
438
|
-
destroyGroup(groupsToSpawn[i])
|
|
439
|
-
end
|
|
440
|
-
|
|
441
437
|
local subRangeName = subRangeConfig.name
|
|
442
438
|
local staticsToDelete = subRangeConfig.staticsToSpawn
|
|
439
|
+
if (subRangeConfig.groupsToSpawn ~= nil) then
|
|
440
|
+
for i = 1, #groupsToSpawn do
|
|
441
|
+
destroyGroup(groupsToSpawn[i])
|
|
442
|
+
end
|
|
443
|
+
else
|
|
444
|
+
jtff_log.warn(string.format("No Groups in %s", subRangeName), "RANGE")
|
|
445
|
+
end
|
|
446
|
+
if (subRangeConfig.randomGroupsToSpawn ~= nil) then
|
|
447
|
+
local groupsToDestroy = subRangeConfig.randomGroupsToSpawn
|
|
448
|
+
for i = 1, #groupsToDestroy do
|
|
449
|
+
destroyGroup(subRangeConfig.randomGroupsToSpawn[i])
|
|
450
|
+
end
|
|
451
|
+
else
|
|
452
|
+
jtff_log.warn(string.format("No random*W Groups in %s", subRangeName), "RANGE")
|
|
453
|
+
end
|
|
454
|
+
|
|
443
455
|
if (staticsToDelete ~= nil)then
|
|
444
456
|
destroyStatics(staticsToDelete, subRangeName)
|
|
445
457
|
else
|
|
@@ -715,8 +727,8 @@ end
|
|
|
715
727
|
function markGroupOnMap(param)
|
|
716
728
|
local groupsToSpawn = param[1]
|
|
717
729
|
local side = param[2]
|
|
718
|
-
for
|
|
719
|
-
local group_name = string.format("%s", groupsToSpawn[
|
|
730
|
+
for index = 1, #groupsToSpawn do
|
|
731
|
+
local group_name = string.format("%s", groupsToSpawn[index])
|
|
720
732
|
jtff_log.info(string.format("Mark on map all groups with name prefix %s", group_name),"MARK")
|
|
721
733
|
local dcs_groups = SET_GROUP:New():FilterPrefixes(group_name):FilterOnce()
|
|
722
734
|
dcs_groups:ForEachGroupAlive(function(group_alive)
|
|
@@ -844,6 +856,8 @@ function SpawnRanges(param)
|
|
|
844
856
|
local subRangeConfig = param[3]
|
|
845
857
|
local subRangeName = subRangeConfig.name
|
|
846
858
|
local groupsToSpawn = subRangeConfig.groupsToSpawn
|
|
859
|
+
local randomGroupsToSpawn = subRangeConfig.randomGroupsToSpawn
|
|
860
|
+
local nbRandomGroupsToSpawn = subRangeConfig.nbRandomGroupsToSpawn or 1
|
|
847
861
|
local staticsToSpawn = subRangeConfig.staticsToSpawn
|
|
848
862
|
local holdFire = subRangeConfig.holdFire
|
|
849
863
|
local engageAirWeapons = subRangeConfig.engageAirWeapons
|
|
@@ -851,7 +865,7 @@ function SpawnRanges(param)
|
|
|
851
865
|
local redAlert = subRangeConfig.redAlert
|
|
852
866
|
|
|
853
867
|
jtff_log.info(string.format("SpawnRanges : Range %s - Targets %s", rangeName, subRangeName),"RANGE")
|
|
854
|
-
if (staticsToSpawn ~= nil)then
|
|
868
|
+
if (staticsToSpawn ~= nil) then
|
|
855
869
|
for index, staticToSpawn in ipairs(staticsToSpawn) do
|
|
856
870
|
local spawnStatic = nil
|
|
857
871
|
if (staticToSpawn.name ~= nil) then
|
|
@@ -910,46 +924,107 @@ function SpawnRanges(param)
|
|
|
910
924
|
jtff_log.warn(string.format("No static in %s", subRangeName),"RANGE")
|
|
911
925
|
end
|
|
912
926
|
|
|
913
|
-
|
|
914
|
-
local
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
local
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
927
|
+
if (randomGroupsToSpawn ~= nil) then
|
|
928
|
+
local availableRandomGroupsList = randomGroupsToSpawn
|
|
929
|
+
nbRandomGroupsToSpawn = math.min(nbRandomGroupsToSpawn,#availableRandomGroupsList)
|
|
930
|
+
--math.randomseed(os.time())
|
|
931
|
+
for i = 1, nbRandomGroupsToSpawn do
|
|
932
|
+
local randomIndex = math.random(1, #availableRandomGroupsList)
|
|
933
|
+
local groupNameToSpawn = string.format("%s", availableRandomGroupsList[randomIndex])
|
|
934
|
+
local finalList = {}
|
|
935
|
+
for index, value in ipairs(availableRandomGroupsList) do
|
|
936
|
+
if index ~= randomIndex then
|
|
937
|
+
table.insert(finalList, value)
|
|
938
|
+
end
|
|
923
939
|
end
|
|
924
|
-
|
|
925
|
-
|
|
940
|
+
availableRandomGroupsList = finalList
|
|
941
|
+
|
|
942
|
+
if (GROUP:FindByName(groupNameToSpawn) ~= nil) then
|
|
943
|
+
local spawnGroup = SPAWN:New(groupNameToSpawn)
|
|
944
|
+
jtff_log.info(string.format("SPAWN %s", groupNameToSpawn), "RANGE")
|
|
945
|
+
local groupSpawning
|
|
946
|
+
if (subRangeConfig.spawnZone) then
|
|
947
|
+
groupSpawning = spawnGroup:SpawnInZone(ZONE:New(subRangeConfig.spawnZone),true)
|
|
948
|
+
else
|
|
949
|
+
groupSpawning = spawnGroup:Spawn()
|
|
950
|
+
end
|
|
951
|
+
markGroupOnMap({{groupNameToSpawn}, rangeConfig.benefit_coalition})
|
|
952
|
+
if (holdFire) then
|
|
953
|
+
groupSpawning:OptionROEHoldFire()
|
|
954
|
+
else
|
|
955
|
+
groupSpawning:OptionROEOpenFire()
|
|
956
|
+
end
|
|
957
|
+
if (engageAirWeapons) then
|
|
958
|
+
groupSpawning:SetOption(AI.Option.Ground.id.ENGAGE_AIR_WEAPONS, true)
|
|
959
|
+
end
|
|
960
|
+
if (activateAI == true or activateAI == false) then
|
|
961
|
+
groupSpawning:SetAIOnOff(activateAI)
|
|
962
|
+
end
|
|
963
|
+
if (redAlert == true or redAlert == false) then
|
|
964
|
+
if (redAlert == true) then
|
|
965
|
+
groupSpawning:OptionAlarmStateRed()
|
|
966
|
+
else
|
|
967
|
+
groupSpawning:OptionAlarmStateGreen()
|
|
968
|
+
end
|
|
969
|
+
else
|
|
970
|
+
groupSpawning:OptionAlarmStateAuto()
|
|
971
|
+
end
|
|
972
|
+
if (string.find(groupNameToSpawn, "SAM") ~= nil) then
|
|
973
|
+
sead:UpdateSet(groupNameToSpawn)
|
|
974
|
+
jtff_log.info(string.format("SEAD for %s", groupNameToSpawn),"RANGE")
|
|
975
|
+
end
|
|
926
976
|
else
|
|
927
|
-
|
|
977
|
+
jtff_log.error(string.format("GROUP to spawn %s not found in mission", groupNameToSpawn),"RANGE")
|
|
928
978
|
end
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
if (
|
|
936
|
-
|
|
937
|
-
|
|
979
|
+
end
|
|
980
|
+
end
|
|
981
|
+
|
|
982
|
+
if (groupsToSpawn ~= nil) then
|
|
983
|
+
for i = 1, #groupsToSpawn do
|
|
984
|
+
local groupNameToSpawn = string.format("%s", groupsToSpawn[i])
|
|
985
|
+
if (GROUP:FindByName(groupNameToSpawn) ~= nil) then
|
|
986
|
+
local spawnGroup = SPAWN:New(groupNameToSpawn)
|
|
987
|
+
jtff_log.info(string.format("SPAWN %s", groupNameToSpawn), "RANGE")
|
|
988
|
+
local groupSpawning
|
|
989
|
+
if (subRangeConfig.spawnZone) then
|
|
990
|
+
groupSpawning = spawnGroup:SpawnInZone(ZONE:New(subRangeConfig.spawnZone),true)
|
|
991
|
+
else
|
|
992
|
+
groupSpawning = spawnGroup:Spawn()
|
|
993
|
+
end
|
|
994
|
+
if (holdFire) then
|
|
995
|
+
groupSpawning:OptionROEHoldFire()
|
|
996
|
+
else
|
|
997
|
+
groupSpawning:OptionROEOpenFire()
|
|
998
|
+
end
|
|
999
|
+
if (engageAirWeapons) then
|
|
1000
|
+
groupSpawning:SetOption(AI.Option.Ground.id.ENGAGE_AIR_WEAPONS, true)
|
|
1001
|
+
end
|
|
1002
|
+
if (activateAI == true or activateAI == false) then
|
|
1003
|
+
groupSpawning:SetAIOnOff(activateAI)
|
|
1004
|
+
end
|
|
1005
|
+
if (redAlert == true or redAlert == false) then
|
|
1006
|
+
if (redAlert == true) then
|
|
1007
|
+
groupSpawning:OptionAlarmStateRed()
|
|
1008
|
+
else
|
|
1009
|
+
groupSpawning:OptionAlarmStateGreen()
|
|
1010
|
+
end
|
|
938
1011
|
else
|
|
939
|
-
groupSpawning:
|
|
1012
|
+
groupSpawning:OptionAlarmStateAuto()
|
|
1013
|
+
end
|
|
1014
|
+
if (string.find(groupNameToSpawn, "SAM") ~= nil) then
|
|
1015
|
+
sead:UpdateSet(groupNameToSpawn)
|
|
1016
|
+
jtff_log.info(string.format("SEAD for %s", groupNameToSpawn),"RANGE")
|
|
940
1017
|
end
|
|
941
1018
|
else
|
|
942
|
-
|
|
943
|
-
end
|
|
944
|
-
if (string.find(groupNameToSpawn, "SAM") ~= nil) then
|
|
945
|
-
sead:UpdateSet(groupNameToSpawn)
|
|
946
|
-
jtff_log.info(string.format("SEAD for %s", groupNameToSpawn),"RANGE")
|
|
1019
|
+
jtff_log.error(string.format("GROUP to spawn %s not found in mission", groupNameToSpawn),"RANGE")
|
|
947
1020
|
end
|
|
948
|
-
else
|
|
949
|
-
jtff_log.error(string.format("GROUP to spawn %s not found in mission", groupNameToSpawn),"RANGE")
|
|
950
1021
|
end
|
|
1022
|
+
markGroupOnMap({groupsToSpawn, rangeConfig.benefit_coalition})
|
|
1023
|
+
else
|
|
1024
|
+
jtff_log.warn(string.format("No GROUP to spawn in subRange %s settings !",subRangeName),"RANGE")
|
|
951
1025
|
end
|
|
952
1026
|
|
|
1027
|
+
|
|
953
1028
|
radioCommandSubRange:RemoveSubMenus()
|
|
954
1029
|
local CommandZoneDetroy = MENU_COALITION_COMMAND:New(rangeConfig.benefit_coalition, "Delete", radioCommandSubRange,
|
|
955
1030
|
deleteSubRangeUnits, {groupsToSpawn, rangeConfig, subRangeConfig, radioCommandSubRange, true})
|
|
@@ -982,7 +1057,6 @@ function SpawnRanges(param)
|
|
|
982
1057
|
radioCommandSubRange, giveListOfUnitsAliveInGroup, {groupsToSpawn, rangeConfig.benefit_coalition, 5})
|
|
983
1058
|
MESSAGE:NewType(string.format("Units in range %s(%s) in place", rangeName, subRangeName), MESSAGE.Type.Information)
|
|
984
1059
|
:ToCoalition(rangeConfig.benefit_coalition)
|
|
985
|
-
markGroupOnMap({groupsToSpawn, rangeConfig.benefit_coalition})
|
|
986
1060
|
end
|
|
987
1061
|
|
|
988
1062
|
function SpawnFacRangesDelay(param)
|