Operation Thunderbolt 1.0.0

This commit is contained in:
iTracerFacer 2025-11-28 15:27:54 -06:00
parent 88be6d1b42
commit 027e5370b2
6 changed files with 10131 additions and 31 deletions

File diff suppressed because it is too large Load Diff

View File

@ -100,8 +100,8 @@ local INIT_RED_INFANTRY = 15 -- Initial number of Red Infantry groups
local MAX_RED_INFANTRY = 100 -- Maximum number of Red Infantry groups
local SPAWN_SCHED_RED_INFANTRY = 1200 -- Base spawn frequency for Red Infantry (seconds)
local INIT_RED_ARMOR = 30 -- Initial number of Red Armor groups
local MAX_RED_ARMOR = 500 -- Maximum number of Red Armor groups
local INIT_RED_ARMOR = 25 -- Initial number of Red Armor groups
local MAX_RED_ARMOR = 100 -- Maximum number of Red Armor groups
local SPAWN_SCHED_RED_ARMOR = 200 -- Base spawn frequency for Red Armor (seconds)
-- Blue Side Settings
@ -109,8 +109,8 @@ local INIT_BLUE_INFANTRY = 15 -- Initial number of Blue Infantry group
local MAX_BLUE_INFANTRY = 100 -- Maximum number of Blue Infantry groups
local SPAWN_SCHED_BLUE_INFANTRY = 1200 -- Base spawn frequency for Blue Infantry (seconds)
local INIT_BLUE_ARMOR = 30 -- Initial number of Blue Armor groups
local MAX_BLUE_ARMOR = 500 -- Maximum number of Blue Armor groups
local INIT_BLUE_ARMOR = 25 -- Initial number of Blue Armor groups
local MAX_BLUE_ARMOR = 100 -- Maximum number of Blue Armor groups
local SPAWN_SCHED_BLUE_ARMOR = 200 -- Base spawn frequency for Blue Armor (seconds)
local ASSIGN_TASKS_SCHED = 900 -- How often to reassign tasks to idle groups (seconds)
@ -133,7 +133,7 @@ local BLUE_ARMOR_SPAWN_GROUP = "BlueArmorGroup"
-- AI Tasking Behavior
-- Note: DCS engine can crash with "CREATING PATH MAKES TOO LONG" if units try to path too far
-- Keep these values conservative to reduce pathfinding load and avoid server crashes
local MAX_ATTACK_DISTANCE = 22000 -- Maximum distance in meters for attacking enemy zones. Units won't attack zones farther than this. (25km ≈ 13.5nm)
local MAX_ATTACK_DISTANCE = 45000 -- Maximum distance in meters for attacking enemy zones. Units won't attack zones farther than this. (25km ≈ 13.5nm)
local ATTACK_RETRY_COOLDOWN = 1800 -- Seconds a group will wait before re-attempting an attack if no valid enemy zone was found (30 minutes)
-- Define warehouses for each side
@ -144,7 +144,6 @@ local redWarehouses = {
STATIC:FindByName("RedWarehouse4-1"),
STATIC:FindByName("RedWarehouse5-1"),
STATIC:FindByName("RedWarehouse6-1"),
STATIC:FindByName("RedWarehouse7-1"),
}
local blueWarehouses = {
@ -158,38 +157,33 @@ local blueWarehouses = {
-- Define unit templates (these groups must exist in mission editor as LATE ACTIVATE)
local redInfantryTemplates = {
"RedInfantry1",
"RedInfantry2",
"RedInfantry3",
"RedInfantry4",
"RedInfantry5",
"RedInfantry6"
"German Infantry Squad-1",
"German Infantry Squad-2",
"German Infantry Squad-3",
"German Infantry Squad-4",
}
local redArmorTemplates = {
"RedArmor1",
"RedArmor2",
"RedArmor3",
"RedArmor4",
"RedArmor5",
"RedArmor6"
"German Panzer Division-1",
"German Panzer Division-2",
"German Panzer Division-3",
"German Panzer Division-4",
"German Panzer Division-5",
"German Panzer Division-6"
}
local blueInfantryTemplates = {
"BlueInfantry1",
"BlueInfantry2",
"BlueInfantry3",
"BlueInfantry4",
"BlueInfantry5",
"BlueInfantry6"
"US Infantry Squad-1",
}
local blueArmorTemplates = {
"BlueArmor1",
"BlueArmor2",
"BlueArmor3",
"BlueArmor4",
"BlueArmor5"
"British Infantry Division-1",
"British Infantry Division-2",
"British Infantry Division-3",
"British Infantry Division-4",
"British Infantry Division-5",
"British Infantry Division-6"
}

View File

@ -110,7 +110,7 @@ RED_SQUADRON_CONFIG = {
templateName = "Bernay Saint Martin FW190D9", -- Change to your RED template name
displayName = "Bernay Saint Martin FW190D9", -- Change to your preferred name
airbaseName = "Bernay Saint Martin", -- Change to your RED airbase
aircraft = 12, -- Adjust aircraft count
aircraft = 30, -- Adjust aircraft count
skill = AI.Skill.ACE, -- AVERAGE, GOOD, HIGH, EXCELLENT
altitude = 20000, -- Patrol altitude (feet)
speed = 350, -- Patrol speed (knots)
@ -138,7 +138,7 @@ RED_SQUADRON_CONFIG = {
templateName = "Bernay Saint Martin FW190A8", -- Change to your RED template name
displayName = "Bernay Saint Martin FW190A8", -- Change to your preferred name
airbaseName = "Bernay Saint Martin", -- Change to your RED airbase
aircraft = 14, -- Adjust aircraft count
aircraft = 26, -- Adjust aircraft count
skill = AI.Skill.ACE, -- AVERAGE, GOOD, HIGH, EXCELLENT
altitude = 20000, -- Patrol altitude (feet)
speed = 350, -- Patrol speed (knots)
@ -161,6 +161,141 @@ RED_SQUADRON_CONFIG = {
ignoreLowPriority = false, -- Ignore threats below threshold in secondary zones
}
},
{
templateName = "Ronai BF109", -- Change to your RED template name
displayName = "Ronai BF109", -- Change to your preferred name
airbaseName = "Ronai", -- Change to your RED airbase
aircraft = 25, -- Adjust aircraft count
skill = AI.Skill.ACE, -- AVERAGE, GOOD, HIGH, EXCELLENT
altitude = 20000, -- Patrol altitude (feet)
speed = 300, -- Patrol speed (knots)
patrolTime = 25, -- Time on station (minutes)
type = "FIGHTER",
-- Zone-based Areas of Responsibility (optional - leave nil for global response)
primaryZone = "BATTLEGROUND", -- Main responsibility area (zone name from mission editor)
secondaryZone = "CHANNEL", -- Secondary coverage area (zone name)
tertiaryZone = nil, -- Emergency/fallback zone (zone name)
-- Zone behavior settings (optional - uses defaults if not specified)
zoneConfig = {
primaryResponse = 1.0, -- Intercept ratio multiplier in primary zone
secondaryResponse = 0.6, -- Intercept ratio multiplier in secondary zone
tertiaryResponse = 1.4, -- Intercept ratio multiplier in tertiary zone
maxRange = 200, -- Maximum engagement range from airbase (nm)
enableFallback = false, -- Auto-switch to tertiary when base threatened
priorityThreshold = 4, -- Min aircraft count for "major threat"
ignoreLowPriority = false, -- Ignore threats below threshold in secondary zones
}
},
{
templateName = "Ronai FW190A8", -- Change to your RED template name
displayName = "Ronai FW190A8", -- Change to your preferred name
airbaseName = "Ronai", -- Change to your RED airbase
aircraft = 35, -- Adjust aircraft count
skill = AI.Skill.ACE, -- AVERAGE, GOOD, HIGH, EXCELLENT
altitude = 20000, -- Patrol altitude (feet)
speed = 300, -- Patrol speed (knots)
patrolTime = 25, -- Time on station (minutes)
type = "FIGHTER",
-- Zone-based Areas of Responsibility (optional - leave nil for global response)
primaryZone = "BATTLEGROUND", -- Main responsibility area (zone name from mission editor)
secondaryZone = "CHANNEL", -- Secondary coverage area (zone name)
tertiaryZone = nil, -- Emergency/fallback zone (zone name)
-- Zone behavior settings (optional - uses defaults if not specified)
zoneConfig = {
primaryResponse = 1.0, -- Intercept ratio multiplier in primary zone
secondaryResponse = 0.6, -- Intercept ratio multiplier in secondary zone
tertiaryResponse = 1.4, -- Intercept ratio multiplier in tertiary zone
maxRange = 200, -- Maximum engagement range from airbase (nm)
enableFallback = false, -- Auto-switch to tertiary when base threatened
priorityThreshold = 4, -- Min aircraft count for "major threat"
ignoreLowPriority = false, -- Ignore threats below threshold in secondary zones
}
},
{
templateName = "Lessay BF109", -- Change to your RED template name
displayName = "Lessay BF109", -- Change to your preferred name
airbaseName = "Lessay", -- Change to your RED airbase
aircraft = 26, -- Adjust aircraft count
skill = AI.Skill.ACE, -- AVERAGE, GOOD, HIGH, EXCELLENT
altitude = 20000, -- Patrol altitude (feet)
speed = 300, -- Patrol speed (knots)
patrolTime = 25, -- Time on station (minutes)
type = "FIGHTER",
-- Zone-based Areas of Responsibility (optional - leave nil for global response)
primaryZone = "BATTLEGROUND", -- Main responsibility area (zone name from mission editor)
secondaryZone = "CHANNEL", -- Secondary coverage area (zone name)
tertiaryZone = nil, -- Emergency/fallback zone (zone name)
-- Zone behavior settings (optional - uses defaults if not specified)
zoneConfig = {
primaryResponse = 1.0, -- Intercept ratio multiplier in primary zone
secondaryResponse = 0.6, -- Intercept ratio multiplier in secondary zone
tertiaryResponse = 1.4, -- Intercept ratio multiplier in tertiary zone
maxRange = 200, -- Maximum engagement range from airbase (nm)
enableFallback = false, -- Auto-switch to tertiary when base threatened
priorityThreshold = 4, -- Min aircraft count for "major threat"
ignoreLowPriority = false, -- Ignore threats below threshold in secondary zones
}
},
{
templateName = "Lessay FW190D9", -- Change to your RED template name
displayName = "Lessay FW190D9", -- Change to your preferred name
airbaseName = "Lessay", -- Change to your RED airbase
aircraft = 30, -- Adjust aircraft count
skill = AI.Skill.ACE, -- AVERAGE, GOOD, HIGH, EXCELLENT
altitude = 20000, -- Patrol altitude (feet)
speed = 300, -- Patrol speed (knots)
patrolTime = 25, -- Time on station (minutes)
type = "FIGHTER",
-- Zone-based Areas of Responsibility (optional - leave nil for global response)
primaryZone = "BATTLEGROUND", -- Main responsibility area (zone name from mission editor)
secondaryZone = "CHANNEL", -- Secondary coverage area (zone name)
tertiaryZone = nil, -- Emergency/fallback zone (zone name)
-- Zone behavior settings (optional - uses defaults if not specified)
zoneConfig = {
primaryResponse = 1.0, -- Intercept ratio multiplier in primary zone
secondaryResponse = 0.6, -- Intercept ratio multiplier in secondary zone
tertiaryResponse = 1.4, -- Intercept ratio multiplier in tertiary zone
maxRange = 200, -- Maximum engagement range from airbase (nm)
enableFallback = false, -- Auto-switch to tertiary when base threatened
priorityThreshold = 4, -- Min aircraft count for "major threat"
ignoreLowPriority = false, -- Ignore threats below threshold in secondary zones
}
},
{
templateName = "Fecamp-Benouville BF109", -- Change to your RED template name
displayName = "Fecamp-Benouville BF109", -- Change to your preferred name
airbaseName = "Fecamp-Benouville", -- Change to your RED airbase
aircraft = 30, -- Adjust aircraft count
skill = AI.Skill.ACE, -- AVERAGE, GOOD, HIGH, EXCELLENT
altitude = 20000, -- Patrol altitude (feet)
speed = 300, -- Patrol speed (knots)
patrolTime = 25, -- Time on station (minutes)
type = "FIGHTER",
-- Zone-based Areas of Responsibility (optional - leave nil for global response)
primaryZone = "CHANNEL", -- Main responsibility area (zone name from mission editor)
secondaryZone = "BATTLEGROUND", -- Secondary coverage area (zone name)
tertiaryZone = nil, -- Emergency/fallback zone (zone name)
-- Zone behavior settings (optional - uses defaults if not specified)
zoneConfig = {
primaryResponse = 1.0, -- Intercept ratio multiplier in primary zone
secondaryResponse = 0.6, -- Intercept ratio multiplier in secondary zone
tertiaryResponse = 1.4, -- Intercept ratio multiplier in tertiary zone
maxRange = 200, -- Maximum engagement range from airbase (nm)
enableFallback = false, -- Auto-switch to tertiary when base threatened
priorityThreshold = 4, -- Min aircraft count for "major threat"
ignoreLowPriority = false, -- Ignore threats below threshold in secondary zones
}
}
}
-- ═══════════════════════════════════════════════════════════════════════════