@jtff/miztemplate-lib 3.1.8 → 3.1.9

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.
@@ -1,7 +1,7 @@
1
- env.info("--- SKYNET VERSION: 3.1.0 | BUILD TIME: 09.02.2023 1925Z ---")
1
+ env.info("--- SKYNET VERSION: 3.3.0 | BUILD TIME: 29.12.2023 2311Z ---")
2
2
  do
3
3
  --this file contains the required units per sam type
4
- samTypesDB = {
4
+ samTypesDB = {
5
5
  ['S-200'] = {
6
6
  ['type'] = 'complex',
7
7
  ['searchRadar'] = {
@@ -47,9 +47,16 @@ samTypesDB = {
47
47
  ['NATO'] = 'Big Bird',
48
48
  },
49
49
  },
50
+ ['S-300PS 40B6MD sr_19J6'] = {
51
+ ['name'] = {
52
+ ['NATO'] = 'Tin Shield',
53
+ },
54
+ }
50
55
  },
51
56
  ['trackingRadar'] = {
52
57
  ['S-300PS 40B6M tr'] = {
58
+ },
59
+ ['S-300PS 5H63C 30H6_tr'] = {
53
60
  },
54
61
  },
55
62
  ['launchers'] = {
@@ -212,16 +219,18 @@ samTypesDB = {
212
219
 
213
220
  },
214
221
  ['Roland ADS'] = {
215
- ['type'] = 'single',
222
+ ['type'] = 'complex',
216
223
  ['searchRadar'] = {
217
- ['Roland ADS'] = {
224
+ ['Roland Radar'] = {
225
+ ['name'] = {
226
+ ['NATO'] = 'Roland EWR',
227
+ },
218
228
  },
219
229
  },
220
230
  ['launchers'] = {
221
231
  ['Roland ADS'] = {
222
232
  },
223
233
  },
224
-
225
234
  ['name'] = {
226
235
  ['NATO'] = 'Roland ADS',
227
236
  },
@@ -394,8 +403,23 @@ samTypesDB = {
394
403
  ['NATO'] = 'CSA-4',
395
404
  },
396
405
  ['harm_detection_chance'] = 30
397
- },
398
- --- Start of EW radars:
406
+ },
407
+ ['Phalanx'] = {
408
+ ['type'] = 'single',
409
+ ['searchRadar'] = {
410
+ ['HEMTT_C-RAM_Phalanx'] = {
411
+ },
412
+ },
413
+ ['launchers'] = {
414
+ ['HEMTT_C-RAM_Phalanx'] = {
415
+ },
416
+ },
417
+ ['name'] = {
418
+ ['NATO'] = 'Phalanx',
419
+ },
420
+ ['harm_detection_chance'] = 10
421
+ },
422
+ -- Start of RED EW radars:
399
423
  ['1L13 EWR'] = {
400
424
  ['type'] = 'ewr',
401
425
  ['searchRadar'] = {
@@ -429,18 +453,29 @@ samTypesDB = {
429
453
  },
430
454
  ['harm_detection_chance'] = 20
431
455
  },
432
- ['Roland Radar'] = {
456
+ -- Start of BLUE EW radars:
457
+ ['FPS-117 Dome'] = {
433
458
  ['type'] = 'ewr',
434
459
  ['searchRadar'] = {
435
- ['Roland Radar'] = {
460
+ ['FPS-117 Dome'] = {
436
461
  ['name'] = {
437
- ['NATO'] = 'Roland EWR',
462
+ ['NATO'] = 'FPS-117 Dome',
438
463
  },
439
464
  },
440
465
  },
441
-
442
- ['harm_detection_chance'] = 60
443
- },
466
+ ['harm_detection_chance'] = 80
467
+ },
468
+ ['FPS-117'] = {
469
+ ['type'] = 'ewr',
470
+ ['searchRadar'] = {
471
+ ['FPS-117'] = {
472
+ ['name'] = {
473
+ ['NATO'] = 'FPS-117',
474
+ },
475
+ },
476
+ },
477
+ ['harm_detection_chance'] = 80
478
+ }
444
479
  }
445
480
  end
446
481
  do
@@ -745,17 +780,6 @@ samTypesDB['S-300PMU2'] = {
745
780
  },
746
781
  ['S-300PMU1 40B6MD sr'] = s300PMU140B6MDsr,
747
782
  ['S-300PMU1 64N6E sr'] = s300PMU164N6Esr,
748
-
749
- ['S-300PS 40B6MD sr'] = {
750
- ['name'] = {
751
- ['NATO'] = '',
752
- },
753
- },
754
- ['S-300PS 64H6E sr'] = {
755
- ['name'] = {
756
- ['NATO'] = '',
757
- },
758
- },
759
783
  },
760
784
  ['trackingRadar'] = {
761
785
  ['S-300PMU2 92H6E tr'] = {
@@ -1170,9 +1194,17 @@ function SkynetIADS:create(name)
1170
1194
  iads.name = ""
1171
1195
  end
1172
1196
  iads.contactUpdateInterval = 5
1197
+ world.addEventHandler(iads)
1173
1198
  return iads
1174
1199
  end
1175
1200
 
1201
+ function SkynetIADS:onEvent(event)
1202
+ if (event.id == world.event.S_EVENT_BIRTH ) then
1203
+ env.info("New Object Spawned")
1204
+ -- self:addSAMSite(event.initiator:getGroup():getName());
1205
+ end
1206
+ end
1207
+
1176
1208
  function SkynetIADS:setUpdateInterval(interval)
1177
1209
  self.contactUpdateInterval = interval
1178
1210
  end
@@ -1305,7 +1337,7 @@ function SkynetIADS:addSAMSitesByPrefix(prefix)
1305
1337
  if pos and pos == 1 then
1306
1338
  --mist returns groups, units and, StaticObjects
1307
1339
  local dcsObject = Group.getByName(groupName)
1308
- if dcsObject then
1340
+ if dcsObject and dcsObject:getUnits()[1]:isActive() then
1309
1341
  self:addSAMSite(groupName)
1310
1342
  end
1311
1343
  end
@@ -1876,7 +1908,10 @@ end
1876
1908
  function SkynetIADSAbstractDCSObjectWrapper:setDCSRepresentation(representation)
1877
1909
  self.dcsRepresentation = representation
1878
1910
  if self.dcsRepresentation then
1879
- self.dcsName = self:getDCSRepresentation():getName()
1911
+ self.dcsName = self.dcsRepresentation:getName()
1912
+ if (self.dcsName == nil or string.len(self.dcsName) == 0) and self.dcsRepresentation.id_ then
1913
+ self.dcsName = self.dcsRepresentation.id_
1914
+ end
1880
1915
  end
1881
1916
  end
1882
1917
 
@@ -2633,6 +2668,7 @@ function SkynetIADSAbstractRadarElement:goLive()
2633
2668
  then
2634
2669
  if self:isDestroyed() == false then
2635
2670
  local cont = self:getController()
2671
+ cont:setOnOff(true)
2636
2672
  cont:setOption(AI.Option.Ground.id.ALARM_STATE, AI.Option.Ground.val.ALARM_STATE.RED)
2637
2673
  cont:setOption(AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_FREE)
2638
2674
  self:getDCSRepresentation():enableEmission(true)
@@ -2665,9 +2701,15 @@ function SkynetIADSAbstractRadarElement:goDark()
2665
2701
  -- point defence will only go live if the Radar Emitting site it is protecting goes dark and this is due to a it defending against a HARM
2666
2702
  if (self.harmSilenceID ~= nil) then
2667
2703
  self:pointDefencesGoLive()
2704
+ if self:isDestroyed() == false then
2705
+ --if site goes dark due to HARM we turn off AI, this is due to a bug in DCS multiplayer where the harm will find its way to the radar emitter if just setEmissions is set to false
2706
+ local controller = self:getController()
2707
+ controller:setOnOff(false)
2708
+ end
2668
2709
  end
2669
2710
  self.aiState = false
2670
2711
  self:stopScanningForHARMs()
2712
+ self.cachedTargets = {}
2671
2713
  if self.iads:getDebugSettings().radarWentDark then
2672
2714
  self.iads:printOutputToLog("GOING DARK: "..self:getDescription())
2673
2715
  end
@@ -2910,22 +2952,24 @@ function SkynetIADSAbstractRadarElement:informOfHARM(harmContact)
2910
2952
  local radars = self:getRadars()
2911
2953
  for j = 1, #radars do
2912
2954
  local radar = radars[j]
2913
- local distanceNM = mist.utils.metersToNM(self:getDistanceInMetersToContact(radar, harmContact:getPosition().p))
2914
- local harmToSAMHeading = mist.utils.toDegree(mist.utils.getHeadingPoints(harmContact:getPosition().p, radar:getPosition().p))
2915
- local harmToSAMAspect = self:calculateAspectInDegrees(harmContact:getMagneticHeading(), harmToSAMHeading)
2916
- local speedKT = harmContact:getGroundSpeedInKnots(0)
2917
- local secondsToImpact = self:getSecondsToImpact(distanceNM, speedKT)
2918
- --TODO: use tti instead of distanceNM?
2919
- -- when iterating through the radars, store shortest tti and work with that value??
2920
- if ( harmToSAMAspect < SkynetIADSAbstractRadarElement.HARM_TO_SAM_ASPECT and distanceNM < SkynetIADSAbstractRadarElement.HARM_LOOKAHEAD_NM ) then
2921
- self:addObjectIdentifiedAsHARM(harmContact)
2922
- if ( #self:getPointDefences() > 0 and self:pointDefencesGoLive() == true and self.iads:getDebugSettings().harmDefence ) then
2923
- self.iads:printOutputToLog("POINT DEFENCES GOING LIVE FOR: "..self:getDCSName().." | TTI: "..secondsToImpact)
2924
- end
2925
- --self.iads:printOutputToLog("Ignore HARM shutdown: "..tostring(self:shallIgnoreHARMShutdown()))
2926
- if ( self:getIsAPointDefence() == false and ( self:isDefendingHARM() == false or ( self:getHARMShutdownTime() < secondsToImpact ) ) and self:shallIgnoreHARMShutdown() == false) then
2927
- self:goSilentToEvadeHARM(secondsToImpact)
2928
- break
2955
+ if radar:isExist() then
2956
+ local distanceNM = mist.utils.metersToNM(self:getDistanceInMetersToContact(radar, harmContact:getPosition().p))
2957
+ local harmToSAMHeading = mist.utils.toDegree(mist.utils.getHeadingPoints(harmContact:getPosition().p, radar:getPosition().p))
2958
+ local harmToSAMAspect = self:calculateAspectInDegrees(harmContact:getMagneticHeading(), harmToSAMHeading)
2959
+ local speedKT = harmContact:getGroundSpeedInKnots(0)
2960
+ local secondsToImpact = self:getSecondsToImpact(distanceNM, speedKT)
2961
+ --TODO: use tti instead of distanceNM?
2962
+ -- when iterating through the radars, store shortest tti and work with that value??
2963
+ if ( harmToSAMAspect < SkynetIADSAbstractRadarElement.HARM_TO_SAM_ASPECT and distanceNM < SkynetIADSAbstractRadarElement.HARM_LOOKAHEAD_NM ) then
2964
+ self:addObjectIdentifiedAsHARM(harmContact)
2965
+ if ( #self:getPointDefences() > 0 and self:pointDefencesGoLive() == true and self.iads:getDebugSettings().harmDefence ) then
2966
+ self.iads:printOutputToLog("POINT DEFENCES GOING LIVE FOR: "..self:getDCSName().." | TTI: "..secondsToImpact)
2967
+ end
2968
+ --self.iads:printOutputToLog("Ignore HARM shutdown: "..tostring(self:shallIgnoreHARMShutdown()))
2969
+ if ( self:getIsAPointDefence() == false and ( self:isDefendingHARM() == false or ( self:getHARMShutdownTime() < secondsToImpact ) ) and self:shallIgnoreHARMShutdown() == false) then
2970
+ self:goSilentToEvadeHARM(secondsToImpact)
2971
+ break
2972
+ end
2929
2973
  end
2930
2974
  end
2931
2975
  end
@@ -3131,9 +3175,11 @@ function SkynetIADSContact:getTypeName()
3131
3175
  if self:isIdentifiedAsHARM() then
3132
3176
  return SkynetIADSContact.HARM
3133
3177
  end
3134
- local category = self:getDCSRepresentation():getCategory()
3135
- if category == Object.Category.UNIT then
3136
- return self.typeName
3178
+ if self:getDCSRepresentation() ~= nil then
3179
+ local category = self:getDCSRepresentation():getCategory()
3180
+ if category == Object.Category.UNIT then
3181
+ return self.typeName
3182
+ end
3137
3183
  end
3138
3184
  return "UNKNOWN"
3139
3185
  end
@@ -3797,31 +3843,31 @@ function SkynetIADSHARMDetection:cleanAgedContacts()
3797
3843
  end
3798
3844
 
3799
3845
  function SkynetIADSHARMDetection:getNewRadarsThatHaveDetectedContact(contact)
3800
- local newRadars = contact:getAbstractRadarElementsDetected()
3801
- local radars = self.contactRadarsEvaluated[contact]
3802
- if radars then
3803
- newRadars = {}
3804
- local contactRadars = contact:getAbstractRadarElementsDetected()
3805
- for i = 1, #contactRadars do
3806
- local contactRadar = contactRadars[i]
3807
- local newRadar = self:isElementInTable(radars, contactRadar)
3808
- if newRadar ~= nil then
3809
- table.insert(newRadars, newRadar)
3810
- end
3846
+ local radarsFromContact = contact:getAbstractRadarElementsDetected()
3847
+ local evaluatedRadars = self.contactRadarsEvaluated[contact]
3848
+ local newRadars = {}
3849
+ if evaluatedRadars == nil then
3850
+ evaluatedRadars = {}
3851
+ self.contactRadarsEvaluated[contact] = evaluatedRadars
3852
+ end
3853
+ for i = 1, #radarsFromContact do
3854
+ local contactRadar = radarsFromContact[i]
3855
+ if self:isElementInTable(evaluatedRadars, contactRadar) == false then
3856
+ table.insert(evaluatedRadars, contactRadar)
3857
+ table.insert(newRadars, contactRadar)
3811
3858
  end
3812
3859
  end
3813
- self.contactRadarsEvaluated[contact] = contact:getAbstractRadarElementsDetected()
3814
3860
  return newRadars
3815
3861
  end
3816
3862
 
3817
3863
  function SkynetIADSHARMDetection:isElementInTable(tbl, element)
3818
3864
  for i = 1, #tbl do
3819
- tblElement = tbl[i]
3865
+ local tblElement = tbl[i]
3820
3866
  if tblElement == element then
3821
- return nil
3867
+ return true
3822
3868
  end
3823
3869
  end
3824
- return element
3870
+ return false
3825
3871
  end
3826
3872
 
3827
3873
  function SkynetIADSHARMDetection:informRadarsOfHARM(contact)
@@ -9,7 +9,7 @@
9
9
  env.info('JTFF-SHAREDLIB: shared library loading...')
10
10
 
11
11
  DEBUG_MSG = false
12
- DEBUG_SQ_MSG = false
12
+ DEBUG_SC_MSG = false
13
13
  DEBUG_DETECT_MSG = false
14
14
 
15
15
  use_jtff_sound_mod = false
@@ -36,13 +36,13 @@ end
36
36
 
37
37
  function debug_detection_msg(message)
38
38
  if DEBUG_DETECT_MSG then
39
- env.info(string.format("[DETECTION] %s", message))
39
+ env.info(string.format("[DEBUG DETECTION] %s", message))
40
40
  end
41
41
  end
42
42
 
43
- function debug_squeduler_msg(message)
44
- if DEBUG_SQ_MSG then
45
- env.info(string.format("[DEBUG SQ] %s", message))
43
+ function debug_scheduler_msg(message)
44
+ if DEBUG_SC_MSG then
45
+ env.info(string.format("[DEBUG SCHEDULER] %s", message))
46
46
  end
47
47
  end
48
48
 
@@ -4,41 +4,32 @@
4
4
  function detectShitHotBreak(objAirboss)
5
5
  local clientData={}
6
6
  local player_name=""
7
- --env.info('detectShitHotBreak : '.. objAirboss.customconfig.alias..' suspense ...')
8
- objAirboss.CVNClients:ForEachClientInZone( objAirboss.CVN_GROUPZone,
7
+ debug_msg('detectShitHotBreak : '.. objAirboss.customconfig.alias .. ' has ' .. objAirboss.CVNClients:Count()..' clients in Set ...')
8
+ objAirboss.CVNClients:ForEachClientInZone( objAirboss.CVN_UNITZone,
9
9
  function( MooseClient )
10
10
 
11
- local function resetFlag()
11
+ local function resetFlag(userflag)
12
12
  --trigger.action.outText('RESET SH Pass FLAG)', 5 )
13
- client_in_zone_flag:Set(0)
13
+ userflag:Set(0)
14
14
  end
15
15
 
16
16
  local player_velocity = MooseClient:GetVelocityKNOTS()
17
17
  local player_name = MooseClient:GetPlayerName()
18
- local player_alt = MooseClient:GetAltitude()
19
18
  local player_type = MooseClient:GetTypeName()
20
-
21
- local player_alt_feet = math.floor((player_alt * ( 3.28 / 10)))*10
22
-
23
- local player_velocity_round = math.floor((player_velocity/10))*10
19
+ local player_fuel = MooseClient:GetFuel()
20
+ local player_alt_feet = UTILS.MetersToFeet(MooseClient:GetAltitude())
21
+ --trigger.action.outText('ForEachClientInZone: MooseClient name is '..player_name , 5)
24
22
 
25
23
  local Play_SH_Sound = USERSOUND:New( soundFilesPrefix .. "AIRBOSS/Airboss Soundfiles/GreatBallsOfFire.ogg" )
26
- --trigger.action.outText(player_name..' altitude is '..player_alt, 5)
24
+ --trigger.action.outText(player_name..' altitude is '..player_alt_feet..' feet', 5)
27
25
  --trigger.action.outText(player_name..' speed is '..player_velocity, 5)
28
- if client_in_zone_flag == nil then
29
- client_in_zone_flag = USERFLAG:New(MooseClient:GetClientGroupID() + 10000000)
30
- else
31
- end
26
+ local client_in_zone_flag = USERFLAG:New(MooseClient:GetUCID())
27
+ local client_performing_sh = USERFLAG:New(MooseClient:GetUCID()..'_sh')
32
28
 
33
- if client_performing_sh == nil then
34
- client_performing_sh = USERFLAG:New(MooseClient:GetClientGroupID() + 100000000)
35
- else
36
- end
37
-
38
- if client_in_zone_flag:Get() == 0 and player_velocity > 475 and player_alt < 213 then
39
- -- Requirements for Shit Hot break are velocity >475 knots and less than 213 meters (700')
40
- --trigger.action.outText(player_name..' performing a Sierra Hotel Break!', 10)
41
- local sh_message_to_discord = ('**'..player_name..' is performing a Sierra Hotel Break at '..player_velocity_round..' knots and '..player_alt_feet..' feet!**')
29
+ if client_in_zone_flag:Get() == 0 and player_velocity > 475 and player_alt_feet < 700 then
30
+ -- Requirements for Shit Hot break are velocity >475 knots and less than 700 feet
31
+ trigger.action.outText(player_name..' performing a Sierra Hotel Break around ' .. objAirboss.customconfig.alias .. ' !', 10)
32
+ local sh_message_to_discord = ('**'..player_name..' is performing a Sierra Hotel Break at '..UTILS.Round(player_velocity, 0)..' knots and '..player_alt_feet..' feet!**')
42
33
  GemMan:SendTable({
43
34
  command="moose_text",
44
35
  text=sh_message_to_discord,
@@ -47,12 +38,12 @@ function detectShitHotBreak(objAirboss)
47
38
  Play_SH_Sound:ToAll()
48
39
  client_in_zone_flag:Set(1)
49
40
  client_performing_sh:Set(1)
50
- timer.scheduleFunction(resetFlag, {}, timer.getTime() + 10)
41
+ timer.scheduleFunction(resetFlag, {client_in_zone_flag}, timer.getTime() + 10)
51
42
  else
52
43
  end
53
44
 
54
- --trigger.action.outText('ForEachClientInZone: Client name is '..clientData.clientName , 5)
55
- --trigger.action.outText('ForEachClientInZone: Client fuel1 is '..clientData.clientFuel1 , 5)
45
+ --trigger.action.outText('ForEachClientInZone: Client name is '..player_name , 5)
46
+ --trigger.action.outText('ForEachClientInZone: Client fuel is '..player_fuel , 5)
56
47
 
57
48
  end
58
49
  )
@@ -68,7 +59,7 @@ function switchCarrierDefCon2(params)
68
59
  SCHEDULER:New(
69
60
  nil,
70
61
  function(carrierName)
71
- debug_squeduler_msg(carrierName .. " switchback to DEFCON 4")
62
+ debug_scheduler_msg(carrierName .. " switchback to DEFCON 4")
72
63
  debug_msg(string.format("CSG : %s DEFCON 4 -> ROE = %d", carrierName, ENUMS.ROE.ReturnFire))
73
64
  UNIT:FindByName(carrierName):GetGroup():OptionROE(ENUMS.ROE.ReturnFire):OptionAlarmStateRed()
74
65
  end,
@@ -343,25 +334,25 @@ for index, airbossconfig in ipairs(AirBossConfig) do
343
334
  local player_wire = playerData.wire
344
335
 
345
336
  player_name = player_name:gsub('[%p]', '')
346
- local client_performing_sh = USERFLAG:New(UNIT:FindByName(unit_name):GetClient():GetClientGroupID() + 100000000)
337
+ local client_performing_sh = USERFLAG:New(UNIT:FindByName(unit_name):GetClient():GetUCID()..'_sh')
347
338
  --local gradeForFile
348
339
  if string_grade == "_OK_" then
349
340
  --if string_grade == "_OK_" and player_wire == "3" and player_Tgroove >=15 and player_Tgroove <19 then
350
341
  timer.scheduleFunction(
351
342
  function()
352
- trigger.action.outSound("Airboss Soundfiles/ffyrtp.ogg")
343
+ trigger.action.outSound("AIRBOSS/Airboss Soundfiles/ffyrtp.ogg")
353
344
  end,
354
345
  {},
355
346
  timer.getTime() + 5
356
347
  )
357
348
  if client_performing_sh:Get() == 1 then
358
349
  myGrade.grade = "_OK_<SH>"
359
- myGrade.points = myGrade.points
350
+ myGrade.points = myGrade.points + 1.00
360
351
  client_performing_sh:Set(0)
361
352
  self:SetTrapSheet(self.trappath, "SH_unicorn_AIRBOSS-trapsheet-"..player_name)
362
353
  timer.scheduleFunction(
363
354
  function()
364
- trigger.action.outSound("Airboss Soundfiles/sureshot.ogg")
355
+ trigger.action.outSound("AIRBOSS/Airboss Soundfiles/sureshot.ogg")
365
356
  end,
366
357
  {},
367
358
  timer.getTime() + 5
@@ -373,7 +364,7 @@ for index, airbossconfig in ipairs(AirBossConfig) do
373
364
  elseif string_grade == "OK" and player_wire >1 then
374
365
  if client_performing_sh:Get() == 1 then
375
366
  myGrade.grade = "OK<SH>"
376
- myGrade.points = myGrade.points + 0.5
367
+ myGrade.points = myGrade.points + 1.00
377
368
  client_performing_sh:Set(0)
378
369
  self:SetTrapSheet(self.trappath, "SH_AIRBOSS-trapsheet-"..player_name)
379
370
  else
@@ -415,6 +406,13 @@ for index, airbossconfig in ipairs(AirBossConfig) do
415
406
  text=onewire_to_discord,
416
407
  msg_type='lso'
417
408
  })
409
+ timer.scheduleFunction(
410
+ function()
411
+ trigger.action.outSound("AIRBOSS/Airboss Soundfiles/GetYourButtsUptoVipersOffice.ogg")
412
+ end,
413
+ {},
414
+ timer.getTime() + 5
415
+ )
418
416
  end
419
417
  self:_SaveTrapSheet(playerData, myGrade)
420
418
 
@@ -546,12 +544,13 @@ for index, airbossconfig in ipairs(AirBossConfig) do
546
544
 
547
545
  AIRBOSSArray[compteur] = objAirboss
548
546
  AIRBOSSArray[compteur]:Start()
549
- AIRBOSSArray[compteur].CVN_GROUPZone = ZONE_GROUP:New(
550
- 'cvnGroupZone-'..AIRBOSSArray[compteur].customconfig.alias,
551
- AIRBOSSArray[compteur].carrier:GetGroup(),
547
+ AIRBOSSArray[compteur].CVN_UNITZone = ZONE_UNIT:New(
548
+ 'cvnUnitZone-'..AIRBOSSArray[compteur].customconfig.alias,
549
+ AIRBOSSArray[compteur].carrier,
552
550
  1111)
553
551
  AIRBOSSArray[compteur].CVNClients = SET_CLIENT:New()
554
- :FilterCoalitions(UTILS.GetCoalitionName(AIRBOSSArray[compteur].customconfig.coalition))
552
+ :FilterActive()
553
+ :FilterCoalitions(string.lower(UTILS.GetCoalitionName(objAirboss.customconfig.coalition)))
555
554
  :FilterStart()
556
555
  local myscheduler
557
556
  local myschedulerID
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jtff/miztemplate-lib",
3
- "version": "3.1.8",
3
+ "version": "3.1.9",
4
4
  "description": "JTFF mission template library",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -408,8 +408,8 @@ async function doInject(ciObject, sourceMizFileName, workspacePath,destinationMi
408
408
  // injection des CTLD dans la file d'attente
409
409
  if ((/^y\b|o\b|yes\b|oui\b/i).test(promptResult.inject_Logistics)) {
410
410
  // injection des fichiers son CTLD
411
- await ciObject.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'CTLD');
412
- await ciObject.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'CTLD', true);
411
+ await ciObject.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'CTLD CSAR');
412
+ await ciObject.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'CTLD CSAR', true);
413
413
  settingsArray.push(
414
414
  {
415
415
  file: "settings-logistics.lua",
File without changes