From 2229525df6f8d7262e04c1efd5e793271a72c169 Mon Sep 17 00:00:00 2001 From: JJ173 Date: Sat, 8 Apr 2017 12:14:22 +0100 Subject: [PATCH 1/4] Push current table conversion update for AI Not finished. However, I'm looking in to AI for MP games right now. Need to ensure it works correctly. --- nomadhook/lua/sim/ScenarioUtilities.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/nomadhook/lua/sim/ScenarioUtilities.lua b/nomadhook/lua/sim/ScenarioUtilities.lua index 2795d329..2913cb46 100644 --- a/nomadhook/lua/sim/ScenarioUtilities.lua +++ b/nomadhook/lua/sim/ScenarioUtilities.lua @@ -10,6 +10,8 @@ local conversionTable = { uel0309 = 'inu2001', uel0001 = 'inu0001', uel0301 = 'inu0301', + uel0103 = 'inu1006', + uel0104 = 'inu1006', } local oldFactionConvert = FactionConvert @@ -25,7 +27,7 @@ function FactionConvert(template, factionIndex) local old = template[i][1] template[i][1] = string.gsub(template[i][1], 'ue', 'in') template[i][1] = string.gsub(template[i][1], 'inl', 'inu') - WARN('Coulndt find a conversion so we tried : ' .. old .. ' => ' .. template[i][1]) + WARN('Could not find a conversion so we tried : ' .. old .. ' => ' .. template[i][1]) end end i = i + 1 From 83c21de001d510979b98f49dd2b3d44badbf193d Mon Sep 17 00:00:00 2001 From: JJ173 Date: Sat, 8 Apr 2017 12:31:44 +0100 Subject: [PATCH 2/4] Added Mission Land Platoon Templates Some Nomads Platoon Templates (Land) were out-dated. Compared and added missing templates to contribute towards balancing/fixing the AI. --- .../PlatoonTemplates/LandPlatoonTemplates.lua | 1118 +++++++++-------- 1 file changed, 575 insertions(+), 543 deletions(-) diff --git a/lua/AI/PlatoonTemplates/LandPlatoonTemplates.lua b/lua/AI/PlatoonTemplates/LandPlatoonTemplates.lua index 5cb23e77..c2e41700 100644 --- a/lua/AI/PlatoonTemplates/LandPlatoonTemplates.lua +++ b/lua/AI/PlatoonTemplates/LandPlatoonTemplates.lua @@ -1,544 +1,576 @@ ---*************************************************************************** ---* ---** File : /lua/ai/LandPlatoonTemplates.lua ---** ---** Summary : Global platoon templates ---** ---** Copyright © 2005 Gas Powered Games, Inc. All rights reserved. ---**************************************************************************** - --- ==== Global Form platoons ==== -- -PlatoonTemplate { - Name = 'LandAttack', - Plan = 'AttackForceAI', - GlobalSquads = { - { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 1, 25, 'Attack', 'none' } - }, -} - -PlatoonTemplate { - Name = 'LandAttackMedium', - Plan = 'AttackForceAI', - GlobalSquads = { - { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 25, 50, 'Attack', 'none' } - }, -} -PlatoonTemplate { - Name = 'LandAttackLarge', - Plan = 'AttackForceAI', - GlobalSquads = { - { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 50, 100, 'Attack', 'none' } - }, -} - -PlatoonTemplate { - Name = 'BaseGuardSmall', - Plan = 'GuardBase', - GlobalSquads = { - { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 5, 15, 'Attack', 'none' } - }, -} - -PlatoonTemplate { - Name = 'BaseGuardMedium', - Plan = 'GuardBase', - GlobalSquads = { - { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 15, 25, 'Attack', 'none' } - }, -} -PlatoonTemplate { - Name = 'HuntAttackSmall', - Plan = 'HuntAI', - GlobalSquads = { - { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 5, 25, 'Attack', 'none' } - }, -} - -PlatoonTemplate { - Name = 'HuntAttackMedium', - Plan = 'HUntAI', - GlobalSquads = { - { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 25, 50, 'Attack', 'none' } - }, -} -PlatoonTemplate { - Name = 'StartLocationAttack', - Plan = 'GuardMarker', - GlobalSquads = { - { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 15, 25, 'Attack', 'none' }, - { categories.ENGINEER, 1, 1, 'Attack', 'none' }, - }, -} -PlatoonTemplate { - Name = 'StartLocationAttack2', - Plan = 'GuardMarker', - GlobalSquads = { - { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 15, 25, 'Attack', 'none' } - }, -} -PlatoonTemplate { - Name = 'LandAttackHunt', - Plan = 'HuntAI', - GlobalSquads = { - { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 1, 100, 'Attack', 'none' } - } -} - -PlatoonTemplate { - Name = 'T1LandScoutForm', - Plan = 'ScoutingAI', - GlobalSquads = { - { categories.MOBILE * categories.SCOUT * categories.TECH1, 1, 1, 'scout', 'none' } - } -} - -PlatoonTemplate { - Name = 'T1MassHuntersCategory', - --Plan = 'AttackForceAI', - Plan = 'GuardMarker', - GlobalSquads = { - { categories.TECH1 * categories.LAND * categories.MOBILE * categories.DIRECTFIRE * categories.BOT - categories.SCOUT - categories.ENGINEER - categories.EXPERIMENTAL, 3, 15, 'attack', 'none' }, - { categories.LAND * categories.SCOUT, 0, 1, 'attack', 'none' }, - } -} - -PlatoonTemplate { - Name = 'T2MassHuntersCategory', - --Plan = 'AttackForceAI', - Plan = 'GuardMarker', - GlobalSquads = { - { categories.TECH1 * categories.LAND * categories.MOBILE * categories.DIRECTFIRE * categories.BOT - categories.SCOUT - categories.ENGINEER - categories.EXPERIMENTAL, 10, 25, 'attack', 'none' }, - { categories.LAND * categories.SCOUT, 0, 1, 'attack', 'none' }, - } -} -PlatoonTemplate { - Name = 'T2MassHuntersCategory', - --Plan = 'AttackForceAI', - Plan = 'GuardMarker', - GlobalSquads = { - { categories.TECH1 * categories.LAND * categories.MOBILE * categories.DIRECTFIRE * categories.BOT - categories.SCOUT - categories.ENGINEER - categories.EXPERIMENTAL, 3, 15, 'attack', 'none' }, - { categories.LAND * categories.SCOUT, 0, 1, 'attack', 'none' }, - } -} - -PlatoonTemplate { - Name = 'T1MassHuntersCategoryHunt', - Plan = 'HuntAI', - GlobalSquads = { - { categories.TECH1 * categories.LAND * categories.MOBILE - categories.SCOUT - categories.ENGINEER - categories.EXPERIMENTAL, 3, 50, 'attack', 'none' }, - { categories.LAND * categories.SCOUT, 0, 1, 'attack', 'none' }, - } -} - -PlatoonTemplate { - Name = 'T2HuntersCategory', - Plan = 'AttackForceAI', - --Plan = 'HuntAI', - GlobalSquads = { - { categories.LAND * categories.MOBILE * categories.DIRECTFIRE - categories.SCOUT - categories.ENGINEER - categories.EXPERIMENTAL, 10, 15, 'attack', 'none' }, - { categories.LAND * categories.SCOUT, 0, 1, 'attack', 'none' }, - } -} - -PlatoonTemplate { - Name = 'T4ExperimentalLand', - Plan = 'ExperimentalAIHub', - GlobalSquads = { - { categories.EXPERIMENTAL * categories.LAND * categories.MOBILE, 1, 1, 'attack', 'none' } - }, -} - -PlatoonTemplate { - Name = 'T1EngineerGuard', - Plan = 'None', - GlobalSquads = { - { categories.DIRECTFIRE * categories.TECH1 * categories.LAND * categories.MOBILE - categories.SCOUT - categories.ENGINEER, 1, 3, 'guard', 'None' } - }, -} - - --- ==== Factional Templates ==== -- - --- T1 -PlatoonTemplate { - Name = 'T1LandAA', - FactionSquads = { - UEF = { - { 'uel0104', 1, 1, 'Attack', 'none' } - }, - Aeon = { - { 'ual0104', 1, 1, 'attack', 'none' } - }, - Cybran = { - { 'url0104', 1, 1, 'attack', 'none' } - }, - Seraphim = { - { 'xsl0104', 1, 1, 'attack', 'none' } - }, - Nomads = { - { 'inu1006', 1, 1, 'attack', 'none' } - }, - }, -} - -PlatoonTemplate { - Name = 'T1LandArtillery', - FactionSquads = { - UEF = { - { 'uel0103', 1, 1, 'Attack', 'none' } - }, - Aeon = { - { 'ual0103', 1, 1, 'Attack', 'none' } - }, - Cybran = { - { 'url0103', 1, 1, 'Attack', 'none' } - }, - Seraphim = { - { 'xsl0103', 1, 1, 'Attack', 'none' } - }, - Nomads = { - { 'inu1008', 1, 1, 'Attack', 'none' }, - { 'inu1004', 1, 2, 'Attack', 'none' }, -- 1 or 2 T1 tanks to make the sniper tank less numerous on the battlefield - }, - } -} - -PlatoonTemplate { - Name = 'T1LandDFBot', - FactionSquads = { - UEF = { - { 'uel0106', 1, 1, 'attack', 'None' } - }, - Aeon = { - { 'ual0106', 1, 1, 'attack', 'None' } - }, - Cybran = { - { 'url0106', 1, 1, 'attack', 'None' } - }, - Seraphim = { - { 'xsl0201', 1, 1, 'attack', 'None' } - }, - Nomads = { - { 'inu1007', 1, 1, 'Attack', 'none' } - }, - } -} - -PlatoonTemplate { - Name = 'T1LandDFTank', - FactionSquads = { - UEF = { - { 'uel0201', 1, 1, 'attack', 'none' } - }, - Aeon = { - { 'ual0201', 1, 1, 'attack', 'none' } - }, - Cybran = { - { 'url0107', 1, 1, 'attack', 'none' } - }, - Seraphim = { - { 'xsl0201', 1, 1, 'attack', 'none' } - }, - Nomads = { - { 'inu1004', 1, 1, 'attack', 'none' } - }, - } -} - -PlatoonTemplate { - Name = 'T1LandScout', - FactionSquads = { - UEF = { - { 'uel0101', 1, 1, 'scout', 'none' } - }, - Aeon = { - { 'ual0101', 1, 1, 'scout', 'none' } - }, - Cybran = { - { 'url0101', 1, 1, 'scout', 'none' } - }, - Seraphim = { - { 'xsl0101', 1, 1, 'scout', 'none' } - }, - Nomads = { - { 'inu1002', 1, 1, 'scout', 'none' } - }, - } -} - --- T2 -PlatoonTemplate { - Name = 'T2LandAA', - FactionSquads = { - UEF = { - { 'uel0205', 1, 1, 'attack', 'none' } - }, - Aeon = { - { 'ual0205', 1, 1, 'attack', 'none' } - }, - Cybran = { - { 'url0205', 1, 1, 'attack', 'none' } - }, - Seraphim = { - { 'xsl0205', 1, 1, 'attack', 'none' } - }, - Nomads = { - { 'inu2004', 1, 1, 'attack', 'none' } - }, - } -} - -PlatoonTemplate { - Name = 'T2LandAmphibious', - FactionSquads = { - UEF = { - { 'uel0203', 1, 1, 'attack', 'none' } - }, - Aeon = { - { 'ual0201', 1, 1, 'attack', 'none' } - }, - Cybran = { - { 'url0203', 1, 1, 'attack', 'none' } - }, - Seraphim = { - { 'xsl0203', 1, 1, 'attack', 'none' } - }, - Nomads = { - { 'inu2002', 1, 1, 'attack', 'none' } - }, - } -} - -PlatoonTemplate { - Name = 'T2LandArtillery', - FactionSquads = { - UEF = { - { 'uel0111', 1, 1, 'artillery', 'none' }, - }, - Aeon = { - { 'ual0111', 1, 1, 'artillery', 'none' }, - }, - Cybran = { - { 'url0111', 1, 1, 'artillery', 'none' }, - }, - Seraphim = { - { 'xsl0111', 1, 1, 'artillery', 'none' }, - }, - Nomads = { - { 'inu2003', 1, 1, 'artillery', 'none' }, - }, - } -} - -PlatoonTemplate { - Name = 'T2LandDFTank', - FactionSquads = { - UEF = { - { 'uel0202', 1, 1, 'attack', 'none' }, - }, - Aeon = { - { 'ual0202', 1, 1, 'attack', 'none' }, - }, - Cybran = { - { 'url0202', 1, 1, 'attack', 'none' }, - }, - Seraphim = { - { 'xsl0202', 1, 1, 'attack', 'none' }, - }, - Nomads = { - { 'inu2005', 1, 1, 'attack', 'none' }, - }, - } -} - -PlatoonTemplate { - Name = 'T2AttackTank', - FactionSquads = { - UEF = { - { 'del0204', 1, 1, 'attack', 'None' }, - }, - Aeon = { - { 'xal0203', 1, 1, 'attack', 'None' }, - }, - Cybran = { - { 'drl0204', 1, 1, 'attack', 'None' }, - }, - Nomads = { - { 'inu2005', 1, 1, 'attack', 'none' }, - }, - }, -} - -PlatoonTemplate { - Name = 'T2MobileShields', - FactionSquads = { - UEF = { - { 'uel0307', 1, 1, 'support', 'none' } - }, - Aeon = { - { 'ual0307', 1, 1, 'support', 'none' } - }, - Cybran = { - { 'url0306', 1, 1, 'support', 'none' } - }, - Nomads = { - { 'inu3003', 1, 1, 'support', 'none' }, - { 'inu2005', 1, 2, 'support', 'none' }, -- 1 or 2 T2 tanks to make the EMP tank less numerous on the battlefield - }, - } -} - -PlatoonTemplate { - Name = 'T2MobileBombs', - FactionSquads = { - Cybran = { - { 'xrl0302', 1, 1, 'attack', 'none' }, - }, - } -} - --- T3 -PlatoonTemplate { - Name = 'T3LandAA', - FactionSquads = { - UEF = { - { 'uel0205', 1, 1, 'attack', 'none' } - }, - Aeon = { - { 'ual0205', 1, 1, 'attack', 'none' } - }, - Cybran = { - { 'url0205', 1, 1, 'attack', 'none' } - }, - Seraphim = { - { 'xsl0205', 1, 1, 'attack', 'none' } - }, - Nomads = { - { 'inu3007', 1, 1, 'attack', 'none' } - }, - } -} - -PlatoonTemplate { - Name = 'T3LandArtillery', - FactionSquads = { - UEF = { - { 'uel0304', 1, 1, 'artillery', 'none' }, - }, - Aeon = { - { 'ual0304', 1, 1, 'artillery', 'none' }, - }, - Cybran = { - { 'url0304', 1, 1, 'artillery', 'none' }, - }, - Seraphim = { - { 'xsl0304', 1, 1, 'artillery', 'none' }, - }, - Nomads = { - { 'inu3004', 1, 1, 'artillery', 'none' }, - }, - } -} - -PlatoonTemplate { - Name = 'T3LandBot', - FactionSquads = { - UEF = { - { 'uel0303', 1, 1, 'attack', 'none' }, - }, - Aeon = { - { 'ual0303', 1, 1, 'attack', 'none' }, - }, - Cybran = { - { 'url0303', 1, 1, 'attack', 'none' }, - }, - Seraphim = { - { 'xsl0303', 1, 1, 'attack', 'none' }, - }, - Nomads = { - { 'inu3002', 1, 1, 'attack', 'none' }, - }, - } -} - -PlatoonTemplate { - Name = 'T3SniperBots', - FactionSquads = { - Aeon = { - { 'xal0305', 1, 1, 'attack', 'none' }, - }, - Seraphim = { - { 'xsl0305', 1, 1, 'attack', 'none' }, - }, - } -} - -PlatoonTemplate { - Name = 'T3ArmoredAssault', - FactionSquads = { - UEF = { - { 'xal0305', 1, 1, 'attack', 'none' }, - }, - Cybran = { - { 'xrl0305', 1, 1, 'attack', 'none' }, - }, - Nomads = { - { 'inu3009', 1, 1, 'attack', 'none' }, - }, - } -} - -PlatoonTemplate { - Name = 'T3MobileMissile', - FactionSquads = { - UEF = { - { 'xel0306', 1, 1, 'attack', 'None' }, - }, - Nomads = { - { 'inu2003', 1, 1, 'attack', 'none' } - }, - } -} - -PlatoonTemplate { - Name = 'T3MobileShields', - FactionSquads = { - UEF = { - { 'uel0307', 1, 1, 'support', 'none' } - }, - Aeon = { - { 'ual0307', 1, 1, 'support', 'none' } - }, - Cybran = { - { 'url0306', 1, 1, 'support', 'none' } - }, - Seraphim = { - { 'xsl0307', 1, 1, 'support', 'none' } - }, - Nomads = { - { 'inu3003', 1, 1, 'support', 'none' }, - { 'inu3002', 1, 1, 'support', 'none' }, -- 1 T3 tanks to make the EMP tank less numerous on the battlefield - }, - } -} - -PlatoonTemplate { - Name = 'T3LandSubCommander', - FactionSquads = { - UEF = { - { 'uel0301', 1, 1, 'support', 'none' } - }, - Aeon = { - { 'ual0301', 1, 1, 'support', 'none' } - }, - Cybran = { - { 'url0301', 1, 1, 'support', 'none' } - }, - Seraphim = { - { 'xsl0301', 1, 1, 'support', 'none' } - }, - Nomads = { - { 'inu0301_Default', 1, 1, 'support', 'none' } - }, - } +--*************************************************************************** +--* +--** File : /lua/ai/LandPlatoonTemplates.lua +--** +--** Summary : Global platoon templates +--** +--** Copyright © 2005 Gas Powered Games, Inc. All rights reserved. +--**************************************************************************** + +-- ==== Global Form platoons ==== -- +PlatoonTemplate { + Name = 'LandAttack', + Plan = 'AttackForceAI', + GlobalSquads = { + { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 1, 25, 'Attack', 'none' } + }, +} + +PlatoonTemplate { + Name = 'LandAttackMedium', + Plan = 'AttackForceAI', + GlobalSquads = { + { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 25, 50, 'Attack', 'none' } + }, +} +PlatoonTemplate { + Name = 'LandAttackLarge', + Plan = 'AttackForceAI', + GlobalSquads = { + { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 50, 100, 'Attack', 'none' } + }, +} + +PlatoonTemplate { + Name = 'BaseGuardSmall', + Plan = 'GuardBase', + GlobalSquads = { + { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 5, 15, 'Attack', 'none' } + }, +} + +PlatoonTemplate { + Name = 'BaseGuardMedium', + Plan = 'GuardBase', + GlobalSquads = { + { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 15, 25, 'Attack', 'none' } + }, +} + +PlatoonTemplate { + Name = 'LABAttack', + Plan = 'HuntAI', + GlobalSquads = { + { categories.MOBILE * categories.LAND * categories.TECH1 * categories.BOT - categories.REPAIR + (categories.SERAPHIM * categories.SCOUT), 5, 50, 'Attack', 'none' } + }, +} +#DUNCAN - Added +PlatoonTemplate { + Name = 'GhettoMarines', + Plan = 'GhettoAI', + GlobalSquads = { + #DUNCAN - the REPAIR is to remove the mantis. Added in Selen too. + { categories.MOBILE * categories.LAND * categories.TECH1 * categories.BOT - categories.REPAIR + (categories.SERAPHIM * categories.SCOUT), 6, 6, 'Attack', 'none' } + }, +} +PlatoonTemplate { + Name = 'HuntAttackSmall', + Plan = 'HuntAI', + GlobalSquads = { + { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 5, 25, 'Attack', 'none' } + }, +} + +PlatoonTemplate { + Name = 'HuntAttackMedium', + Plan = 'HUntAI', + GlobalSquads = { + { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 25, 50, 'Attack', 'none' } + }, +} +PlatoonTemplate { + Name = 'StartLocationAttack', + Plan = 'GuardMarker', + GlobalSquads = { + { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 15, 25, 'Attack', 'none' }, + { categories.ENGINEER, 1, 1, 'Attack', 'none' }, + }, +} +PlatoonTemplate { + Name = 'StartLocationAttack2', + Plan = 'GuardMarker', + GlobalSquads = { + { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 15, 25, 'Attack', 'none' } + }, +} +PlatoonTemplate { + Name = 'LandAttackHunt', + Plan = 'HuntAI', + GlobalSquads = { + { categories.MOBILE * categories.LAND - categories.EXPERIMENTAL - categories.ENGINEER, 1, 100, 'Attack', 'none' } + } +} + +PlatoonTemplate { + Name = 'T1LandScoutForm', + Plan = 'ScoutingAI', + GlobalSquads = { + { categories.MOBILE * categories.SCOUT * categories.TECH1, 1, 1, 'scout', 'none' } + } +} + +PlatoonTemplate { + Name = 'T1MassHuntersCategory', + --Plan = 'AttackForceAI', + Plan = 'GuardMarker', + GlobalSquads = { + { categories.TECH1 * categories.LAND * categories.MOBILE * categories.DIRECTFIRE * categories.BOT - categories.SCOUT - categories.ENGINEER - categories.EXPERIMENTAL, 3, 15, 'attack', 'none' }, + { categories.LAND * categories.SCOUT, 0, 1, 'attack', 'none' }, + } +} + +PlatoonTemplate { + Name = 'T2MassHuntersCategory', + --Plan = 'AttackForceAI', + Plan = 'GuardMarker', + GlobalSquads = { + { categories.TECH1 * categories.LAND * categories.MOBILE * categories.DIRECTFIRE * categories.BOT - categories.SCOUT - categories.ENGINEER - categories.EXPERIMENTAL, 10, 25, 'attack', 'none' }, + { categories.LAND * categories.SCOUT, 0, 1, 'attack', 'none' }, + } +} +PlatoonTemplate { + Name = 'T2MassHuntersCategory', + --Plan = 'AttackForceAI', + Plan = 'GuardMarker', + GlobalSquads = { + { categories.TECH1 * categories.LAND * categories.MOBILE * categories.DIRECTFIRE * categories.BOT - categories.SCOUT - categories.ENGINEER - categories.EXPERIMENTAL, 3, 15, 'attack', 'none' }, + { categories.LAND * categories.SCOUT, 0, 1, 'attack', 'none' }, + } +} + +PlatoonTemplate { + Name = 'T1MassHuntersCategoryHunt', + Plan = 'HuntAI', + GlobalSquads = { + { categories.TECH1 * categories.LAND * categories.MOBILE - categories.SCOUT - categories.ENGINEER - categories.EXPERIMENTAL, 3, 50, 'attack', 'none' }, + { categories.LAND * categories.SCOUT, 0, 1, 'attack', 'none' }, + } +} + +PlatoonTemplate { + Name = 'T2HuntersCategory', + Plan = 'AttackForceAI', + --Plan = 'HuntAI', + GlobalSquads = { + { categories.LAND * categories.MOBILE * categories.DIRECTFIRE - categories.SCOUT - categories.ENGINEER - categories.EXPERIMENTAL, 10, 15, 'attack', 'none' }, + { categories.LAND * categories.SCOUT, 0, 1, 'attack', 'none' }, + } +} + +PlatoonTemplate { + Name = 'T4ExperimentalLand', + Plan = 'ExperimentalAIHub', + GlobalSquads = { + { categories.EXPERIMENTAL * categories.LAND * categories.MOBILE, 1, 1, 'attack', 'none' } + }, +} + +PlatoonTemplate { + Name = 'T4ExperimentalLandGroup', + Plan = 'ExperimentalAIHub', + GlobalSquads = { + { categories.EXPERIMENTAL * categories.LAND * categories.MOBILE, 2, 3, 'attack', 'none' } + }, +} + +PlatoonTemplate { + Name = 'T1EngineerGuard', + Plan = 'None', + GlobalSquads = { + { categories.DIRECTFIRE * categories.TECH1 * categories.LAND * categories.MOBILE - categories.SCOUT - categories.ENGINEER, 1, 3, 'guard', 'None' } + }, +} + +PlatoonTemplate { + Name = 'T3ExperimentalGuard', + Plan = 'GuardUnit', + GlobalSquads = { + { categories.DIRECTFIRE * (categories.TECH3 + categories.TECH2) * categories.LAND * categories.MOBILE - categories.SCOUT - categories.ENGINEER, 1, 20, 'guard', 'None' } + }, +} + +-- ==== Factional Templates ==== -- + +-- T1 +PlatoonTemplate { + Name = 'T1LandAA', + FactionSquads = { + UEF = { + { 'uel0104', 1, 1, 'Attack', 'none' } + }, + Aeon = { + { 'ual0104', 1, 1, 'attack', 'none' } + }, + Cybran = { + { 'url0104', 1, 1, 'attack', 'none' } + }, + Seraphim = { + { 'xsl0104', 1, 1, 'attack', 'none' } + }, + Nomads = { + { 'inu1006', 1, 1, 'attack', 'none' } + }, + }, +} + +PlatoonTemplate { + Name = 'T1LandArtillery', + FactionSquads = { + UEF = { + { 'uel0103', 1, 1, 'Attack', 'none' } + }, + Aeon = { + { 'ual0103', 1, 1, 'Attack', 'none' } + }, + Cybran = { + { 'url0103', 1, 1, 'Attack', 'none' } + }, + Seraphim = { + { 'xsl0103', 1, 1, 'Attack', 'none' } + }, + Nomads = { + { 'inu1008', 1, 1, 'Attack', 'none' }, + { 'inu1004', 1, 2, 'Attack', 'none' }, -- 1 or 2 T1 tanks to make the sniper tank less numerous on the battlefield + }, + } +} + +PlatoonTemplate { + Name = 'T1LandDFBot', + FactionSquads = { + UEF = { + { 'uel0106', 1, 1, 'attack', 'None' } + }, + Aeon = { + { 'ual0106', 1, 1, 'attack', 'None' } + }, + Cybran = { + { 'url0106', 1, 1, 'attack', 'None' } + }, + Seraphim = { + { 'xsl0201', 1, 1, 'attack', 'None' } + }, + Nomads = { + { 'inu1007', 1, 1, 'Attack', 'none' } + }, + } +} + +PlatoonTemplate { + Name = 'T1LandDFTank', + FactionSquads = { + UEF = { + { 'uel0201', 1, 1, 'attack', 'none' } + }, + Aeon = { + { 'ual0201', 1, 1, 'attack', 'none' } + }, + Cybran = { + { 'url0107', 1, 1, 'attack', 'none' } + }, + Seraphim = { + { 'xsl0201', 1, 1, 'attack', 'none' } + }, + Nomads = { + { 'inu1004', 1, 1, 'attack', 'none' } + }, + } +} + +PlatoonTemplate { + Name = 'T1LandScout', + FactionSquads = { + UEF = { + { 'uel0101', 1, 1, 'scout', 'none' } + }, + Aeon = { + { 'ual0101', 1, 1, 'scout', 'none' } + }, + Cybran = { + { 'url0101', 1, 1, 'scout', 'none' } + }, + Seraphim = { + { 'xsl0101', 1, 1, 'scout', 'none' } + }, + Nomads = { + { 'inu1002', 1, 1, 'scout', 'none' } + }, + } +} + +-- T2 +PlatoonTemplate { + Name = 'T2LandAA', + FactionSquads = { + UEF = { + { 'uel0205', 1, 1, 'attack', 'none' } + }, + Aeon = { + { 'ual0205', 1, 1, 'attack', 'none' } + }, + Cybran = { + { 'url0205', 1, 1, 'attack', 'none' } + }, + Seraphim = { + { 'xsl0205', 1, 1, 'attack', 'none' } + }, + Nomads = { + { 'inu2004', 1, 1, 'attack', 'none' } + }, + } +} + +PlatoonTemplate { + Name = 'T2LandAmphibious', + FactionSquads = { + UEF = { + { 'uel0203', 1, 1, 'attack', 'none' } + }, + Aeon = { + { 'ual0201', 1, 1, 'attack', 'none' } + }, + Cybran = { + { 'url0203', 1, 1, 'attack', 'none' } + }, + Seraphim = { + { 'xsl0203', 1, 1, 'attack', 'none' } + }, + Nomads = { + { 'inu2002', 1, 1, 'attack', 'none' } + }, + } +} + +PlatoonTemplate { + Name = 'T2LandArtillery', + FactionSquads = { + UEF = { + { 'uel0111', 1, 1, 'artillery', 'none' }, + }, + Aeon = { + { 'ual0111', 1, 1, 'artillery', 'none' }, + }, + Cybran = { + { 'url0111', 1, 1, 'artillery', 'none' }, + }, + Seraphim = { + { 'xsl0111', 1, 1, 'artillery', 'none' }, + }, + Nomads = { + { 'inu2003', 1, 1, 'artillery', 'none' }, + }, + } +} + +PlatoonTemplate { + Name = 'T2LandDFTank', + FactionSquads = { + UEF = { + { 'uel0202', 1, 1, 'attack', 'none' }, + }, + Aeon = { + { 'ual0202', 1, 1, 'attack', 'none' }, + }, + Cybran = { + { 'url0202', 1, 1, 'attack', 'none' }, + }, + Seraphim = { + { 'xsl0202', 1, 1, 'attack', 'none' }, + }, + Nomads = { + { 'inu2005', 1, 1, 'attack', 'none' }, + }, + } +} + +PlatoonTemplate { + Name = 'T2AttackTank', + FactionSquads = { + UEF = { + { 'del0204', 1, 1, 'attack', 'None' }, + }, + Aeon = { + { 'xal0203', 1, 1, 'attack', 'None' }, + }, + Cybran = { + { 'drl0204', 1, 1, 'attack', 'None' }, + }, + Nomads = { + { 'inu2005', 1, 1, 'attack', 'none' }, + }, + }, +} + +PlatoonTemplate { + Name = 'T2MobileShields', + FactionSquads = { + UEF = { + { 'uel0307', 1, 1, 'support', 'none' } + }, + Aeon = { + { 'ual0307', 1, 1, 'support', 'none' } + }, + Cybran = { + { 'url0306', 1, 1, 'support', 'none' } + }, + Nomads = { + { 'inu3003', 1, 1, 'support', 'none' }, + { 'inu2005', 1, 2, 'support', 'none' }, -- 1 or 2 T2 tanks to make the EMP tank less numerous on the battlefield + }, + } +} + +PlatoonTemplate { + Name = 'T2MobileBombs', + FactionSquads = { + Cybran = { + { 'xrl0302', 1, 1, 'attack', 'none' }, + }, + } +} + +-- T3 +PlatoonTemplate { + Name = 'T3LandAA', + FactionSquads = { + UEF = { + { 'uel0205', 1, 1, 'attack', 'none' } + }, + Aeon = { + { 'ual0205', 1, 1, 'attack', 'none' } + }, + Cybran = { + { 'url0205', 1, 1, 'attack', 'none' } + }, + Seraphim = { + { 'xsl0205', 1, 1, 'attack', 'none' } + }, + Nomads = { + { 'inu3007', 1, 1, 'attack', 'none' } + }, + } +} + +PlatoonTemplate { + Name = 'T3LandArtillery', + FactionSquads = { + UEF = { + { 'uel0304', 1, 1, 'artillery', 'none' }, + }, + Aeon = { + { 'ual0304', 1, 1, 'artillery', 'none' }, + }, + Cybran = { + { 'url0304', 1, 1, 'artillery', 'none' }, + }, + Seraphim = { + { 'xsl0304', 1, 1, 'artillery', 'none' }, + }, + Nomads = { + { 'inu3004', 1, 1, 'artillery', 'none' }, + }, + } +} + +PlatoonTemplate { + Name = 'T3LandBot', + FactionSquads = { + UEF = { + { 'uel0303', 1, 1, 'attack', 'none' }, + }, + Aeon = { + { 'ual0303', 1, 1, 'attack', 'none' }, + }, + Cybran = { + { 'url0303', 1, 1, 'attack', 'none' }, + }, + Seraphim = { + { 'xsl0303', 1, 1, 'attack', 'none' }, + }, + Nomads = { + { 'inu3002', 1, 1, 'attack', 'none' }, + }, + } +} + +PlatoonTemplate { + Name = 'T3SniperBots', + FactionSquads = { + Aeon = { + { 'xal0305', 1, 1, 'attack', 'none' }, + }, + Seraphim = { + { 'xsl0305', 1, 1, 'attack', 'none' }, + }, + } +} + +PlatoonTemplate { + Name = 'T3ArmoredAssault', + FactionSquads = { + UEF = { + { 'xal0305', 1, 1, 'attack', 'none' }, + }, + Cybran = { + { 'xrl0305', 1, 1, 'attack', 'none' }, + }, + Nomads = { + { 'inu3009', 1, 1, 'attack', 'none' }, + }, + } +} + +PlatoonTemplate { + Name = 'T3MobileMissile', + FactionSquads = { + UEF = { + { 'xel0306', 1, 1, 'attack', 'None' }, + }, + Nomads = { + { 'inu2003', 1, 1, 'attack', 'none' } + }, + } +} + +PlatoonTemplate { + Name = 'T3MobileShields', + FactionSquads = { + UEF = { + { 'uel0307', 1, 1, 'support', 'none' } + }, + Aeon = { + { 'ual0307', 1, 1, 'support', 'none' } + }, + Cybran = { + { 'url0306', 1, 1, 'support', 'none' } + }, + Seraphim = { + { 'xsl0307', 1, 1, 'support', 'none' } + }, + Nomads = { + { 'inu3003', 1, 1, 'support', 'none' }, + { 'inu3002', 1, 1, 'support', 'none' }, -- 1 T3 tanks to make the EMP tank less numerous on the battlefield + }, + } +} + +PlatoonTemplate { + Name = 'T3LandSubCommander', + FactionSquads = { + UEF = { + { 'uel0301', 1, 1, 'support', 'none' } + }, + Aeon = { + { 'ual0301', 1, 1, 'support', 'none' } + }, + Cybran = { + { 'url0301', 1, 1, 'support', 'none' } + }, + Seraphim = { + { 'xsl0301', 1, 1, 'support', 'none' } + }, + Nomads = { + { 'inu0301_Default', 1, 1, 'support', 'none' } + }, + } } \ No newline at end of file From cdf1e979334d310b44993c8742c7c9297acc45f3 Mon Sep 17 00:00:00 2001 From: JJ173 Date: Sat, 8 Apr 2017 12:35:05 +0100 Subject: [PATCH 3/4] Added missing air platoon templates Similar to the land templates, the Nomads AI is missing a few. This should contribute towards fixing a few missing attacks. --- .../PlatoonTemplates/AirPlatoonTemplates.lua | 870 +++++++++--------- 1 file changed, 444 insertions(+), 426 deletions(-) diff --git a/lua/AI/PlatoonTemplates/AirPlatoonTemplates.lua b/lua/AI/PlatoonTemplates/AirPlatoonTemplates.lua index 83be9c69..37b79095 100644 --- a/lua/AI/PlatoonTemplates/AirPlatoonTemplates.lua +++ b/lua/AI/PlatoonTemplates/AirPlatoonTemplates.lua @@ -1,427 +1,445 @@ ---*************************************************************************** ---* ---** File : /lua/ai/AirPlatoonTemplates.lua ---** ---** Summary : Global platoon templates ---** ---** Copyright © 2005 Gas Powered Games, Inc. All rights reserved. ---**************************************************************************** - --- ==== Global Form platoons ==== -- -PlatoonTemplate { - Name = 'AirAttack', - Plan = 'StrikeForceAI', - GlobalSquads = { - { categories.MOBILE * categories.AIR - categories.EXPERIMENTAL - categories.TRANSPORTFOCUS - categories.ANTINAVY, 1, 100, 'Attack', 'GrowthFormation' } - }, -} - -PlatoonTemplate { - Name = 'BomberAttack', - Plan = 'StrikeForceAI', - GlobalSquads = { - { categories.MOBILE * categories.AIR * categories.BOMBER - categories.EXPERIMENTAL - categories.ANTINAVY, 1, 100, 'Attack', 'GrowthFormation' }, - --{ categories.MOBILE * categories.AIR * categories.ANTIAIR - categories.EXPERIMENTAL - categories.BOMBER - categories.TRANSPORTFOCUS, 0, 10, 'Attack', 'GrowthFormation' }, - } -} - -PlatoonTemplate { - Name = 'TorpedoBomberAttack', - Plan = 'AttackForceAI', - GlobalSquads = { - { categories.MOBILE * categories.AIR * categories.ANTINAVY - categories.EXPERIMENTAL, 1, 100, 'Attack', 'GrowthFormation' }, - --{ categories.MOBILE * categories.AIR * categories.ANTIAIR - categories.EXPERIMENTAL - categories.BOMBER - categories.TRANSPORTFOCUS, 0, 10, 'Attack', 'GrowthFormation' }, - } -} - -PlatoonTemplate { - Name = 'GunshipAttack', - Plan = 'HuntAI', - GlobalSquads = { - { categories.MOBILE * categories.AIR * categories.GROUNDATTACK - categories.EXPERIMENTAL - categories.TRANSPORTFOCUS, 1, 100, 'Attack', 'GrowthFormation' }, - { categories.MOBILE * categories.AIR * categories.ANTIAIR - categories.EXPERIMENTAL - categories.BOMBER - categories.TRANSPORTFOCUS, 0, 10, 'Attack', 'GrowthFormation' }, - } -} - -PlatoonTemplate { - Name = 'GunshipMassHunter', - Plan = 'GuardMarker', - GlobalSquads = { - { categories.MOBILE * categories.AIR * categories.GROUNDATTACK - categories.EXPERIMENTAL - categories.TRANSPORTFOCUS, 1, 5, 'Attack', 'GrowthFormation' }, - } -} - -PlatoonTemplate { - Name = 'MassHunterBomber', - Plan = 'StrikeForceAI', - GlobalSquads = { - { categories.MOBILE * categories.AIR * (categories.TECH1 + categories.TECH2) * categories.BOMBER - categories.EXPERIMENTAL - categories.ANTINAVY, 1, 3, 'Attack', 'GrowthFormation' }, - }, -} - -PlatoonTemplate { - Name = 'T1AirScoutForm', - Plan = 'ScoutingAI', - GlobalSquads = { - { categories.AIR * categories.SCOUT * categories.TECH1, 1, 1, 'scout', 'None' }, - } -} - -PlatoonTemplate { - Name = 'AntiAirHunt', - Plan = 'HuntAI', - GlobalSquads = { - { categories.AIR * categories.MOBILE * categories.ANTIAIR * ( categories.TECH1 + categories.TECH2 + categories.TECH3 ) - categories.BOMBER - categories.TRANSPORTFOCUS - categories.EXPERIMENTAL, 1, 100, 'attack', 'none' }, - } -} - -PlatoonTemplate { - Name = 'AntiAirBaseGuard', - Plan = 'GuardBase', - GlobalSquads = { - { categories.AIR * categories.MOBILE * categories.ANTIAIR * ( categories.TECH1 + categories.TECH2 + categories.TECH3 ) - categories.BOMBER - categories.TRANSPORTFOCUS - categories.EXPERIMENTAL, 1, 100, 'attack', 'none' }, - } -} - -PlatoonTemplate { - Name = 'GunshipBaseGuard', - Plan = 'GuardBase', - GlobalSquads = { - { categories.AIR * categories.MOBILE * categories.GROUNDATTACK * ( categories.TECH1 + categories.TECH2 + categories.TECH3 ) - categories.TRANSPORTFOCUS - categories.EXPERIMENTAL, 1, 100, 'attack', 'none' }, - } -} - -PlatoonTemplate { - Name = 'T3AirScoutForm', - Plan = 'ScoutingAI', - GlobalSquads = { - { categories.AIR * categories.INTELLIGENCE * categories.TECH3, 1, 1, 'scout', 'None' }, - } -} - -PlatoonTemplate { - Name = 'T4ExperimentalAir', - Plan = 'ExperimentalAIHub', - GlobalSquads = { - { categories.AIR * categories.EXPERIMENTAL * categories.MOBILE, 1, 1, 'attack', 'none' }, - }, -} - --- ==== Faction Build Platoons ==== -- -PlatoonTemplate { - Name = 'T1AirScout', - FactionSquads = { - UEF = { - { 'uea0101', 1, 1, 'scout', 'GrowthFormation' } - }, - Aeon = { - { 'uaa0101', 1, 1, 'scout', 'GrowthFormation' } - }, - Cybran = { - { 'ura0101', 1, 1, 'scout', 'GrowthFormation' } - }, - Seraphim = { - { 'xsa0101', 1, 1, 'scout', 'GrowthFormation' } - }, - Nomads = { - { 'ina1001', 1, 1, 'scout', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T1Gunship', - FactionSquads = { - Cybran = { - { 'xra0105', 1, 1, 'attack', 'None' }, - }, - Nomads = { - { 'ina1004', 1, 1, 'attack', 'None' }, - }, - }, -} - -PlatoonTemplate { - Name = 'T1AirBomber', - FactionSquads = { - UEF = { - { 'uea0103', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'uaa0103', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'ura0103', 1, 1, 'attack', 'GrowthFormation' } - }, - Seraphim = { - { 'xsa0103', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ina1003', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T1AirFighter', - FactionSquads = { - UEF = { - { 'uea0102', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'uaa0102', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'ura0102', 1, 1, 'attack', 'GrowthFormation' } - }, - Seraphim = { - { 'xsa0102', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ina1002', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T1AirTransport', - FactionSquads = { - UEF = { - { 'uea0107', 1, 1, 'support', 'GrowthFormation' } - }, - Aeon = { - { 'uaa0107', 1, 1, 'support', 'GrowthFormation' } - }, - Cybran = { - { 'ura0107', 1, 1, 'support', 'GrowthFormation' } - }, - Seraphim = { - { 'xsa0107', 1, 1, 'support', 'GrowthFormation' } - }, - Nomads = { - { 'ina1005', 1, 1, 'support', 'GrowthFormation' } - }, - } -} - --- ==================== -- --- T3 Air Units --- ==================== -- -PlatoonTemplate { - Name = 'T2AirScout', - FactionSquads = { - UEF = { - { 'uea0101', 1, 1, 'scout', 'GrowthFormation' } - }, - Aeon = { - { 'uaa0101', 1, 1, 'scout', 'GrowthFormation' } - }, - Cybran = { - { 'ura0101', 1, 1, 'scout', 'GrowthFormation' } - }, - Seraphim = { - { 'xsa0101', 1, 1, 'scout', 'GrowthFormation' } - }, - Nomads = { - { 'ina1001', 1, 1, 'scout', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T2AirGunship', - FactionSquads = { - UEF = { - { 'uea0203', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'uaa0203', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'ura0203', 1, 1, 'attack', 'GrowthFormation' } - }, - Seraphim = { - { 'xsa0203', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ina2003', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T2FighterBomber', - FactionSquads = { - UEF = { - { 'dea0202', 1, 1, 'attack', 'None' }, - }, - Aeon = { - { 'xaa0202', 1, 1, 'attack', 'None' }, - }, - Cybran = { - { 'dra0202', 1, 1, 'attack', 'None' }, - }, - Seraphim = { - { 'xsa0202', 1, 1, 'attack', 'None' }, - }, - Nomads = { - { 'ina2002', 1, 1, 'attack', 'None' }, - }, - }, -} - -PlatoonTemplate { - Name = 'T2AirTorpedoBomber', - FactionSquads = { - UEF = { - { 'uea0204', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'uaa0204', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'ura0204', 1, 1, 'attack', 'GrowthFormation' } - }, - Seraphim = { - { 'xsa0204', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ina2003', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T2AirTransport', - FactionSquads = { - UEF = { - { 'uea0104', 1, 1, 'support', 'GrowthFormation' }, - }, - Aeon = { - { 'uaa0104', 1, 1, 'support', 'GrowthFormation' }, - }, - Cybran = { - { 'ura0104', 1, 1, 'support', 'GrowthFormation' }, - }, - Seraphim = { - { 'xsa0104', 1, 1, 'support', 'GrowthFormation' }, - }, - Nomads = { - { 'ina2001', 1, 1, 'support', 'GrowthFormation' }, - }, - } -} - --- ==================== -- --- T3 Air Units --- ==================== -- -PlatoonTemplate { - Name = 'T3AirBomber', - FactionSquads = { - UEF = { - { 'uea0304', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'uaa0304', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'ura0304', 1, 1, 'attack', 'GrowthFormation' } - }, - Seraphim = { - { 'xsa0304', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ina3004', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T3AirFighter', - FactionSquads = { - UEF = { - { 'uea0303', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'uaa0303', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'ura0303', 1, 1, 'attack', 'GrowthFormation' } - }, - Seraphim = { - { 'xsa0303', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ina3003', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T3AirGunship', - FactionSquads = { - UEF = { - { 'uea0305', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'xaa0305', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'xra0305', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ina3006', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T3AirScout', - FactionSquads = { - UEF = { - { 'uea0302', 1, 1, 'scout', 'GrowthFormation' } - }, - Aeon = { - { 'uaa0302', 1, 1, 'scout', 'GrowthFormation' } - }, - Cybran = { - { 'ura0302', 1, 1, 'scout', 'GrowthFormation' } - }, - Seraphim = { - { 'xsa0302', 1, 1, 'scout', 'GrowthFormation' } - }, - Nomads = { - { 'ina3001', 1, 1, 'scout', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T3AirTransport', - FactionSquads = { - UEF = { - { 'xea0306', 1, 1, 'support', 'GrowthFormation' }, - }, - Aeon = { - { 'uaa0104', 1, 1, 'support', 'GrowthFormation' }, - }, - Cybran = { - { 'ura0104', 1, 1, 'support', 'GrowthFormation' }, - }, - Seraphim = { - { 'xsa0104', 1, 1, 'support', 'GrowthFormation' }, - }, - Nomads = { - { 'ina2001', 1, 1, 'support', 'GrowthFormation' }, - }, - } -} - -PlatoonTemplate { - Name = 'T3TorpedoBomber', - FactionSquads = { - Aeon = { - { 'xaa0305', 1, 1, 'attack', 'GrowthFormation' }, - }, - } +--*************************************************************************** +--* +--** File : /lua/ai/AirPlatoonTemplates.lua +--** +--** Summary : Global platoon templates +--** +--** Copyright © 2005 Gas Powered Games, Inc. All rights reserved. +--**************************************************************************** + +-- ==== Global Form platoons ==== -- +PlatoonTemplate { + Name = 'AirAttack', + Plan = 'StrikeForceAI', + GlobalSquads = { + { categories.MOBILE * categories.AIR - categories.EXPERIMENTAL - categories.TRANSPORTFOCUS - categories.ANTINAVY, 1, 100, 'Attack', 'GrowthFormation' } + }, +} + +PlatoonTemplate { + Name = 'BomberAttack', + Plan = 'StrikeForceAI', + GlobalSquads = { + { categories.MOBILE * categories.AIR * categories.BOMBER - categories.EXPERIMENTAL - categories.ANTINAVY, 1, 100, 'Attack', 'GrowthFormation' }, + --{ categories.MOBILE * categories.AIR * categories.ANTIAIR - categories.EXPERIMENTAL - categories.BOMBER - categories.TRANSPORTFOCUS, 0, 10, 'Attack', 'GrowthFormation' }, + } +} + +PlatoonTemplate { + Name = 'TorpedoBomberAttack', + Plan = 'AttackForceAI', + GlobalSquads = { + { categories.MOBILE * categories.AIR * categories.ANTINAVY - categories.EXPERIMENTAL, 1, 100, 'Attack', 'GrowthFormation' }, + --{ categories.MOBILE * categories.AIR * categories.ANTIAIR - categories.EXPERIMENTAL - categories.BOMBER - categories.TRANSPORTFOCUS, 0, 10, 'Attack', 'GrowthFormation' }, + } +} + +PlatoonTemplate { + Name = 'GunshipAttack', + Plan = 'GunshipHuntAI', + GlobalSquads = { + { categories.MOBILE * categories.AIR * categories.GROUNDATTACK - categories.EXPERIMENTAL - categories.TRANSPORTFOCUS, 1, 100, 'Attack', 'GrowthFormation' }, + #{ categories.MOBILE * categories.AIR * categories.ANTIAIR - categories.EXPERIMENTAL - categories.BOMBER - categories.TRANSPORTFOCUS, 0, 10, 'Attack', 'GrowthFormation' }, + } +} + +PlatoonTemplate { + Name = 'GunshipMassHunter', + Plan = 'GuardMarker', + GlobalSquads = { + { categories.MOBILE * categories.AIR * categories.GROUNDATTACK - categories.EXPERIMENTAL - categories.TRANSPORTFOCUS, 1, 5, 'Attack', 'GrowthFormation' }, + } +} + +PlatoonTemplate { + Name = 'MassHunterBomber', + Plan = 'StrikeForceAI', + GlobalSquads = { + { categories.MOBILE * categories.AIR * (categories.TECH1 + categories.TECH2) * categories.BOMBER - categories.EXPERIMENTAL - categories.ANTINAVY, 1, 3, 'Attack', 'GrowthFormation' }, + }, +} + +PlatoonTemplate { + Name = 'T1AirScoutForm', + Plan = 'ScoutingAI', + GlobalSquads = { + { categories.AIR * categories.SCOUT * categories.TECH1, 1, 1, 'scout', 'None' }, + } +} + +PlatoonTemplate { + Name = 'AntiAirHunt', + Plan = 'InterceptorAI', + GlobalSquads = { + { categories.AIR * categories.MOBILE * categories.ANTIAIR * ( categories.TECH1 + categories.TECH2 + categories.TECH3 ) - categories.BOMBER - categories.TRANSPORTFOCUS - categories.EXPERIMENTAL, 1, 100, 'attack', 'none' }, + } +} + +PlatoonTemplate { + Name = 'AntiAirBaseGuard', + Plan = 'GuardBase', + GlobalSquads = { + { categories.AIR * categories.MOBILE * categories.ANTIAIR * ( categories.TECH1 + categories.TECH2 + categories.TECH3 ) - categories.BOMBER - categories.TRANSPORTFOCUS - categories.EXPERIMENTAL, 1, 100, 'attack', 'none' }, + } +} + +PlatoonTemplate { + Name = 'GunshipBaseGuard', + Plan = 'GuardBase', + GlobalSquads = { + { categories.AIR * categories.MOBILE * categories.GROUNDATTACK * ( categories.TECH1 + categories.TECH2 + categories.TECH3 ) - categories.TRANSPORTFOCUS - categories.EXPERIMENTAL, 1, 100, 'attack', 'none' }, + } +} + +PlatoonTemplate { + Name = 'T3AirScoutForm', + Plan = 'ScoutingAI', + GlobalSquads = { + { categories.AIR * categories.INTELLIGENCE * categories.TECH3, 1, 1, 'scout', 'None' }, + } +} + +PlatoonTemplate { + Name = 'T4ExperimentalAir', + Plan = 'ExperimentalAIHub', + GlobalSquads = { + #DUNCAN - exclude novax + { categories.AIR * categories.EXPERIMENTAL * categories.MOBILE - categories.SATELLITE, 1, 1, 'attack', 'none' }, + }, +} + +PlatoonTemplate { + Name = 'T4ExperimentalAirGroup', + Plan = 'ExperimentalAIHub', + GlobalSquads = { + #DUNCAN - exclude novax + { categories.AIR * categories.EXPERIMENTAL * categories.MOBILE - categories.SATELLITE, 2, 3, 'attack', 'none' }, + }, +} + +PlatoonTemplate { + Name = 'AirEscort', + Plan = 'GuardUnit', + GlobalSquads = { + { categories.AIR * categories.MOBILE * categories.ANTIAIR * ( categories.TECH1 + categories.TECH2 + categories.TECH3 ) - categories.BOMBER - categories.TRANSPORTFOCUS - categories.EXPERIMENTAL, 5, 100, 'attack', 'none' }, + } +} + +-- ==== Faction Build Platoons ==== -- +PlatoonTemplate { + Name = 'T1AirScout', + FactionSquads = { + UEF = { + { 'uea0101', 1, 1, 'scout', 'GrowthFormation' } + }, + Aeon = { + { 'uaa0101', 1, 1, 'scout', 'GrowthFormation' } + }, + Cybran = { + { 'ura0101', 1, 1, 'scout', 'GrowthFormation' } + }, + Seraphim = { + { 'xsa0101', 1, 1, 'scout', 'GrowthFormation' } + }, + Nomads = { + { 'ina1001', 1, 1, 'scout', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T1Gunship', + FactionSquads = { + Cybran = { + { 'xra0105', 1, 1, 'attack', 'None' }, + }, + Nomads = { + { 'ina1004', 1, 1, 'attack', 'None' }, + }, + }, +} + +PlatoonTemplate { + Name = 'T1AirBomber', + FactionSquads = { + UEF = { + { 'uea0103', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'uaa0103', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'ura0103', 1, 1, 'attack', 'GrowthFormation' } + }, + Seraphim = { + { 'xsa0103', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ina1003', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T1AirFighter', + FactionSquads = { + UEF = { + { 'uea0102', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'uaa0102', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'ura0102', 1, 1, 'attack', 'GrowthFormation' } + }, + Seraphim = { + { 'xsa0102', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ina1002', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T1AirTransport', + FactionSquads = { + UEF = { + { 'uea0107', 1, 1, 'support', 'GrowthFormation' } + }, + Aeon = { + { 'uaa0107', 1, 1, 'support', 'GrowthFormation' } + }, + Cybran = { + { 'ura0107', 1, 1, 'support', 'GrowthFormation' } + }, + Seraphim = { + { 'xsa0107', 1, 1, 'support', 'GrowthFormation' } + }, + Nomads = { + { 'ina1005', 1, 1, 'support', 'GrowthFormation' } + }, + } +} + +-- ==================== -- +-- T3 Air Units +-- ==================== -- +PlatoonTemplate { + Name = 'T2AirScout', + FactionSquads = { + UEF = { + { 'uea0101', 1, 1, 'scout', 'GrowthFormation' } + }, + Aeon = { + { 'uaa0101', 1, 1, 'scout', 'GrowthFormation' } + }, + Cybran = { + { 'ura0101', 1, 1, 'scout', 'GrowthFormation' } + }, + Seraphim = { + { 'xsa0101', 1, 1, 'scout', 'GrowthFormation' } + }, + Nomads = { + { 'ina1001', 1, 1, 'scout', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T2AirGunship', + FactionSquads = { + UEF = { + { 'uea0203', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'uaa0203', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'ura0203', 1, 1, 'attack', 'GrowthFormation' } + }, + Seraphim = { + { 'xsa0203', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ina2003', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T2FighterBomber', + FactionSquads = { + UEF = { + { 'dea0202', 1, 1, 'attack', 'None' }, + }, + Aeon = { + { 'xaa0202', 1, 1, 'attack', 'None' }, + }, + Cybran = { + { 'dra0202', 1, 1, 'attack', 'None' }, + }, + Seraphim = { + { 'xsa0202', 1, 1, 'attack', 'None' }, + }, + Nomads = { + { 'ina2002', 1, 1, 'attack', 'None' }, + }, + }, +} + +PlatoonTemplate { + Name = 'T2AirTorpedoBomber', + FactionSquads = { + UEF = { + { 'uea0204', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'uaa0204', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'ura0204', 1, 1, 'attack', 'GrowthFormation' } + }, + Seraphim = { + { 'xsa0204', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ina2003', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T2AirTransport', + FactionSquads = { + UEF = { + { 'uea0104', 1, 1, 'support', 'GrowthFormation' }, + }, + Aeon = { + { 'uaa0104', 1, 1, 'support', 'GrowthFormation' }, + }, + Cybran = { + { 'ura0104', 1, 1, 'support', 'GrowthFormation' }, + }, + Seraphim = { + { 'xsa0104', 1, 1, 'support', 'GrowthFormation' }, + }, + Nomads = { + { 'ina2001', 1, 1, 'support', 'GrowthFormation' }, + }, + } +} + +-- ==================== -- +-- T3 Air Units +-- ==================== -- +PlatoonTemplate { + Name = 'T3AirBomber', + FactionSquads = { + UEF = { + { 'uea0304', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'uaa0304', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'ura0304', 1, 1, 'attack', 'GrowthFormation' } + }, + Seraphim = { + { 'xsa0304', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ina3004', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T3AirFighter', + FactionSquads = { + UEF = { + { 'uea0303', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'uaa0303', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'ura0303', 1, 1, 'attack', 'GrowthFormation' } + }, + Seraphim = { + { 'xsa0303', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ina3003', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T3AirGunship', + FactionSquads = { + UEF = { + { 'uea0305', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'xaa0305', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'xra0305', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ina3006', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T3AirScout', + FactionSquads = { + UEF = { + { 'uea0302', 1, 1, 'scout', 'GrowthFormation' } + }, + Aeon = { + { 'uaa0302', 1, 1, 'scout', 'GrowthFormation' } + }, + Cybran = { + { 'ura0302', 1, 1, 'scout', 'GrowthFormation' } + }, + Seraphim = { + { 'xsa0302', 1, 1, 'scout', 'GrowthFormation' } + }, + Nomads = { + { 'ina3001', 1, 1, 'scout', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T3AirTransport', + FactionSquads = { + UEF = { + { 'xea0306', 1, 1, 'support', 'GrowthFormation' }, + }, + Aeon = { + { 'uaa0104', 1, 1, 'support', 'GrowthFormation' }, + }, + Cybran = { + { 'ura0104', 1, 1, 'support', 'GrowthFormation' }, + }, + Seraphim = { + { 'xsa0104', 1, 1, 'support', 'GrowthFormation' }, + }, + Nomads = { + { 'ina2001', 1, 1, 'support', 'GrowthFormation' }, + }, + } +} + +PlatoonTemplate { + Name = 'T3TorpedoBomber', + FactionSquads = { + Aeon = { + { 'xaa0305', 1, 1, 'attack', 'GrowthFormation' }, + }, + } } \ No newline at end of file From 0da146e6e9abdd527e0e3d29b461454ce667e8e0 Mon Sep 17 00:00:00 2001 From: JJ173 Date: Sat, 8 Apr 2017 12:36:20 +0100 Subject: [PATCH 4/4] Added missing sea platoon templates Added missing sea platoon templates to fix missing attacks. --- .../PlatoonTemplates/SeaPlatoonTemplates.lua | 508 +++++++++--------- 1 file changed, 258 insertions(+), 250 deletions(-) diff --git a/lua/AI/PlatoonTemplates/SeaPlatoonTemplates.lua b/lua/AI/PlatoonTemplates/SeaPlatoonTemplates.lua index bbb9df3b..1b70f882 100644 --- a/lua/AI/PlatoonTemplates/SeaPlatoonTemplates.lua +++ b/lua/AI/PlatoonTemplates/SeaPlatoonTemplates.lua @@ -1,251 +1,259 @@ ---*************************************************************************** ---* ---** File : /lua/ai/SeaPlatoonTemplates.lua ---** ---** Summary : Global platoon templates ---** ---** Copyright © 2005 Gas Powered Games, Inc. All rights reserved. ---**************************************************************************** - --- ==== Global Form platoons ==== -- -PlatoonTemplate { - Name = 'SeaAttack', - Plan = 'NavalForceAI', - GlobalSquads = { - { categories.MOBILE * categories.NAVAL - categories.EXPERIMENTAL - categories.CARRIER, 1, 100, 'Attack', 'GrowthFormation' } - }, -} - -PlatoonTemplate { - Name = 'T4ExperimentalSea', - Plan = 'NavalForceAI', - FactionSquads = { - UEF = { - { 'ues0401', 1, 1, 'attack', 'None' } - }, - Aeon = { - { 'uas0401', 1, 1, 'attack', 'None' } - }, - Nomads = { - { 'inu4001', 1, 1, 'attack', 'None' } - }, - } -} - --- ==== Faction build platoons ==== -- -PlatoonTemplate { - Name = 'T1SeaFrigate', - FactionSquads = { - UEF = { - { 'ues0103', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'uas0103', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'urs0103', 1, 1, 'attack', 'GrowthFormation' } - }, - Seraphim = { - { 'xss0103', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ins1002', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T1SeaAntiAir', - FactionSquads = { - UEF = { - { 'ues0103', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'uas0102', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'urs0103', 1, 1, 'attack', 'GrowthFormation' } - }, - Seraphim = { - { 'xss0103', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ins1002', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T1SeaSub', - FactionSquads = { - UEF = { - { 'ues0203', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'uas0203', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'urs0203', 1, 1, 'attack', 'GrowthFormation' } - }, - Seraphim = { - { 'xss0203', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ins1001', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T2SeaCruiser', - FactionSquads = { - UEF = { - { 'ues0202', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'uas0202', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'urs0202', 1, 1, 'attack', 'GrowthFormation' } - }, - Seraphim = { - { 'xss0202', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ins2002', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T2SeaDestroyer', - FactionSquads = { - UEF = { - { 'ues0201', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'uas0201', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'urs0201', 1, 1, 'attack', 'GrowthFormation' } - }, - Seraphim = { - { 'xss0201', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ins2001', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T2SubKiller', - FactionSquads = { - UEF = { - { 'xes0102', 1, 1, 'attack', 'None' }, - }, - Aeon = { - { 'xas0204', 1, 1, 'attack', 'None' }, - }, - Cybran = { - { 'xrs0204', 1, 1, 'attack', 'None' }, - }, - Nomads = { - { 'ins2003', 1, 1, 'attack', 'None' }, - }, - }, -} - -PlatoonTemplate { - Name = 'T2ShieldBoat', - FactionSquads = { - UEF = { - { 'xes0205', 1, 1, 'attack', 'None' }, - }, - }, -} - -PlatoonTemplate { - Name = 'T2CounterIntelBoat', - FactionSquads = { - Cybran = { - { 'xrs0205', 1, 1, 'attack', 'None' }, - }, - }, -} - -PlatoonTemplate { - Name = 'T3SeaBattleship', - FactionSquads = { - UEF = { - { 'ues0302', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'uas0302', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'urs0302', 1, 1, 'attack', 'GrowthFormation' } - }, - Seraphim = { - { 'xss0302', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ins3004', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T3SeaCarrier', - Plan = 'CarrierAI', - FactionSquads = { - Aeon = { - { 'uas0303', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'urs0303', 1, 1, 'attack', 'GrowthFormation' } - }, - Seraphim = { - { 'xss0303', 1, 1, 'attack', 'GrowthFormation' } - }, - Nomads = { - { 'ins3003', 1, 1, 'attack', 'GrowthFormation' } - }, - } -} - -PlatoonTemplate { - Name = 'T3MissileBoat', - FactionSquads = { - Aeon = { - { 'xas0306', 1, 1, 'attack', 'None' }, - }, - Nomads = { - { 'ins3002', 1, 1, 'attack', 'None' } - }, - } -} - -PlatoonTemplate { - Name = 'T3Battlecruiser', - FactionSquads = { - UEF = { - { 'xes0307', 1, 1, 'attack', 'None' }, - }, - } -} - -PlatoonTemplate { - Name = 'T3SeaNukeSub', - FactionSquads = { - UEF = { - { 'ues0304', 1, 1, 'attack', 'GrowthFormation' } - }, - Aeon = { - { 'uas0304', 1, 1, 'attack', 'GrowthFormation' } - }, - Cybran = { - { 'urs0304', 1, 1, 'attack', 'GrowthFormation' } - }, - } +--*************************************************************************** +--* +--** File : /lua/ai/SeaPlatoonTemplates.lua +--** +--** Summary : Global platoon templates +--** +--** Copyright © 2005 Gas Powered Games, Inc. All rights reserved. +--**************************************************************************** + +-- ==== Global Form platoons ==== -- +PlatoonTemplate { + Name = 'SeaAttack', + Plan = 'NavalForceAI', + GlobalSquads = { + { categories.MOBILE * categories.NAVAL - categories.EXPERIMENTAL - categories.CARRIER, 1, 100, 'Attack', 'GrowthFormation' } + }, +} + +PlatoonTemplate { + Name = 'SeaNuke', + Plan = 'NavalForceAI', + GlobalSquads = { + { categories.NAVAL * categories.NUKE, 1, 1, 'Attack', 'none' } + }, +} + +PlatoonTemplate { + Name = 'T4ExperimentalSea', + Plan = 'NavalForceAI', + FactionSquads = { + UEF = { + { 'ues0401', 1, 1, 'attack', 'None' } + }, + Aeon = { + { 'uas0401', 1, 1, 'attack', 'None' } + }, + Nomads = { + { 'inu4001', 1, 1, 'attack', 'None' } + }, + } +} + +-- ==== Faction build platoons ==== -- +PlatoonTemplate { + Name = 'T1SeaFrigate', + FactionSquads = { + UEF = { + { 'ues0103', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'uas0103', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'urs0103', 1, 1, 'attack', 'GrowthFormation' } + }, + Seraphim = { + { 'xss0103', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ins1002', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T1SeaAntiAir', + FactionSquads = { + UEF = { + { 'ues0103', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'uas0102', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'urs0103', 1, 1, 'attack', 'GrowthFormation' } + }, + Seraphim = { + { 'xss0103', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ins1002', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T1SeaSub', + FactionSquads = { + UEF = { + { 'ues0203', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'uas0203', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'urs0203', 1, 1, 'attack', 'GrowthFormation' } + }, + Seraphim = { + { 'xss0203', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ins1001', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T2SeaCruiser', + FactionSquads = { + UEF = { + { 'ues0202', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'uas0202', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'urs0202', 1, 1, 'attack', 'GrowthFormation' } + }, + Seraphim = { + { 'xss0202', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ins2002', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T2SeaDestroyer', + FactionSquads = { + UEF = { + { 'ues0201', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'uas0201', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'urs0201', 1, 1, 'attack', 'GrowthFormation' } + }, + Seraphim = { + { 'xss0201', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ins2001', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T2SubKiller', + FactionSquads = { + UEF = { + { 'xes0102', 1, 1, 'attack', 'None' }, + }, + Aeon = { + { 'xas0204', 1, 1, 'attack', 'None' }, + }, + Cybran = { + { 'xrs0204', 1, 1, 'attack', 'None' }, + }, + Nomads = { + { 'ins2003', 1, 1, 'attack', 'None' }, + }, + }, +} + +PlatoonTemplate { + Name = 'T2ShieldBoat', + FactionSquads = { + UEF = { + { 'xes0205', 1, 1, 'attack', 'None' }, + }, + }, +} + +PlatoonTemplate { + Name = 'T2CounterIntelBoat', + FactionSquads = { + Cybran = { + { 'xrs0205', 1, 1, 'attack', 'None' }, + }, + }, +} + +PlatoonTemplate { + Name = 'T3SeaBattleship', + FactionSquads = { + UEF = { + { 'ues0302', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'uas0302', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'urs0302', 1, 1, 'attack', 'GrowthFormation' } + }, + Seraphim = { + { 'xss0302', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ins3004', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T3SeaCarrier', + Plan = 'CarrierAI', + FactionSquads = { + Aeon = { + { 'uas0303', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'urs0303', 1, 1, 'attack', 'GrowthFormation' } + }, + Seraphim = { + { 'xss0303', 1, 1, 'attack', 'GrowthFormation' } + }, + Nomads = { + { 'ins3003', 1, 1, 'attack', 'GrowthFormation' } + }, + } +} + +PlatoonTemplate { + Name = 'T3MissileBoat', + FactionSquads = { + Aeon = { + { 'xas0306', 1, 1, 'attack', 'None' }, + }, + Nomads = { + { 'ins3002', 1, 1, 'attack', 'None' } + }, + } +} + +PlatoonTemplate { + Name = 'T3Battlecruiser', + FactionSquads = { + UEF = { + { 'xes0307', 1, 1, 'attack', 'None' }, + }, + } +} + +PlatoonTemplate { + Name = 'T3SeaNukeSub', + FactionSquads = { + UEF = { + { 'ues0304', 1, 1, 'attack', 'GrowthFormation' } + }, + Aeon = { + { 'uas0304', 1, 1, 'attack', 'GrowthFormation' } + }, + Cybran = { + { 'urs0304', 1, 1, 'attack', 'GrowthFormation' } + }, + } } \ No newline at end of file