From b6f0ec4da04b4a09fceba8b04710ae5d599e851b Mon Sep 17 00:00:00 2001 From: MetalStormGhost Date: Sun, 10 Sep 2023 16:11:30 +0300 Subject: [PATCH] Copied init.lua into init_header.lua, init_body.lua and init_footer.lua The init.lua script will be generated by 1. injecting the header, then 2. generating the ZoneCommand zones, then 3. generating ConnectionManager connections, then 4. injecting init_body.lua, then 5. generating sypply injection and finally by 6. injecting init_footer.lua --- .../pretense/{init.lua => init_body.lua} | 0 resources/plugins/pretense/init_footer.lua | 4670 +++++++++++++++++ resources/plugins/pretense/init_header.lua | 4670 +++++++++++++++++ 3 files changed, 9340 insertions(+) rename resources/plugins/pretense/{init.lua => init_body.lua} (100%) create mode 100644 resources/plugins/pretense/init_footer.lua create mode 100644 resources/plugins/pretense/init_header.lua diff --git a/resources/plugins/pretense/init.lua b/resources/plugins/pretense/init_body.lua similarity index 100% rename from resources/plugins/pretense/init.lua rename to resources/plugins/pretense/init_body.lua diff --git a/resources/plugins/pretense/init_footer.lua b/resources/plugins/pretense/init_footer.lua new file mode 100644 index 00000000..9df8452d --- /dev/null +++ b/resources/plugins/pretense/init_footer.lua @@ -0,0 +1,4670 @@ + + +local savefile = 'pretense_1.1.json' +if lfs then + local dir = lfs.writedir()..'Missions/Saves/' + lfs.mkdir(dir) + savefile = dir..savefile + env.info('Pretense - Save file path: '..savefile) +end + + +do + TemplateDB.templates["infantry-red"] = { + units = { + "BTR_D", + "T-90", + "T-90", + "Infantry AK ver2", + "Infantry AK", + "Infantry AK", + "Paratrooper RPG-16", + "Infantry AK ver3", + "SA-18 Igla manpad" + }, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["infantry-blue"] = { + units = { + "M1045 HMMWV TOW", + "Soldier stinger", + "Soldier M4 GRG", + "Soldier M4 GRG", + "Soldier M4 GRG", + "Soldier M4 GRG", + "Soldier M4 GRG", + "M1043 HMMWV Armament" + }, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["defense-red"] = { + units = { + "Infantry AK ver2", + "Infantry AK", + "Infantry AK ver3", + "Paratrooper RPG-16", + "SA-18 Igla manpad" + }, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["defense-blue"] = { + units = { + "Soldier M4 GRG", + "Soldier M4 GRG", + "Soldier M4 GRG", + "Soldier RPG", + "Soldier stinger", + }, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["shorad-red"] = { + units = { + "Strela-10M3", + "Strela-10M3", + "Ural-4320T", + "2S6 Tunguska" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["shorad-blue"] = { + units = { + "Roland ADS", + "M48 Chaparral", + "M 818", + "Gepard", + "Gepard" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sam-red"] = { + units = { + "p-19 s-125 sr", + "Ural-4320T", + "Ural-4320T", + "S_75M_Volhov", + "S_75M_Volhov", + "S_75M_Volhov", + "S_75M_Volhov", + "S_75M_Volhov", + "Tor 9A331", + "SNR_75V" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sam-blue"] = { + units = { + "Hawk pcp", + "Hawk cwar", + "Hawk ln", + "Hawk ln", + "Hawk ln", + "Hawk ln", + "Hawk ln", + "Hawk tr", + "M 818", + "Hawk sr" + }, + maxDist = 300, + skill = "Good", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["patriot"] = { + units = { + "Patriot cp", + "Patriot str", + "M 818", + "M 818", + "Patriot ln", + "Patriot ln", + "Patriot ln", + "Patriot ln", + "Patriot str", + "Patriot str", + "Patriot str", + "Patriot EPP", + "Patriot ECS", + "Patriot AMG" + }, + maxDist = 300, + skill = "Good", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sa3"] = { + units = { + "p-19 s-125 sr", + "snr s-125 tr", + "5p73 s-125 ln", + "5p73 s-125 ln", + "Ural-4320T", + "5p73 s-125 ln", + "5p73 s-125 ln" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sa6"] = { + units = { + "Kub 1S91 str", + "Kub 2P25 ln", + "Kub 2P25 ln", + "Kub 2P25 ln", + "Kub 2P25 ln", + "2S6 Tunguska", + "Ural-4320T", + "2S6 Tunguska", + "Kub 2P25 ln" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sa10"] = { + units = { + "S-300PS 54K6 cp", + "S-300PS 5P85C ln", + "S-300PS 5P85C ln", + "S-300PS 5P85C ln", + "GAZ-66", + "GAZ-66", + "GAZ-66", + "S-300PS 5P85C ln", + "S-300PS 5P85C ln", + "S-300PS 5P85C ln", + "S-300PS 40B6MD sr", + "S-300PS 40B6M tr", + "S-300PS 64H6E sr" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sa5"] = { + units = { + "RLS_19J6", + "Ural-4320T", + "Ural-4320T", + "RPC_5N62V", + "S-200_Launcher", + "S-200_Launcher", + "S-200_Launcher", + "S-200_Launcher", + "S-200_Launcher", + "S-200_Launcher" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sa11"] = { + units = { + "SA-11 Buk SR 9S18M1", + "SA-11 Buk LN 9A310M1", + "SA-11 Buk LN 9A310M1", + "SA-11 Buk LN 9A310M1", + "SA-11 Buk LN 9A310M1", + "SA-11 Buk LN 9A310M1", + "2S6 Tunguska", + "SA-11 Buk SR 9S18M1", + "GAZ-66", + "GAZ-66", + "SA-11 Buk CC 9S470M1" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["nasams"] = { + units = { + "NASAMS_Command_Post", + "NASAMS_Radar_MPQ64F1", + "Vulcan", + "M 818", + "M 818", + "Roland ADS", + "Roland ADS", + "NASAMS_LN_C", + "NASAMS_LN_C", + "NASAMS_LN_C", + "NASAMS_LN_C", + "NASAMS_Radar_MPQ64F1", + "NASAMS_Radar_MPQ64F1", + "NASAMS_Radar_MPQ64F1" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } +end + +presets = { + upgrades = { + basic = { + tent = Preset:new({ + display = 'Tent', + cost = 1500, + type = 'upgrade', + template = "tent" + }), + comPost = Preset:new({ + display = 'Barracks', + cost = 1500, + type = 'upgrade', + template = "barracks" + }), + outpost = Preset:new({ + display = 'Outpost', + cost = 1500, + type = 'upgrade', + template = "outpost" + }) + }, + attack = { + ammoCache = Preset:new({ + display = 'Ammo Cache', + cost = 1500, + type = 'upgrade', + template = "ammo-cache" + }), + ammoDepot = Preset:new({ + display = 'Ammo Depot', + cost = 2000, + type = 'upgrade', + template = "ammo-depot" + }) + }, + supply = { + fuelCache = Preset:new({ + display = 'Fuel Cache', + cost = 1500, + type = 'upgrade', + template = "fuel-cache" + }), + fuelTank = Preset:new({ + display = 'Fuel Tank', + cost = 1500, + type = 'upgrade', + template = "fuel-tank-big" + }), + fuelTankFarp = Preset:new({ + display = 'Fuel Tank', + cost = 1500, + type = 'upgrade', + template = "fuel-tank-small" + }), + factory1 = Preset:new({ + display='Factory', + cost = 2000, + type ='upgrade', + income = 20, + template = "factory-1" + }), + factory2 = Preset:new({ + display='Factory', + cost = 2000, + type ='upgrade', + income = 20, + template = "factory-2" + }), + factoryTank = Preset:new({ + display='Storage Tank', + cost = 1500, + type ='upgrade', + income = 10, + template = "chem-tank" + }), + ammoDepot = Preset:new({ + display = 'Ammo Depot', + cost = 2000, + type = 'upgrade', + income = 40, + template = "ammo-depot" + }), + oilPump = Preset:new({ + display = 'Oil Pump', + cost = 1500, + type = 'upgrade', + income = 20, + template = "oil-pump" + }), + hangar = Preset:new({ + display = 'Hangar', + cost = 2000, + type = 'upgrade', + income = 30, + template = "hangar" + }), + excavator = Preset:new({ + display = 'Excavator', + cost = 2000, + type = 'upgrade', + income = 20, + template = "excavator" + }), + farm1 = Preset:new({ + display = 'Farm House', + cost = 2000, + type = 'upgrade', + income = 40, + template = "farm-house-1" + }), + farm2 = Preset:new({ + display = 'Farm House', + cost = 2000, + type = 'upgrade', + income = 40, + template = "farm-house-2" + }), + refinery1 = Preset:new({ + display='Refinery', + cost = 2000, + type ='upgrade', + income = 100, + template = "factory-1" + }), + powerplant1 = Preset:new({ + display='Power Plant', + cost = 1500, + type ='upgrade', + income = 25, + template = "factory-1" + }), + powerplant2 = Preset:new({ + display='Power Plant', + cost = 1500, + type ='upgrade', + income = 25, + template = "factory-2" + }), + antenna = Preset:new({ + display='Antenna', + cost = 1000, + type ='upgrade', + income = 10, + template = "antenna" + }), + hq = Preset:new({ + display='HQ Building', + cost = 2000, + type ='upgrade', + income = 50, + template = "tv-tower" + }) + }, + airdef = { + comCenter = Preset:new({ + display = 'Command Center', + cost = 2500, + type = 'upgrade', + template = "command-center" + }) + } + }, + defenses = { + red = { + infantry = Preset:new({ + display = 'Infantry', + cost=2000, + type='defense', + template='infantry-red', + }), + shorad = Preset:new({ + display = 'SAM', + cost=2500, + type='defense', + template='shorad-red', + }), + sam = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sam-red', + }), + sa10 = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sa10', + }), + sa5 = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sa5', + }), + sa3 = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sa3', + }), + sa6 = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sa6', + }), + sa11 = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sa11', + }) + }, + blue = { + infantry = Preset:new({ + display = 'Infantry', + cost=2000, + type='defense', + template='infantry-blue', + }), + shorad = Preset:new({ + display = 'SAM', + cost=2500, + type='defense', + template='shorad-blue', + }), + sam = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sam-blue', + }), + patriot = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='patriot', + }), + nasams = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='nasams', + }) + } + }, + missions = { + supply = { + convoy = Preset:new({ + display = 'Supply convoy', + cost = 4000, + type = 'mission', + missionType = ZoneCommand.missionTypes.supply_convoy + }), + convoy_escorted = Preset:new({ + display = 'Supply convoy', + cost = 3000, + type = 'mission', + missionType = ZoneCommand.missionTypes.supply_convoy + }), + helo = Preset:new({ + display = 'Supply helicopter', + cost = 2500, + type='mission', + missionType = ZoneCommand.missionTypes.supply_air + }), + transfer = Preset:new({ + display = 'Supply transfer', + cost = 1000, + type='mission', + missionType = ZoneCommand.missionTypes.supply_transfer + }) + }, + attack = { + surface = Preset:new({ + display = 'Ground assault', + cost = 100, + type = 'mission', + missionType = ZoneCommand.missionTypes.assault, + }), + cas = Preset:new({ + display = 'CAS', + cost = 200, + type='mission', + missionType = ZoneCommand.missionTypes.cas + }), + bai = Preset:new({ + display = 'BAI', + cost = 200, + type='mission', + missionType = ZoneCommand.missionTypes.bai + }), + strike = Preset:new({ + display = 'Strike', + cost = 300, + type='mission', + missionType = ZoneCommand.missionTypes.strike + }), + sead = Preset:new({ + display = 'SEAD', + cost = 200, + type='mission', + missionType = ZoneCommand.missionTypes.sead + }), + helo = Preset:new({ + display = 'CAS', + cost = 100, + type='mission', + missionType = ZoneCommand.missionTypes.cas_helo + }) + }, + patrol={ + aircraft = Preset:new({ + display= "Patrol", + cost = 100, + type='mission', + missionType = ZoneCommand.missionTypes.patrol + }) + }, + support ={ + awacs = Preset:new({ + display= "AWACS", + cost = 300, + type='mission', + bias='5', + missionType = ZoneCommand.missionTypes.awacs + }), + tanker = Preset:new({ + display= "Tanker", + cost = 200, + type='mission', + bias='2', + missionType = ZoneCommand.missionTypes.tanker + }) + } + }, + special = { + red = { + infantry = Preset:new({ + display = 'Infantry', + cost=-1, + type='defense', + template='defense-red', + }), + }, + blue = { + infantry = Preset:new({ + display = 'Infantry', + cost=-1, + type='defense', + template='defense-blue', + }) + } + } +} + +zones = {} +do + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Batumi.lua ]]----------------- + +zones.batumi = ZoneCommand:new('Batumi') +zones.batumi.initialState = { side=2 } +zones.batumi.keepActive = true +zones.batumi.isHeloSpawn = true +zones.batumi.isPlaneSpawn = true +zones.batumi.maxResource = 50000 +zones.batumi:defineUpgrades({ + [1] = { --red side + presets.upgrades.basic.comPost:extend({ + name = 'batumi-com-red', + products = { + presets.special.red.infantry:extend({ name='batumi-defense-red'}), + presets.defenses.red.infantry:extend({ name='batumi-garrison-red' }) + } + }), + }, + [2] = --blue side + { + presets.upgrades.basic.comPost:extend({ + name = 'batumi-com-blue', + products = { + presets.special.blue.infantry:extend({ name='batumi-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='batumi-garrison-blue' }) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name = 'batumi-fueltank-blue', + products = { + presets.missions.supply.convoy_escorted:extend({ name='batumi-supply-convoy-1'}), + presets.missions.supply.helo:extend({ name='batumi-supply-blue-1' }), + presets.missions.supply.transfer:extend({name='batumi-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name = 'batumi-mission-command-blue', + products = { + presets.defenses.blue.shorad:extend({ name='batumi-sam-blue' }), + presets.missions.attack.sead:extend({name='batumi-sead-blue-1', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='batumi-cas-blue-1', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='batumi-cas-blue-1', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='batumi-strike-blue-1', altitude=20000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='batumi-patrol-blue-1', altitude=25000, range=25}), + presets.missions.support.awacs:extend({name='batumi-awacs-blue', altitude=30000, freq=257.5}), + presets.missions.support.tanker:extend({name='batumi-tanker-blue', altitude=25000, freq=257, tacan='37', variant="Drogue"}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Batumi.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mike.lua ]]----------------- + +zones.mike = ZoneCommand:new("Mike") +zones.mike.initialState = { side=1 } +zones.mike.keepActive = true +zones.mike:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='mike-tent-red', + products = { + presets.special.red.infantry:extend({ name='mike-defense-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='mike-comcenter-red', + products = { + presets.defenses.red.sam:extend({ name='mike-sam-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='mike-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='mike-defense-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='mike-comcenter-blue', + products = { + presets.defenses.blue.sam:extend({ name='mike-sam-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mike.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Tyrnyauz.lua ]]----------------- + +zones.tyrnyauz = ZoneCommand:new("Tyrnyauz") +zones.tyrnyauz.initialState = { side=1 } +zones.tyrnyauz.isHeloSpawn = true +zones.tyrnyauz:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='tyrnyauz-tent-red', + products = { + presets.special.red.infantry:extend({ name='tyrnyauz-defense-red'}), + presets.defenses.red.infantry:extend({ name='tyrnyauz-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='tyrnyauz-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='tyrnyauz-supply-red'}), + presets.missions.supply.helo:extend({name='tyrnyauz-supply-red-2'}), + presets.missions.supply.transfer:extend({name='tyrnyauz-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='tyrnyauz-ammo-red', + products = { + presets.missions.attack.surface:extend({name='tyrnyauz-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='tyrnyauz-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='tyrnyauz-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='tyrnyauz-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='tyrnyauz-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='tyrnyauz-supply-blue'}), + presets.missions.supply.helo:extend({name='tyrnyauz-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='tyrnyauz-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='tyrnyauz-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='tyrnyauz-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Tyrnyauz.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/India.lua ]]----------------- + +zones.india = ZoneCommand:new("India") +zones.india.initialState = nil +zones.india:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='india-tent-red', + products = { + presets.special.red.infantry:extend({ name='india-defense-red'}), + presets.defenses.red.infantry:extend({ name='india-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='india-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='india-supply-red'}), + presets.missions.supply.transfer:extend({name='india-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='india-ammo-red', + products = { + presets.missions.attack.surface:extend({name='india-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='india-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='india-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='india-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='india-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='india-supply-blue'}), + presets.missions.supply.transfer:extend({name='india-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='india-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='india-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/India.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/IntelCenter.lua ]]----------------- + +zones.intelcenter = ZoneCommand:new("Intel Center") +zones.intelcenter.initialState = { side=1 } +zones.intelcenter:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='intelcenter-tent-red', + products = { + presets.special.red.infantry:extend({ name='intelcenter-defense-red'}), + presets.defenses.red.infantry:extend({ name='intelcenter-garrison-red'}) + } + }), + presets.upgrades.supply.hq:extend({ + name='intelcenter-hq-red', + products = { + presets.missions.supply.convoy:extend({ name='intelcenter-supply-red'}), + presets.missions.supply.convoy:extend({ name='intelcenter-supply-red-1'}), + presets.missions.supply.transfer:extend({name='intelcenter-transfer-red'}) + } + }), + presets.upgrades.supply.antenna:extend({ + name='intelcenter-antenna-red', + products = { + } + }), + presets.upgrades.supply.antenna:extend({ + name='intelcenter-antenna-red-1', + products = { + } + }), + presets.upgrades.supply.antenna:extend({ + name='intelcenter-antenna-red-2', + products = { + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='intelcenter-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='intelcenter-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='intelcenter-garrison-blue'}) + } + }), + presets.upgrades.supply.hq:extend({ + name='intelcenter-hq-blue', + products = { + presets.missions.supply.convoy:extend({ name='intelcenter-supply-blue'}), + presets.missions.supply.convoy:extend({ name='intelcenter-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='intelcenter-transfer-blue'}) + } + }), + presets.upgrades.supply.antenna:extend({ + name='intelcenter-antenna-blue', + products = { + } + }), + presets.upgrades.supply.antenna:extend({ + name='intelcenter-antenna-blue-1', + products = { + } + }), + presets.upgrades.supply.antenna:extend({ + name='intelcenter-antenna-blue-2', + products = { + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/IntelCenter.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mineralnye.lua ]]----------------- + +zones.mineralnye = ZoneCommand:new("Mineralnye") +zones.mineralnye.initialState = { side=1 } +zones.mineralnye.keepActive = true +zones.mineralnye.isHeloSpawn = true +zones.mineralnye.isPlaneSpawn = true +zones.mineralnye:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='mineralnye-compost-red', + products = { + presets.special.red.infantry:extend({ name='mineralnye-defense-red'}), + presets.defenses.red.infantry:extend({ name='mineralnye-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='mineralnye-fuel-red', + products = { + presets.missions.supply.helo:extend({name='mineralnye-supply-red'}), + presets.missions.supply.helo:extend({name='mineralnye-supply-red-1'}), + presets.missions.supply.transfer:extend({name='mineralnye-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='mineralnye-comcenter-red', + products = { + presets.defenses.red.sa11:extend({ name='mineralnye-airdef-red'}), + presets.missions.attack.cas:extend({name='mineralnye-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='mineralnye-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='mineralnye-strike-red', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='mineralnye-strike-red-1', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='mineralnye-patrol-red', altitude=25000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='mineralnye-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='mineralnye-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='mineralnye-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='mineralnye-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='mineralnye-supply-blue'}), + presets.missions.supply.helo:extend({name='mineralnye-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='mineralnye-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='mineralnye-comcenter-blue', + products = { + presets.defenses.blue.nasams:extend({ name='mineralnye-airdef-blue'}), + presets.missions.attack.cas:extend({name='mineralnye-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='mineralnye-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='mineralnye-strike-blue', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='mineralnye-strike-blue-1', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='mineralnye-patrol-blue', altitude=25000, range=25}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mineralnye.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/PowerPlant.lua ]]----------------- + +zones.powerplant = ZoneCommand:new("Power Plant") +zones.powerplant.initialState = { side=1 } +zones.powerplant:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='powerplant-tent-red', + products = { + presets.special.red.infantry:extend({ name='powerplant-defense-red'}), + presets.defenses.red.infantry:extend({ name='powerplant-garrison-red'}) + } + }), + presets.upgrades.supply.powerplant1:extend({ + name='powerplant-building-red-1', + products = { + presets.missions.supply.convoy:extend({ name='powerplant-supply-red'}), + presets.missions.supply.transfer:extend({name='powerplant-transfer-red'}) + } + }), + presets.upgrades.supply.powerplant2:extend({ + name='powerplant-building-red-2', + products = { + presets.missions.supply.convoy:extend({ name='powerplant-supply-red-1'}), + presets.missions.supply.transfer:extend({name='powerplant-transfer-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='powerplant-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='powerplant-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='powerplant-garrison-blue'}) + } + }), + presets.upgrades.supply.powerplant1:extend({ + name='powerplant-building-blue-1', + products = { + presets.missions.supply.convoy:extend({ name='powerplant-supply-blue'}), + presets.missions.supply.transfer:extend({name='powerplant-transfer-blue'}) + } + }), + presets.upgrades.supply.powerplant2:extend({ + name='powerplant-building-blue-2', + products = { + presets.missions.supply.convoy:extend({ name='powerplant-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='powerplant-transfer-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/PowerPlant.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Zugdidi.lua ]]----------------- + +zones.zugdidi = ZoneCommand:new("Zugdidi") +zones.zugdidi.initialState = { side=1 } +zones.zugdidi:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='zugdidi-compost-red', + products = { + presets.missions.supply.transfer:extend({name='zugdidi-transfer-red'}), + presets.special.red.infantry:extend({ name='zugdidi-defense-red'}), + presets.defenses.red.infantry:extend({ name='zugdidi-garrison-red'}), + presets.missions.attack.surface:extend({name='zugdidi-attack-red'}), + presets.missions.supply.convoy:extend({name='zugdidi-supply-red'}) + } + }), + presets.upgrades.supply.hangar:extend({ + name='zugdidi-hangar-red-1', + products = { + presets.missions.supply.helo:extend({name='zugdidi-supply-red-1'}) + } + }), + presets.upgrades.supply.hangar:extend({ + name='zugdidi-hangar-red-2', + products = { + presets.missions.supply.helo:extend({name='zugdidi-supply-red-2'}) + } + }), + presets.upgrades.supply.hangar:extend({ + name='zugdidi-hangar-red-3', + products = { + presets.missions.supply.helo:extend({name='zugdidi-supply-red-3'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='zugdidi-comcenter-red', + products = { + presets.defenses.red.sa6:extend({ name='zugdidi-sam-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='zugdidi-compost-blue', + products = { + presets.missions.supply.transfer:extend({name='zugdidi-transfer-blue'}), + presets.special.blue.infantry:extend({ name='zugdidi-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='zugdidi-garrison-blue'}), + presets.missions.attack.surface:extend({name='zugdidi-attack-blue'}), + presets.missions.supply.convoy:extend({name='zugdidi-supply-blue'}) + } + }), + presets.upgrades.supply.hangar:extend({ + name='zugdidi-hangar-blue-1', + products = { + presets.missions.supply.helo:extend({name='zugdidi-supply-blue-1'}) + } + }), + presets.upgrades.supply.hangar:extend({ + name='zugdidi-hangar-blue-2', + products = { + presets.missions.supply.helo:extend({name='zugdidi-supply-blue-2'}) + } + }), + presets.upgrades.supply.hangar:extend({ + name='zugdidi-hangar-blue-3', + products = { + presets.missions.supply.helo:extend({name='zugdidi-supply-blue-3'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='zugdidi-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({ name='zugdidi-sam-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Zugdidi.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Babugent.lua ]]----------------- + +zones.babugent = ZoneCommand:new("Babugent") +zones.babugent.initialState = { side=1 } +zones.babugent:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='babugent-tent-red', + products = { + presets.special.red.infantry:extend({ name='babugent-defense-red'}), + presets.defenses.red.infantry:extend({ name='babugent-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='babugent-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='babugent-supply-red'}), + presets.missions.supply.helo:extend({name='babugent-supply-red-2'}), + presets.missions.supply.transfer:extend({name='babugent-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='babugent-ammo-red', + products = { + presets.missions.attack.surface:extend({name='babugent-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='babugent-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='babugent-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='babugent-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='babugent-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='babugent-supply-blue'}), + presets.missions.supply.helo:extend({name='babugent-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='babugent-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='babugent-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='babugent-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Babugent.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kislovodsk.lua ]]----------------- + +zones.kislovodsk = ZoneCommand:new("Kislovodsk") +zones.kislovodsk.initialState = { side=1 } +zones.kislovodsk:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='kislovodsk-tent-red', + products = { + presets.special.red.infantry:extend({ name='kislovodsk-defense-red'}), + presets.defenses.red.infantry:extend({ name='kislovodsk-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='kislovodsk-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='kislovodsk-supply-red'}), + presets.missions.supply.transfer:extend({name='kislovodsk-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='kislovodsk-ammo-red', + products = { + presets.missions.attack.surface:extend({name='kislovodsk-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='kislovodsk-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='kislovodsk-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='kislovodsk-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='kislovodsk-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='kislovodsk-supply-blue'}), + presets.missions.supply.transfer:extend({name='kislovodsk-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='kislovodsk-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='kislovodsk-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kislovodsk.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Gudauta.lua ]]----------------- + +zones.gudauta = ZoneCommand:new("Gudauta") +zones.gudauta.initialState = { side=1 } +zones.gudauta.keepActive = true +zones.gudauta.maxResource = 50000 +zones.gudauta:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='gudauta-compost-red', + products = { + presets.special.red.infantry:extend({ name='gudauta-defense-red'}), + presets.defenses.red.infantry:extend({ name='gudauta-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='gudauta-fuel-red', + products = { + presets.missions.supply.helo:extend({name='gudauta-supply-red'}), + presets.missions.supply.helo:extend({name='gudauta-supply-red-1'}), + presets.missions.supply.transfer:extend({name='gudauta-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='gudauta-comcenter-red', + products = { + presets.defenses.red.sam:extend({ name='gudauta-airdef-red'}), + presets.missions.attack.sead:extend({name='gudauta-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.sead:extend({name='gudauta-sead-red-1', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='gudauta-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='gudauta-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.patrol.aircraft:extend({name='gudauta-patrol-red', altitude=25000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='gudauta-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='gudauta-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='gudauta-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='gudauta-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='gudauta-supply-blue'}), + presets.missions.supply.helo:extend({name='gudauta-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='gudauta-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='gudauta-comcenter-blue', + products = { + presets.defenses.blue.sam:extend({ name='gudauta-airdef-blue'}), + presets.missions.attack.sead:extend({name='gudauta-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.sead:extend({name='gudauta-sead-blue-1', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='gudauta-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='gudauta-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.patrol.aircraft:extend({name='gudauta-patrol-blue', altitude=25000, range=25}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Gudauta.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Distillery.lua ]]----------------- + +zones.distillery = ZoneCommand:new("Distillery") +zones.distillery.initialState = { side=1 } +zones.distillery:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='distillery-tent-red', + products = { + presets.special.red.infantry:extend({ name='distillery-defense-red'}), + presets.defenses.red.infantry:extend({ name='distillery-garrison-red'}) + } + }), + presets.upgrades.supply.factory1:extend({ + name='distillery-prod-red-1', + products = { + presets.missions.supply.convoy:extend({ name='distillery-supply-red-1'}), + presets.missions.supply.transfer:extend({name='distillery-transfer-red'}) + } + }), + presets.upgrades.supply.factory2:extend({ + name='distillery-prod-red-2', + products = { + presets.missions.supply.convoy:extend({ name='distillery-supply-red-2', cost=2000}), + presets.missions.supply.transfer:extend({name='distillery-transfer-red2'}) + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='distillery-tank-red-1', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='distillery-tank-red-2', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='distillery-tank-red-3', + products = { + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='distillery-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='distillery-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='distillery-garrison-blue'}) + } + }), + presets.upgrades.supply.factory1:extend({ + name='distillery-prod-blue-1', + products = { + presets.missions.supply.convoy:extend({ name='distillery-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='distillery-transfer-blue'}) + } + }), + presets.upgrades.supply.factory2:extend({ + name='distillery-prod-blue-2', + products = { + presets.missions.supply.convoy:extend({ name='distillery-supply-blue-2', cost=2000}), + presets.missions.supply.transfer:extend({name='distillery-transfer-blue2'}) + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='distillery-tank-blue-1', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='distillery-tank-blue-2', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='distillery-tank-blue-3', + products = { + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Distillery.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Sochi.lua ]]----------------- + +zones.sochi = ZoneCommand:new("Sochi") +zones.sochi.initialState = { side=1 } +zones.sochi.keepActive = true +zones.sochi.maxResource = 50000 +zones.sochi:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='sochi-compost-red', + products = { + presets.special.red.infantry:extend({ name='sochi-defense-red'}), + presets.defenses.red.infantry:extend({ name='sochi-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='sochi-fuel-red', + products = { + presets.missions.supply.helo:extend({name='sochi-supply-red-1'}), + presets.missions.supply.helo:extend({name='sochi-supply-red-2'}), + presets.missions.supply.convoy_escorted:extend({name='sochi-supply-red-3'}), + presets.missions.supply.transfer:extend({name='sochi-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='sochi-comcenter-red', + products = { + presets.defenses.red.sa10:extend({ name='sochi-airdef-red'}), + presets.missions.attack.sead:extend({name='sochi-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='sochi-strike-red', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='sochi-patrol-red', altitude=25000, range=25}), + presets.missions.patrol.aircraft:extend({name='sochi-patrol-red-1', altitude=25000, range=25}), + presets.missions.attack.cas:extend({name='sochi-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='sochi-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='sochi-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='sochi-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='sochi-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='sochi-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='sochi-supply-blue-1'}), + presets.missions.supply.helo:extend({name='sochi-supply-blue-2'}), + presets.missions.supply.convoy_escorted:extend({name='sochi-supply-blue-3'}), + presets.missions.supply.transfer:extend({name='sochi-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='sochi-comcenter-blue', + products = { + presets.defenses.blue.patriot:extend({ name='sochi-airdef-blue'}), + presets.missions.attack.sead:extend({name='sochi-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='sochi-strike-blue', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='sochi-patrol-blue', altitude=25000, range=25}), + presets.missions.attack.cas:extend({name='sochi-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='sochi-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Sochi.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Golf.lua ]]----------------- + +zones.golf = ZoneCommand:new("Golf") +zones.golf.initialState = nil +zones.golf.isHeloSpawn = true +zones.golf:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='golf-tent-red', + products = { + presets.special.red.infantry:extend({ name='golf-defense-red'}), + presets.defenses.red.infantry:extend({ name='golf-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='golf-fuel-red', + products = { + presets.missions.supply.helo:extend({name='golf-supply-red'}), + presets.missions.supply.helo:extend({name='golf-supply-red-1'}), + presets.missions.supply.transfer:extend({name='golf-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='golf-comcenter-red', + products = { + presets.defenses.red.shorad:extend({name='golf-sam-red'}), + presets.missions.attack.helo:extend({name='golf-cas-red', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='golf-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='golf-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='golf-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='golf-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='golf-supply-blue'}), + presets.missions.supply.helo:extend({name='golf-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='golf-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='golf-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({name='golf-sam-blue'}), + presets.missions.attack.helo:extend({name='golf-cas-blue', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Golf.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Charlie.lua ]]----------------- + +zones.charlie = ZoneCommand:new("Charlie") +zones.charlie.initialState = { side=2 } +zones.charlie.keepActive = true +zones.charlie:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='charlie-tent-red', + products = { + presets.special.red.infantry:extend({ name='charlie-defense-red'}), + presets.defenses.red.infantry:extend({ name='charlie-garrison-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='charlie-comcenter-red', + products = { + presets.defenses.red.sam:extend({ name='charlie-sam-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='charlie-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='charlie-defense-red'}), + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='charlie-comcenter-blue', + products = { + presets.defenses.blue.sam:extend({ name='charlie-sam-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Charlie.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Lentehi.lua ]]----------------- + +zones.lentehi = ZoneCommand:new("Lentehi") +zones.lentehi.initialState = { side=1 } +zones.lentehi:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='lentehi-tent-red', + products = { + presets.special.red.infantry:extend({ name='lentehi-defense-red'}), + presets.defenses.red.infantry:extend({ name='lentehi-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='lentehi-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='lentehi-supply-red'}), + presets.missions.supply.helo:extend({name='lentehi-supply-red-2'}), + presets.missions.supply.transfer:extend({name='lentehi-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='lentehi-ammo-red', + products = { + presets.missions.attack.surface:extend({name='lentehi-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='lentehi-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='lentehi-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='lentehi-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='lentehi-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='lentehi-supply-blue'}), + presets.missions.supply.helo:extend({name='lentehi-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='lentehi-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='lentehi-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='lentehi-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Lentehi.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Refinery.lua ]]----------------- + +zones.refinery = ZoneCommand:new("Refinery") +zones.refinery.initialState = { side=1 } +zones.refinery:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='refinery-tent-red', + products = { + presets.special.red.infantry:extend({ name='refinery-defense-red'}), + presets.defenses.red.infantry:extend({ name='refinery-garrison-red'}) + } + }), + presets.upgrades.supply.refinery1:extend({ + name='refinery-building-red', + products = { + presets.missions.supply.convoy:extend({ name='refinery-supply-red'}), + presets.missions.supply.convoy:extend({ name='refinery-supply-red-1'}), + presets.missions.supply.helo:extend({ name='refinery-supply-red-2'}), + presets.missions.supply.transfer:extend({name='refinery-transfer-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='refinery-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='refinery-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='refinery-garrison-blue'}) + } + }), + presets.upgrades.supply.refinery1:extend({ + name='refinery-building-blue', + products = { + presets.missions.supply.convoy:extend({ name='refinery-supply-blue'}), + presets.missions.supply.convoy:extend({ name='refinery-supply-blue-1'}), + presets.missions.supply.helo:extend({ name='refinery-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='refinery-transfer-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Refinery.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mozdok.lua ]]----------------- + +zones.mozdok = ZoneCommand:new("Mozdok") +zones.mozdok.initialState = { side=1 } +zones.mozdok.keepActive = true +zones.mozdok.maxResource = 50000 +zones.mozdok:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='mozdok-compost-red', + products = { + presets.special.red.infantry:extend({ name='mozdok-defense-red'}), + presets.defenses.red.infantry:extend({ name='mozdok-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='mozdok-fuel-red', + products = { + presets.missions.supply.helo:extend({name='mozdok-supply-red-1'}), + presets.missions.supply.helo:extend({name='mozdok-supply-red-2'}), + presets.missions.supply.convoy_escorted:extend({name='mozdok-supply-red-3'}), + presets.missions.supply.transfer:extend({name='mozdok-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='mozdok-comcenter-red', + products = { + presets.defenses.red.sa10:extend({ name='mozdok-airdef-red'}), + presets.missions.patrol.aircraft:extend({name='mozdok-patrol-red', altitude=25000, range=25}), + presets.missions.attack.cas:extend({name='mozdok-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='mozdok-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='mozdok-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='mozdok-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='mozdok-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='mozdok-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='mozdok-supply-blue-1'}), + presets.missions.supply.helo:extend({name='mozdok-supply-blue-2'}), + presets.missions.supply.convoy_escorted:extend({name='mozdok-supply-blue-3'}), + presets.missions.supply.transfer:extend({name='mozdok-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='mozdok-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({ name='mozdok-airdef-blue'}), + presets.missions.patrol.aircraft:extend({name='mozdok-patrol-blue', altitude=25000, range=25}), + presets.missions.attack.cas:extend({name='mozdok-cas-blue', altitude=15000, cost=50, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.cas:extend({name='mozdok-cas-blue-1', altitude=15000, cost=50, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='mozdok-cas-blue', altitude=15000, cost=50, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='mozdok-cas-blue-1', altitude=15000, cost=50, expend=AI.Task.WeaponExpend.ONE}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mozdok.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Lima.lua ]]----------------- + +zones.lima = ZoneCommand:new("Lima") +zones.lima.initialState = { side=1 } +zones.lima:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='lima-tent-red', + products = { + presets.special.red.infantry:extend({ name='lima-defense-red'}), + presets.defenses.red.infantry:extend({ name='lima-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='lima-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='lima-supply-red'}), + presets.missions.supply.helo:extend({name='lima-supply-red-1'}), + presets.missions.supply.transfer:extend({name='lima-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='lima-ammo-red', + products = { + presets.missions.attack.surface:extend({name='lima-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='lima-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='lima-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='lima-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='lima-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='lima-supply-blue'}), + presets.missions.supply.helo:extend({name='lima-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='lima-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='lima-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='lima-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Lima.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Oscar.lua ]]----------------- + +zones.oscar = ZoneCommand:new("Oscar") +zones.oscar.initialState = { side=1 } +zones.oscar:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='oscar-tent-red', + products = { + presets.special.red.infantry:extend({ name='oscar-defense-red'}), + presets.defenses.red.infantry:extend({ name='oscar-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='oscar-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='oscar-supply-red'}), + presets.missions.supply.transfer:extend({name='oscar-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='oscar-ammo-red', + products = { + presets.missions.attack.surface:extend({name='oscar-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='oscar-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='oscar-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='oscar-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='oscar-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='oscar-supply-blue'}), + presets.missions.supply.transfer:extend({name='oscar-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='oscar-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='oscar-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Oscar.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Nalchik.lua ]]----------------- + +zones.nalchik = ZoneCommand:new("Nalchik") +zones.nalchik.initialState = { side=1 } +zones.nalchik.keepActive = true +zones.nalchik.isHeloSpawn = true +zones.nalchik.isPlaneSpawn = true +zones.nalchik:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='nalchik-compost-red', + products = { + presets.special.red.infantry:extend({ name='nalchik-defense-red'}), + presets.defenses.red.infantry:extend({ name='nalchik-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='nalchik-fuel-red', + products = { + presets.missions.supply.helo:extend({name='nalchik-supply-red-1'}), + presets.missions.supply.helo:extend({name='nalchik-supply-red-2'}), + presets.missions.supply.transfer:extend({name='nalchik-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='nalchik-comcenter-red', + products = { + presets.defenses.red.sa3:extend({ name='nalchik-airdef-red'}), + presets.missions.attack.sead:extend({name='nalchik-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='nalchik-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='nalchik-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='nalchik-strike-red', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='nalchik-patrol-red', altitude=25000, range=25}), + presets.missions.patrol.aircraft:extend({name='nalchik-patrol-red-2', altitude=25000, range=25}), + presets.missions.support.awacs:extend({name='nalchik-awacs-red', altitude=30000, freq=251.2}), + presets.missions.support.tanker:extend({name='nalchik-tanker-red', altitude=30000, freq=252.2, tacan='40', variant='Drogue'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='nalchik-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='nalchik-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='nalchik-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='nalchik-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='nalchik-supply-blue-1'}), + presets.missions.supply.helo:extend({name='nalchik-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='nalchik-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='nalchik-comcenter-blue', + products = { + presets.defenses.blue.nasams:extend({ name='nalchik-airdef-blue'}), + presets.missions.support.awacs:extend({name='nalchik-awacs-blue', altitude=30000, freq=259.5}), + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Nalchik.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Digora.lua ]]----------------- + +zones.digora = ZoneCommand:new("Digora") +zones.digora.initialState = { side=1 } +zones.digora:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='digora-tent-red', + products = { + presets.special.red.infantry:extend({ name='digora-defense-red'}), + presets.defenses.red.infantry:extend({ name='digora-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='digora-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='digora-supply-red'}), + presets.missions.supply.transfer:extend({name='digora-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='digora-ammo-red', + products = { + presets.missions.attack.surface:extend({name='digora-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='digora-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='digora-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='digora-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='digora-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='digora-supply-blue'}), + presets.missions.supply.transfer:extend({name='digora-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='digora-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='digora-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Digora.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Uniform.lua ]]----------------- + +zones.uniform = ZoneCommand:new("Uniform") +zones.uniform.initialState = { side=1 } +zones.uniform:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='uniform-tent-red', + products = { + presets.special.red.infantry:extend({ name='uniform-defense-red'}), + presets.defenses.red.infantry:extend({ name='uniform-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='uniform-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='uniform-supply-red'}), + presets.missions.supply.transfer:extend({name='uniform-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='uniform-ammo-red', + products = { + presets.missions.attack.surface:extend({name='uniform-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='uniform-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='uniform-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='uniform-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='uniform-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='uniform-supply-blue'}), + presets.missions.supply.transfer:extend({name='uniform-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='uniform-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='uniform-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Uniform.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Factory.lua ]]----------------- + +zones.factory = ZoneCommand:new("Factory") +zones.factory.initialState = { side=2 } +zones.factory:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='factory-tent-red', + products = { + presets.special.red.infantry:extend({ name='factory-defense-red'}), + presets.defenses.red.infantry:extend({ name='factory-garrison-red'}) + } + }), + presets.upgrades.supply.factory1:extend({ + name='factory-prod-red-1', + products = { + presets.missions.supply.convoy:extend({ name='factory-supply-red-1'}), + presets.missions.supply.transfer:extend({name='factory-transfer-red'}) + } + }), + presets.upgrades.supply.factory2:extend({ + name='factory-prod-red-2', + products = { + presets.missions.supply.convoy:extend({ name='factory-supply-red-2', cost=2000}), + presets.missions.supply.transfer:extend({name='factory-transfer-red2'}) + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='factory-tank-red-1', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='factory-tank-red-2', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='factory-tank-red-3', + products = { + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='factory-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='factory-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='factory-garrison-blue'}) + } + }), + presets.upgrades.supply.factory1:extend({ + name='factory-prod-blue-1', + products = { + presets.missions.supply.convoy:extend({ name='factory-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='factory-transfer-blue'}) + } + }), + presets.upgrades.supply.factory2:extend({ + name='factory-prod-blue-2', + products = { + presets.missions.supply.convoy:extend({ name='factory-supply-blue-2', cost=2000}), + presets.missions.supply.transfer:extend({name='factory-transfer-blue2'}) + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='factory-tank-blue-1', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='factory-tank-blue-2', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='factory-tank-blue-3', + products = { + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Factory.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Senaki.lua ]]----------------- + +zones.senaki = ZoneCommand:new("Senaki") +zones.senaki.initialState = { side=1 } +zones.senaki.keepActive = true +zones.senaki.isHeloSpawn = true +zones.senaki.isPlaneSpawn = true +zones.senaki.maxResource = 50000 +zones.senaki:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='senaki-compost-red', + products = { + presets.special.red.infantry:extend({ name='senaki-defense-red'}), + presets.defenses.red.infantry:extend({ name='senaki-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='senaki-fuel-red', + products = { + presets.missions.supply.helo:extend({name='senaki-supply-red-1'}), + presets.missions.supply.helo:extend({name='senaki-supply-red-2'}), + presets.missions.supply.transfer:extend({name='senaki-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='senaki-comcenter-red', + products = { + presets.defenses.red.sa3:extend({ name='senaki-airdef-red'}), + presets.missions.attack.sead:extend({name='senaki-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='senaki-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='senaki-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='senaki-strike-red', altitude=20000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='senaki-patrol-red', altitude=25000, range=25}), + presets.missions.patrol.aircraft:extend({name='senaki-patrol-red-2', altitude=20000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='senaki-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='senaki-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='senaki-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='senaki-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='senaki-supply-blue-1'}), + presets.missions.supply.helo:extend({name='senaki-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='senaki-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='senaki-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({ name='senaki-airdef-blue'}), + presets.missions.attack.sead:extend({name='senaki-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='senaki-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='senaki-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='senaki-strike-blue', altitude=20000, expend=AI.Task.WeaponExpend.TWO}), + presets.missions.patrol.aircraft:extend({name='senaki-patrol-blue', altitude=25000, range=25}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Senaki.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kutaisi.lua ]]----------------- + +zones.kutaisi = ZoneCommand:new("Kutaisi") +zones.kutaisi.initialState = { side=1 } +zones.kutaisi.keepActive = true +zones.kutaisi.maxResource = 50000 +zones.kutaisi:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='kutaisi-compost-red', + products = { + presets.special.red.infantry:extend({ name='kutaisi-defense-red'}), + presets.defenses.red.infantry:extend({ name='kutaisi-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='kutaisi-fuel-red', + products = { + presets.missions.supply.helo:extend({name='kutaisi-supply-red-1'}), + presets.missions.supply.helo:extend({name='kutaisi-supply-red-2'}), + presets.missions.supply.transfer:extend({name='kutaisi-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='kutaisi-comcenter-red', + products = { + presets.defenses.red.shorad:extend({ name='kutaisi-airdef-red'}), + presets.missions.attack.sead:extend({name='kutaisi-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='kutaisi-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='kutaisi-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='kutaisi-strike-red', altitude=20000, expend=AI.Task.WeaponExpend.HALF}), + presets.missions.patrol.aircraft:extend({name='kutaisi-patrol-red', altitude=25000, range=25}), + presets.missions.patrol.aircraft:extend({name='kutaisi-patrol-red-2', altitude=25000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='kutaisi-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='kutaisi-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='kutaisi-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='kutaisi-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='kutaisi-supply-blue-1'}), + presets.missions.supply.helo:extend({name='kutaisi-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='kutaisi-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='kutaisi-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({ name='kutaisi-airdef-blue'}), + presets.missions.attack.sead:extend({name='kutaisi-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='kutaisi-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='kutaisi-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='kutaisi-strike-blue', altitude=20000, expend=AI.Task.WeaponExpend.TWO}), + presets.missions.patrol.aircraft:extend({name='kutaisi-patrol-blue', altitude=25000, range=25}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kutaisi.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Prohladniy.lua ]]----------------- + +zones.prohladniy = ZoneCommand:new("Prohladniy") +zones.prohladniy.initialState = { side=1 } +zones.prohladniy:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='prohladniy-tent-red', + products = { + presets.special.red.infantry:extend({ name='prohladniy-defense-red'}), + presets.defenses.red.infantry:extend({ name='prohladniy-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='prohladniy-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='prohladniy-supply-red'}), + presets.missions.supply.transfer:extend({name='prohladniy-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='prohladniy-ammo-red', + products = { + presets.missions.attack.surface:extend({name='prohladniy-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='prohladniy-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='prohladniy-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='prohladniy-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='prohladniy-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='prohladniy-supply-blue'}), + presets.missions.supply.transfer:extend({name='prohladniy-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='prohladniy-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='prohladniy-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Prohladniy.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Tallyk.lua ]]----------------- + +zones.tallyk = ZoneCommand:new("Tallyk") +zones.tallyk.initialState = { side=1 } +zones.tallyk.keepActive = true +zones.tallyk:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='tallyk-tent-red', + products = { + presets.special.red.infantry:extend({ name='tallyk-defense-red'}), + presets.defenses.red.infantry:extend({ name='tallyk-garrison-red'}), + presets.missions.attack.surface:extend({name='tallyk-assault-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='tallyk-comcenter-red', + products = { + presets.defenses.red.sam:extend({ name='tallyk-sam-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='tallyk-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='tallyk-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='tallyk-garrison-blue'}), + presets.missions.attack.surface:extend({name='tallyk-assault-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='tallyk-comcenter-blue', + products = { + presets.defenses.blue.sam:extend({ name='tallyk-sam-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Tallyk.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Terek.lua ]]----------------- + +zones.terek = ZoneCommand:new("Terek") +zones.terek.initialState = { side=1 } +zones.terek:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='terek-tent-red', + products = { + presets.special.red.infantry:extend({ name='terek-defense-red'}), + presets.defenses.red.infantry:extend({ name='terek-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='terek-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='terek-supply-red'}), + presets.missions.supply.transfer:extend({name='terek-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='terek-ammo-red', + products = { + presets.missions.attack.surface:extend({name='terek-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='terek-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='terek-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='terek-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='terek-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='terek-supply-blue'}), + presets.missions.supply.transfer:extend({name='terek-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='terek-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='terek-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Terek.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Humara.lua ]]----------------- + +zones.humara = ZoneCommand:new("Humara") +zones.humara.initialState = { side=1 } +zones.humara:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='humara-tent-red', + products = { + presets.special.red.infantry:extend({ name='humara-defense-red'}), + presets.defenses.red.infantry:extend({ name='humara-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='humara-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='humara-supply-red'}), + presets.missions.supply.transfer:extend({name='humara-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='humara-ammo-red', + products = { + presets.missions.attack.surface:extend({name='humara-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='humara-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='humara-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='humara-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='humara-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='humara-supply-blue'}), + presets.missions.supply.transfer:extend({name='humara-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='humara-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='humara-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Humara.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Ochamchira.lua ]]----------------- + +zones.ochamchira = ZoneCommand:new("Ochamchira") +zones.ochamchira.initialState = { side=1 } +zones.ochamchira:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='ochamchira-tent-red', + products = { + presets.special.red.infantry:extend({ name='ochamchira-defense-red'}), + presets.defenses.red.infantry:extend({ name='ochamchira-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='ochamchira-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='ochamchira-supply-red'}), + presets.missions.supply.transfer:extend({name='ochamchira-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='ochamchira-ammo-red', + products = { + presets.missions.attack.surface:extend({name='ochamchira-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='ochamchira-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='ochamchira-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='ochamchira-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='ochamchira-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='ochamchira-supply-blue'}), + presets.missions.supply.transfer:extend({name='ochamchira-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='ochamchira-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='ochamchira-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Ochamchira.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/November.lua ]]----------------- + +zones.november = ZoneCommand:new("November") +zones.november.initialState = { side=1 } +zones.november.isHeloSpawn = true +zones.november:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='november-tent-red', + products = { + presets.special.red.infantry:extend({ name='november-defense-red'}), + presets.defenses.red.infantry:extend({ name='november-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='november-fuel-red', + products = { + presets.missions.supply.helo:extend({name='november-supply-red'}), + presets.missions.supply.helo:extend({name='november-supply-red-1'}), + presets.missions.supply.transfer:extend({name='november-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='november-comcenter-red', + products = { + presets.defenses.red.shorad:extend({name='november-sam-red'}), + presets.missions.attack.helo:extend({name='november-cas-red', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='november-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='november-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='november-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='november-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='november-supply-blue'}), + presets.missions.supply.helo:extend({name='november-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='november-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='november-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({name='november-sam-blue'}), + presets.missions.attack.helo:extend({name='november-cas-blue', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/November.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/XRay.lua ]]----------------- + +zones.xray = ZoneCommand:new("XRay") +zones.xray.initialState = { side=1 } +zones.xray:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='xray-tent-red', + products = { + presets.special.red.infantry:extend({ name='xray-defense-red'}), + presets.defenses.red.infantry:extend({ name='xray-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='xray-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='xray-supply-red'}), + presets.missions.supply.helo:extend({name='xray-supply-red-2'}), + presets.missions.supply.transfer:extend({name='xray-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='xray-ammo-red', + products = { + presets.missions.attack.surface:extend({name='xray-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='xray-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='xray-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='xray-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='xray-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='xray-supply-blue'}), + presets.missions.supply.helo:extend({name='xray-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='xray-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='xray-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='xray-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/XRay.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Whiskey.lua ]]----------------- + +zones.whiskey = ZoneCommand:new("Whiskey") +zones.whiskey.initialState = { side=1 } +zones.whiskey:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='whiskey-tent-red', + products = { + presets.special.red.infantry:extend({ name='whiskey-defense-red'}), + presets.defenses.red.infantry:extend({ name='whiskey-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='whiskey-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='whiskey-supply-red'}), + presets.missions.supply.transfer:extend({name='whiskey-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='whiskey-ammo-red', + products = { + presets.missions.attack.surface:extend({name='whiskey-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='whiskey-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='whiskey-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='whiskey-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='whiskey-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='whiskey-supply-blue'}), + presets.missions.supply.transfer:extend({name='whiskey-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='whiskey-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='whiskey-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Whiskey.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mine.lua ]]----------------- + +zones.mine = ZoneCommand:new("Mine") +zones.mine.initialState = { side=1 } +zones.mine:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='mine-tent-red', + products = { + presets.special.red.infantry:extend({ name='mine-defense-red'}), + presets.defenses.red.infantry:extend({ name='mine-garrison-red'}) + } + }), + presets.upgrades.supply.excavator:extend({ + name='mine-excavator-red-1', + products = { + presets.missions.supply.convoy:extend({ name='mine-supply-red'}), + presets.missions.supply.transfer:extend({name='mine-transfer-red'}) + } + }), + presets.upgrades.supply.excavator:extend({ + name='mine-excavator-red-2', + products = { + presets.missions.supply.convoy:extend({ name='mine-supply-red'}), + presets.missions.supply.transfer:extend({name='mine-transfer-red'}) + } + }), + presets.upgrades.supply.excavator:extend({ + name='mine-excavator-red-3', + products = { + presets.missions.supply.convoy:extend({ name='mine-supply-red'}), + presets.missions.supply.transfer:extend({name='mine-transfer-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='mine-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='mine-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='mine-garrison-blue'}) + } + }), + presets.upgrades.supply.excavator:extend({ + name='mine-excavator-blue-1', + products = { + presets.missions.supply.convoy:extend({ name='mine-supply-blue'}), + presets.missions.supply.transfer:extend({name='mine-transfer-blue'}) + } + }), + presets.upgrades.supply.excavator:extend({ + name='mine-excavator-blue-2', + products = { + presets.missions.supply.convoy:extend({ name='mine-supply-blue'}), + presets.missions.supply.transfer:extend({name='mine-transfer-blue'}) + } + }), + presets.upgrades.supply.excavator:extend({ + name='mine-excavator-blue-3', + products = { + presets.missions.supply.convoy:extend({ name='mine-supply-blue'}), + presets.missions.supply.transfer:extend({name='mine-transfer-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mine.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Papa.lua ]]----------------- + +zones.papa = ZoneCommand:new("Papa") +zones.papa.initialState = { side=1 } +zones.papa.keepActive = true +zones.papa:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='papa-tent-red', + products = { + presets.special.red.infantry:extend({ name='papa-defense-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='papa-comcenter-red', + products = { + presets.defenses.red.sam:extend({ name='papa-sam-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='papa-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='papa-defense-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='papa-comcenter-blue', + products = { + presets.defenses.blue.sam:extend({ name='papa-sam-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Papa.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Sukhumi.lua ]]----------------- + +zones.sukhumi = ZoneCommand:new("Sukhumi") +zones.sukhumi.initialState = { side=1 } +zones.sukhumi.keepActive = true +zones.sukhumi.maxResource = 50000 +zones.sukhumi:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='sukhumi-compost-red', + products = { + presets.special.red.infantry:extend({ name='sukhumi-defense-red'}), + presets.defenses.red.infantry:extend({ name='sukhumi-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='sukhumi-fuel-red', + products = { + presets.missions.supply.helo:extend({name='sukhumi-supply-red-1'}), + presets.missions.supply.helo:extend({name='sukhumi-supply-red-2'}), + presets.missions.supply.transfer:extend({name='sukhumi-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='sukhumi-comcenter-red', + products = { + presets.defenses.red.sa11:extend({ name='sukhumi-airdef-red'}), + presets.missions.attack.sead:extend({name='sukhumi-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='sukhumi-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='sukhumi-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='sukhumi-strike-red', altitude=20000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='sukhumi-patrol-red', altitude=25000, range=25}), + presets.missions.patrol.aircraft:extend({name='sukhumi-patrol-red-2', altitude=25000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='sukhumi-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='sukhumi-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='sukhumi-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='sukhumi-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='sukhumi-supply-blue-1'}), + presets.missions.supply.helo:extend({name='sukhumi-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='sukhumi-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='sukhumi-comcenter-blue', + products = { + presets.defenses.blue.nasams:extend({ name='sukhumi-airdef-blue'}), + presets.missions.attack.sead:extend({name='sukhumi-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='sukhumi-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='sukhumi-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='sukhumi-strike-blue', altitude=20000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='sukhumi-patrol-blue', altitude=25000, range=25}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Sukhumi.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Farm.lua ]]----------------- + +zones.farm = ZoneCommand:new("Farm") +zones.farm.initialState = { side=1 } +zones.farm:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='farm-tent-red', + products = { + presets.special.red.infantry:extend({ name='farm-defense-red'}), + presets.defenses.red.infantry:extend({ name='farm-garrison-red'}) + } + }), + presets.upgrades.supply.farm1:extend({ + name='farm-prod-red-1', + products = { + presets.missions.supply.convoy:extend({ name='farm-supply-red'}), + presets.missions.supply.transfer:extend({name='farm-transfer-red'}) + } + }), + presets.upgrades.supply.farm2:extend({ + name='farm-prod-red-2', + products = { + presets.missions.supply.convoy:extend({ name='farm-supply-red'}), + presets.missions.supply.transfer:extend({name='farm-transfer-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='farm-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='farm-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='farm-garrison-blue'}) + } + }), + presets.upgrades.supply.farm1:extend({ + name='farm-prod-blue-1', + products = { + presets.missions.supply.convoy:extend({ name='farm-supply-blue'}), + presets.missions.supply.transfer:extend({name='farm-transfer-blue'}) + } + }), + presets.upgrades.supply.farm2:extend({ + name='farm-prod-blue-2', + products = { + presets.missions.supply.convoy:extend({ name='farm-supply-blue'}), + presets.missions.supply.transfer:extend({name='farm-transfer-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Farm.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Romeo.lua ]]----------------- + +zones.romeo = ZoneCommand:new("Romeo") +zones.romeo.initialState = { side=1 } +zones.romeo:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='romeo-tent-red', + products = { + presets.special.red.infantry:extend({ name='romeo-defense-red'}), + presets.defenses.red.infantry:extend({ name='romeo-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='romeo-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='romeo-supply-red'}), + presets.missions.supply.transfer:extend({name='romeo-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='romeo-ammo-red', + products = { + presets.missions.attack.surface:extend({name='romeo-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='romeo-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='romeo-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='romeo-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='romeo-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='romeo-supply-blue'}), + presets.missions.supply.transfer:extend({name='romeo-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='romeo-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='romeo-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Romeo.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Zulu.lua ]]----------------- + +zones.zulu = ZoneCommand:new("Zulu") +zones.zulu.initialState = { side=1 } +zones.zulu:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='zulu-tent-red', + products = { + presets.special.red.infantry:extend({ name='zulu-defense-red'}), + presets.defenses.red.infantry:extend({ name='zulu-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='zulu-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='zulu-supply-red'}), + presets.missions.supply.transfer:extend({name='zulu-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='zulu-ammo-red', + products = { + presets.missions.attack.surface:extend({name='zulu-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='zulu-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='zulu-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='zulu-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='zulu-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='zulu-supply-blue'}), + presets.missions.supply.transfer:extend({name='zulu-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='zulu-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='zulu-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Zulu.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Yankee.lua ]]----------------- + +zones.yankee = ZoneCommand:new("Yankee") +zones.yankee.initialState = { side=1 } +zones.yankee:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='yankee-tent-red', + products = { + presets.special.red.infantry:extend({ name='yankee-defense-red'}), + presets.defenses.red.infantry:extend({ name='yankee-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='yankee-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='yankee-supply-red'}), + presets.missions.supply.transfer:extend({name='yankee-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='yankee-ammo-red', + products = { + presets.missions.attack.surface:extend({name='yankee-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='yankee-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='yankee-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='yankee-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='yankee-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='yankee-supply-blue'}), + presets.missions.supply.transfer:extend({name='yankee-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='yankee-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='yankee-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Yankee.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Malgobek.lua ]]----------------- + +zones.malgobek = ZoneCommand:new("Malgobek") +zones.malgobek.initialState = { side=1 } +zones.malgobek:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='malgobek-tent-red', + products = { + presets.special.red.infantry:extend({ name='malgobek-defense-red'}), + presets.defenses.red.infantry:extend({ name='malgobek-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='malgobek-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='malgobek-supply-red'}), + presets.missions.supply.transfer:extend({name='malgobek-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='malgobek-ammo-red', + products = { + presets.missions.attack.surface:extend({name='malgobek-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='malgobek-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='malgobek-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='malgobek-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='malgobek-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='malgobek-supply-blue'}), + presets.missions.supply.transfer:extend({name='malgobek-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='malgobek-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='malgobek-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Malgobek.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kilo.lua ]]----------------- + +zones.kilo = ZoneCommand:new("Kilo") +zones.kilo.initialState = { side=1 } +zones.kilo:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='kilo-tent-red', + products = { + presets.special.red.infantry:extend({ name='kilo-defense-red'}), + presets.defenses.red.infantry:extend({ name='kilo-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='kilo-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='kilo-supply-red'}), + presets.missions.supply.transfer:extend({name='kilo-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='kilo-ammo-red', + products = { + presets.missions.attack.surface:extend({name='kilo-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='kilo-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='kilo-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='kilo-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='kilo-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='kilo-supply-blue'}), + presets.missions.supply.transfer:extend({name='kilo-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='kilo-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='kilo-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kilo.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Quebec.lua ]]----------------- + +zones.quebec = ZoneCommand:new("Quebec") +zones.quebec.initialState = { side=1 } +zones.quebec.keepActive = true +zones.quebec:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='quebec-tent-red', + products = { + presets.special.red.infantry:extend({ name='quebec-defense-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='quebec-comcenter-red', + products = { + presets.defenses.red.sam:extend({ name='quebec-sam-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='quebec-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='quebec-defense-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='quebec-comcenter-blue', + products = { + presets.defenses.blue.sam:extend({ name='quebec-sam-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Quebec.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/OilFields.lua ]]----------------- + +zones.oilfields = ZoneCommand:new("Oil Fields") +zones.oilfields.initialState = { side=1 } +zones.oilfields:defineUpgrades({ + [1] = { + presets.upgrades.basic.outpost:extend({ + name='oilfields-outpost-red', + products = { + presets.special.red.infantry:extend({ name='oilfields-defense-red'}), + presets.defenses.red.infantry:extend({ name='oilfields-garrison-red'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-red-1', + products = { + presets.missions.supply.transfer:extend({name='oilfields-transfer-red1'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-red-2', + products = { + presets.missions.supply.convoy:extend({name='oilfields-supply-red-1'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-red-3', + products = { + presets.missions.supply.transfer:extend({name='oilfields-transfer-red2'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-red-4', + products = { + presets.missions.supply.convoy:extend({name='oilfields-supply-red-2'}) + } + }) + }, + [2] = { + presets.upgrades.basic.outpost:extend({ + name='oilfields-outpost-blue', + products = { + presets.special.blue.infantry:extend({ name='oilfields-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='oilfields-garrison-blue'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-blue-1', + products = { + presets.missions.supply.transfer:extend({name='oilfields-transfer-blue1'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-blue-2', + products = { + presets.missions.supply.convoy:extend({name='oilfields-supply-blue-1'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-blue-3', + products = { + presets.missions.supply.transfer:extend({name='oilfields-transfer-blue2'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-blue-4', + products = { + presets.missions.supply.convoy:extend({name='oilfields-supply-blue-2'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/OilFields.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Echo.lua ]]----------------- + +zones.echo = ZoneCommand:new("Echo") +zones.echo.initialState = { side=2 } +zones.echo:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='echo-tent-red', + products = { + presets.special.red.infantry:extend({ name='echo-defense-red'}), + presets.defenses.red.infantry:extend({ name='echo-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='echo-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='echo-supply-red'}), + presets.missions.supply.transfer:extend({name='echo-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='echo-ammo-red', + products = { + presets.missions.attack.surface:extend({name='echo-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='echo-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='echo-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='echo-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='echo-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='echo-supply-blue'}), + presets.missions.supply.transfer:extend({name='echo-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='echo-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='echo-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Echo.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kobuleti.lua ]]----------------- + +zones.kobuleti = ZoneCommand:new("Kobuleti") +zones.kobuleti.initialState = { side=2 } +zones.kobuleti.keepActive = true +zones.kobuleti.isHeloSpawn = true +zones.kobuleti.isPlaneSpawn = true +zones.kobuleti.maxResource = 50000 +zones.kobuleti:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='kobuleti-compost-red', + products = { + presets.special.red.infantry:extend({ name='kobuleti-defense-red'}), + presets.defenses.red.infantry:extend({ name='kobuleti-garrison-red'}), + presets.missions.attack.surface:extend({ name='kobuleti-assault-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='kobuleti-fuel-red', + products = { + presets.missions.supply.helo:extend({name='kobuleti-supply-red-1'}), + presets.missions.supply.helo:extend({name='kobuleti-supply-red-2'}), + presets.missions.supply.transfer:extend({name='kobuleti-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='kobuleti-comcenter-red', + products = { + presets.defenses.red.shorad:extend({ name='kobuleti-airdef-red'}), + presets.missions.attack.sead:extend({name='kobuleti-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='kobuleti-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='kobuleti-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='kobuleti-strike-red', altitude=20000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='kobuleti-patrol-red', altitude=25000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='kobuleti-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='kobuleti-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='kobuleti-garrison-blue'}), + presets.missions.attack.surface:extend({ name='kobuleti-assault-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='kobuleti-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='kobuleti-supply-blue-1'}), + presets.missions.supply.helo:extend({name='kobuleti-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='kobuleti-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='kobuleti-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({ name='kobuleti-airdef-blue'}), + presets.missions.attack.sead:extend({name='kobuleti-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='kobuleti-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='kobuleti-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='kobuleti-strike-blue', altitude=20000, expend=AI.Task.WeaponExpend.TWO}), + presets.missions.patrol.aircraft:extend({name='kobuleti-patrol-blue', altitude=25000, range=25}), + presets.missions.support.awacs:extend({name='kobuleti-awacs-blue', altitude=30000, freq=258.5}), + presets.missions.support.tanker:extend({name='kobuleti-tanker-blue', altitude=23000, freq=258, tacan='38', variant='Boom'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kobuleti.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Alpha.lua ]]----------------- + +zones.alpha = ZoneCommand:new('Alpha') +zones.alpha.initialState = { side=2 } +zones.alpha:defineUpgrades({ + [1] = --red side + { + presets.upgrades.basic.tent:extend({ + name = 'alpha-tent-red', + products = { + presets.special.red.infantry:extend({ name='alpha-defense-red'}), + presets.defenses.red.infantry:extend({ name='alpha-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name = 'alpha-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({ name='alpha-supply-red'}), + presets.missions.supply.transfer:extend({name='alpha-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name = 'alpha-ammo-red', + products = { + presets.missions.attack.surface:extend({ name='alpha-assault-red'}) + } + }) + }, + [2] = --blue side + { + presets.upgrades.basic.tent:extend({ + name = 'alpha-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='alpha-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='alpha-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name = 'alpha-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({ name='alpha-supply-blue'}), + presets.missions.supply.transfer:extend({name='alpha-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name = 'alpha-ammo-blue', + products = { + presets.missions.attack.surface:extend({ name='alpha-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Alpha.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Foxtrot.lua ]]----------------- + +zones.foxtrot = ZoneCommand:new("Foxtrot") +zones.foxtrot.initialState = { side=2 } +zones.foxtrot:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='foxtrot-tent-red', + products = { + presets.special.red.infantry:extend({ name='foxtrot-defense-red'}), + presets.defenses.red.infantry:extend({ name='foxtrot-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='foxtrot-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='foxtrot-supply-red'}), + presets.missions.supply.transfer:extend({name='foxtrot-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='foxtrot-ammo-red', + products = { + presets.missions.attack.surface:extend({name='foxtrot-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='foxtrot-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='foxtrot-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='foxtrot-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='foxtrot-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='foxtrot-supply-blue'}), + presets.missions.supply.transfer:extend({name='foxtrot-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='foxtrot-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='foxtrot-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Foxtrot.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Sierra.lua ]]----------------- + +zones.sierra = ZoneCommand:new("Sierra") +zones.sierra.initialState = { side=1 } +zones.sierra.isHeloSpawn = true +zones.sierra:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='sierra-tent-red', + products = { + presets.special.red.infantry:extend({ name='sierra-defense-red'}), + presets.defenses.red.infantry:extend({ name='sierra-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='sierra-fuel-red', + products = { + presets.missions.supply.helo:extend({name='sierra-supply-red'}), + presets.missions.supply.helo:extend({name='sierra-supply-red-1'}), + presets.missions.supply.transfer:extend({name='sierra-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='sierra-comcenter-red', + products = { + presets.defenses.red.shorad:extend({name='sierra-sam-red'}), + presets.missions.attack.helo:extend({name='sierra-cas-red', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='sierra-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='sierra-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='sierra-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='sierra-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='sierra-supply-blue'}), + presets.missions.supply.helo:extend({name='sierra-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='sierra-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='sierra-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({name='sierra-sam-blue'}), + presets.missions.attack.helo:extend({name='sierra-cas-blue', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Sierra.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Oni.lua ]]----------------- + +zones.oni = ZoneCommand:new("Oni") +zones.oni.initialState = { side=1 } +zones.oni:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='oni-tent-red', + products = { + presets.special.red.infantry:extend({ name='oni-defense-red'}), + presets.defenses.red.infantry:extend({ name='oni-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='oni-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='oni-supply-red'}), + presets.missions.supply.helo:extend({name='oni-supply-red-2'}), + presets.missions.supply.transfer:extend({name='oni-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='oni-ammo-red', + products = { + presets.missions.attack.surface:extend({name='oni-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='oni-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='oni-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='oni-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='oni-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='oni-supply-blue'}), + presets.missions.supply.helo:extend({name='oni-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='oni-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='oni-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='oni-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Oni.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Hotel.lua ]]----------------- + +zones.hotel = ZoneCommand:new("Hotel") +zones.hotel.initialState = nil +zones.hotel:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='hotel-tent-red', + products = { + presets.special.red.infantry:extend({ name='hotel-defense-red'}), + presets.defenses.red.infantry:extend({ name='hotel-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='hotel-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='hotel-supply-red'}), + presets.missions.supply.transfer:extend({name='hotel-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='hotel-ammo-red', + products = { + presets.missions.attack.surface:extend({name='hotel-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='hotel-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='hotel-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='hotel-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='hotel-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='hotel-supply-blue'}), + presets.missions.supply.transfer:extend({name='hotel-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='hotel-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='hotel-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Hotel.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Victor.lua ]]----------------- + +zones.victor = ZoneCommand:new("Victor") +zones.victor.initialState = { side=1 } +zones.victor:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='victor-tent-red', + products = { + presets.special.red.infantry:extend({ name='victor-defense-red'}), + presets.defenses.red.infantry:extend({ name='victor-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='victor-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='victor-supply-red'}), + presets.missions.supply.helo:extend({name='victor-supply-red-2'}), + presets.missions.supply.transfer:extend({name='victor-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='victor-ammo-red', + products = { + presets.missions.attack.surface:extend({name='victor-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='victor-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='victor-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='victor-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='victor-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='victor-supply-blue'}), + presets.missions.supply.helo:extend({name='victor-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='victor-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='victor-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='victor-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Victor.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Tango.lua ]]----------------- + +zones.tango = ZoneCommand:new("Tango") +zones.tango.initialState = { side=1 } +zones.tango.isHeloSpawn = true +zones.tango:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='tango-tent-red', + products = { + presets.special.red.infantry:extend({ name='tango-defense-red'}), + presets.defenses.red.infantry:extend({ name='tango-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='tango-fuel-red', + products = { + presets.missions.supply.helo:extend({name='tango-supply-red'}), + presets.missions.supply.helo:extend({name='tango-supply-red-1'}), + presets.missions.supply.transfer:extend({name='tango-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='tango-comcenter-red', + products = { + presets.defenses.red.shorad:extend({name='tango-sam-red'}), + presets.missions.attack.helo:extend({name='tango-cas-red', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='tango-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='tango-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='tango-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='tango-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='tango-supply-blue'}), + presets.missions.supply.helo:extend({name='tango-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='tango-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='tango-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({name='tango-sam-blue'}), + presets.missions.attack.helo:extend({name='tango-cas-blue', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Tango.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Unal.lua ]]----------------- + +zones.unal = ZoneCommand:new("Unal") +zones.unal.initialState = { side=1 } +zones.unal.isHeloSpawn = true +zones.unal:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='unal-tent-red', + products = { + presets.special.red.infantry:extend({ name='unal-defense-red'}), + presets.defenses.red.infantry:extend({ name='unal-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='unal-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='unal-supply-red'}), + presets.missions.supply.helo:extend({name='unal-supply-red-2'}), + presets.missions.supply.transfer:extend({name='unal-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='unal-ammo-red', + products = { + presets.missions.attack.surface:extend({name='unal-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='unal-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='unal-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='unal-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='unal-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='unal-supply-blue'}), + presets.missions.supply.helo:extend({name='unal-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='unal-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='unal-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='unal-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Unal.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Beslan.lua ]]----------------- + +zones.beslan = ZoneCommand:new("Beslan") +zones.beslan.initialState = { side=1 } +zones.beslan.keepActive = true +zones.beslan.maxResource = 50000 +zones.beslan:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='beslan-compost-red', + products = { + presets.special.red.infantry:extend({ name='beslan-defense-red'}), + presets.defenses.red.infantry:extend({ name='beslan-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='beslan-fuel-red', + products = { + presets.missions.supply.helo:extend({name='beslan-supply-red-1'}), + presets.missions.supply.helo:extend({name='beslan-supply-red-2'}), + presets.missions.supply.convoy_escorted:extend({name='beslan-supply-red-3'}), + presets.missions.supply.transfer:extend({name='beslan-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='beslan-comcenter-red', + products = { + presets.defenses.red.sa5:extend({ name='beslan-airdef-red'}), + presets.missions.attack.sead:extend({name='beslan-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='beslan-strike-red', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='beslan-strike-red-1', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='beslan-patrol-red', altitude=25000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='beslan-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='beslan-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='beslan-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='beslan-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='beslan-supply-blue-1'}), + presets.missions.supply.helo:extend({name='beslan-supply-blue-2'}), + presets.missions.supply.convoy_escorted:extend({name='beslan-supply-blue-3'}), + presets.missions.supply.transfer:extend({name='beslan-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='beslan-comcenter-blue', + products = { + presets.defenses.blue.patriot:extend({ name='beslan-airdef-blue'}), + presets.missions.attack.sead:extend({name='beslan-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='beslan-strike-blue', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='beslan-strike-blue-1', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='beslan-patrol-blue', altitude=25000, range=25}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Beslan.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Bravo.lua ]]----------------- + +zones.bravo = ZoneCommand:new("Bravo") +zones.bravo.initialState = { side=2 } +zones.bravo:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='bravo-compost-red', + products = { + presets.special.red.infantry:extend({ name='bravo-defense-red'}), + presets.defenses.red.infantry:extend({ name='bravo-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='bravo-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({ name='bravo-supply-red'}), + presets.missions.supply.transfer:extend({name='bravo-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='bravo-comcenter-red', + products = { + presets.defenses.red.shorad:extend({ name='bravo-airdef-red'}), + presets.missions.attack.helo:extend({name='bravo-attack-red', altitude=200, expend=AI.Task.WeaponExpend.HALF}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='bravo-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='bravo-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='bravo-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='bravo-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({ name='bravo-supply-blue'}), + presets.missions.supply.transfer:extend({name='bravo-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='bravo-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({ name='bravo-airdef-blue'}), + presets.missions.attack.helo:extend({name='bravo-attack-blue', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Bravo.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/WeaponDepot.lua ]]----------------- + +zones.weapondepot = ZoneCommand:new("Weapon Depot") +zones.weapondepot.initialState = { side=1 } +zones.weapondepot:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='weapons-tent-red', + products = { + presets.special.red.infantry:extend({ name='weapons-defense-red'}), + presets.defenses.red.infantry:extend({ name='weapons-garrison-red'}) + } + }), + presets.upgrades.supply.ammoDepot:extend({ + name='weapons-ammo-red-1', + products = { + presets.missions.supply.convoy:extend({name='weapons-supply-red-1'}), + presets.missions.supply.transfer:extend({name='weapons-transfer-red-1'}) + } + }), + presets.upgrades.supply.ammoDepot:extend({ + name='weapons-ammo-red-2', + products = { + presets.missions.supply.convoy:extend({name='weapons-supply-red-2'}), + presets.missions.supply.transfer:extend({name='weapons-transfer-red-2'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='weapons-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='weapons-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='weapons-garrison-blue'}) + } + }), + presets.upgrades.supply.ammoDepot:extend({ + name='weapons-ammo-blue-1', + products = { + presets.missions.supply.convoy:extend({name='weapons-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='weapons-transfer-blue-1'}) + } + }), + presets.upgrades.supply.ammoDepot:extend({ + name='weapons-ammo-blue-2', + products = { + presets.missions.supply.convoy:extend({name='weapons-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='weapons-transfer-blue-2'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/WeaponDepot.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Delta.lua ]]----------------- + +zones.delta = ZoneCommand:new("Delta") +zones.delta.initialState = { side=2 } +zones.delta:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='delta-tent-red', + products = { + presets.special.red.infantry:extend({ name='delta-defense-red'}), + presets.defenses.red.infantry:extend({ name='delta-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='delta-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='delta-supply-red'}), + presets.missions.supply.transfer:extend({name='delta-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='delta-ammo-red', + products = { + presets.missions.attack.surface:extend({name='delta-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='delta-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='delta-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='delta-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='delta-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='delta-supply-blue'}), + presets.missions.supply.transfer:extend({name='delta-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='delta-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='delta-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Delta.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Cherkessk.lua ]]----------------- + +zones.cherkessk = ZoneCommand:new("Cherkessk") +zones.cherkessk.initialState = { side=1 } +zones.cherkessk.isHeloSpawn = true +zones.cherkessk:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='cherkessk-tent-red', + products = { + presets.special.red.infantry:extend({ name='cherkessk-defense-red'}), + presets.defenses.red.infantry:extend({ name='cherkessk-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='cherkessk-fuel-red', + products = { + presets.missions.supply.helo:extend({name='cherkessk-supply-red'}), + presets.missions.supply.helo:extend({name='cherkessk-supply-red-1'}), + presets.missions.supply.transfer:extend({name='cherkessk-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='cherkessk-comcenter-red', + products = { + presets.defenses.red.shorad:extend({name='cherkessk-sam-red'}), + presets.missions.attack.helo:extend({name='cherkessk-cas-red', altitude=200, expend=AI.Task.WeaponExpend.HALF }), + presets.missions.attack.helo:extend({name='cherkessk-cas-red-1', altitude=200, expend=AI.Task.WeaponExpend.HALF }), + presets.missions.attack.surface:extend({name='cherkessk-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='cherkessk-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='cherkessk-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='cherkessk-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='cherkessk-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='cherkessk-supply-blue'}), + presets.missions.supply.helo:extend({name='cherkessk-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='cherkessk-transfer-blue'}), + presets.missions.attack.surface:extend({name='cherkessk-assault-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='cherkessk-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({name='cherkessk-sam-blue'}), + presets.missions.attack.helo:extend({name='cherkessk-cas-blue', altitude=200, expend=AI.Task.WeaponExpend.HALF }), + presets.missions.attack.helo:extend({name='cherkessk-cas-blue-1', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Cherkessk.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Juliett.lua ]]----------------- + +zones.juliett = ZoneCommand:new("Juliett") +zones.initialState = nil +zones.juliett:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='juliett-tent-red', + products = { + presets.special.red.infantry:extend({ name='juliett-defense-red'}), + presets.defenses.red.infantry:extend({ name='juliett-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='juliett-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='juliett-supply-red'}), + presets.missions.supply.transfer:extend({name='juliett-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='juliett-ammo-red', + products = { + presets.missions.attack.surface:extend({name='juliett-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='juliett-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='juliett-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='juliett-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='juliett-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='juliett-supply-blue'}), + presets.missions.supply.transfer:extend({name='juliett-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='juliett-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='juliett-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Juliett.lua ]]----------------- + + + + cm = ConnectionManager:new() + cm:addConnection('Batumi', 'Alpha') + cm:addConnection('Alpha', 'Bravo') + cm:addConnection('Bravo', 'Kobuleti') + cm:addConnection('Bravo', 'Factory') + cm:addConnection('Kobuleti', 'Factory') + cm:addConnection('Kobuleti', 'Charlie') + cm:addConnection('Foxtrot', 'Charlie') + cm:addConnection('Foxtrot', 'Kobuleti') + cm:addConnection('Delta','Foxtrot') + cm:addConnection('Delta','Kobuleti') + cm:addConnection('Delta','Factory') + cm:addConnection('Echo','Charlie') + cm:addConnection('Golf','Echo') + cm:addConnection('Golf','Foxtrot') + cm:addConnection('India','Delta') + cm:addConnection('Hotel','Golf') + cm:addConnection('Hotel','Foxtrot') + cm:addConnection('Hotel','Delta') + cm:addConnection('Hotel','India') + cm:addConnection('Juliett','Echo') + cm:addConnection('Juliett','Golf') + cm:addConnection('Senaki','Juliett') + cm:addConnection('Senaki','Golf') + cm:addConnection('Senaki','Hotel') + cm:addConnection('Kutaisi','Hotel') + cm:addConnection('Kutaisi','India') + cm:addConnection('Kilo','Juliett') + cm:addConnection('Mike','Kutaisi') + cm:addConnection('Mike','Senaki') + cm:addConnection('Romeo','Mike') + cm:addConnection('Romeo','Kutaisi') + cm:addConnection('Weapon Depot','Juliett') + cm:addConnection('Weapon Depot','Senaki') + cm:addConnection('Weapon Depot','Kilo') + cm:addConnection('November','Weapon Depot') + cm:addConnection('November','Senaki') + cm:addConnection('November','Mike') + cm:addConnection('Oil Fields','Romeo') + cm:addConnection('Quebec','Kilo') + cm:addConnection('Zugdidi','Weapon Depot') + cm:addConnection('Zugdidi','Quebec') + cm:addConnection('Zugdidi','November') + cm:addConnection('Zugdidi','Kilo') + cm:addConnection('Distillery','November') + cm:addConnection('Distillery','Mike') + cm:addConnection('Zugdidi','Papa') + cm:addConnection('November','Papa') + cm:addConnection('Sierra','Papa') + cm:addConnection('Sierra','Zugdidi') + cm:addConnection('Sierra','Uniform') + cm:addConnection('Mine','Uniform') + cm:addConnection('Tango','Quebec') + cm:addConnection('Tango','Zugdidi') + cm:addConnection('Sierra','Tango') + cm:addConnection('Whiskey','Tango') + cm:addConnection('Ochamchira','Tango') + cm:addConnection('Ochamchira','Whiskey') + cm:addConnection('Ochamchira','Farm') + cm:addConnection('Ochamchira','Zulu') + cm:addConnection('Farm','Zulu') + cm:addConnection('Sukhumi','Zulu') + cm:addConnection('Lentehi','Distillery', true, 3000) + cm:addConnection('Lentehi','Babugent', true, 5000) + cm:addConnection('Nalchik','Babugent') + cm:addConnection('Victor','Distillery', true, 2000) + cm:addConnection('Victor','Romeo') + cm:addConnection('Victor','Lentehi') + cm:addConnection('Victor','Oil Fields', true, 2000) + cm:addConnection('Victor','Oni') + cm:addConnection('Unal','Oni', true, 4500) + cm:addConnection('Beslan','Unal') + cm:addConnection('Digora','Beslan') + cm:addConnection('Digora','Unal') + cm:addConnection('Digora','Babugent') + cm:addConnection('Terek','Digora') + cm:addConnection('Terek','Nalchik') + cm:addConnection('Terek','Beslan') + cm:addConnection('Prohladniy','Terek') + cm:addConnection('Prohladniy','Nalchik') + cm:addConnection('Malgobek','Terek') + cm:addConnection('Malgobek','Beslan') + cm:addConnection('Lima','Mine') + cm:addConnection('Lima','Lentehi', true, 4000) + cm:addConnection('Tyrnyauz','Lima', true, 4000) + cm:addConnection('Tyrnyauz','Nalchik') + cm:addConnection('XRay','Sukhumi') + cm:addConnection('Oscar','Sukhumi') + cm:addConnection('Oscar','XRay') + cm:addConnection('Mozdok','Malgobek') + cm:addConnection('Mozdok','Prohladniy') + cm:addConnection('Gudauta','Oscar') + cm:addConnection('Yankee','Gudauta') + cm:addConnection('Sochi','Yankee') + cm:addConnection('Refinery','XRay', true, 4000) + cm:addConnection('Refinery','Humara') + cm:addConnection('Intel Center','Tyrnyauz') + cm:addConnection('Intel Center','Nalchik') + cm:addConnection('Intel Center','Prohladniy') + cm:addConnection('Intel Center','Kislovodsk') + cm:addConnection('Mineralnye','Intel Center') + cm:addConnection('Kislovodsk','Mineralnye') + cm:addConnection('Tallyk','Mineralnye') + cm:addConnection('Tallyk','Kislovodsk') + cm:addConnection('Power Plant','Mineralnye') + cm:addConnection('Power Plant','Tallyk') + cm:addConnection('Cherkessk','Tallyk') + cm:addConnection('Cherkessk','Power Plant') + cm:addConnection('Cherkessk','Humara') +end + +ZoneCommand.setNeighbours(cm) + +bm = BattlefieldManager:new() + +mc = MarkerCommands:new() + +pt = PlayerTracker:new(mc) + +mt = MissionTracker:new(pt, mc) + +st = SquadTracker:new() + +ct = CSARTracker:new() + +pl = PlayerLogistics:new(mt, pt, st, ct) + +gci = GCI:new(2) + +gm = GroupMonitor:new(cm) +ZoneCommand.groupMonitor = gm + +-- PlayerLogistics:registerSquadGroup(squadType, groupname, weight,cost,jobtime,extracttime, squadSize) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.capture, 'capture-squad', 700, 200, 60, 60*30, 4) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.sabotage, 'sabotage-squad', 800, 500, 60*5, 60*30, 4) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.ambush, 'ambush-squad', 900, 300, 60*20, 60*30, 5) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.engineer, 'engineer-squad', 200, 1000,60, 60*30, 2) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.manpads, 'manpads-squad', 900, 500, 60*20, 60*30, 5) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.spy, 'spy-squad', 100, 300, 60*10, 60*30, 1) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.rapier, 'rapier-squad', 1200,2000,60*60, 60*30, 8) + +Group.getByName('jtacDrone'):destroy() +CommandFunctions.jtac = JTAC:new({name = 'jtacDrone'}) + +pm = PersistenceManager:new(savefile, gm, st, ct, pl) +pm:load() + +if pm:canRestore() then + pm:restoreZones() + pm:restoreAIMissions() + pm:restoreBattlefield() + pm:restoreCsar() + pm:restoreSquads() +else + --initial states + Starter.start(zones) +end + +timer.scheduleFunction(function(param, time) + pm:save() + env.info("Mission state saved") + return time+60 +end, zones, timer.getTime()+60) + + +--make sure support units are present where needed +ensureSpawn = { + ['golf-farp-suport'] = zones.golf, + ['november-farp-suport'] = zones.november, + ['tango-farp-suport'] = zones.tango, + ['sierra-farp-suport'] = zones.sierra, + ['cherkessk-farp-suport'] = zones.cherkessk, + ['unal-farp-suport'] = zones.unal, + ['tyrnyauz-farp-suport'] = zones.tyrnyauz +} + +for grname, zn in pairs(ensureSpawn) do + local g = Group.getByName(grname) + if g then g:destroy() end +end + +timer.scheduleFunction(function(param, time) + + for grname, zn in pairs(ensureSpawn) do + local g = Group.getByName(grname) + if zn.side == 2 then + if not g then + local err, msg = pcall(mist.respawnGroup,grname,true) + if not err then + env.info("ERROR spawning "..grname) + env.info(msg) + end + end + else + if g then g:destroy() end + end + end + + return time+30 +end, {}, timer.getTime()+30) + + +--supply injection +local blueSupply = {'offmap-supply-blue-1','offmap-supply-blue-2','offmap-supply-blue-3','offmap-supply-blue-4','offmap-supply-blue-5'} +local redSupply = {'offmap-supply-red-1','offmap-supply-red-2','offmap-supply-red-3','offmap-supply-red-4','offmap-supply-red-5'} +local offmapZones = { + zones.batumi, + zones.sochi, + zones.nalchik, + zones.beslan, + zones.mozdok, + zones.mineralnye, +-- zones.senaki, +-- zones.sukhumi, +-- zones.gudauta, +-- zones.kobuleti, +} + +supplyPointRegistry = { + blue = {}, + red = {} +} + +for i,v in ipairs(blueSupply) do + local g = Group.getByName(v) + if g then + supplyPointRegistry.blue[v] = g:getUnit(1):getPoint() + end +end + +for i,v in ipairs(redSupply) do + local g = Group.getByName(v) + if g then + supplyPointRegistry.red[v] = g:getUnit(1):getPoint() + end +end + +offmapSupplyRegistry = {} +timer.scheduleFunction(function(param, time) + local availableBlue = {} + for i,v in ipairs(param.blue) do + if offmapSupplyRegistry[v] == nil then + table.insert(availableBlue, v) + end + end + + local availableRed = {} + for i,v in ipairs(param.red) do + if offmapSupplyRegistry[v] == nil then + table.insert(availableRed, v) + end + end + + local redtargets = {} + local bluetargets = {} + for _, zn in ipairs(param.offmapZones) do + if zn:needsSupplies(3000) then + local isOnRoute = false + for _,data in pairs(offmapSupplyRegistry) do + if data.zone.name == zn.name then + isOnRoute = true + break + end + end + if not isOnRoute then + if zn.side == 1 then + table.insert(redtargets, zn) + elseif zn.side == 2 then + table.insert(bluetargets, zn) + end + end + end + end + + if #availableRed > 0 and #redtargets > 0 then + local zn = redtargets[math.random(1,#redtargets)] + + local red = nil + local minD = 999999999 + for i,v in ipairs(availableRed) do + local d = mist.utils.get2DDist(zn.zone.point, supplyPointRegistry.red[v]) + if d < minD then + red = v + minD = d + end + end + + if not red then red = availableRed[math.random(1,#availableRed)] end + + local gr = red + red = nil + mist.respawnGroup(gr, true) + offmapSupplyRegistry[gr] = {zone = zn, assigned = timer.getAbsTime()} + env.info(gr..' was deployed') + timer.scheduleFunction(function(param,time) + local g = Group.getByName(param.group) + TaskExtensions.landAtAirfield(g, param.target.zone.point) + env.info(param.group..' going to '..param.target.name) + end, {group=gr, target=zn}, timer.getTime()+2) + end + + if #availableBlue > 0 and #bluetargets>0 then + local zn = bluetargets[math.random(1,#bluetargets)] + + local blue = nil + local minD = 999999999 + for i,v in ipairs(availableBlue) do + local d = mist.utils.get2DDist(zn.zone.point, supplyPointRegistry.blue[v]) + if d < minD then + blue = v + minD = d + end + end + + if not blue then blue = availableBlue[math.random(1,#availableBlue)] end + + local gr = blue + blue = nil + mist.respawnGroup(gr, true) + offmapSupplyRegistry[gr] = {zone = zn, assigned = timer.getAbsTime()} + env.info(gr..' was deployed') + timer.scheduleFunction(function(param,time) + local g = Group.getByName(param.group) + TaskExtensions.landAtAirfield(g, param.target.zone.point) + env.info(param.group..' going to '..param.target.name) + end, {group=gr, target=zn}, timer.getTime()+2) + end + + return time+(60*5) +end, {blue = blueSupply, red = redSupply, offmapZones = offmapZones}, timer.getTime()+60) + + + +timer.scheduleFunction(function(param, time) + + for groupname,data in pairs(offmapSupplyRegistry) do + local gr = Group.getByName(groupname) + if not gr then + offmapSupplyRegistry[groupname] = nil + env.info(groupname..' was destroyed') + end + + if gr and ((timer.getAbsTime() - data.assigned) > (60*60)) then + gr:destroy() + offmapSupplyRegistry[groupname] = nil + env.info(groupname..' despawned due to being alive for too long') + end + + if gr and Utils.allGroupIsLanded(gr) and Utils.someOfGroupInZone(gr, data.zone.name) then + data.zone:addResource(15000) + gr:destroy() + offmapSupplyRegistry[groupname] = nil + env.info(groupname..' landed at '..data.zone.name..' and delivered 15000 resources') + end + end + + return time+180 +end, {}, timer.getTime()+180) \ No newline at end of file diff --git a/resources/plugins/pretense/init_header.lua b/resources/plugins/pretense/init_header.lua new file mode 100644 index 00000000..9df8452d --- /dev/null +++ b/resources/plugins/pretense/init_header.lua @@ -0,0 +1,4670 @@ + + +local savefile = 'pretense_1.1.json' +if lfs then + local dir = lfs.writedir()..'Missions/Saves/' + lfs.mkdir(dir) + savefile = dir..savefile + env.info('Pretense - Save file path: '..savefile) +end + + +do + TemplateDB.templates["infantry-red"] = { + units = { + "BTR_D", + "T-90", + "T-90", + "Infantry AK ver2", + "Infantry AK", + "Infantry AK", + "Paratrooper RPG-16", + "Infantry AK ver3", + "SA-18 Igla manpad" + }, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["infantry-blue"] = { + units = { + "M1045 HMMWV TOW", + "Soldier stinger", + "Soldier M4 GRG", + "Soldier M4 GRG", + "Soldier M4 GRG", + "Soldier M4 GRG", + "Soldier M4 GRG", + "M1043 HMMWV Armament" + }, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["defense-red"] = { + units = { + "Infantry AK ver2", + "Infantry AK", + "Infantry AK ver3", + "Paratrooper RPG-16", + "SA-18 Igla manpad" + }, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["defense-blue"] = { + units = { + "Soldier M4 GRG", + "Soldier M4 GRG", + "Soldier M4 GRG", + "Soldier RPG", + "Soldier stinger", + }, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["shorad-red"] = { + units = { + "Strela-10M3", + "Strela-10M3", + "Ural-4320T", + "2S6 Tunguska" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["shorad-blue"] = { + units = { + "Roland ADS", + "M48 Chaparral", + "M 818", + "Gepard", + "Gepard" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sam-red"] = { + units = { + "p-19 s-125 sr", + "Ural-4320T", + "Ural-4320T", + "S_75M_Volhov", + "S_75M_Volhov", + "S_75M_Volhov", + "S_75M_Volhov", + "S_75M_Volhov", + "Tor 9A331", + "SNR_75V" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sam-blue"] = { + units = { + "Hawk pcp", + "Hawk cwar", + "Hawk ln", + "Hawk ln", + "Hawk ln", + "Hawk ln", + "Hawk ln", + "Hawk tr", + "M 818", + "Hawk sr" + }, + maxDist = 300, + skill = "Good", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["patriot"] = { + units = { + "Patriot cp", + "Patriot str", + "M 818", + "M 818", + "Patriot ln", + "Patriot ln", + "Patriot ln", + "Patriot ln", + "Patriot str", + "Patriot str", + "Patriot str", + "Patriot EPP", + "Patriot ECS", + "Patriot AMG" + }, + maxDist = 300, + skill = "Good", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sa3"] = { + units = { + "p-19 s-125 sr", + "snr s-125 tr", + "5p73 s-125 ln", + "5p73 s-125 ln", + "Ural-4320T", + "5p73 s-125 ln", + "5p73 s-125 ln" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sa6"] = { + units = { + "Kub 1S91 str", + "Kub 2P25 ln", + "Kub 2P25 ln", + "Kub 2P25 ln", + "Kub 2P25 ln", + "2S6 Tunguska", + "Ural-4320T", + "2S6 Tunguska", + "Kub 2P25 ln" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sa10"] = { + units = { + "S-300PS 54K6 cp", + "S-300PS 5P85C ln", + "S-300PS 5P85C ln", + "S-300PS 5P85C ln", + "GAZ-66", + "GAZ-66", + "GAZ-66", + "S-300PS 5P85C ln", + "S-300PS 5P85C ln", + "S-300PS 5P85C ln", + "S-300PS 40B6MD sr", + "S-300PS 40B6M tr", + "S-300PS 64H6E sr" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sa5"] = { + units = { + "RLS_19J6", + "Ural-4320T", + "Ural-4320T", + "RPC_5N62V", + "S-200_Launcher", + "S-200_Launcher", + "S-200_Launcher", + "S-200_Launcher", + "S-200_Launcher", + "S-200_Launcher" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["sa11"] = { + units = { + "SA-11 Buk SR 9S18M1", + "SA-11 Buk LN 9A310M1", + "SA-11 Buk LN 9A310M1", + "SA-11 Buk LN 9A310M1", + "SA-11 Buk LN 9A310M1", + "SA-11 Buk LN 9A310M1", + "2S6 Tunguska", + "SA-11 Buk SR 9S18M1", + "GAZ-66", + "GAZ-66", + "SA-11 Buk CC 9S470M1" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } + + TemplateDB.templates["nasams"] = { + units = { + "NASAMS_Command_Post", + "NASAMS_Radar_MPQ64F1", + "Vulcan", + "M 818", + "M 818", + "Roland ADS", + "Roland ADS", + "NASAMS_LN_C", + "NASAMS_LN_C", + "NASAMS_LN_C", + "NASAMS_LN_C", + "NASAMS_Radar_MPQ64F1", + "NASAMS_Radar_MPQ64F1", + "NASAMS_Radar_MPQ64F1" + }, + maxDist = 300, + skill = "Excellent", + dataCategory= TemplateDB.type.group + } +end + +presets = { + upgrades = { + basic = { + tent = Preset:new({ + display = 'Tent', + cost = 1500, + type = 'upgrade', + template = "tent" + }), + comPost = Preset:new({ + display = 'Barracks', + cost = 1500, + type = 'upgrade', + template = "barracks" + }), + outpost = Preset:new({ + display = 'Outpost', + cost = 1500, + type = 'upgrade', + template = "outpost" + }) + }, + attack = { + ammoCache = Preset:new({ + display = 'Ammo Cache', + cost = 1500, + type = 'upgrade', + template = "ammo-cache" + }), + ammoDepot = Preset:new({ + display = 'Ammo Depot', + cost = 2000, + type = 'upgrade', + template = "ammo-depot" + }) + }, + supply = { + fuelCache = Preset:new({ + display = 'Fuel Cache', + cost = 1500, + type = 'upgrade', + template = "fuel-cache" + }), + fuelTank = Preset:new({ + display = 'Fuel Tank', + cost = 1500, + type = 'upgrade', + template = "fuel-tank-big" + }), + fuelTankFarp = Preset:new({ + display = 'Fuel Tank', + cost = 1500, + type = 'upgrade', + template = "fuel-tank-small" + }), + factory1 = Preset:new({ + display='Factory', + cost = 2000, + type ='upgrade', + income = 20, + template = "factory-1" + }), + factory2 = Preset:new({ + display='Factory', + cost = 2000, + type ='upgrade', + income = 20, + template = "factory-2" + }), + factoryTank = Preset:new({ + display='Storage Tank', + cost = 1500, + type ='upgrade', + income = 10, + template = "chem-tank" + }), + ammoDepot = Preset:new({ + display = 'Ammo Depot', + cost = 2000, + type = 'upgrade', + income = 40, + template = "ammo-depot" + }), + oilPump = Preset:new({ + display = 'Oil Pump', + cost = 1500, + type = 'upgrade', + income = 20, + template = "oil-pump" + }), + hangar = Preset:new({ + display = 'Hangar', + cost = 2000, + type = 'upgrade', + income = 30, + template = "hangar" + }), + excavator = Preset:new({ + display = 'Excavator', + cost = 2000, + type = 'upgrade', + income = 20, + template = "excavator" + }), + farm1 = Preset:new({ + display = 'Farm House', + cost = 2000, + type = 'upgrade', + income = 40, + template = "farm-house-1" + }), + farm2 = Preset:new({ + display = 'Farm House', + cost = 2000, + type = 'upgrade', + income = 40, + template = "farm-house-2" + }), + refinery1 = Preset:new({ + display='Refinery', + cost = 2000, + type ='upgrade', + income = 100, + template = "factory-1" + }), + powerplant1 = Preset:new({ + display='Power Plant', + cost = 1500, + type ='upgrade', + income = 25, + template = "factory-1" + }), + powerplant2 = Preset:new({ + display='Power Plant', + cost = 1500, + type ='upgrade', + income = 25, + template = "factory-2" + }), + antenna = Preset:new({ + display='Antenna', + cost = 1000, + type ='upgrade', + income = 10, + template = "antenna" + }), + hq = Preset:new({ + display='HQ Building', + cost = 2000, + type ='upgrade', + income = 50, + template = "tv-tower" + }) + }, + airdef = { + comCenter = Preset:new({ + display = 'Command Center', + cost = 2500, + type = 'upgrade', + template = "command-center" + }) + } + }, + defenses = { + red = { + infantry = Preset:new({ + display = 'Infantry', + cost=2000, + type='defense', + template='infantry-red', + }), + shorad = Preset:new({ + display = 'SAM', + cost=2500, + type='defense', + template='shorad-red', + }), + sam = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sam-red', + }), + sa10 = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sa10', + }), + sa5 = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sa5', + }), + sa3 = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sa3', + }), + sa6 = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sa6', + }), + sa11 = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sa11', + }) + }, + blue = { + infantry = Preset:new({ + display = 'Infantry', + cost=2000, + type='defense', + template='infantry-blue', + }), + shorad = Preset:new({ + display = 'SAM', + cost=2500, + type='defense', + template='shorad-blue', + }), + sam = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='sam-blue', + }), + patriot = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='patriot', + }), + nasams = Preset:new({ + display = 'SAM', + cost=3000, + type='defense', + template='nasams', + }) + } + }, + missions = { + supply = { + convoy = Preset:new({ + display = 'Supply convoy', + cost = 4000, + type = 'mission', + missionType = ZoneCommand.missionTypes.supply_convoy + }), + convoy_escorted = Preset:new({ + display = 'Supply convoy', + cost = 3000, + type = 'mission', + missionType = ZoneCommand.missionTypes.supply_convoy + }), + helo = Preset:new({ + display = 'Supply helicopter', + cost = 2500, + type='mission', + missionType = ZoneCommand.missionTypes.supply_air + }), + transfer = Preset:new({ + display = 'Supply transfer', + cost = 1000, + type='mission', + missionType = ZoneCommand.missionTypes.supply_transfer + }) + }, + attack = { + surface = Preset:new({ + display = 'Ground assault', + cost = 100, + type = 'mission', + missionType = ZoneCommand.missionTypes.assault, + }), + cas = Preset:new({ + display = 'CAS', + cost = 200, + type='mission', + missionType = ZoneCommand.missionTypes.cas + }), + bai = Preset:new({ + display = 'BAI', + cost = 200, + type='mission', + missionType = ZoneCommand.missionTypes.bai + }), + strike = Preset:new({ + display = 'Strike', + cost = 300, + type='mission', + missionType = ZoneCommand.missionTypes.strike + }), + sead = Preset:new({ + display = 'SEAD', + cost = 200, + type='mission', + missionType = ZoneCommand.missionTypes.sead + }), + helo = Preset:new({ + display = 'CAS', + cost = 100, + type='mission', + missionType = ZoneCommand.missionTypes.cas_helo + }) + }, + patrol={ + aircraft = Preset:new({ + display= "Patrol", + cost = 100, + type='mission', + missionType = ZoneCommand.missionTypes.patrol + }) + }, + support ={ + awacs = Preset:new({ + display= "AWACS", + cost = 300, + type='mission', + bias='5', + missionType = ZoneCommand.missionTypes.awacs + }), + tanker = Preset:new({ + display= "Tanker", + cost = 200, + type='mission', + bias='2', + missionType = ZoneCommand.missionTypes.tanker + }) + } + }, + special = { + red = { + infantry = Preset:new({ + display = 'Infantry', + cost=-1, + type='defense', + template='defense-red', + }), + }, + blue = { + infantry = Preset:new({ + display = 'Infantry', + cost=-1, + type='defense', + template='defense-blue', + }) + } + } +} + +zones = {} +do + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Batumi.lua ]]----------------- + +zones.batumi = ZoneCommand:new('Batumi') +zones.batumi.initialState = { side=2 } +zones.batumi.keepActive = true +zones.batumi.isHeloSpawn = true +zones.batumi.isPlaneSpawn = true +zones.batumi.maxResource = 50000 +zones.batumi:defineUpgrades({ + [1] = { --red side + presets.upgrades.basic.comPost:extend({ + name = 'batumi-com-red', + products = { + presets.special.red.infantry:extend({ name='batumi-defense-red'}), + presets.defenses.red.infantry:extend({ name='batumi-garrison-red' }) + } + }), + }, + [2] = --blue side + { + presets.upgrades.basic.comPost:extend({ + name = 'batumi-com-blue', + products = { + presets.special.blue.infantry:extend({ name='batumi-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='batumi-garrison-blue' }) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name = 'batumi-fueltank-blue', + products = { + presets.missions.supply.convoy_escorted:extend({ name='batumi-supply-convoy-1'}), + presets.missions.supply.helo:extend({ name='batumi-supply-blue-1' }), + presets.missions.supply.transfer:extend({name='batumi-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name = 'batumi-mission-command-blue', + products = { + presets.defenses.blue.shorad:extend({ name='batumi-sam-blue' }), + presets.missions.attack.sead:extend({name='batumi-sead-blue-1', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='batumi-cas-blue-1', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='batumi-cas-blue-1', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='batumi-strike-blue-1', altitude=20000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='batumi-patrol-blue-1', altitude=25000, range=25}), + presets.missions.support.awacs:extend({name='batumi-awacs-blue', altitude=30000, freq=257.5}), + presets.missions.support.tanker:extend({name='batumi-tanker-blue', altitude=25000, freq=257, tacan='37', variant="Drogue"}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Batumi.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mike.lua ]]----------------- + +zones.mike = ZoneCommand:new("Mike") +zones.mike.initialState = { side=1 } +zones.mike.keepActive = true +zones.mike:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='mike-tent-red', + products = { + presets.special.red.infantry:extend({ name='mike-defense-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='mike-comcenter-red', + products = { + presets.defenses.red.sam:extend({ name='mike-sam-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='mike-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='mike-defense-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='mike-comcenter-blue', + products = { + presets.defenses.blue.sam:extend({ name='mike-sam-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mike.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Tyrnyauz.lua ]]----------------- + +zones.tyrnyauz = ZoneCommand:new("Tyrnyauz") +zones.tyrnyauz.initialState = { side=1 } +zones.tyrnyauz.isHeloSpawn = true +zones.tyrnyauz:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='tyrnyauz-tent-red', + products = { + presets.special.red.infantry:extend({ name='tyrnyauz-defense-red'}), + presets.defenses.red.infantry:extend({ name='tyrnyauz-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='tyrnyauz-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='tyrnyauz-supply-red'}), + presets.missions.supply.helo:extend({name='tyrnyauz-supply-red-2'}), + presets.missions.supply.transfer:extend({name='tyrnyauz-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='tyrnyauz-ammo-red', + products = { + presets.missions.attack.surface:extend({name='tyrnyauz-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='tyrnyauz-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='tyrnyauz-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='tyrnyauz-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='tyrnyauz-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='tyrnyauz-supply-blue'}), + presets.missions.supply.helo:extend({name='tyrnyauz-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='tyrnyauz-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='tyrnyauz-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='tyrnyauz-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Tyrnyauz.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/India.lua ]]----------------- + +zones.india = ZoneCommand:new("India") +zones.india.initialState = nil +zones.india:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='india-tent-red', + products = { + presets.special.red.infantry:extend({ name='india-defense-red'}), + presets.defenses.red.infantry:extend({ name='india-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='india-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='india-supply-red'}), + presets.missions.supply.transfer:extend({name='india-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='india-ammo-red', + products = { + presets.missions.attack.surface:extend({name='india-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='india-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='india-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='india-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='india-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='india-supply-blue'}), + presets.missions.supply.transfer:extend({name='india-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='india-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='india-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/India.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/IntelCenter.lua ]]----------------- + +zones.intelcenter = ZoneCommand:new("Intel Center") +zones.intelcenter.initialState = { side=1 } +zones.intelcenter:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='intelcenter-tent-red', + products = { + presets.special.red.infantry:extend({ name='intelcenter-defense-red'}), + presets.defenses.red.infantry:extend({ name='intelcenter-garrison-red'}) + } + }), + presets.upgrades.supply.hq:extend({ + name='intelcenter-hq-red', + products = { + presets.missions.supply.convoy:extend({ name='intelcenter-supply-red'}), + presets.missions.supply.convoy:extend({ name='intelcenter-supply-red-1'}), + presets.missions.supply.transfer:extend({name='intelcenter-transfer-red'}) + } + }), + presets.upgrades.supply.antenna:extend({ + name='intelcenter-antenna-red', + products = { + } + }), + presets.upgrades.supply.antenna:extend({ + name='intelcenter-antenna-red-1', + products = { + } + }), + presets.upgrades.supply.antenna:extend({ + name='intelcenter-antenna-red-2', + products = { + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='intelcenter-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='intelcenter-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='intelcenter-garrison-blue'}) + } + }), + presets.upgrades.supply.hq:extend({ + name='intelcenter-hq-blue', + products = { + presets.missions.supply.convoy:extend({ name='intelcenter-supply-blue'}), + presets.missions.supply.convoy:extend({ name='intelcenter-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='intelcenter-transfer-blue'}) + } + }), + presets.upgrades.supply.antenna:extend({ + name='intelcenter-antenna-blue', + products = { + } + }), + presets.upgrades.supply.antenna:extend({ + name='intelcenter-antenna-blue-1', + products = { + } + }), + presets.upgrades.supply.antenna:extend({ + name='intelcenter-antenna-blue-2', + products = { + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/IntelCenter.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mineralnye.lua ]]----------------- + +zones.mineralnye = ZoneCommand:new("Mineralnye") +zones.mineralnye.initialState = { side=1 } +zones.mineralnye.keepActive = true +zones.mineralnye.isHeloSpawn = true +zones.mineralnye.isPlaneSpawn = true +zones.mineralnye:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='mineralnye-compost-red', + products = { + presets.special.red.infantry:extend({ name='mineralnye-defense-red'}), + presets.defenses.red.infantry:extend({ name='mineralnye-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='mineralnye-fuel-red', + products = { + presets.missions.supply.helo:extend({name='mineralnye-supply-red'}), + presets.missions.supply.helo:extend({name='mineralnye-supply-red-1'}), + presets.missions.supply.transfer:extend({name='mineralnye-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='mineralnye-comcenter-red', + products = { + presets.defenses.red.sa11:extend({ name='mineralnye-airdef-red'}), + presets.missions.attack.cas:extend({name='mineralnye-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='mineralnye-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='mineralnye-strike-red', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='mineralnye-strike-red-1', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='mineralnye-patrol-red', altitude=25000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='mineralnye-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='mineralnye-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='mineralnye-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='mineralnye-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='mineralnye-supply-blue'}), + presets.missions.supply.helo:extend({name='mineralnye-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='mineralnye-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='mineralnye-comcenter-blue', + products = { + presets.defenses.blue.nasams:extend({ name='mineralnye-airdef-blue'}), + presets.missions.attack.cas:extend({name='mineralnye-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='mineralnye-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='mineralnye-strike-blue', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='mineralnye-strike-blue-1', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='mineralnye-patrol-blue', altitude=25000, range=25}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mineralnye.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/PowerPlant.lua ]]----------------- + +zones.powerplant = ZoneCommand:new("Power Plant") +zones.powerplant.initialState = { side=1 } +zones.powerplant:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='powerplant-tent-red', + products = { + presets.special.red.infantry:extend({ name='powerplant-defense-red'}), + presets.defenses.red.infantry:extend({ name='powerplant-garrison-red'}) + } + }), + presets.upgrades.supply.powerplant1:extend({ + name='powerplant-building-red-1', + products = { + presets.missions.supply.convoy:extend({ name='powerplant-supply-red'}), + presets.missions.supply.transfer:extend({name='powerplant-transfer-red'}) + } + }), + presets.upgrades.supply.powerplant2:extend({ + name='powerplant-building-red-2', + products = { + presets.missions.supply.convoy:extend({ name='powerplant-supply-red-1'}), + presets.missions.supply.transfer:extend({name='powerplant-transfer-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='powerplant-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='powerplant-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='powerplant-garrison-blue'}) + } + }), + presets.upgrades.supply.powerplant1:extend({ + name='powerplant-building-blue-1', + products = { + presets.missions.supply.convoy:extend({ name='powerplant-supply-blue'}), + presets.missions.supply.transfer:extend({name='powerplant-transfer-blue'}) + } + }), + presets.upgrades.supply.powerplant2:extend({ + name='powerplant-building-blue-2', + products = { + presets.missions.supply.convoy:extend({ name='powerplant-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='powerplant-transfer-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/PowerPlant.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Zugdidi.lua ]]----------------- + +zones.zugdidi = ZoneCommand:new("Zugdidi") +zones.zugdidi.initialState = { side=1 } +zones.zugdidi:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='zugdidi-compost-red', + products = { + presets.missions.supply.transfer:extend({name='zugdidi-transfer-red'}), + presets.special.red.infantry:extend({ name='zugdidi-defense-red'}), + presets.defenses.red.infantry:extend({ name='zugdidi-garrison-red'}), + presets.missions.attack.surface:extend({name='zugdidi-attack-red'}), + presets.missions.supply.convoy:extend({name='zugdidi-supply-red'}) + } + }), + presets.upgrades.supply.hangar:extend({ + name='zugdidi-hangar-red-1', + products = { + presets.missions.supply.helo:extend({name='zugdidi-supply-red-1'}) + } + }), + presets.upgrades.supply.hangar:extend({ + name='zugdidi-hangar-red-2', + products = { + presets.missions.supply.helo:extend({name='zugdidi-supply-red-2'}) + } + }), + presets.upgrades.supply.hangar:extend({ + name='zugdidi-hangar-red-3', + products = { + presets.missions.supply.helo:extend({name='zugdidi-supply-red-3'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='zugdidi-comcenter-red', + products = { + presets.defenses.red.sa6:extend({ name='zugdidi-sam-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='zugdidi-compost-blue', + products = { + presets.missions.supply.transfer:extend({name='zugdidi-transfer-blue'}), + presets.special.blue.infantry:extend({ name='zugdidi-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='zugdidi-garrison-blue'}), + presets.missions.attack.surface:extend({name='zugdidi-attack-blue'}), + presets.missions.supply.convoy:extend({name='zugdidi-supply-blue'}) + } + }), + presets.upgrades.supply.hangar:extend({ + name='zugdidi-hangar-blue-1', + products = { + presets.missions.supply.helo:extend({name='zugdidi-supply-blue-1'}) + } + }), + presets.upgrades.supply.hangar:extend({ + name='zugdidi-hangar-blue-2', + products = { + presets.missions.supply.helo:extend({name='zugdidi-supply-blue-2'}) + } + }), + presets.upgrades.supply.hangar:extend({ + name='zugdidi-hangar-blue-3', + products = { + presets.missions.supply.helo:extend({name='zugdidi-supply-blue-3'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='zugdidi-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({ name='zugdidi-sam-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Zugdidi.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Babugent.lua ]]----------------- + +zones.babugent = ZoneCommand:new("Babugent") +zones.babugent.initialState = { side=1 } +zones.babugent:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='babugent-tent-red', + products = { + presets.special.red.infantry:extend({ name='babugent-defense-red'}), + presets.defenses.red.infantry:extend({ name='babugent-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='babugent-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='babugent-supply-red'}), + presets.missions.supply.helo:extend({name='babugent-supply-red-2'}), + presets.missions.supply.transfer:extend({name='babugent-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='babugent-ammo-red', + products = { + presets.missions.attack.surface:extend({name='babugent-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='babugent-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='babugent-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='babugent-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='babugent-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='babugent-supply-blue'}), + presets.missions.supply.helo:extend({name='babugent-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='babugent-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='babugent-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='babugent-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Babugent.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kislovodsk.lua ]]----------------- + +zones.kislovodsk = ZoneCommand:new("Kislovodsk") +zones.kislovodsk.initialState = { side=1 } +zones.kislovodsk:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='kislovodsk-tent-red', + products = { + presets.special.red.infantry:extend({ name='kislovodsk-defense-red'}), + presets.defenses.red.infantry:extend({ name='kislovodsk-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='kislovodsk-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='kislovodsk-supply-red'}), + presets.missions.supply.transfer:extend({name='kislovodsk-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='kislovodsk-ammo-red', + products = { + presets.missions.attack.surface:extend({name='kislovodsk-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='kislovodsk-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='kislovodsk-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='kislovodsk-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='kislovodsk-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='kislovodsk-supply-blue'}), + presets.missions.supply.transfer:extend({name='kislovodsk-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='kislovodsk-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='kislovodsk-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kislovodsk.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Gudauta.lua ]]----------------- + +zones.gudauta = ZoneCommand:new("Gudauta") +zones.gudauta.initialState = { side=1 } +zones.gudauta.keepActive = true +zones.gudauta.maxResource = 50000 +zones.gudauta:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='gudauta-compost-red', + products = { + presets.special.red.infantry:extend({ name='gudauta-defense-red'}), + presets.defenses.red.infantry:extend({ name='gudauta-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='gudauta-fuel-red', + products = { + presets.missions.supply.helo:extend({name='gudauta-supply-red'}), + presets.missions.supply.helo:extend({name='gudauta-supply-red-1'}), + presets.missions.supply.transfer:extend({name='gudauta-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='gudauta-comcenter-red', + products = { + presets.defenses.red.sam:extend({ name='gudauta-airdef-red'}), + presets.missions.attack.sead:extend({name='gudauta-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.sead:extend({name='gudauta-sead-red-1', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='gudauta-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='gudauta-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.patrol.aircraft:extend({name='gudauta-patrol-red', altitude=25000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='gudauta-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='gudauta-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='gudauta-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='gudauta-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='gudauta-supply-blue'}), + presets.missions.supply.helo:extend({name='gudauta-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='gudauta-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='gudauta-comcenter-blue', + products = { + presets.defenses.blue.sam:extend({ name='gudauta-airdef-blue'}), + presets.missions.attack.sead:extend({name='gudauta-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.sead:extend({name='gudauta-sead-blue-1', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='gudauta-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='gudauta-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.patrol.aircraft:extend({name='gudauta-patrol-blue', altitude=25000, range=25}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Gudauta.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Distillery.lua ]]----------------- + +zones.distillery = ZoneCommand:new("Distillery") +zones.distillery.initialState = { side=1 } +zones.distillery:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='distillery-tent-red', + products = { + presets.special.red.infantry:extend({ name='distillery-defense-red'}), + presets.defenses.red.infantry:extend({ name='distillery-garrison-red'}) + } + }), + presets.upgrades.supply.factory1:extend({ + name='distillery-prod-red-1', + products = { + presets.missions.supply.convoy:extend({ name='distillery-supply-red-1'}), + presets.missions.supply.transfer:extend({name='distillery-transfer-red'}) + } + }), + presets.upgrades.supply.factory2:extend({ + name='distillery-prod-red-2', + products = { + presets.missions.supply.convoy:extend({ name='distillery-supply-red-2', cost=2000}), + presets.missions.supply.transfer:extend({name='distillery-transfer-red2'}) + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='distillery-tank-red-1', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='distillery-tank-red-2', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='distillery-tank-red-3', + products = { + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='distillery-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='distillery-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='distillery-garrison-blue'}) + } + }), + presets.upgrades.supply.factory1:extend({ + name='distillery-prod-blue-1', + products = { + presets.missions.supply.convoy:extend({ name='distillery-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='distillery-transfer-blue'}) + } + }), + presets.upgrades.supply.factory2:extend({ + name='distillery-prod-blue-2', + products = { + presets.missions.supply.convoy:extend({ name='distillery-supply-blue-2', cost=2000}), + presets.missions.supply.transfer:extend({name='distillery-transfer-blue2'}) + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='distillery-tank-blue-1', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='distillery-tank-blue-2', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='distillery-tank-blue-3', + products = { + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Distillery.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Sochi.lua ]]----------------- + +zones.sochi = ZoneCommand:new("Sochi") +zones.sochi.initialState = { side=1 } +zones.sochi.keepActive = true +zones.sochi.maxResource = 50000 +zones.sochi:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='sochi-compost-red', + products = { + presets.special.red.infantry:extend({ name='sochi-defense-red'}), + presets.defenses.red.infantry:extend({ name='sochi-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='sochi-fuel-red', + products = { + presets.missions.supply.helo:extend({name='sochi-supply-red-1'}), + presets.missions.supply.helo:extend({name='sochi-supply-red-2'}), + presets.missions.supply.convoy_escorted:extend({name='sochi-supply-red-3'}), + presets.missions.supply.transfer:extend({name='sochi-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='sochi-comcenter-red', + products = { + presets.defenses.red.sa10:extend({ name='sochi-airdef-red'}), + presets.missions.attack.sead:extend({name='sochi-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='sochi-strike-red', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='sochi-patrol-red', altitude=25000, range=25}), + presets.missions.patrol.aircraft:extend({name='sochi-patrol-red-1', altitude=25000, range=25}), + presets.missions.attack.cas:extend({name='sochi-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='sochi-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='sochi-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='sochi-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='sochi-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='sochi-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='sochi-supply-blue-1'}), + presets.missions.supply.helo:extend({name='sochi-supply-blue-2'}), + presets.missions.supply.convoy_escorted:extend({name='sochi-supply-blue-3'}), + presets.missions.supply.transfer:extend({name='sochi-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='sochi-comcenter-blue', + products = { + presets.defenses.blue.patriot:extend({ name='sochi-airdef-blue'}), + presets.missions.attack.sead:extend({name='sochi-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='sochi-strike-blue', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='sochi-patrol-blue', altitude=25000, range=25}), + presets.missions.attack.cas:extend({name='sochi-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='sochi-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Sochi.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Golf.lua ]]----------------- + +zones.golf = ZoneCommand:new("Golf") +zones.golf.initialState = nil +zones.golf.isHeloSpawn = true +zones.golf:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='golf-tent-red', + products = { + presets.special.red.infantry:extend({ name='golf-defense-red'}), + presets.defenses.red.infantry:extend({ name='golf-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='golf-fuel-red', + products = { + presets.missions.supply.helo:extend({name='golf-supply-red'}), + presets.missions.supply.helo:extend({name='golf-supply-red-1'}), + presets.missions.supply.transfer:extend({name='golf-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='golf-comcenter-red', + products = { + presets.defenses.red.shorad:extend({name='golf-sam-red'}), + presets.missions.attack.helo:extend({name='golf-cas-red', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='golf-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='golf-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='golf-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='golf-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='golf-supply-blue'}), + presets.missions.supply.helo:extend({name='golf-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='golf-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='golf-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({name='golf-sam-blue'}), + presets.missions.attack.helo:extend({name='golf-cas-blue', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Golf.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Charlie.lua ]]----------------- + +zones.charlie = ZoneCommand:new("Charlie") +zones.charlie.initialState = { side=2 } +zones.charlie.keepActive = true +zones.charlie:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='charlie-tent-red', + products = { + presets.special.red.infantry:extend({ name='charlie-defense-red'}), + presets.defenses.red.infantry:extend({ name='charlie-garrison-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='charlie-comcenter-red', + products = { + presets.defenses.red.sam:extend({ name='charlie-sam-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='charlie-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='charlie-defense-red'}), + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='charlie-comcenter-blue', + products = { + presets.defenses.blue.sam:extend({ name='charlie-sam-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Charlie.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Lentehi.lua ]]----------------- + +zones.lentehi = ZoneCommand:new("Lentehi") +zones.lentehi.initialState = { side=1 } +zones.lentehi:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='lentehi-tent-red', + products = { + presets.special.red.infantry:extend({ name='lentehi-defense-red'}), + presets.defenses.red.infantry:extend({ name='lentehi-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='lentehi-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='lentehi-supply-red'}), + presets.missions.supply.helo:extend({name='lentehi-supply-red-2'}), + presets.missions.supply.transfer:extend({name='lentehi-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='lentehi-ammo-red', + products = { + presets.missions.attack.surface:extend({name='lentehi-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='lentehi-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='lentehi-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='lentehi-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='lentehi-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='lentehi-supply-blue'}), + presets.missions.supply.helo:extend({name='lentehi-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='lentehi-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='lentehi-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='lentehi-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Lentehi.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Refinery.lua ]]----------------- + +zones.refinery = ZoneCommand:new("Refinery") +zones.refinery.initialState = { side=1 } +zones.refinery:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='refinery-tent-red', + products = { + presets.special.red.infantry:extend({ name='refinery-defense-red'}), + presets.defenses.red.infantry:extend({ name='refinery-garrison-red'}) + } + }), + presets.upgrades.supply.refinery1:extend({ + name='refinery-building-red', + products = { + presets.missions.supply.convoy:extend({ name='refinery-supply-red'}), + presets.missions.supply.convoy:extend({ name='refinery-supply-red-1'}), + presets.missions.supply.helo:extend({ name='refinery-supply-red-2'}), + presets.missions.supply.transfer:extend({name='refinery-transfer-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='refinery-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='refinery-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='refinery-garrison-blue'}) + } + }), + presets.upgrades.supply.refinery1:extend({ + name='refinery-building-blue', + products = { + presets.missions.supply.convoy:extend({ name='refinery-supply-blue'}), + presets.missions.supply.convoy:extend({ name='refinery-supply-blue-1'}), + presets.missions.supply.helo:extend({ name='refinery-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='refinery-transfer-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Refinery.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mozdok.lua ]]----------------- + +zones.mozdok = ZoneCommand:new("Mozdok") +zones.mozdok.initialState = { side=1 } +zones.mozdok.keepActive = true +zones.mozdok.maxResource = 50000 +zones.mozdok:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='mozdok-compost-red', + products = { + presets.special.red.infantry:extend({ name='mozdok-defense-red'}), + presets.defenses.red.infantry:extend({ name='mozdok-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='mozdok-fuel-red', + products = { + presets.missions.supply.helo:extend({name='mozdok-supply-red-1'}), + presets.missions.supply.helo:extend({name='mozdok-supply-red-2'}), + presets.missions.supply.convoy_escorted:extend({name='mozdok-supply-red-3'}), + presets.missions.supply.transfer:extend({name='mozdok-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='mozdok-comcenter-red', + products = { + presets.defenses.red.sa10:extend({ name='mozdok-airdef-red'}), + presets.missions.patrol.aircraft:extend({name='mozdok-patrol-red', altitude=25000, range=25}), + presets.missions.attack.cas:extend({name='mozdok-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='mozdok-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='mozdok-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='mozdok-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='mozdok-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='mozdok-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='mozdok-supply-blue-1'}), + presets.missions.supply.helo:extend({name='mozdok-supply-blue-2'}), + presets.missions.supply.convoy_escorted:extend({name='mozdok-supply-blue-3'}), + presets.missions.supply.transfer:extend({name='mozdok-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='mozdok-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({ name='mozdok-airdef-blue'}), + presets.missions.patrol.aircraft:extend({name='mozdok-patrol-blue', altitude=25000, range=25}), + presets.missions.attack.cas:extend({name='mozdok-cas-blue', altitude=15000, cost=50, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.cas:extend({name='mozdok-cas-blue-1', altitude=15000, cost=50, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='mozdok-cas-blue', altitude=15000, cost=50, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='mozdok-cas-blue-1', altitude=15000, cost=50, expend=AI.Task.WeaponExpend.ONE}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mozdok.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Lima.lua ]]----------------- + +zones.lima = ZoneCommand:new("Lima") +zones.lima.initialState = { side=1 } +zones.lima:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='lima-tent-red', + products = { + presets.special.red.infantry:extend({ name='lima-defense-red'}), + presets.defenses.red.infantry:extend({ name='lima-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='lima-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='lima-supply-red'}), + presets.missions.supply.helo:extend({name='lima-supply-red-1'}), + presets.missions.supply.transfer:extend({name='lima-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='lima-ammo-red', + products = { + presets.missions.attack.surface:extend({name='lima-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='lima-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='lima-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='lima-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='lima-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='lima-supply-blue'}), + presets.missions.supply.helo:extend({name='lima-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='lima-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='lima-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='lima-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Lima.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Oscar.lua ]]----------------- + +zones.oscar = ZoneCommand:new("Oscar") +zones.oscar.initialState = { side=1 } +zones.oscar:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='oscar-tent-red', + products = { + presets.special.red.infantry:extend({ name='oscar-defense-red'}), + presets.defenses.red.infantry:extend({ name='oscar-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='oscar-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='oscar-supply-red'}), + presets.missions.supply.transfer:extend({name='oscar-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='oscar-ammo-red', + products = { + presets.missions.attack.surface:extend({name='oscar-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='oscar-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='oscar-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='oscar-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='oscar-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='oscar-supply-blue'}), + presets.missions.supply.transfer:extend({name='oscar-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='oscar-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='oscar-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Oscar.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Nalchik.lua ]]----------------- + +zones.nalchik = ZoneCommand:new("Nalchik") +zones.nalchik.initialState = { side=1 } +zones.nalchik.keepActive = true +zones.nalchik.isHeloSpawn = true +zones.nalchik.isPlaneSpawn = true +zones.nalchik:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='nalchik-compost-red', + products = { + presets.special.red.infantry:extend({ name='nalchik-defense-red'}), + presets.defenses.red.infantry:extend({ name='nalchik-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='nalchik-fuel-red', + products = { + presets.missions.supply.helo:extend({name='nalchik-supply-red-1'}), + presets.missions.supply.helo:extend({name='nalchik-supply-red-2'}), + presets.missions.supply.transfer:extend({name='nalchik-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='nalchik-comcenter-red', + products = { + presets.defenses.red.sa3:extend({ name='nalchik-airdef-red'}), + presets.missions.attack.sead:extend({name='nalchik-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='nalchik-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='nalchik-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='nalchik-strike-red', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='nalchik-patrol-red', altitude=25000, range=25}), + presets.missions.patrol.aircraft:extend({name='nalchik-patrol-red-2', altitude=25000, range=25}), + presets.missions.support.awacs:extend({name='nalchik-awacs-red', altitude=30000, freq=251.2}), + presets.missions.support.tanker:extend({name='nalchik-tanker-red', altitude=30000, freq=252.2, tacan='40', variant='Drogue'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='nalchik-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='nalchik-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='nalchik-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='nalchik-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='nalchik-supply-blue-1'}), + presets.missions.supply.helo:extend({name='nalchik-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='nalchik-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='nalchik-comcenter-blue', + products = { + presets.defenses.blue.nasams:extend({ name='nalchik-airdef-blue'}), + presets.missions.support.awacs:extend({name='nalchik-awacs-blue', altitude=30000, freq=259.5}), + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Nalchik.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Digora.lua ]]----------------- + +zones.digora = ZoneCommand:new("Digora") +zones.digora.initialState = { side=1 } +zones.digora:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='digora-tent-red', + products = { + presets.special.red.infantry:extend({ name='digora-defense-red'}), + presets.defenses.red.infantry:extend({ name='digora-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='digora-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='digora-supply-red'}), + presets.missions.supply.transfer:extend({name='digora-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='digora-ammo-red', + products = { + presets.missions.attack.surface:extend({name='digora-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='digora-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='digora-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='digora-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='digora-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='digora-supply-blue'}), + presets.missions.supply.transfer:extend({name='digora-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='digora-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='digora-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Digora.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Uniform.lua ]]----------------- + +zones.uniform = ZoneCommand:new("Uniform") +zones.uniform.initialState = { side=1 } +zones.uniform:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='uniform-tent-red', + products = { + presets.special.red.infantry:extend({ name='uniform-defense-red'}), + presets.defenses.red.infantry:extend({ name='uniform-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='uniform-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='uniform-supply-red'}), + presets.missions.supply.transfer:extend({name='uniform-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='uniform-ammo-red', + products = { + presets.missions.attack.surface:extend({name='uniform-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='uniform-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='uniform-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='uniform-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='uniform-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='uniform-supply-blue'}), + presets.missions.supply.transfer:extend({name='uniform-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='uniform-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='uniform-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Uniform.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Factory.lua ]]----------------- + +zones.factory = ZoneCommand:new("Factory") +zones.factory.initialState = { side=2 } +zones.factory:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='factory-tent-red', + products = { + presets.special.red.infantry:extend({ name='factory-defense-red'}), + presets.defenses.red.infantry:extend({ name='factory-garrison-red'}) + } + }), + presets.upgrades.supply.factory1:extend({ + name='factory-prod-red-1', + products = { + presets.missions.supply.convoy:extend({ name='factory-supply-red-1'}), + presets.missions.supply.transfer:extend({name='factory-transfer-red'}) + } + }), + presets.upgrades.supply.factory2:extend({ + name='factory-prod-red-2', + products = { + presets.missions.supply.convoy:extend({ name='factory-supply-red-2', cost=2000}), + presets.missions.supply.transfer:extend({name='factory-transfer-red2'}) + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='factory-tank-red-1', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='factory-tank-red-2', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='factory-tank-red-3', + products = { + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='factory-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='factory-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='factory-garrison-blue'}) + } + }), + presets.upgrades.supply.factory1:extend({ + name='factory-prod-blue-1', + products = { + presets.missions.supply.convoy:extend({ name='factory-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='factory-transfer-blue'}) + } + }), + presets.upgrades.supply.factory2:extend({ + name='factory-prod-blue-2', + products = { + presets.missions.supply.convoy:extend({ name='factory-supply-blue-2', cost=2000}), + presets.missions.supply.transfer:extend({name='factory-transfer-blue2'}) + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='factory-tank-blue-1', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='factory-tank-blue-2', + products = { + } + }), + presets.upgrades.supply.factoryTank:extend({ + name='factory-tank-blue-3', + products = { + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Factory.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Senaki.lua ]]----------------- + +zones.senaki = ZoneCommand:new("Senaki") +zones.senaki.initialState = { side=1 } +zones.senaki.keepActive = true +zones.senaki.isHeloSpawn = true +zones.senaki.isPlaneSpawn = true +zones.senaki.maxResource = 50000 +zones.senaki:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='senaki-compost-red', + products = { + presets.special.red.infantry:extend({ name='senaki-defense-red'}), + presets.defenses.red.infantry:extend({ name='senaki-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='senaki-fuel-red', + products = { + presets.missions.supply.helo:extend({name='senaki-supply-red-1'}), + presets.missions.supply.helo:extend({name='senaki-supply-red-2'}), + presets.missions.supply.transfer:extend({name='senaki-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='senaki-comcenter-red', + products = { + presets.defenses.red.sa3:extend({ name='senaki-airdef-red'}), + presets.missions.attack.sead:extend({name='senaki-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='senaki-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='senaki-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='senaki-strike-red', altitude=20000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='senaki-patrol-red', altitude=25000, range=25}), + presets.missions.patrol.aircraft:extend({name='senaki-patrol-red-2', altitude=20000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='senaki-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='senaki-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='senaki-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='senaki-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='senaki-supply-blue-1'}), + presets.missions.supply.helo:extend({name='senaki-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='senaki-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='senaki-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({ name='senaki-airdef-blue'}), + presets.missions.attack.sead:extend({name='senaki-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='senaki-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='senaki-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='senaki-strike-blue', altitude=20000, expend=AI.Task.WeaponExpend.TWO}), + presets.missions.patrol.aircraft:extend({name='senaki-patrol-blue', altitude=25000, range=25}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Senaki.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kutaisi.lua ]]----------------- + +zones.kutaisi = ZoneCommand:new("Kutaisi") +zones.kutaisi.initialState = { side=1 } +zones.kutaisi.keepActive = true +zones.kutaisi.maxResource = 50000 +zones.kutaisi:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='kutaisi-compost-red', + products = { + presets.special.red.infantry:extend({ name='kutaisi-defense-red'}), + presets.defenses.red.infantry:extend({ name='kutaisi-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='kutaisi-fuel-red', + products = { + presets.missions.supply.helo:extend({name='kutaisi-supply-red-1'}), + presets.missions.supply.helo:extend({name='kutaisi-supply-red-2'}), + presets.missions.supply.transfer:extend({name='kutaisi-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='kutaisi-comcenter-red', + products = { + presets.defenses.red.shorad:extend({ name='kutaisi-airdef-red'}), + presets.missions.attack.sead:extend({name='kutaisi-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='kutaisi-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='kutaisi-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='kutaisi-strike-red', altitude=20000, expend=AI.Task.WeaponExpend.HALF}), + presets.missions.patrol.aircraft:extend({name='kutaisi-patrol-red', altitude=25000, range=25}), + presets.missions.patrol.aircraft:extend({name='kutaisi-patrol-red-2', altitude=25000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='kutaisi-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='kutaisi-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='kutaisi-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='kutaisi-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='kutaisi-supply-blue-1'}), + presets.missions.supply.helo:extend({name='kutaisi-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='kutaisi-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='kutaisi-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({ name='kutaisi-airdef-blue'}), + presets.missions.attack.sead:extend({name='kutaisi-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='kutaisi-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='kutaisi-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='kutaisi-strike-blue', altitude=20000, expend=AI.Task.WeaponExpend.TWO}), + presets.missions.patrol.aircraft:extend({name='kutaisi-patrol-blue', altitude=25000, range=25}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kutaisi.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Prohladniy.lua ]]----------------- + +zones.prohladniy = ZoneCommand:new("Prohladniy") +zones.prohladniy.initialState = { side=1 } +zones.prohladniy:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='prohladniy-tent-red', + products = { + presets.special.red.infantry:extend({ name='prohladniy-defense-red'}), + presets.defenses.red.infantry:extend({ name='prohladniy-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='prohladniy-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='prohladniy-supply-red'}), + presets.missions.supply.transfer:extend({name='prohladniy-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='prohladniy-ammo-red', + products = { + presets.missions.attack.surface:extend({name='prohladniy-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='prohladniy-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='prohladniy-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='prohladniy-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='prohladniy-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='prohladniy-supply-blue'}), + presets.missions.supply.transfer:extend({name='prohladniy-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='prohladniy-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='prohladniy-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Prohladniy.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Tallyk.lua ]]----------------- + +zones.tallyk = ZoneCommand:new("Tallyk") +zones.tallyk.initialState = { side=1 } +zones.tallyk.keepActive = true +zones.tallyk:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='tallyk-tent-red', + products = { + presets.special.red.infantry:extend({ name='tallyk-defense-red'}), + presets.defenses.red.infantry:extend({ name='tallyk-garrison-red'}), + presets.missions.attack.surface:extend({name='tallyk-assault-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='tallyk-comcenter-red', + products = { + presets.defenses.red.sam:extend({ name='tallyk-sam-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='tallyk-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='tallyk-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='tallyk-garrison-blue'}), + presets.missions.attack.surface:extend({name='tallyk-assault-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='tallyk-comcenter-blue', + products = { + presets.defenses.blue.sam:extend({ name='tallyk-sam-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Tallyk.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Terek.lua ]]----------------- + +zones.terek = ZoneCommand:new("Terek") +zones.terek.initialState = { side=1 } +zones.terek:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='terek-tent-red', + products = { + presets.special.red.infantry:extend({ name='terek-defense-red'}), + presets.defenses.red.infantry:extend({ name='terek-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='terek-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='terek-supply-red'}), + presets.missions.supply.transfer:extend({name='terek-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='terek-ammo-red', + products = { + presets.missions.attack.surface:extend({name='terek-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='terek-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='terek-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='terek-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='terek-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='terek-supply-blue'}), + presets.missions.supply.transfer:extend({name='terek-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='terek-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='terek-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Terek.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Humara.lua ]]----------------- + +zones.humara = ZoneCommand:new("Humara") +zones.humara.initialState = { side=1 } +zones.humara:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='humara-tent-red', + products = { + presets.special.red.infantry:extend({ name='humara-defense-red'}), + presets.defenses.red.infantry:extend({ name='humara-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='humara-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='humara-supply-red'}), + presets.missions.supply.transfer:extend({name='humara-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='humara-ammo-red', + products = { + presets.missions.attack.surface:extend({name='humara-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='humara-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='humara-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='humara-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='humara-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='humara-supply-blue'}), + presets.missions.supply.transfer:extend({name='humara-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='humara-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='humara-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Humara.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Ochamchira.lua ]]----------------- + +zones.ochamchira = ZoneCommand:new("Ochamchira") +zones.ochamchira.initialState = { side=1 } +zones.ochamchira:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='ochamchira-tent-red', + products = { + presets.special.red.infantry:extend({ name='ochamchira-defense-red'}), + presets.defenses.red.infantry:extend({ name='ochamchira-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='ochamchira-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='ochamchira-supply-red'}), + presets.missions.supply.transfer:extend({name='ochamchira-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='ochamchira-ammo-red', + products = { + presets.missions.attack.surface:extend({name='ochamchira-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='ochamchira-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='ochamchira-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='ochamchira-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='ochamchira-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='ochamchira-supply-blue'}), + presets.missions.supply.transfer:extend({name='ochamchira-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='ochamchira-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='ochamchira-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Ochamchira.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/November.lua ]]----------------- + +zones.november = ZoneCommand:new("November") +zones.november.initialState = { side=1 } +zones.november.isHeloSpawn = true +zones.november:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='november-tent-red', + products = { + presets.special.red.infantry:extend({ name='november-defense-red'}), + presets.defenses.red.infantry:extend({ name='november-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='november-fuel-red', + products = { + presets.missions.supply.helo:extend({name='november-supply-red'}), + presets.missions.supply.helo:extend({name='november-supply-red-1'}), + presets.missions.supply.transfer:extend({name='november-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='november-comcenter-red', + products = { + presets.defenses.red.shorad:extend({name='november-sam-red'}), + presets.missions.attack.helo:extend({name='november-cas-red', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='november-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='november-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='november-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='november-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='november-supply-blue'}), + presets.missions.supply.helo:extend({name='november-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='november-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='november-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({name='november-sam-blue'}), + presets.missions.attack.helo:extend({name='november-cas-blue', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/November.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/XRay.lua ]]----------------- + +zones.xray = ZoneCommand:new("XRay") +zones.xray.initialState = { side=1 } +zones.xray:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='xray-tent-red', + products = { + presets.special.red.infantry:extend({ name='xray-defense-red'}), + presets.defenses.red.infantry:extend({ name='xray-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='xray-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='xray-supply-red'}), + presets.missions.supply.helo:extend({name='xray-supply-red-2'}), + presets.missions.supply.transfer:extend({name='xray-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='xray-ammo-red', + products = { + presets.missions.attack.surface:extend({name='xray-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='xray-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='xray-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='xray-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='xray-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='xray-supply-blue'}), + presets.missions.supply.helo:extend({name='xray-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='xray-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='xray-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='xray-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/XRay.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Whiskey.lua ]]----------------- + +zones.whiskey = ZoneCommand:new("Whiskey") +zones.whiskey.initialState = { side=1 } +zones.whiskey:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='whiskey-tent-red', + products = { + presets.special.red.infantry:extend({ name='whiskey-defense-red'}), + presets.defenses.red.infantry:extend({ name='whiskey-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='whiskey-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='whiskey-supply-red'}), + presets.missions.supply.transfer:extend({name='whiskey-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='whiskey-ammo-red', + products = { + presets.missions.attack.surface:extend({name='whiskey-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='whiskey-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='whiskey-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='whiskey-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='whiskey-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='whiskey-supply-blue'}), + presets.missions.supply.transfer:extend({name='whiskey-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='whiskey-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='whiskey-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Whiskey.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mine.lua ]]----------------- + +zones.mine = ZoneCommand:new("Mine") +zones.mine.initialState = { side=1 } +zones.mine:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='mine-tent-red', + products = { + presets.special.red.infantry:extend({ name='mine-defense-red'}), + presets.defenses.red.infantry:extend({ name='mine-garrison-red'}) + } + }), + presets.upgrades.supply.excavator:extend({ + name='mine-excavator-red-1', + products = { + presets.missions.supply.convoy:extend({ name='mine-supply-red'}), + presets.missions.supply.transfer:extend({name='mine-transfer-red'}) + } + }), + presets.upgrades.supply.excavator:extend({ + name='mine-excavator-red-2', + products = { + presets.missions.supply.convoy:extend({ name='mine-supply-red'}), + presets.missions.supply.transfer:extend({name='mine-transfer-red'}) + } + }), + presets.upgrades.supply.excavator:extend({ + name='mine-excavator-red-3', + products = { + presets.missions.supply.convoy:extend({ name='mine-supply-red'}), + presets.missions.supply.transfer:extend({name='mine-transfer-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='mine-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='mine-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='mine-garrison-blue'}) + } + }), + presets.upgrades.supply.excavator:extend({ + name='mine-excavator-blue-1', + products = { + presets.missions.supply.convoy:extend({ name='mine-supply-blue'}), + presets.missions.supply.transfer:extend({name='mine-transfer-blue'}) + } + }), + presets.upgrades.supply.excavator:extend({ + name='mine-excavator-blue-2', + products = { + presets.missions.supply.convoy:extend({ name='mine-supply-blue'}), + presets.missions.supply.transfer:extend({name='mine-transfer-blue'}) + } + }), + presets.upgrades.supply.excavator:extend({ + name='mine-excavator-blue-3', + products = { + presets.missions.supply.convoy:extend({ name='mine-supply-blue'}), + presets.missions.supply.transfer:extend({name='mine-transfer-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Mine.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Papa.lua ]]----------------- + +zones.papa = ZoneCommand:new("Papa") +zones.papa.initialState = { side=1 } +zones.papa.keepActive = true +zones.papa:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='papa-tent-red', + products = { + presets.special.red.infantry:extend({ name='papa-defense-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='papa-comcenter-red', + products = { + presets.defenses.red.sam:extend({ name='papa-sam-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='papa-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='papa-defense-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='papa-comcenter-blue', + products = { + presets.defenses.blue.sam:extend({ name='papa-sam-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Papa.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Sukhumi.lua ]]----------------- + +zones.sukhumi = ZoneCommand:new("Sukhumi") +zones.sukhumi.initialState = { side=1 } +zones.sukhumi.keepActive = true +zones.sukhumi.maxResource = 50000 +zones.sukhumi:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='sukhumi-compost-red', + products = { + presets.special.red.infantry:extend({ name='sukhumi-defense-red'}), + presets.defenses.red.infantry:extend({ name='sukhumi-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='sukhumi-fuel-red', + products = { + presets.missions.supply.helo:extend({name='sukhumi-supply-red-1'}), + presets.missions.supply.helo:extend({name='sukhumi-supply-red-2'}), + presets.missions.supply.transfer:extend({name='sukhumi-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='sukhumi-comcenter-red', + products = { + presets.defenses.red.sa11:extend({ name='sukhumi-airdef-red'}), + presets.missions.attack.sead:extend({name='sukhumi-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='sukhumi-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='sukhumi-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='sukhumi-strike-red', altitude=20000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='sukhumi-patrol-red', altitude=25000, range=25}), + presets.missions.patrol.aircraft:extend({name='sukhumi-patrol-red-2', altitude=25000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='sukhumi-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='sukhumi-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='sukhumi-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='sukhumi-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='sukhumi-supply-blue-1'}), + presets.missions.supply.helo:extend({name='sukhumi-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='sukhumi-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='sukhumi-comcenter-blue', + products = { + presets.defenses.blue.nasams:extend({ name='sukhumi-airdef-blue'}), + presets.missions.attack.sead:extend({name='sukhumi-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='sukhumi-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='sukhumi-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='sukhumi-strike-blue', altitude=20000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='sukhumi-patrol-blue', altitude=25000, range=25}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Sukhumi.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Farm.lua ]]----------------- + +zones.farm = ZoneCommand:new("Farm") +zones.farm.initialState = { side=1 } +zones.farm:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='farm-tent-red', + products = { + presets.special.red.infantry:extend({ name='farm-defense-red'}), + presets.defenses.red.infantry:extend({ name='farm-garrison-red'}) + } + }), + presets.upgrades.supply.farm1:extend({ + name='farm-prod-red-1', + products = { + presets.missions.supply.convoy:extend({ name='farm-supply-red'}), + presets.missions.supply.transfer:extend({name='farm-transfer-red'}) + } + }), + presets.upgrades.supply.farm2:extend({ + name='farm-prod-red-2', + products = { + presets.missions.supply.convoy:extend({ name='farm-supply-red'}), + presets.missions.supply.transfer:extend({name='farm-transfer-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='farm-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='farm-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='farm-garrison-blue'}) + } + }), + presets.upgrades.supply.farm1:extend({ + name='farm-prod-blue-1', + products = { + presets.missions.supply.convoy:extend({ name='farm-supply-blue'}), + presets.missions.supply.transfer:extend({name='farm-transfer-blue'}) + } + }), + presets.upgrades.supply.farm2:extend({ + name='farm-prod-blue-2', + products = { + presets.missions.supply.convoy:extend({ name='farm-supply-blue'}), + presets.missions.supply.transfer:extend({name='farm-transfer-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Farm.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Romeo.lua ]]----------------- + +zones.romeo = ZoneCommand:new("Romeo") +zones.romeo.initialState = { side=1 } +zones.romeo:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='romeo-tent-red', + products = { + presets.special.red.infantry:extend({ name='romeo-defense-red'}), + presets.defenses.red.infantry:extend({ name='romeo-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='romeo-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='romeo-supply-red'}), + presets.missions.supply.transfer:extend({name='romeo-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='romeo-ammo-red', + products = { + presets.missions.attack.surface:extend({name='romeo-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='romeo-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='romeo-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='romeo-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='romeo-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='romeo-supply-blue'}), + presets.missions.supply.transfer:extend({name='romeo-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='romeo-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='romeo-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Romeo.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Zulu.lua ]]----------------- + +zones.zulu = ZoneCommand:new("Zulu") +zones.zulu.initialState = { side=1 } +zones.zulu:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='zulu-tent-red', + products = { + presets.special.red.infantry:extend({ name='zulu-defense-red'}), + presets.defenses.red.infantry:extend({ name='zulu-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='zulu-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='zulu-supply-red'}), + presets.missions.supply.transfer:extend({name='zulu-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='zulu-ammo-red', + products = { + presets.missions.attack.surface:extend({name='zulu-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='zulu-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='zulu-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='zulu-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='zulu-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='zulu-supply-blue'}), + presets.missions.supply.transfer:extend({name='zulu-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='zulu-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='zulu-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Zulu.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Yankee.lua ]]----------------- + +zones.yankee = ZoneCommand:new("Yankee") +zones.yankee.initialState = { side=1 } +zones.yankee:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='yankee-tent-red', + products = { + presets.special.red.infantry:extend({ name='yankee-defense-red'}), + presets.defenses.red.infantry:extend({ name='yankee-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='yankee-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='yankee-supply-red'}), + presets.missions.supply.transfer:extend({name='yankee-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='yankee-ammo-red', + products = { + presets.missions.attack.surface:extend({name='yankee-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='yankee-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='yankee-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='yankee-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='yankee-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='yankee-supply-blue'}), + presets.missions.supply.transfer:extend({name='yankee-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='yankee-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='yankee-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Yankee.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Malgobek.lua ]]----------------- + +zones.malgobek = ZoneCommand:new("Malgobek") +zones.malgobek.initialState = { side=1 } +zones.malgobek:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='malgobek-tent-red', + products = { + presets.special.red.infantry:extend({ name='malgobek-defense-red'}), + presets.defenses.red.infantry:extend({ name='malgobek-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='malgobek-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='malgobek-supply-red'}), + presets.missions.supply.transfer:extend({name='malgobek-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='malgobek-ammo-red', + products = { + presets.missions.attack.surface:extend({name='malgobek-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='malgobek-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='malgobek-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='malgobek-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='malgobek-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='malgobek-supply-blue'}), + presets.missions.supply.transfer:extend({name='malgobek-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='malgobek-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='malgobek-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Malgobek.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kilo.lua ]]----------------- + +zones.kilo = ZoneCommand:new("Kilo") +zones.kilo.initialState = { side=1 } +zones.kilo:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='kilo-tent-red', + products = { + presets.special.red.infantry:extend({ name='kilo-defense-red'}), + presets.defenses.red.infantry:extend({ name='kilo-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='kilo-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='kilo-supply-red'}), + presets.missions.supply.transfer:extend({name='kilo-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='kilo-ammo-red', + products = { + presets.missions.attack.surface:extend({name='kilo-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='kilo-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='kilo-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='kilo-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='kilo-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='kilo-supply-blue'}), + presets.missions.supply.transfer:extend({name='kilo-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='kilo-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='kilo-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kilo.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Quebec.lua ]]----------------- + +zones.quebec = ZoneCommand:new("Quebec") +zones.quebec.initialState = { side=1 } +zones.quebec.keepActive = true +zones.quebec:defineUpgrades({ + [1] = + { + presets.upgrades.basic.tent:extend({ + name='quebec-tent-red', + products = { + presets.special.red.infantry:extend({ name='quebec-defense-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='quebec-comcenter-red', + products = { + presets.defenses.red.sam:extend({ name='quebec-sam-red'}) + } + }) + }, + [2] = + { + presets.upgrades.basic.tent:extend({ + name='quebec-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='quebec-defense-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='quebec-comcenter-blue', + products = { + presets.defenses.blue.sam:extend({ name='quebec-sam-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Quebec.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/OilFields.lua ]]----------------- + +zones.oilfields = ZoneCommand:new("Oil Fields") +zones.oilfields.initialState = { side=1 } +zones.oilfields:defineUpgrades({ + [1] = { + presets.upgrades.basic.outpost:extend({ + name='oilfields-outpost-red', + products = { + presets.special.red.infantry:extend({ name='oilfields-defense-red'}), + presets.defenses.red.infantry:extend({ name='oilfields-garrison-red'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-red-1', + products = { + presets.missions.supply.transfer:extend({name='oilfields-transfer-red1'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-red-2', + products = { + presets.missions.supply.convoy:extend({name='oilfields-supply-red-1'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-red-3', + products = { + presets.missions.supply.transfer:extend({name='oilfields-transfer-red2'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-red-4', + products = { + presets.missions.supply.convoy:extend({name='oilfields-supply-red-2'}) + } + }) + }, + [2] = { + presets.upgrades.basic.outpost:extend({ + name='oilfields-outpost-blue', + products = { + presets.special.blue.infantry:extend({ name='oilfields-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='oilfields-garrison-blue'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-blue-1', + products = { + presets.missions.supply.transfer:extend({name='oilfields-transfer-blue1'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-blue-2', + products = { + presets.missions.supply.convoy:extend({name='oilfields-supply-blue-1'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-blue-3', + products = { + presets.missions.supply.transfer:extend({name='oilfields-transfer-blue2'}) + } + }), + presets.upgrades.supply.oilPump:extend({ + name='oilfields-pump-blue-4', + products = { + presets.missions.supply.convoy:extend({name='oilfields-supply-blue-2'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/OilFields.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Echo.lua ]]----------------- + +zones.echo = ZoneCommand:new("Echo") +zones.echo.initialState = { side=2 } +zones.echo:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='echo-tent-red', + products = { + presets.special.red.infantry:extend({ name='echo-defense-red'}), + presets.defenses.red.infantry:extend({ name='echo-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='echo-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='echo-supply-red'}), + presets.missions.supply.transfer:extend({name='echo-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='echo-ammo-red', + products = { + presets.missions.attack.surface:extend({name='echo-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='echo-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='echo-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='echo-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='echo-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='echo-supply-blue'}), + presets.missions.supply.transfer:extend({name='echo-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='echo-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='echo-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Echo.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kobuleti.lua ]]----------------- + +zones.kobuleti = ZoneCommand:new("Kobuleti") +zones.kobuleti.initialState = { side=2 } +zones.kobuleti.keepActive = true +zones.kobuleti.isHeloSpawn = true +zones.kobuleti.isPlaneSpawn = true +zones.kobuleti.maxResource = 50000 +zones.kobuleti:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='kobuleti-compost-red', + products = { + presets.special.red.infantry:extend({ name='kobuleti-defense-red'}), + presets.defenses.red.infantry:extend({ name='kobuleti-garrison-red'}), + presets.missions.attack.surface:extend({ name='kobuleti-assault-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='kobuleti-fuel-red', + products = { + presets.missions.supply.helo:extend({name='kobuleti-supply-red-1'}), + presets.missions.supply.helo:extend({name='kobuleti-supply-red-2'}), + presets.missions.supply.transfer:extend({name='kobuleti-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='kobuleti-comcenter-red', + products = { + presets.defenses.red.shorad:extend({ name='kobuleti-airdef-red'}), + presets.missions.attack.sead:extend({name='kobuleti-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='kobuleti-cas-red', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='kobuleti-cas-red', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='kobuleti-strike-red', altitude=20000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='kobuleti-patrol-red', altitude=25000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='kobuleti-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='kobuleti-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='kobuleti-garrison-blue'}), + presets.missions.attack.surface:extend({ name='kobuleti-assault-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='kobuleti-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='kobuleti-supply-blue-1'}), + presets.missions.supply.helo:extend({name='kobuleti-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='kobuleti-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='kobuleti-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({ name='kobuleti-airdef-blue'}), + presets.missions.attack.sead:extend({name='kobuleti-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.cas:extend({name='kobuleti-cas-blue', altitude=15000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.bai:extend({name='kobuleti-cas-blue', altitude=10000, expend=AI.Task.WeaponExpend.ONE}), + presets.missions.attack.strike:extend({name='kobuleti-strike-blue', altitude=20000, expend=AI.Task.WeaponExpend.TWO}), + presets.missions.patrol.aircraft:extend({name='kobuleti-patrol-blue', altitude=25000, range=25}), + presets.missions.support.awacs:extend({name='kobuleti-awacs-blue', altitude=30000, freq=258.5}), + presets.missions.support.tanker:extend({name='kobuleti-tanker-blue', altitude=23000, freq=258, tacan='38', variant='Boom'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Kobuleti.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Alpha.lua ]]----------------- + +zones.alpha = ZoneCommand:new('Alpha') +zones.alpha.initialState = { side=2 } +zones.alpha:defineUpgrades({ + [1] = --red side + { + presets.upgrades.basic.tent:extend({ + name = 'alpha-tent-red', + products = { + presets.special.red.infantry:extend({ name='alpha-defense-red'}), + presets.defenses.red.infantry:extend({ name='alpha-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name = 'alpha-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({ name='alpha-supply-red'}), + presets.missions.supply.transfer:extend({name='alpha-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name = 'alpha-ammo-red', + products = { + presets.missions.attack.surface:extend({ name='alpha-assault-red'}) + } + }) + }, + [2] = --blue side + { + presets.upgrades.basic.tent:extend({ + name = 'alpha-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='alpha-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='alpha-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name = 'alpha-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({ name='alpha-supply-blue'}), + presets.missions.supply.transfer:extend({name='alpha-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name = 'alpha-ammo-blue', + products = { + presets.missions.attack.surface:extend({ name='alpha-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Alpha.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Foxtrot.lua ]]----------------- + +zones.foxtrot = ZoneCommand:new("Foxtrot") +zones.foxtrot.initialState = { side=2 } +zones.foxtrot:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='foxtrot-tent-red', + products = { + presets.special.red.infantry:extend({ name='foxtrot-defense-red'}), + presets.defenses.red.infantry:extend({ name='foxtrot-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='foxtrot-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='foxtrot-supply-red'}), + presets.missions.supply.transfer:extend({name='foxtrot-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='foxtrot-ammo-red', + products = { + presets.missions.attack.surface:extend({name='foxtrot-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='foxtrot-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='foxtrot-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='foxtrot-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='foxtrot-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='foxtrot-supply-blue'}), + presets.missions.supply.transfer:extend({name='foxtrot-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='foxtrot-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='foxtrot-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Foxtrot.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Sierra.lua ]]----------------- + +zones.sierra = ZoneCommand:new("Sierra") +zones.sierra.initialState = { side=1 } +zones.sierra.isHeloSpawn = true +zones.sierra:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='sierra-tent-red', + products = { + presets.special.red.infantry:extend({ name='sierra-defense-red'}), + presets.defenses.red.infantry:extend({ name='sierra-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='sierra-fuel-red', + products = { + presets.missions.supply.helo:extend({name='sierra-supply-red'}), + presets.missions.supply.helo:extend({name='sierra-supply-red-1'}), + presets.missions.supply.transfer:extend({name='sierra-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='sierra-comcenter-red', + products = { + presets.defenses.red.shorad:extend({name='sierra-sam-red'}), + presets.missions.attack.helo:extend({name='sierra-cas-red', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='sierra-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='sierra-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='sierra-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='sierra-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='sierra-supply-blue'}), + presets.missions.supply.helo:extend({name='sierra-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='sierra-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='sierra-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({name='sierra-sam-blue'}), + presets.missions.attack.helo:extend({name='sierra-cas-blue', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Sierra.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Oni.lua ]]----------------- + +zones.oni = ZoneCommand:new("Oni") +zones.oni.initialState = { side=1 } +zones.oni:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='oni-tent-red', + products = { + presets.special.red.infantry:extend({ name='oni-defense-red'}), + presets.defenses.red.infantry:extend({ name='oni-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='oni-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='oni-supply-red'}), + presets.missions.supply.helo:extend({name='oni-supply-red-2'}), + presets.missions.supply.transfer:extend({name='oni-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='oni-ammo-red', + products = { + presets.missions.attack.surface:extend({name='oni-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='oni-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='oni-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='oni-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='oni-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='oni-supply-blue'}), + presets.missions.supply.helo:extend({name='oni-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='oni-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='oni-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='oni-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Oni.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Hotel.lua ]]----------------- + +zones.hotel = ZoneCommand:new("Hotel") +zones.hotel.initialState = nil +zones.hotel:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='hotel-tent-red', + products = { + presets.special.red.infantry:extend({ name='hotel-defense-red'}), + presets.defenses.red.infantry:extend({ name='hotel-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='hotel-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='hotel-supply-red'}), + presets.missions.supply.transfer:extend({name='hotel-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='hotel-ammo-red', + products = { + presets.missions.attack.surface:extend({name='hotel-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='hotel-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='hotel-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='hotel-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='hotel-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='hotel-supply-blue'}), + presets.missions.supply.transfer:extend({name='hotel-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='hotel-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='hotel-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Hotel.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Victor.lua ]]----------------- + +zones.victor = ZoneCommand:new("Victor") +zones.victor.initialState = { side=1 } +zones.victor:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='victor-tent-red', + products = { + presets.special.red.infantry:extend({ name='victor-defense-red'}), + presets.defenses.red.infantry:extend({ name='victor-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='victor-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='victor-supply-red'}), + presets.missions.supply.helo:extend({name='victor-supply-red-2'}), + presets.missions.supply.transfer:extend({name='victor-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='victor-ammo-red', + products = { + presets.missions.attack.surface:extend({name='victor-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='victor-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='victor-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='victor-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='victor-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='victor-supply-blue'}), + presets.missions.supply.helo:extend({name='victor-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='victor-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='victor-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='victor-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Victor.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Tango.lua ]]----------------- + +zones.tango = ZoneCommand:new("Tango") +zones.tango.initialState = { side=1 } +zones.tango.isHeloSpawn = true +zones.tango:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='tango-tent-red', + products = { + presets.special.red.infantry:extend({ name='tango-defense-red'}), + presets.defenses.red.infantry:extend({ name='tango-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='tango-fuel-red', + products = { + presets.missions.supply.helo:extend({name='tango-supply-red'}), + presets.missions.supply.helo:extend({name='tango-supply-red-1'}), + presets.missions.supply.transfer:extend({name='tango-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='tango-comcenter-red', + products = { + presets.defenses.red.shorad:extend({name='tango-sam-red'}), + presets.missions.attack.helo:extend({name='tango-cas-red', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='tango-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='tango-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='tango-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='tango-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='tango-supply-blue'}), + presets.missions.supply.helo:extend({name='tango-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='tango-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='tango-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({name='tango-sam-blue'}), + presets.missions.attack.helo:extend({name='tango-cas-blue', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Tango.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Unal.lua ]]----------------- + +zones.unal = ZoneCommand:new("Unal") +zones.unal.initialState = { side=1 } +zones.unal.isHeloSpawn = true +zones.unal:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='unal-tent-red', + products = { + presets.special.red.infantry:extend({ name='unal-defense-red'}), + presets.defenses.red.infantry:extend({ name='unal-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='unal-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='unal-supply-red'}), + presets.missions.supply.helo:extend({name='unal-supply-red-2'}), + presets.missions.supply.transfer:extend({name='unal-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='unal-ammo-red', + products = { + presets.missions.attack.surface:extend({name='unal-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='unal-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='unal-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='unal-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='unal-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='unal-supply-blue'}), + presets.missions.supply.helo:extend({name='unal-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='unal-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='unal-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='unal-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Unal.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Beslan.lua ]]----------------- + +zones.beslan = ZoneCommand:new("Beslan") +zones.beslan.initialState = { side=1 } +zones.beslan.keepActive = true +zones.beslan.maxResource = 50000 +zones.beslan:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='beslan-compost-red', + products = { + presets.special.red.infantry:extend({ name='beslan-defense-red'}), + presets.defenses.red.infantry:extend({ name='beslan-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='beslan-fuel-red', + products = { + presets.missions.supply.helo:extend({name='beslan-supply-red-1'}), + presets.missions.supply.helo:extend({name='beslan-supply-red-2'}), + presets.missions.supply.convoy_escorted:extend({name='beslan-supply-red-3'}), + presets.missions.supply.transfer:extend({name='beslan-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='beslan-comcenter-red', + products = { + presets.defenses.red.sa5:extend({ name='beslan-airdef-red'}), + presets.missions.attack.sead:extend({name='beslan-sead-red', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='beslan-strike-red', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='beslan-strike-red-1', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='beslan-patrol-red', altitude=25000, range=25}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='beslan-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='beslan-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='beslan-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTank:extend({ + name='beslan-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='beslan-supply-blue-1'}), + presets.missions.supply.helo:extend({name='beslan-supply-blue-2'}), + presets.missions.supply.convoy_escorted:extend({name='beslan-supply-blue-3'}), + presets.missions.supply.transfer:extend({name='beslan-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='beslan-comcenter-blue', + products = { + presets.defenses.blue.patriot:extend({ name='beslan-airdef-blue'}), + presets.missions.attack.sead:extend({name='beslan-sead-blue', altitude=25000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='beslan-strike-blue', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.attack.strike:extend({name='beslan-strike-blue-1', altitude=30000, expend=AI.Task.WeaponExpend.ALL}), + presets.missions.patrol.aircraft:extend({name='beslan-patrol-blue', altitude=25000, range=25}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Beslan.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Bravo.lua ]]----------------- + +zones.bravo = ZoneCommand:new("Bravo") +zones.bravo.initialState = { side=2 } +zones.bravo:defineUpgrades({ + [1] = + { + presets.upgrades.basic.comPost:extend({ + name='bravo-compost-red', + products = { + presets.special.red.infantry:extend({ name='bravo-defense-red'}), + presets.defenses.red.infantry:extend({ name='bravo-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='bravo-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({ name='bravo-supply-red'}), + presets.missions.supply.transfer:extend({name='bravo-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='bravo-comcenter-red', + products = { + presets.defenses.red.shorad:extend({ name='bravo-airdef-red'}), + presets.missions.attack.helo:extend({name='bravo-attack-red', altitude=200, expend=AI.Task.WeaponExpend.HALF}) + } + }) + }, + [2] = + { + presets.upgrades.basic.comPost:extend({ + name='bravo-compost-blue', + products = { + presets.special.blue.infantry:extend({ name='bravo-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='bravo-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='bravo-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({ name='bravo-supply-blue'}), + presets.missions.supply.transfer:extend({name='bravo-transfer-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='bravo-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({ name='bravo-airdef-blue'}), + presets.missions.attack.helo:extend({name='bravo-attack-blue', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Bravo.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/WeaponDepot.lua ]]----------------- + +zones.weapondepot = ZoneCommand:new("Weapon Depot") +zones.weapondepot.initialState = { side=1 } +zones.weapondepot:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='weapons-tent-red', + products = { + presets.special.red.infantry:extend({ name='weapons-defense-red'}), + presets.defenses.red.infantry:extend({ name='weapons-garrison-red'}) + } + }), + presets.upgrades.supply.ammoDepot:extend({ + name='weapons-ammo-red-1', + products = { + presets.missions.supply.convoy:extend({name='weapons-supply-red-1'}), + presets.missions.supply.transfer:extend({name='weapons-transfer-red-1'}) + } + }), + presets.upgrades.supply.ammoDepot:extend({ + name='weapons-ammo-red-2', + products = { + presets.missions.supply.convoy:extend({name='weapons-supply-red-2'}), + presets.missions.supply.transfer:extend({name='weapons-transfer-red-2'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='weapons-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='weapons-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='weapons-garrison-blue'}) + } + }), + presets.upgrades.supply.ammoDepot:extend({ + name='weapons-ammo-blue-1', + products = { + presets.missions.supply.convoy:extend({name='weapons-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='weapons-transfer-blue-1'}) + } + }), + presets.upgrades.supply.ammoDepot:extend({ + name='weapons-ammo-blue-2', + products = { + presets.missions.supply.convoy:extend({name='weapons-supply-blue-2'}), + presets.missions.supply.transfer:extend({name='weapons-transfer-blue-2'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/WeaponDepot.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Delta.lua ]]----------------- + +zones.delta = ZoneCommand:new("Delta") +zones.delta.initialState = { side=2 } +zones.delta:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='delta-tent-red', + products = { + presets.special.red.infantry:extend({ name='delta-defense-red'}), + presets.defenses.red.infantry:extend({ name='delta-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='delta-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='delta-supply-red'}), + presets.missions.supply.transfer:extend({name='delta-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='delta-ammo-red', + products = { + presets.missions.attack.surface:extend({name='delta-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='delta-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='delta-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='delta-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='delta-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='delta-supply-blue'}), + presets.missions.supply.transfer:extend({name='delta-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='delta-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='delta-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Delta.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Cherkessk.lua ]]----------------- + +zones.cherkessk = ZoneCommand:new("Cherkessk") +zones.cherkessk.initialState = { side=1 } +zones.cherkessk.isHeloSpawn = true +zones.cherkessk:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='cherkessk-tent-red', + products = { + presets.special.red.infantry:extend({ name='cherkessk-defense-red'}), + presets.defenses.red.infantry:extend({ name='cherkessk-garrison-red'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='cherkessk-fuel-red', + products = { + presets.missions.supply.helo:extend({name='cherkessk-supply-red'}), + presets.missions.supply.helo:extend({name='cherkessk-supply-red-1'}), + presets.missions.supply.transfer:extend({name='cherkessk-transfer-red'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='cherkessk-comcenter-red', + products = { + presets.defenses.red.shorad:extend({name='cherkessk-sam-red'}), + presets.missions.attack.helo:extend({name='cherkessk-cas-red', altitude=200, expend=AI.Task.WeaponExpend.HALF }), + presets.missions.attack.helo:extend({name='cherkessk-cas-red-1', altitude=200, expend=AI.Task.WeaponExpend.HALF }), + presets.missions.attack.surface:extend({name='cherkessk-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='cherkessk-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='cherkessk-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='cherkessk-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelTankFarp:extend({ + name='cherkessk-fuel-blue', + products = { + presets.missions.supply.helo:extend({name='cherkessk-supply-blue'}), + presets.missions.supply.helo:extend({name='cherkessk-supply-blue-1'}), + presets.missions.supply.transfer:extend({name='cherkessk-transfer-blue'}), + presets.missions.attack.surface:extend({name='cherkessk-assault-blue'}) + } + }), + presets.upgrades.airdef.comCenter:extend({ + name='cherkessk-comcenter-blue', + products = { + presets.defenses.blue.shorad:extend({name='cherkessk-sam-blue'}), + presets.missions.attack.helo:extend({name='cherkessk-cas-blue', altitude=200, expend=AI.Task.WeaponExpend.HALF }), + presets.missions.attack.helo:extend({name='cherkessk-cas-blue-1', altitude=200, expend=AI.Task.WeaponExpend.HALF }) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Cherkessk.lua ]]----------------- + + + +-----------------[[ MissionSpecific/PretenseCaucasus/ZoneDefinitions/Juliett.lua ]]----------------- + +zones.juliett = ZoneCommand:new("Juliett") +zones.initialState = nil +zones.juliett:defineUpgrades({ + [1] = { + presets.upgrades.basic.tent:extend({ + name='juliett-tent-red', + products = { + presets.special.red.infantry:extend({ name='juliett-defense-red'}), + presets.defenses.red.infantry:extend({ name='juliett-garrison-red'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='juliett-fuel-red', + products = { + presets.missions.supply.convoy_escorted:extend({name='juliett-supply-red'}), + presets.missions.supply.transfer:extend({name='juliett-transfer-red'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='juliett-ammo-red', + products = { + presets.missions.attack.surface:extend({name='juliett-assault-red'}) + } + }) + }, + [2] = { + presets.upgrades.basic.tent:extend({ + name='juliett-tent-blue', + products = { + presets.special.blue.infantry:extend({ name='juliett-defense-blue'}), + presets.defenses.blue.infantry:extend({ name='juliett-garrison-blue'}) + } + }), + presets.upgrades.supply.fuelCache:extend({ + name='juliett-fuel-blue', + products = { + presets.missions.supply.convoy_escorted:extend({name='juliett-supply-blue'}), + presets.missions.supply.transfer:extend({name='juliett-transfer-blue'}) + } + }), + presets.upgrades.attack.ammoCache:extend({ + name='juliett-ammo-blue', + products = { + presets.missions.attack.surface:extend({name='juliett-assault-blue'}) + } + }) + } +}) + +-----------------[[ END OF MissionSpecific/PretenseCaucasus/ZoneDefinitions/Juliett.lua ]]----------------- + + + + cm = ConnectionManager:new() + cm:addConnection('Batumi', 'Alpha') + cm:addConnection('Alpha', 'Bravo') + cm:addConnection('Bravo', 'Kobuleti') + cm:addConnection('Bravo', 'Factory') + cm:addConnection('Kobuleti', 'Factory') + cm:addConnection('Kobuleti', 'Charlie') + cm:addConnection('Foxtrot', 'Charlie') + cm:addConnection('Foxtrot', 'Kobuleti') + cm:addConnection('Delta','Foxtrot') + cm:addConnection('Delta','Kobuleti') + cm:addConnection('Delta','Factory') + cm:addConnection('Echo','Charlie') + cm:addConnection('Golf','Echo') + cm:addConnection('Golf','Foxtrot') + cm:addConnection('India','Delta') + cm:addConnection('Hotel','Golf') + cm:addConnection('Hotel','Foxtrot') + cm:addConnection('Hotel','Delta') + cm:addConnection('Hotel','India') + cm:addConnection('Juliett','Echo') + cm:addConnection('Juliett','Golf') + cm:addConnection('Senaki','Juliett') + cm:addConnection('Senaki','Golf') + cm:addConnection('Senaki','Hotel') + cm:addConnection('Kutaisi','Hotel') + cm:addConnection('Kutaisi','India') + cm:addConnection('Kilo','Juliett') + cm:addConnection('Mike','Kutaisi') + cm:addConnection('Mike','Senaki') + cm:addConnection('Romeo','Mike') + cm:addConnection('Romeo','Kutaisi') + cm:addConnection('Weapon Depot','Juliett') + cm:addConnection('Weapon Depot','Senaki') + cm:addConnection('Weapon Depot','Kilo') + cm:addConnection('November','Weapon Depot') + cm:addConnection('November','Senaki') + cm:addConnection('November','Mike') + cm:addConnection('Oil Fields','Romeo') + cm:addConnection('Quebec','Kilo') + cm:addConnection('Zugdidi','Weapon Depot') + cm:addConnection('Zugdidi','Quebec') + cm:addConnection('Zugdidi','November') + cm:addConnection('Zugdidi','Kilo') + cm:addConnection('Distillery','November') + cm:addConnection('Distillery','Mike') + cm:addConnection('Zugdidi','Papa') + cm:addConnection('November','Papa') + cm:addConnection('Sierra','Papa') + cm:addConnection('Sierra','Zugdidi') + cm:addConnection('Sierra','Uniform') + cm:addConnection('Mine','Uniform') + cm:addConnection('Tango','Quebec') + cm:addConnection('Tango','Zugdidi') + cm:addConnection('Sierra','Tango') + cm:addConnection('Whiskey','Tango') + cm:addConnection('Ochamchira','Tango') + cm:addConnection('Ochamchira','Whiskey') + cm:addConnection('Ochamchira','Farm') + cm:addConnection('Ochamchira','Zulu') + cm:addConnection('Farm','Zulu') + cm:addConnection('Sukhumi','Zulu') + cm:addConnection('Lentehi','Distillery', true, 3000) + cm:addConnection('Lentehi','Babugent', true, 5000) + cm:addConnection('Nalchik','Babugent') + cm:addConnection('Victor','Distillery', true, 2000) + cm:addConnection('Victor','Romeo') + cm:addConnection('Victor','Lentehi') + cm:addConnection('Victor','Oil Fields', true, 2000) + cm:addConnection('Victor','Oni') + cm:addConnection('Unal','Oni', true, 4500) + cm:addConnection('Beslan','Unal') + cm:addConnection('Digora','Beslan') + cm:addConnection('Digora','Unal') + cm:addConnection('Digora','Babugent') + cm:addConnection('Terek','Digora') + cm:addConnection('Terek','Nalchik') + cm:addConnection('Terek','Beslan') + cm:addConnection('Prohladniy','Terek') + cm:addConnection('Prohladniy','Nalchik') + cm:addConnection('Malgobek','Terek') + cm:addConnection('Malgobek','Beslan') + cm:addConnection('Lima','Mine') + cm:addConnection('Lima','Lentehi', true, 4000) + cm:addConnection('Tyrnyauz','Lima', true, 4000) + cm:addConnection('Tyrnyauz','Nalchik') + cm:addConnection('XRay','Sukhumi') + cm:addConnection('Oscar','Sukhumi') + cm:addConnection('Oscar','XRay') + cm:addConnection('Mozdok','Malgobek') + cm:addConnection('Mozdok','Prohladniy') + cm:addConnection('Gudauta','Oscar') + cm:addConnection('Yankee','Gudauta') + cm:addConnection('Sochi','Yankee') + cm:addConnection('Refinery','XRay', true, 4000) + cm:addConnection('Refinery','Humara') + cm:addConnection('Intel Center','Tyrnyauz') + cm:addConnection('Intel Center','Nalchik') + cm:addConnection('Intel Center','Prohladniy') + cm:addConnection('Intel Center','Kislovodsk') + cm:addConnection('Mineralnye','Intel Center') + cm:addConnection('Kislovodsk','Mineralnye') + cm:addConnection('Tallyk','Mineralnye') + cm:addConnection('Tallyk','Kislovodsk') + cm:addConnection('Power Plant','Mineralnye') + cm:addConnection('Power Plant','Tallyk') + cm:addConnection('Cherkessk','Tallyk') + cm:addConnection('Cherkessk','Power Plant') + cm:addConnection('Cherkessk','Humara') +end + +ZoneCommand.setNeighbours(cm) + +bm = BattlefieldManager:new() + +mc = MarkerCommands:new() + +pt = PlayerTracker:new(mc) + +mt = MissionTracker:new(pt, mc) + +st = SquadTracker:new() + +ct = CSARTracker:new() + +pl = PlayerLogistics:new(mt, pt, st, ct) + +gci = GCI:new(2) + +gm = GroupMonitor:new(cm) +ZoneCommand.groupMonitor = gm + +-- PlayerLogistics:registerSquadGroup(squadType, groupname, weight,cost,jobtime,extracttime, squadSize) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.capture, 'capture-squad', 700, 200, 60, 60*30, 4) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.sabotage, 'sabotage-squad', 800, 500, 60*5, 60*30, 4) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.ambush, 'ambush-squad', 900, 300, 60*20, 60*30, 5) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.engineer, 'engineer-squad', 200, 1000,60, 60*30, 2) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.manpads, 'manpads-squad', 900, 500, 60*20, 60*30, 5) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.spy, 'spy-squad', 100, 300, 60*10, 60*30, 1) +pl:registerSquadGroup(PlayerLogistics.infantryTypes.rapier, 'rapier-squad', 1200,2000,60*60, 60*30, 8) + +Group.getByName('jtacDrone'):destroy() +CommandFunctions.jtac = JTAC:new({name = 'jtacDrone'}) + +pm = PersistenceManager:new(savefile, gm, st, ct, pl) +pm:load() + +if pm:canRestore() then + pm:restoreZones() + pm:restoreAIMissions() + pm:restoreBattlefield() + pm:restoreCsar() + pm:restoreSquads() +else + --initial states + Starter.start(zones) +end + +timer.scheduleFunction(function(param, time) + pm:save() + env.info("Mission state saved") + return time+60 +end, zones, timer.getTime()+60) + + +--make sure support units are present where needed +ensureSpawn = { + ['golf-farp-suport'] = zones.golf, + ['november-farp-suport'] = zones.november, + ['tango-farp-suport'] = zones.tango, + ['sierra-farp-suport'] = zones.sierra, + ['cherkessk-farp-suport'] = zones.cherkessk, + ['unal-farp-suport'] = zones.unal, + ['tyrnyauz-farp-suport'] = zones.tyrnyauz +} + +for grname, zn in pairs(ensureSpawn) do + local g = Group.getByName(grname) + if g then g:destroy() end +end + +timer.scheduleFunction(function(param, time) + + for grname, zn in pairs(ensureSpawn) do + local g = Group.getByName(grname) + if zn.side == 2 then + if not g then + local err, msg = pcall(mist.respawnGroup,grname,true) + if not err then + env.info("ERROR spawning "..grname) + env.info(msg) + end + end + else + if g then g:destroy() end + end + end + + return time+30 +end, {}, timer.getTime()+30) + + +--supply injection +local blueSupply = {'offmap-supply-blue-1','offmap-supply-blue-2','offmap-supply-blue-3','offmap-supply-blue-4','offmap-supply-blue-5'} +local redSupply = {'offmap-supply-red-1','offmap-supply-red-2','offmap-supply-red-3','offmap-supply-red-4','offmap-supply-red-5'} +local offmapZones = { + zones.batumi, + zones.sochi, + zones.nalchik, + zones.beslan, + zones.mozdok, + zones.mineralnye, +-- zones.senaki, +-- zones.sukhumi, +-- zones.gudauta, +-- zones.kobuleti, +} + +supplyPointRegistry = { + blue = {}, + red = {} +} + +for i,v in ipairs(blueSupply) do + local g = Group.getByName(v) + if g then + supplyPointRegistry.blue[v] = g:getUnit(1):getPoint() + end +end + +for i,v in ipairs(redSupply) do + local g = Group.getByName(v) + if g then + supplyPointRegistry.red[v] = g:getUnit(1):getPoint() + end +end + +offmapSupplyRegistry = {} +timer.scheduleFunction(function(param, time) + local availableBlue = {} + for i,v in ipairs(param.blue) do + if offmapSupplyRegistry[v] == nil then + table.insert(availableBlue, v) + end + end + + local availableRed = {} + for i,v in ipairs(param.red) do + if offmapSupplyRegistry[v] == nil then + table.insert(availableRed, v) + end + end + + local redtargets = {} + local bluetargets = {} + for _, zn in ipairs(param.offmapZones) do + if zn:needsSupplies(3000) then + local isOnRoute = false + for _,data in pairs(offmapSupplyRegistry) do + if data.zone.name == zn.name then + isOnRoute = true + break + end + end + if not isOnRoute then + if zn.side == 1 then + table.insert(redtargets, zn) + elseif zn.side == 2 then + table.insert(bluetargets, zn) + end + end + end + end + + if #availableRed > 0 and #redtargets > 0 then + local zn = redtargets[math.random(1,#redtargets)] + + local red = nil + local minD = 999999999 + for i,v in ipairs(availableRed) do + local d = mist.utils.get2DDist(zn.zone.point, supplyPointRegistry.red[v]) + if d < minD then + red = v + minD = d + end + end + + if not red then red = availableRed[math.random(1,#availableRed)] end + + local gr = red + red = nil + mist.respawnGroup(gr, true) + offmapSupplyRegistry[gr] = {zone = zn, assigned = timer.getAbsTime()} + env.info(gr..' was deployed') + timer.scheduleFunction(function(param,time) + local g = Group.getByName(param.group) + TaskExtensions.landAtAirfield(g, param.target.zone.point) + env.info(param.group..' going to '..param.target.name) + end, {group=gr, target=zn}, timer.getTime()+2) + end + + if #availableBlue > 0 and #bluetargets>0 then + local zn = bluetargets[math.random(1,#bluetargets)] + + local blue = nil + local minD = 999999999 + for i,v in ipairs(availableBlue) do + local d = mist.utils.get2DDist(zn.zone.point, supplyPointRegistry.blue[v]) + if d < minD then + blue = v + minD = d + end + end + + if not blue then blue = availableBlue[math.random(1,#availableBlue)] end + + local gr = blue + blue = nil + mist.respawnGroup(gr, true) + offmapSupplyRegistry[gr] = {zone = zn, assigned = timer.getAbsTime()} + env.info(gr..' was deployed') + timer.scheduleFunction(function(param,time) + local g = Group.getByName(param.group) + TaskExtensions.landAtAirfield(g, param.target.zone.point) + env.info(param.group..' going to '..param.target.name) + end, {group=gr, target=zn}, timer.getTime()+2) + end + + return time+(60*5) +end, {blue = blueSupply, red = redSupply, offmapZones = offmapZones}, timer.getTime()+60) + + + +timer.scheduleFunction(function(param, time) + + for groupname,data in pairs(offmapSupplyRegistry) do + local gr = Group.getByName(groupname) + if not gr then + offmapSupplyRegistry[groupname] = nil + env.info(groupname..' was destroyed') + end + + if gr and ((timer.getAbsTime() - data.assigned) > (60*60)) then + gr:destroy() + offmapSupplyRegistry[groupname] = nil + env.info(groupname..' despawned due to being alive for too long') + end + + if gr and Utils.allGroupIsLanded(gr) and Utils.someOfGroupInZone(gr, data.zone.name) then + data.zone:addResource(15000) + gr:destroy() + offmapSupplyRegistry[groupname] = nil + env.info(groupname..' landed at '..data.zone.name..' and delivered 15000 resources') + end + end + + return time+180 +end, {}, timer.getTime()+180) \ No newline at end of file