diff --git a/.metadata/.lock b/.metadata/.lock
new file mode 100644
index 0000000..e69de29
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
new file mode 100644
index 0000000..25cb955
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
new file mode 100644
index 0000000..6b2aaa7
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree b/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree
new file mode 100644
index 0000000..984bfda
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree differ
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
new file mode 100644
index 0000000..c6f84fb
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..dffc6b5
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+version=1
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs
new file mode 100644
index 0000000..98d8634
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\r\n\r\n
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.dltk.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.dltk.ui.prefs
new file mode 100644
index 0000000..238fe2b
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.dltk.ui.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+sourceHoverBackgroundColor=255,255,225
+sourceHoverBackgroundColor.SystemDefault=true
+useAnnotationsPrefPage=true
+useQuickDiffPrefPage=true
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
new file mode 100644
index 0000000..e6297f6
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
@@ -0,0 +1,5 @@
+PROBLEMS_FILTERS_MIGRATE=true
+eclipse.preferences.version=1
+platformState=1645898269583
+quickStart=false
+tipsAndTricks=true
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
new file mode 100644
index 0000000..08076f2
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+showIntro=false
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
new file mode 100644
index 0000000..699e6a2
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
@@ -0,0 +1,2 @@
+//org.eclipse.ui.commands/state/org.eclipse.ui.navigator.resources.nested.changeProjectPresentation/org.eclipse.ui.commands.radioState=false
+eclipse.preferences.version=1
diff --git a/.metadata/.plugins/org.eclipse.dltk.core/Containers.dat b/.metadata/.plugins/org.eclipse.dltk.core/Containers.dat
new file mode 100644
index 0000000..9c82273
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.dltk.core/Containers.dat differ
diff --git a/.metadata/.plugins/org.eclipse.dltk.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.dltk.ui/dialog_settings.xml
new file mode 100644
index 0000000..a7b2b49
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.dltk.ui/dialog_settings.xml
@@ -0,0 +1,10 @@
+
+
diff --git a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
new file mode 100644
index 0000000..7e6da53
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
@@ -0,0 +1,1396 @@
+
+
+
+ activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration
+ ModelMigrationProcessor.001
+
+
+
+
+
+
+
+ topLevel
+
+
+
+
+ persp.actionSet:org.eclipse.ui.cheatsheets.actionSet
+ persp.actionSet:org.eclipse.search.searchActionSet
+ persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation
+ persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation
+ persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo
+ persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet
+ persp.actionSet:org.eclipse.ui.actionSet.keyBindings
+ persp.actionSet:org.eclipse.ui.actionSet.openFiles
+ persp.newWizSC:org.eclipse.ui.wizards.new.folder
+ persp.newWizSC:org.eclipse.ui.wizards.new.file
+ persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer
+ persp.viewSC:org.eclipse.ui.views.BookmarkView
+ persp.viewSC:org.eclipse.ui.views.ContentOutline
+ persp.viewSC:org.eclipse.ui.views.PropertySheet
+ persp.viewSC:org.eclipse.ui.views.ProblemView
+ persp.viewSC:org.eclipse.ui.views.ProgressView
+ persp.viewSC:org.eclipse.ui.views.TaskList
+ persp.actionSet:org.eclipse.ui.NavigateActionSet
+ persp.newWizSC:org.eclipse.ldt.wizard
+ persp.newWizSC:org.eclipse.ldt.wizard.file
+ persp.newWizSC:org.eclipse.ldt.wizard.docfile
+ persp.perspSC:org.eclipse.debug.ui.DebugPerspective
+ persp.actionSet:org.eclipse.debug.ui.launchActionSet
+
+
+
+ active
+
+ View
+ categoryTag:Dynamic Languages
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:Lua
+
+
+
+
+
+
+
+ persp.actionSet:org.eclipse.ui.cheatsheets.actionSet
+ persp.actionSet:org.eclipse.search.searchActionSet
+ persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation
+ persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation
+ persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo
+ persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet
+ persp.actionSet:org.eclipse.ui.actionSet.keyBindings
+ persp.actionSet:org.eclipse.ui.actionSet.openFiles
+ persp.viewSC:org.eclipse.ui.views.ProgressView
+ persp.viewSC:org.eclipse.ui.texteditor.TemplatesView
+ persp.actionSet:org.eclipse.debug.ui.launchActionSet
+ persp.actionSet:org.eclipse.debug.ui.debugActionSet
+ persp.actionSet:org.eclipse.ui.NavigateActionSet
+ persp.viewSC:org.eclipse.debug.ui.DebugView
+ persp.viewSC:org.eclipse.debug.ui.VariableView
+ persp.viewSC:org.eclipse.debug.ui.BreakpointView
+ persp.viewSC:org.eclipse.debug.ui.ExpressionView
+ persp.viewSC:org.eclipse.ui.views.ContentOutline
+ persp.viewSC:org.eclipse.ui.console.ConsoleView
+ persp.viewSC:org.eclipse.ui.views.ProblemView
+ persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer
+ persp.actionSet:org.eclipse.debug.ui.breakpointActionSet
+ persp.viewSC:org.eclipse.pde.runtime.LogView
+ persp.actionSet:org.eclipse.dltk.debug.ui.ScriptDebugActionSet
+ persp.viewSC:org.eclipse.dltk.debug.ui.ScriptDisplayView
+
+
+ org.eclipse.e4.primaryNavigationStack
+
+ View
+ categoryTag:Debug
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:Dynamic Languages
+
+
+
+
+
+
+ org.eclipse.e4.secondaryNavigationStack
+
+ View
+ categoryTag:Debug
+
+
+ View
+ categoryTag:Debug
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:Debug
+
+
+ View
+ categoryTag:Dynamic Languages
+
+
+
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:Debug
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:General
+
+
+
+
+
+
+
+
+ View
+ categoryTag:Help
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:Help
+
+
+
+
+
+ org.eclipse.e4.primaryDataStack
+ EditorStack
+
+
+
+
+
+
+ View
+ categoryTag:Dynamic Languages
+ active
+ activeOnClose
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+
+ View
+ categoryTag:General
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+
+
+ View
+ categoryTag:General
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:Lua
+
+
+
+
+ View
+ categoryTag:Help
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:Help
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:Dynamic Languages
+
+
+
+ toolbarSeparator
+
+
+
+ Draggable
+
+
+
+ toolbarSeparator
+
+
+
+ Draggable
+
+
+ toolbarSeparator
+
+
+
+ Draggable
+
+
+ Draggable
+
+
+ Draggable
+
+
+ toolbarSeparator
+
+
+
+ Draggable
+
+
+
+ toolbarSeparator
+
+
+
+ toolbarSeparator
+
+
+
+ Draggable
+
+
+ stretch
+ SHOW_RESTORE_MENU
+
+
+ Draggable
+ HIDEABLE
+ SHOW_RESTORE_MENU
+
+
+
+
+ stretch
+
+
+ Draggable
+
+
+ Draggable
+
+
+
+
+
+
+
+
+
+ platform:win32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ platform:win32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Editor
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Dynamic Languages
+
+
+
+
+ View
+ categoryTag:Dynamic Languages
+
+
+
+
+ View
+ categoryTag:Dynamic Languages
+
+
+
+
+ View
+ categoryTag:Dynamic Languages
+
+
+
+
+ View
+ categoryTag:Dynamic Languages
+
+
+
+
+ View
+ categoryTag:Dynamic Languages
+
+
+
+
+ View
+ categoryTag:Help
+
+
+
+
+ View
+ categoryTag:Lua
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:Team
+
+
+
+
+ View
+ categoryTag:Team
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:Help
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+ glue
+ move_after:PerspectiveSpacer
+ SHOW_RESTORE_MENU
+
+
+ move_after:Spacer Glue
+ HIDEABLE
+ SHOW_RESTORE_MENU
+
+
+ glue
+ move_after:SearchField
+ SHOW_RESTORE_MENU
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml
new file mode 100644
index 0000000..5ca0b77
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml
@@ -0,0 +1,3 @@
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
new file mode 100644
index 0000000..851c296
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
@@ -0,0 +1,15 @@
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
new file mode 100644
index 0000000..0c59452
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.metadata/version.ini b/.metadata/version.ini
new file mode 100644
index 0000000..55b108f
--- /dev/null
+++ b/.metadata/version.ini
@@ -0,0 +1,3 @@
+#Sat Nov 16 11:11:18 CST 2024
+org.eclipse.core.runtime=2
+org.eclipse.platform=4.8.0.v20180308-0630
diff --git a/DCS_Afgainistan/Insurgent_Sandstorm/F99th-Insurgent_Sandstorm_1.0.6.miz b/DCS_Afgainistan/Insurgent_Sandstorm/F99th-Insurgent_Sandstorm_1.0.6.miz
index cf48cba..5466cb8 100644
Binary files a/DCS_Afgainistan/Insurgent_Sandstorm/F99th-Insurgent_Sandstorm_1.0.6.miz and b/DCS_Afgainistan/Insurgent_Sandstorm/F99th-Insurgent_Sandstorm_1.0.6.miz differ
diff --git a/DCS_Afgainistan/Insurgent_Sandstorm/F99th-Insurgent_Sandstorm_1.0.8.miz b/DCS_Afgainistan/Insurgent_Sandstorm/F99th-Insurgent_Sandstorm_1.0.8.miz
new file mode 100644
index 0000000..fb814a5
Binary files /dev/null and b/DCS_Afgainistan/Insurgent_Sandstorm/F99th-Insurgent_Sandstorm_1.0.8.miz differ
diff --git a/DCS_Afgainistan/Insurgent_Sandstorm/F99th-Insurgent_Sandstorm_1.0.9.miz b/DCS_Afgainistan/Insurgent_Sandstorm/F99th-Insurgent_Sandstorm_1.0.9.miz
new file mode 100644
index 0000000..14d4af1
Binary files /dev/null and b/DCS_Afgainistan/Insurgent_Sandstorm/F99th-Insurgent_Sandstorm_1.0.9.miz differ
diff --git a/DCS_Afgainistan/Insurgent_Sandstorm/Moose_CTLD.lua b/DCS_Afgainistan/Insurgent_Sandstorm/Moose_CTLD.lua
index b1ff22b..8fa3334 100644
--- a/DCS_Afgainistan/Insurgent_Sandstorm/Moose_CTLD.lua
+++ b/DCS_Afgainistan/Insurgent_Sandstorm/Moose_CTLD.lua
@@ -25,7 +25,7 @@ red_ctld.hoverautoloading = true -- Crates in CrateDistance in a LOAD zone will
red_ctld.smokedistance = 10000 -- Smoke or flares can be request for zones this far away (in meters).
red_ctld.movetroopstowpzone = true -- Troops and vehicles will move to the nearest MOVE zone...
red_ctld.movetroopsdistance = 5000 -- .. but only if this far away (in meters)
-red_ctld.suppressmessages = true -- Set to true if you want to script your own messages.
+red_ctld.suppressmessages = false -- Set to true if you want to script your own messages.
red_ctld.repairtime = 300 -- Number of seconds it takes to repair a unit.
red_ctld.buildtime = 300 -- Number of seconds it takes to build a unit. Set to zero or nil to build instantly.
red_ctld.cratecountry = country.id.GERMANY -- ID of crates. Will default to country.id.RUSSIA for RED coalition setups.
@@ -63,7 +63,7 @@ blue_ctld.hoverautoloading = true -- Crates in CrateDistance in a LOAD zone will
blue_ctld.smokedistance = 10000 -- Smoke or flares can be request for zones this far away (in meters).
blue_ctld.movetroopstowpzone = true -- Troops and vehicles will move to the nearest MOVE zone...
blue_ctld.movetroopsdistance = 5000 -- .. but only if this far away (in meters)
-blue_ctld.suppressmessages = true -- Set to true if you want to script your own messages.
+blue_ctld.suppressmessages = false -- Set to true if you want to script your own messages.
blue_ctld.repairtime = 300 -- Number of seconds it takes to repair a unit.
blue_ctld.buildtime = 300 -- Number of seconds it takes to build a unit. Set to zero or nil to build instantly.
blue_ctld.cratecountry = country.id.GERMANY -- ID of crates. Will default to country.id.RUSSIA for RED coalition setups.
@@ -114,8 +114,8 @@ blue_ctld.EngineerSearch = 2000 -- Search radius for engineers.
--]]
-- Custom Capabilities
-blue_ctld:SetUnitCapabilities("UH-1H", true, true, 1, 10, 15, 4000)
-red_ctld:SetUnitCapabilities("UH-1H", true, true, 1, 10, 15, 4000)
+blue_ctld:SetUnitCapabilities("UH-1H", true, true, 1, 10, 15, 6000)
+red_ctld:SetUnitCapabilities("UH-1H", true, true, 1, 10, 15, 6000)
diff --git a/DCS_Afgainistan/Insurgent_Sandstorm/Moose_InsurgentSandstorm.lua b/DCS_Afgainistan/Insurgent_Sandstorm/Moose_InsurgentSandstorm.lua
index f81fb0a..dfd5846 100644
--- a/DCS_Afgainistan/Insurgent_Sandstorm/Moose_InsurgentSandstorm.lua
+++ b/DCS_Afgainistan/Insurgent_Sandstorm/Moose_InsurgentSandstorm.lua
@@ -1,6 +1,7 @@
+local TAC_DISPLAY = true -- Set to false to disable Tacview display for AI flights (default = false)
- --Build Command Center and Mission for Blue
+--Build Command Center and Mission for Blue
US_CC = COMMANDCENTER:New( GROUP:FindByName( "BLUEHQ" ), "USA HQ" )
US_Mission = MISSION:New( US_CC, "Insurgent Sandstorm", "Primary", "Clear the front lines of enemy activity.", coalition.side.BLUE)
US_Score = SCORING:New( "Insurgent Sandstorm - Blue" )
@@ -22,8 +23,8 @@ RU_Score:SetMessagesScore(false)
-- How many red/blue aircraft are in the air by default.
-local RedA2ADefaultOverhead = 2
-local BlueA2ADefaultOverhead = 2
+local RedA2ADefaultOverhead = 1.5
+local BlueA2ADefaultOverhead = 1
PlayerClients = SET_PLAYER:New():FilterStart()
@@ -92,37 +93,28 @@ local RED_AA_ZONES = {
}
-
+--[[]
-- Schedule RED AA spawns using the calculated frequencies
-RED_SA08 = SPAWN:New("SA08")
+RED_SA08 = SPAWN:New("RED EWR SA08")
:InitRandomizeZones(RED_AA_ZONES)
:InitLimit(5, 5)
:SpawnScheduled(1, 0.5)
-- There are 18 units in this group. Need space for each one in the numbers. So if I want 3 SA10s i'm just rounding up to 60.
-RED_SA10 = SPAWN:New("RED-AA-SA10-1")
+RED_SA10 = SPAWN:New("RED EWR AA-SA10-1")
:InitRandomizeZones(RED_AA_ZONES)
:InitLimit(60, 60)
:SpawnScheduled(1, 0.5)
-- There are 12 units in this group. Need space for each one in the numbers. So if I want 4 SA11s i'm just rounding up to 48
-RED_SA11 = SPAWN:New("RED-AA-SA112-1")
+RED_SA11 = SPAWN:New("RED EWR AA SA112-1")
:InitRandomizeZones(RED_AA_ZONES)
:InitLimit(48, 48)
:SpawnScheduled(1, 0.5)
-- Setup AI A2A Dispatchers
--Red
-
-CCCPBorderZone = ZONE_POLYGON:New( "RED BORDER", GROUP:FindByName( "RED BORDER" ) )
-RedA2ADispatcher = AI_A2A_GCICAP:New( { "RED EWR" }, { "FIGHTER SWEEP RED" }, { "RED BORDER" }, CCCPBorderZone )
-RedA2ADispatcher:SetDefaultLandingAtEngineShutdown()
-RedA2ADispatcher:SetDefaultTakeoffFromParkingHot()
-RedA2ADispatcher:SetBorderZone( CCCPBorderZone )
-RedA2ADispatcher:SetTacticalDisplay(false)
-RedA2ADispatcher:SetDefaultFuelThreshold( 0.20 )
-RedA2ADispatcher:SetRefreshTimeInterval( 300 )
-RedA2ADispatcher:SetDefaultOverhead(RedA2ADefaultOverhead)
+--]]
--Blue
BLUEBorderZone = ZONE_POLYGON:New( "BLUE BORDER", GROUP:FindByName( "BLUE BORDER" ) )
@@ -130,33 +122,47 @@ BLUEA2ADispatcher = AI_A2A_GCICAP:New( { "BLUE EWR" }, { "FIGHTER SWEEP BLUE" },
BLUEA2ADispatcher:SetDefaultLandingAtEngineShutdown()
BLUEA2ADispatcher:SetDefaultTakeoffFromParkingHot()
BLUEA2ADispatcher:SetBorderZone( BLUEBorderZone )
-BLUEA2ADispatcher:SetTacticalDisplay(false)
+BLUEA2ADispatcher:SetTacticalDisplay(TAC_DISPLAY)
BLUEA2ADispatcher:SetDefaultFuelThreshold( 0.20 )
BLUEA2ADispatcher:SetRefreshTimeInterval( 300 )
BLUEA2ADispatcher:SetDefaultOverhead(BlueA2ADefaultOverhead)
---Red
-DwyerBorderZone = ZONE_POLYGON:New( "DwyerBorderZone", GROUP:FindByName( "DwyerBorderZone" ) )
-DwyerBorderZone = AI_A2A_GCICAP:New( { "RED EWR" }, { "DwyerBorderCAP" }, { "DwyerBorderZone" }, DwyerBorderZone )
-DwyerBorderZone:SetDefaultLandingAtEngineShutdown()
-DwyerBorderZone:SetDefaultTakeoffFromParkingHot()
-DwyerBorderZone:SetBorderZone( BLUEBorderZone )
-DwyerBorderZone:SetTacticalDisplay(false)
-DwyerBorderZone:SetDefaultFuelThreshold( 0.20 )
-DwyerBorderZone:SetRefreshTimeInterval( 300 )
-DwyerBorderZone:SetDefaultOverhead(BlueA2ADefaultOverhead)
+CCCPBorderZone = ZONE_POLYGON:New( "RED BORDER", GROUP:FindByName( "RED BORDER" ) )
+RedA2ADispatcher = AI_A2A_GCICAP:New( { "RED EWR" }, { "FIGHTER SWEEP RED" }, { "RED BORDER" }, CCCPBorderZone )
+RedA2ADispatcher:SetDefaultLandingAtEngineShutdown()
+RedA2ADispatcher:SetDefaultTakeoffFromParkingHot()
+RedA2ADispatcher:SetBorderZone( CCCPBorderZone )
+RedA2ADispatcher:SetTacticalDisplay(TAC_DISPLAY)
+RedA2ADispatcher:SetDefaultFuelThreshold( 0.20 )
+RedA2ADispatcher:SetRefreshTimeInterval( 300 )
+RedA2ADispatcher:SetDefaultOverhead(RedA2ADefaultOverhead)
+
+
+DwyerBorderZone = ZONE_POLYGON:New( "DwyerBorderZone", GROUP:FindByName( "DwyerBorderZone" ) )
+DwyerDispatcher = AI_A2A_GCICAP:New( { "RED EWR" }, { "DwyerBorderCAP" }, { "DwyerBorderZone" }, DwyerBorderZone )
+DwyerDispatcher:SetDefaultLandingAtEngineShutdown()
+DwyerDispatcher:SetDefaultTakeoffFromParkingHot()
+DwyerDispatcher:SetBorderZone( DwyerBorderZone )
+DwyerDispatcher:SetTacticalDisplay(TAC_DISPLAY)
+DwyerDispatcher:SetDefaultFuelThreshold( 0.20 )
+DwyerDispatcher:SetRefreshTimeInterval( 300 )
+DwyerDispatcher:SetDefaultOverhead(BlueA2ADefaultOverhead)
+
---Red
BostZone = ZONE_POLYGON:New( "BostBorderZone", GROUP:FindByName( "BostBorderZone" ) )
-BostZone = AI_A2A_GCICAP:New( { "RED EWR" }, { "BostBorderCAP" }, { "BostBorderZone" }, BostBorderZone )
-BostZone:SetDefaultLandingAtEngineShutdown()
-BostZone:SetDefaultTakeoffFromParkingHot()
-BostZone:SetBorderZone( BLUEBorderZone )
-BostZone:SetTacticalDisplay(false)
-BostZone:SetDefaultFuelThreshold( 0.20 )
-BostZone:SetRefreshTimeInterval( 300 )
-BostZone:SetDefaultOverhead(BlueA2ADefaultOverhead)
+BostDispatcher = AI_A2A_GCICAP:New( { "RED EWR" }, { "BostBorderCAP" }, { "BostBorderZone" }, BostZone )
+BostDispatcher:SetDefaultLandingAtEngineShutdown()
+BostDispatcher:SetDefaultTakeoffFromParkingHot()
+BostDispatcher:SetBorderZone(BostZone)
+BostDispatcher:SetTacticalDisplay(TAC_DISPLAY)
+BostDispatcher:SetDefaultFuelThreshold( 0.20 )
+BostDispatcher:SetRefreshTimeInterval( 300 )
+BostDispatcher:SetDefaultOverhead(BlueA2ADefaultOverhead)
+
+
Blue_Drone = SPAWN:New("BLUE DRONE")
:InitLimit(1, 25)
:SpawnScheduled(600, 0.5)
+
+
diff --git a/DCS_Afgainistan/Insurgent_Sandstorm/Moose_InsurgentSandstorm_Awacs.lua b/DCS_Afgainistan/Insurgent_Sandstorm/Moose_InsurgentSandstorm_Awacs.lua
index 5037fed..d28719f 100644
--- a/DCS_Afgainistan/Insurgent_Sandstorm/Moose_InsurgentSandstorm_Awacs.lua
+++ b/DCS_Afgainistan/Insurgent_Sandstorm/Moose_InsurgentSandstorm_Awacs.lua
@@ -1,109 +1,73 @@
--- Debugging flag
-local DEBUG = true
+-- Define the event handler class for Red AWACS
+RedAwacsEventHandler = EVENTHANDLER:New()
--- Define AWACS and its escorts
-local awacsGroupName = "BLUE EWR AWACS"
-local escortGroup1Name = "BlueAWACS_Escort_Group1"
-
--- Configuration parameters
-local patrolAltMin = 5000
-local patrolAltMax = 8000
-local escortFollowDistance = 1000
-local respawnCheckInterval = 10
-local maxEscortSpawns = 10 -- maximum number of escort spawns - might take this out.
-
--- Function to print debug messages if DEBUG is enabled
-local function DebugMessage(message)
- if DEBUG and message then
- env.info("[AWACS DEBUG] " .. tostring(message))
- end
+-- Handle the Birth event for Red AWACS
+function RedAwacsEventHandler:OnEventBirth(EventData)
+ if EventData.IniDCSGroupName == "RED EWR AWACS" then
+ MESSAGE:New("AWACS has spawned!", 15):ToRed()
+
+ end
end
--- Function to send a message to all players
-local function Announce(message, soundFile)
- if message then
- MESSAGE:New(message, 15):ToAll()
- end
- if soundFile then
- --local sound = SOUND:New(soundFile)
- --sound:ToAll()
- end
+-- Handle the Dead event for Red AWACS
+function RedAwacsEventHandler:OnEventDead(EventData)
+ if EventData.IniDCSGroupName == "RED EWR AWACS" then
+ MESSAGE:New("AWACS has been destroyed!", 15):ToRed()
+
+ end
end
--- Define the patrol zone
-local patrolZone = ZONE:New("AWACS_PatrolZone")
-if patrolZone then
- DebugMessage("Patrol zone created: " .. patrolZone:GetName())
-else
- DebugMessage("ERROR: Patrol zone 'AWACS_PatrolZone' not found. Check the mission editor.")
- return -- Exit if the patrol zone is not defined
+-- Handle the Hit event for Red AWACS
+function RedAwacsEventHandler:OnEventHit(EventData)
+ if EventData.IniDCSGroupName == "RED EWR AWACS" then
+ MESSAGE:New("AWACS is under attack!", 15):ToRed()
+
+ end
end
+-- Create the Red AWACS spawn object
+Red_Awacs = SPAWN:New("RED EWR AWACS")
+ :InitLimit(1, 99)
+ :SpawnScheduled(300, 0.5)
+-- Add the event handler to the Red AWACS group
+RedAwacsEventHandler:HandleEvent(EVENTS.Birth)
+RedAwacsEventHandler:HandleEvent(EVENTS.Dead)
+RedAwacsEventHandler:HandleEvent(EVENTS.Hit)
--- Define the AWACS spawn
-local awacsSpawn = SPAWN:New(awacsGroupName):InitLimit(1, 0)
+-- Define the event handler class for Blue AWACS
+BlueAwacsEventHandler = EVENTHANDLER:New()
--- Function to spawn and attach escorts to AWACS
-function spawnEscort(escortGroupName, awacsGroup)
- if not escortGroupName or not awacsGroup then
- DebugMessage("ERROR: Invalid escort group name or AWACS group.")
- return
- end
-
- DebugMessage("Spawning escort: " .. escortGroupName)
- Announce("Spawning escort for AWACS.", "escort_spawn.ogg")
-
- local escortSpawn = SPAWN:New(escortGroupName):InitLimit(1, maxEscortSpawns)
-
- escortSpawn:OnSpawnGroup(function(escortGroup)
- if not escortGroup then
- DebugMessage("ERROR: Escort group failed to spawn.")
- return
- end
-
- DebugMessage("Escort spawned: " .. escortGroup:GetName())
-
- -- Set the escort group to follow the AWACS
- SCHEDULER:New(nil, function()
- if awacsGroup:IsAlive() and escortGroup:IsAlive() then
- escortGroup:TaskFollow(awacsGroup, escortFollowDistance)
- DebugMessage("Escort assigned to follow AWACS.")
- else
- DebugMessage("AWACS or escort is not alive.")
- end
- end, {}, 3, respawnCheckInterval)
- end):Spawn()
+-- Handle the Birth event for Blue AWACS
+function BlueAwacsEventHandler:OnEventBirth(EventData)
+ if EventData.IniDCSGroupName == "BLUE EWR AWACS" then
+ MESSAGE:New("AWACS has spawned!", 15):ToBlue()
+
+ end
end
--- Start AWACS in a patrol pattern within the patrol zone
-awacsSpawn:InitRepeatOnEngineShutDown()
- :OnSpawnGroup(function(awacsGroup)
- if not awacsGroup then
- DebugMessage("ERROR: AWACS group failed to spawn.")
- return
- end
+-- Handle the Dead event for Blue AWACS
+function BlueAwacsEventHandler:OnEventDead(EventData)
+ if EventData.IniDCSGroupName == "BLUE EWR AWACS" then
+ MESSAGE:New("AWACS has been destroyed!", 15):ToBlue()
+
+ end
+end
- DebugMessage("AWACS spawned: " .. awacsGroup:GetName())
- Announce("AWACS is now airborne and patrolling.", "awacs_spawn.ogg")
+-- Handle the Hit event for Blue AWACS
+function BlueAwacsEventHandler:OnEventHit(EventData)
+ if EventData.IniDCSGroupName == "BLUE EWR AWACS" then
+ MESSAGE:New("AWACS is under attack!", 15):ToBlue()
+
+ end
+end
- -- Create a patrol task for the AWACS in the defined zone
- local patrolTask = AI_PATROL_ZONE:New(patrolZone, patrolAltMin, patrolAltMax)
- patrolTask:SetControllable(awacsGroup)
- patrolTask:__Start(1)
- DebugMessage("Patrol task assigned to AWACS.")
+-- Create the Blue AWACS spawn object
+Blue_Awacs = SPAWN:New("BLUE EWR AWACS")
+ :InitLimit(1, 99)
+ :SpawnScheduled(300, 0.5)
- -- Spawn and manage escorts
- spawnEscort(escortGroup1Name, awacsGroup)
- end)
- :Spawn()
-
--- Create a scheduled task to check if AWACS is alive and respawn if destroyed
-SCHEDULER:New(nil, function()
- local awacsGroup = awacsSpawn:GetLastAliveGroup()
- if not awacsGroup or not awacsGroup:IsAlive() then
- DebugMessage("AWACS destroyed. Respawning...")
- Announce("AWACS has been destroyed! Respawning...", "awacs_destroyed.ogg")
- awacsSpawn:Spawn()
- end
-end, {}, 0, respawnCheckInterval)
+-- Add the event handler to the Blue AWACS group
+BlueAwacsEventHandler:HandleEvent(EVENTS.Birth)
+BlueAwacsEventHandler:HandleEvent(EVENTS.Dead)
+BlueAwacsEventHandler:HandleEvent(EVENTS.Hit)
\ No newline at end of file
diff --git a/DCS_Afgainistan/Insurgent_Sandstorm/Moose_Tanker.lua b/DCS_Afgainistan/Insurgent_Sandstorm/Moose_Tanker.lua
new file mode 100644
index 0000000..1d72917
--- /dev/null
+++ b/DCS_Afgainistan/Insurgent_Sandstorm/Moose_Tanker.lua
@@ -0,0 +1,55 @@
+-- Define the event handler class for Blue TANKER
+BlueTankerEventHandler = EVENTHANDLER:New()
+
+-- Handle the Birth event for Blue TANKER
+function BlueTankerEventHandler:OnEventBirth(EventData)
+ if EventData.IniDCSGroupName == "TANKER 135" then
+ MESSAGE:New("TANKER has spawned!", 15):ToBlue()
+ elseif EventData.IniDCSGroupName == "TANKER 135 MPRS" then
+ MESSAGE:New("TANKER 135 MPRS has spawned!", 15):ToBlue()
+ end
+end
+
+-- Handle the Dead event for Blue TANKER
+function BlueTankerEventHandler:OnEventDead(EventData)
+ if EventData.IniDCSGroupName == "TANKER 135" then
+ MESSAGE:New("TANKER has been destroyed!", 15):ToBlue()
+ elseif EventData.IniDCSGroupName == "TANKER 135 MPRS" then
+ MESSAGE:New("TANKER 135 MPRS has been destroyed!", 15):ToBlue()
+ end
+end
+
+-- Handle the Hit event for Blue TANKER
+function BlueTankerEventHandler:OnEventHit(EventData)
+ if EventData.IniDCSGroupName == "TANKER 135" then
+ MESSAGE:New("TANKER is under attack!", 15):ToBlue()
+ elseif EventData.IniDCSGroupName == "TANKER 135 MPRS" then
+ MESSAGE:New("TANKER 135 MPRS is under attack!", 15):ToBlue()
+ end
+end
+
+-- Create the Blue TANKER spawn objects
+Blue_Tanker = SPAWN:New("TANKER 135")
+ :InitLimit(1, 99)
+
+Blue_Tanker_MPRS = SPAWN:New("TANKER 135 MPRS")
+ :InitLimit(1, 99)
+
+-- Function to spawn the tankers
+function SpawnTanker()
+ Blue_Tanker:Spawn()
+end
+
+function SpawnTankerMPRS()
+ Blue_Tanker_MPRS:Spawn()
+end
+
+-- Create a mission menu for requesting the tankers
+MenuCoalitionBlue = MENU_COALITION:New(coalition.side.BLUE, "Request TANKER")
+MenuCoalitionBlueTanker = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Launch TANKER 135", MenuCoalitionBlue, SpawnTanker)
+MenuCoalitionBlueTankerMPRS = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Launch TANKER 135 MPRS", MenuCoalitionBlue, SpawnTankerMPRS)
+
+-- Add the event handler to the Blue TANKER group
+BlueTankerEventHandler:HandleEvent(EVENTS.Birth)
+BlueTankerEventHandler:HandleEvent(EVENTS.Dead)
+BlueTankerEventHandler:HandleEvent(EVENTS.Hit)
\ No newline at end of file