From d179f6eaae80cbd208a0bc76fc0b6a9a9f7ac670 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Wed, 14 Nov 2018 16:02:02 +0100 Subject: [PATCH] HackyAI dissolve update rule and yaml updates --- .../Rules/20180923/ExtractHackyAIModules.cs | 165 +++++++++- mods/cnc/rules/ai.yaml | 204 ++++++------ mods/d2k/rules/ai.yaml | 251 +++++++------- mods/ra/maps/fort-lonestar/rules.yaml | 10 +- mods/ra/rules/ai.yaml | 309 +++++++++--------- mods/ts/rules/ai.yaml | 70 ++-- 6 files changed, 570 insertions(+), 439 deletions(-) diff --git a/OpenRA.Mods.Common/UpdateRules/Rules/20180923/ExtractHackyAIModules.cs b/OpenRA.Mods.Common/UpdateRules/Rules/20180923/ExtractHackyAIModules.cs index b05146fae0..3e7839e95c 100644 --- a/OpenRA.Mods.Common/UpdateRules/Rules/20180923/ExtractHackyAIModules.cs +++ b/OpenRA.Mods.Common/UpdateRules/Rules/20180923/ExtractHackyAIModules.cs @@ -67,7 +67,6 @@ namespace OpenRA.Mods.Common.UpdateRules.Rules "BuildingFractions", }; - // Fields that should (for now) only be copied instead of moved, for backwards-compatibility reasons readonly string[] copyBaseBuilderFields = { "MinBaseRadius", @@ -84,6 +83,50 @@ namespace OpenRA.Mods.Common.UpdateRules.Rules "CapturableStances", }; + readonly string[] squadManagerFields = + { + "SquadSize", + "SquadSizeRandomBonus", + "AssignRolesInterval", + "RushInterval", + "AttackForceInterval", + "MinimumAttackForceDelay", + "RushAttackScanRadius", + "ProtectUnitScanRadius", + "MaxBaseRadius", + "MaximumDefenseRadius", + "IdleScanRadius", + "DangerScanRadius", + "AttackScanRadius", + "ProtectionScanRadius", + "UnitsCommonNames", + "BuildingCommonNames", + }; + + readonly string[] squadManagerCommonNames = + { + "ConstructionYard", + "NavalProduction", + }; + + readonly string[] unitBuilderFields = + { + "IdleBaseUnitsMaximum", + "UnitQueues", + "UnitsToBuild", + "UnitLimits", + }; + + readonly string[] mcvManagerFields = + { + "AssignRolesInterval", + "MinBaseRadius", + "MaxBaseRadius", + "RestrictMCVDeploymentFallbackToBase", + "UnitsCommonNames", + "BuildingCommonNames", + }; + public override IEnumerable AfterUpdate(ModData modData) { if (!messageShown) @@ -106,6 +149,14 @@ namespace OpenRA.Mods.Common.UpdateRules.Rules if (actorNode.Key != "Player") yield break; + var dummyAIs = actorNode.ChildrenMatching("DummyAI"); + foreach (var dummyAINode in dummyAIs) + dummyAINode.RenameKey("DummyBot"); + + var hackyAIRemovals = actorNode.ChildrenMatching("-HackyAI"); + foreach (var hackyAIRemovalNode in hackyAIRemovals) + hackyAIRemovalNode.RenameKey("-ModularBot"); + var hackyAIs = actorNode.ChildrenMatching("HackyAI", includeRemovals: false); if (!hackyAIs.Any()) yield break; @@ -270,6 +321,118 @@ namespace OpenRA.Mods.Common.UpdateRules.Rules addNodes.Add(node); } + + if (squadManagerFields.Any(f => hackyAINode.ChildrenMatching(f).Any())) + { + var node = new MiniYamlNode("SquadManagerBotModule@" + aiType, ""); + node.AddNode(new MiniYamlNode("RequiresCondition", conditionString)); + + foreach (var field in squadManagerFields) + { + var fieldNode = hackyAINode.LastChildMatching(field); + if (fieldNode != null) + { + if (fieldNode.KeyMatches("UnitsCommonNames", includeRemovals: false)) + { + var mcvNode = fieldNode.LastChildMatching("Mcv"); + var excludeNode = fieldNode.LastChildMatching("ExcludeFromSquads"); + var navalUnitsNode = fieldNode.LastChildMatching("NavalUnits"); + + // In the old code, actors listed under Mcv were also excluded from squads. + // However, Mcv[Types] is moved to McvManagerBotModule now, so we need to add them under ExcludeFromSquads as well. + if (excludeNode == null && mcvNode != null) + node.AddNode("ExcludeFromSquadsTypes", mcvNode.Value.Value); + else if (excludeNode != null && mcvNode != null) + { + var mcvValue = mcvNode.NodeValue(); + var excludeValue = excludeNode.NodeValue(); + node.AddNode("ExcludeFromSquadsTypes", excludeValue + ", " + mcvValue); + } + + if (navalUnitsNode != null) + node.AddNode("NavalUnitsTypes", navalUnitsNode.Value.Value); + } + else if (fieldNode.KeyMatches("BuildingCommonNames", includeRemovals: false)) + { + foreach (var b in fieldNode.Value.Nodes) + if (squadManagerCommonNames.Any(f => f == b.Key)) + node.AddNode(b.Key + "Types", b.Value.Value); + } + else if (fieldNode.KeyMatches("AssignRolesInterval") || fieldNode.KeyMatches("MaxBaseRadius")) + node.AddNode(fieldNode.Key, fieldNode.Value.Value); + else + fieldNode.MoveNode(hackyAINode, node); + } + } + + addNodes.Add(node); + } + + if (unitBuilderFields.Any(f => hackyAINode.ChildrenMatching(f).Any())) + { + var node = new MiniYamlNode("UnitBuilderBotModule@" + aiType, ""); + node.AddNode(new MiniYamlNode("RequiresCondition", conditionString)); + + foreach (var field in unitBuilderFields) + { + var fieldNode = hackyAINode.LastChildMatching(field); + if (fieldNode != null) + { + if (fieldNode.KeyMatches("UnitsToBuild", includeRemovals: false)) + { + var unitNodes = fieldNode.Value.Nodes; + foreach (var n in unitNodes) + ConvertFractionToInteger(n); + } + + fieldNode.MoveNode(hackyAINode, node); + } + } + + addNodes.Add(node); + } + + if (mcvManagerFields.Any(f => hackyAINode.ChildrenMatching(f).Any())) + { + var node = new MiniYamlNode("McvManagerBotModule@" + aiType, ""); + node.AddNode(new MiniYamlNode("RequiresCondition", conditionString)); + + foreach (var field in mcvManagerFields) + { + var fieldNode = hackyAINode.LastChildMatching(field); + if (fieldNode != null) + { + if (fieldNode.KeyMatches("UnitsCommonNames", includeRemovals: false)) + { + var mcvNode = fieldNode.LastChildMatching("Mcv"); + if (mcvNode != null) + mcvNode.MoveAndRenameNode(hackyAINode, node, "McvTypes"); + + // Nothing left that needs UnitCommonNames, so we can finally remove it + hackyAINode.RemoveNode(fieldNode); + } + else if (fieldNode.KeyMatches("BuildingCommonNames", includeRemovals: false)) + { + foreach (var n in fieldNode.Value.Nodes) + { + if (n.KeyMatches("VehiclesFactory")) + node.AddNode("McvFactoryTypes", n.Value.Value); + else if (n.KeyMatches("ConstructionYard")) + node.AddNode("ConstructionYardTypes", n.Value.Value); + } + + // Nothing left that needs BuildingCommonNames, so we can finally remove it + hackyAINode.RemoveNode(fieldNode); + } + else + fieldNode.MoveNode(hackyAINode, node); + } + } + + addNodes.Add(node); + } + + hackyAINode.RenameKey("ModularBot"); } // Only add module if any bot is using/enabling it. diff --git a/mods/cnc/rules/ai.yaml b/mods/cnc/rules/ai.yaml index e84d479a25..5872f31b7a 100644 --- a/mods/cnc/rules/ai.yaml +++ b/mods/cnc/rules/ai.yaml @@ -1,117 +1,13 @@ Player: - HackyAI@Cabal: + ModularBot@Cabal: Name: Cabal Type: cabal - BuildingCommonNames: - ConstructionYard: fact - Refinery: proc - Power: nuke,nuk2 - Barracks: pyle,hand - VehiclesFactory: weap,afld - Production: pyle,hand,weap,afld,hpad - Silo: silo - UnitsCommonNames: - Mcv: mcv - ExcludeFromSquads: harv - UnitQueues: Vehicle.Nod, Vehicle.GDI, Infantry.Nod, Infantry.GDI, Aircraft.Nod, Aircraft.GDI - UnitsToBuild: - e1: 65% - e2: 25% - e3: 40% - e4: 15% - e5: 15% - harv: 10% - bggy: 5% - bike: 40% - ltnk: 25% - ftnk: 10% - arty: 60% - stnk: 40% - jeep: 5% - mtnk: 20% - msam: 40% - htnk: 50% - heli: 5% - orca: 5% - UnitLimits: - harv: 8 - SquadSize: 15 - HackyAI@Watson: + ModularBot@Watson: Name: Watson Type: watson - BuildingCommonNames: - ConstructionYard: fact - Refinery: proc - Power: nuke,nuk2 - Barracks: pyle,hand - VehiclesFactory: weap,afld - Production: pyle,hand,weap,afld,hpad - Silo: silo - UnitsCommonNames: - Mcv: mcv - ExcludeFromSquads: harv - UnitQueues: Vehicle.Nod, Vehicle.GDI, Infantry.Nod, Infantry.GDI, Aircraft.Nod, Aircraft.GDI - UnitsToBuild: - e1: 65% - e2: 30% - e3: 40% - e4: 30% - e5: 30% - harv: 10% - bggy: 10% - ftnk: 10% - arty: 40% - bike: 10% - heli: 10% - ltnk: 40% - stnk: 40% - orca: 10% - msam: 50% - htnk: 50% - jeep: 20% - mtnk: 50% - UnitLimits: - harv: 8 - SquadSize: 15 - HackyAI@HAL9001: + ModularBot@HAL9001: Name: HAL 9001 Type: hal9001 - BuildingCommonNames: - ConstructionYard: fact - Refinery: proc - Power: nuke,nuk2 - Barracks: pyle,hand - VehiclesFactory: weap,afld - Production: pyle,hand,weap,afld,hpad - Silo: silo - UnitsCommonNames: - Mcv: mcv - ExcludeFromSquads: harv - UnitQueues: Vehicle.Nod, Vehicle.GDI, Infantry.Nod, Infantry.GDI, Aircraft.Nod, Aircraft.GDI - UnitsToBuild: - e1: 65% - e2: 30% - e3: 40% - e4: 50% - e5: 50% - harv: 16% - bggy: 10% - bike: 10% - ltnk: 40% - arty: 20% - ftnk: 5% - stnk: 40% - mlrs: 5% - heli: 10% - jeep: 20% - apc: 10% - mtnk: 50% - msam: 50% - htnk: 50% - orca: 10% - UnitLimits: - harv: 8 - SquadSize: 8 SupportPowerBotModule: RequiresCondition: enable-cabal-ai || enable-watson-ai || enable-hal9001-ai Decisions: @@ -315,3 +211,97 @@ Player: fix: 1 BuildingRepairBotModule: RequiresCondition: enable-cabal-ai || enable-watson-ai || enable-hal9001-ai + SquadManagerBotModule@cabal: + RequiresCondition: enable-cabal-ai + SquadSize: 15 + ExcludeFromSquadsTypes: harv, mcv + ConstructionYardTypes: fact + UnitBuilderBotModule@cabal: + RequiresCondition: enable-cabal-ai + UnitQueues: Vehicle.Nod, Vehicle.GDI, Infantry.Nod, Infantry.GDI, Aircraft.Nod, Aircraft.GDI + UnitsToBuild: + e1: 65 + e2: 25 + e3: 40 + e4: 15 + e5: 15 + harv: 10 + bggy: 5 + bike: 40 + ltnk: 25 + ftnk: 10 + arty: 60 + stnk: 40 + jeep: 5 + mtnk: 20 + msam: 40 + htnk: 50 + heli: 5 + orca: 5 + UnitLimits: + harv: 8 + McvManagerBotModule: + RequiresCondition: enable-cabal-ai || enable-watson-ai || enable-hal9001-ai + McvTypes: mcv + ConstructionYardTypes: fact + McvFactoryTypes: weap,afld + SquadManagerBotModule@watson: + RequiresCondition: enable-watson-ai + SquadSize: 15 + ExcludeFromSquadsTypes: harv, mcv + ConstructionYardTypes: fact + UnitBuilderBotModule@watson: + RequiresCondition: enable-watson-ai + UnitQueues: Vehicle.Nod, Vehicle.GDI, Infantry.Nod, Infantry.GDI, Aircraft.Nod, Aircraft.GDI + UnitsToBuild: + e1: 65 + e2: 30 + e3: 40 + e4: 30 + e5: 30 + harv: 10 + bggy: 10 + ftnk: 10 + arty: 40 + bike: 10 + heli: 10 + ltnk: 40 + stnk: 40 + orca: 10 + msam: 50 + htnk: 50 + jeep: 20 + mtnk: 50 + UnitLimits: + harv: 8 + SquadManagerBotModule@hal9001: + RequiresCondition: enable-hal9001-ai + SquadSize: 8 + ExcludeFromSquadsTypes: harv, mcv + ConstructionYardTypes: fact + UnitBuilderBotModule@hal9001: + RequiresCondition: enable-hal9001-ai + UnitQueues: Vehicle.Nod, Vehicle.GDI, Infantry.Nod, Infantry.GDI, Aircraft.Nod, Aircraft.GDI + UnitsToBuild: + e1: 65 + e2: 30 + e3: 40 + e4: 50 + e5: 50 + harv: 16 + bggy: 10 + bike: 10 + ltnk: 40 + arty: 20 + ftnk: 5 + stnk: 40 + mlrs: 5 + heli: 10 + jeep: 20 + apc: 10 + mtnk: 50 + msam: 50 + htnk: 50 + orca: 10 + UnitLimits: + harv: 8 diff --git a/mods/d2k/rules/ai.yaml b/mods/d2k/rules/ai.yaml index a9efceacaf..247ebc9a60 100644 --- a/mods/d2k/rules/ai.yaml +++ b/mods/d2k/rules/ai.yaml @@ -1,139 +1,13 @@ Player: - HackyAI@Omnius: + ModularBot@Omnius: Name: Omnius Type: omnius - UnitQueues: Infantry, Vehicle, Armor, Starport, Aircraft - BuildingCommonNames: - ConstructionYard: construction_yard - Refinery: refinery - Power: wind_trap - VehiclesFactory: light_factory, heavy_factory, starport - Production: light_factory, heavy_factory, barracks, starport - Silo: silo - UnitsCommonNames: - Mcv: mcv - ExcludeFromSquads: harvester - UnitsToBuild: - carryall: 1% - light_inf: 65% - trooper: 40% - mpsardaukar: 20% - grenadier: 20% - harvester: 1% - trike.starport: 5% - quad.starport: 7.5% - siege_tank.starport: 5% - missile_tank.starport: 7.5% - combat_tank_a.starport: 15% - combat_tank_h.starport: 15% - combat_tank_o.starport: 15% - sonic_tank: 10% - devastator: 10% - deviator: 7.5% - trike: 10% - raider: 10% - quad: 15% - siege_tank: 10% - missile_tank: 15% - stealth_raider: 5% - combat_tank_a: 100% - combat_tank_h: 100% - combat_tank_o: 100% - UnitLimits: - harvester: 8 - carryall: 4 - SquadSize: 8 - MaxBaseRadius: 40 - HackyAI@Vidius: + ModularBot@Vidius: Name: Vidious Type: vidious - UnitQueues: Infantry, Vehicle, Armor, Starport, Aircraft - BuildingCommonNames: - ConstructionYard: construction_yard - Refinery: refinery - Power: wind_trap - VehiclesFactory: light_factory, heavy_factory, starport - Production: light_factory, heavy_factory, barracks, starport - Silo: silo - UnitsCommonNames: - Mcv: mcv - ExcludeFromSquads: harvester - UnitsToBuild: - carryall: 1% - light_inf: 65% - trooper: 40% - mpsardaukar: 20% - grenadier: 20% - harvester: 1% - trike.starport: 7.5% - quad.starport: 12.5% - siege_tank.starport: 5% - missile_tank.starport: 7.5% - combat_tank_a.starport: 15% - combat_tank_h.starport: 15% - combat_tank_o.starport: 15% - sonic_tank: 50% - devastator: 40% - deviator: 5% - trike: 15% - raider: 15% - quad: 25% - siege_tank: 10% - missile_tank: 15% - stealth_raider: 5% - combat_tank_a: 100% - combat_tank_h: 100% - combat_tank_o: 100% - UnitLimits: - harvester: 8 - carryall: 4 - SquadSize: 6 - MaxBaseRadius: 40 - HackyAI@Gladius: + ModularBot@Gladius: Name: Gladius Type: gladius - UnitQueues: Infantry, Vehicle, Armor, Starport, Aircraft - BuildingCommonNames: - ConstructionYard: construction_yard - Refinery: refinery - Power: wind_trap - VehiclesFactory: light_factory, heavy_factory, starport - Production: light_factory, heavy_factory, barracks, starport - Silo: silo - UnitsCommonNames: - Mcv: mcv - ExcludeFromSquads: harvester - UnitsToBuild: - carryall: 1% - light_inf: 65% - trooper: 40% - mpsardaukar: 20% - grenadier: 20% - harvester: 1% - trike.starport: 5% - quad.starport: 7.5% - siege_tank.starport: 5% - missile_tank.starport: 7.5% - combat_tank_a.starport: 15% - combat_tank_h.starport: 15% - combat_tank_o.starport: 15% - sonic_tank: 10% - devastator: 10% - deviator: 7.5% - trike: 10% - raider: 10% - quad: 15% - siege_tank: 10% - missile_tank: 15% - stealth_raider: 7.5% - combat_tank_a: 100% - combat_tank_h: 100% - combat_tank_o: 100% - UnitLimits: - harvester: 8 - carryall: 4 - SquadSize: 10 - MaxBaseRadius: 40 SupportPowerBotModule: RequiresCondition: enable-omnius-ai || enable-vidious-ai || enable-gladius-ai Decisions: @@ -333,3 +207,122 @@ Player: upgrade.hightech: 1 BuildingRepairBotModule: RequiresCondition: enable-omnius-ai || enable-vidious-ai || enable-gladius-ai + SquadManagerBotModule@omnius: + RequiresCondition: enable-omnius-ai + SquadSize: 8 + MaxBaseRadius: 40 + ExcludeFromSquadsTypes: harvester, mcv + ConstructionYardTypes: construction_yard + UnitBuilderBotModule@omnius: + RequiresCondition: enable-omnius-ai + UnitQueues: Infantry, Vehicle, Armor, Starport, Aircraft + UnitsToBuild: + carryall: 1 + light_inf: 65 + trooper: 40 + mpsardaukar: 20 + grenadier: 20 + harvester: 1 + trike.starport: 5 + quad.starport: 7 + siege_tank.starport: 5 + missile_tank.starport: 7 + combat_tank_a.starport: 15 + combat_tank_h.starport: 15 + combat_tank_o.starport: 15 + sonic_tank: 10 + devastator: 10 + deviator: 7 + trike: 10 + raider: 10 + quad: 15 + siege_tank: 10 + missile_tank: 15 + stealth_raider: 5 + combat_tank_a: 100 + combat_tank_h: 100 + combat_tank_o: 100 + UnitLimits: + harvester: 8 + carryall: 4 + McvManagerBotModule: + RequiresCondition: enable-omnius-ai || enable-vidious-ai || enable-gladius-ai + McvTypes: mcv + ConstructionYardTypes: construction_yard + McvFactoryTypes: heavy_factory, starport + SquadManagerBotModule@vidious: + RequiresCondition: enable-vidious-ai + SquadSize: 6 + MaxBaseRadius: 40 + ExcludeFromSquadsTypes: harvester, mcv + ConstructionYardTypes: construction_yard + UnitBuilderBotModule@vidious: + RequiresCondition: enable-vidious-ai + UnitQueues: Infantry, Vehicle, Armor, Starport, Aircraft + UnitsToBuild: + carryall: 1 + light_inf: 65 + trooper: 40 + mpsardaukar: 20 + grenadier: 20 + harvester: 1 + trike.starport: 7 + quad.starport: 12 + siege_tank.starport: 5 + missile_tank.starport: 7 + combat_tank_a.starport: 15 + combat_tank_h.starport: 15 + combat_tank_o.starport: 15 + sonic_tank: 50 + devastator: 40 + deviator: 5 + trike: 15 + raider: 15 + quad: 25 + siege_tank: 10 + missile_tank: 15 + stealth_raider: 5 + combat_tank_a: 100 + combat_tank_h: 100 + combat_tank_o: 100 + UnitLimits: + harvester: 8 + carryall: 4 + SquadManagerBotModule@gladius: + RequiresCondition: enable-gladius-ai + SquadSize: 10 + MaxBaseRadius: 40 + ExcludeFromSquadsTypes: harvester, mcv + ConstructionYardTypes: construction_yard + UnitBuilderBotModule@gladius: + RequiresCondition: enable-gladius-ai + UnitQueues: Infantry, Vehicle, Armor, Starport, Aircraft + UnitsToBuild: + carryall: 1 + light_inf: 65 + trooper: 40 + mpsardaukar: 20 + grenadier: 20 + harvester: 1 + trike.starport: 5 + quad.starport: 7 + siege_tank.starport: 5 + missile_tank.starport: 7 + combat_tank_a.starport: 15 + combat_tank_h.starport: 15 + combat_tank_o.starport: 15 + sonic_tank: 10 + devastator: 10 + deviator: 7 + trike: 10 + raider: 10 + quad: 15 + siege_tank: 10 + missile_tank: 15 + stealth_raider: 7 + combat_tank_a: 100 + combat_tank_h: 100 + combat_tank_o: 100 + UnitLimits: + harvester: 8 + carryall: 4 diff --git a/mods/ra/maps/fort-lonestar/rules.yaml b/mods/ra/maps/fort-lonestar/rules.yaml index 32a92f810b..acbcb89cf8 100644 --- a/mods/ra/maps/fort-lonestar/rules.yaml +++ b/mods/ra/maps/fort-lonestar/rules.yaml @@ -105,11 +105,11 @@ Player: DefaultCashDropdownLocked: True DefaultCashDropdownVisible: False DefaultCash: 50 - -HackyAI@RushAI: - -HackyAI@NormalAI: - -HackyAI@NavalAI: - -HackyAI@TurtleAI: - DummyAI@LonestarAI: + -ModularBot@RushAI: + -ModularBot@NormalAI: + -ModularBot@NavalAI: + -ModularBot@TurtleAI: + DummyBot@LonestarAI: Name: Lonestar AI Type: lonestar LobbyPrerequisiteCheckbox@GLOBALFACTUNDEPLOY: diff --git a/mods/ra/rules/ai.yaml b/mods/ra/rules/ai.yaml index fccc0a60f3..d38853dd93 100644 --- a/mods/ra/rules/ai.yaml +++ b/mods/ra/rules/ai.yaml @@ -1,174 +1,16 @@ Player: - HackyAI@RushAI: + ModularBot@RushAI: Name: Rush AI Type: rush - BuildingCommonNames: - ConstructionYard: fact - Refinery: proc - Power: powr,apwr - Barracks: barr,tent - VehiclesFactory: weap - Production: barr,tent,weap - Silo: silo - UnitsCommonNames: - Mcv: mcv - ExcludeFromSquads: harv - NavalUnits: ss,msub,dd,ca,lst,pt - UnitsToBuild: - e1: 65% - e2: 15% - e3: 30% - e4: 15% - dog: 15% - shok: 15% - harv: 10% - apc: 30% - jeep: 20% - arty: 15% - v2rl: 40% - ftrk: 30% - 1tnk: 50% - 2tnk: 50% - 3tnk: 50% - 4tnk: 25% - ttnk: 25% - stnk: 5% - UnitLimits: - dog: 4 - harv: 8 - jeep: 4 - ftrk: 4 - SquadSize: 20 - HackyAI@NormalAI: + ModularBot@NormalAI: Name: Normal AI Type: normal - BuildingCommonNames: - ConstructionYard: fact - Refinery: proc - Power: powr,apwr - Barracks: barr,tent - VehiclesFactory: weap - Production: barr,tent,weap,afld,hpad - NavalProduction: spen,syrd - Silo: silo - UnitsCommonNames: - Mcv: mcv - ExcludeFromSquads: harv - NavalUnits: ss,msub,dd,ca,lst,pt - UnitsToBuild: - e1: 65% - e2: 15% - e3: 30% - e4: 15% - dog: 15% - shok: 15% - harv: 15% - apc: 30% - jeep: 20% - arty: 15% - v2rl: 40% - ftrk: 30% - 1tnk: 40% - 2tnk: 50% - 3tnk: 50% - 4tnk: 25% - ttnk: 25% - stnk: 5% - heli: 30% - hind: 30% - mig: 30% - yak: 30% - ss: 10% - msub: 10% - dd: 10% - ca: 10% - pt: 10% - UnitLimits: - dog: 4 - harv: 8 - jeep: 4 - ftrk: 4 - SquadSize: 40 - HackyAI@TurtleAI: + ModularBot@TurtleAI: Name: Turtle AI Type: turtle - BuildingCommonNames: - ConstructionYard: fact - Refinery: proc - Power: powr,apwr - Barracks: barr,tent - VehiclesFactory: weap - Production: barr,tent,weap,afld,hpad - NavalProduction: spen,syrd - Silo: silo - UnitsCommonNames: - Mcv: mcv - ExcludeFromSquads: harv - NavalUnits: ss,msub,dd,ca,lst,pt - UnitsToBuild: - e1: 65% - e2: 15% - e3: 30% - e4: 15% - dog: 15% - shok: 15% - harv: 15% - apc: 30% - jeep: 20% - arty: 15% - v2rl: 40% - ftrk: 50% - 1tnk: 50% - 2tnk: 50% - 3tnk: 50% - 4tnk: 25% - ttnk: 25% - stnk: 10% - heli: 30% - hind: 30% - mig: 30% - yak: 30% - ss: 10% - msub: 10% - dd: 10% - ca: 10% - pt: 10% - UnitLimits: - dog: 4 - harv: 8 - jeep: 4 - ftrk: 4 - SquadSize: 10 - HackyAI@NavalAI: + ModularBot@NavalAI: Name: Naval AI Type: naval - BuildingCommonNames: - ConstructionYard: fact - Refinery: proc - Power: powr,apwr - Barracks: barr,tent - VehiclesFactory: weap - Production: barr,tent,weap,afld,hpad - NavalProduction: spen,syrd - Silo: silo - UnitsCommonNames: - Mcv: mcv - ExcludeFromSquads: harv - NavalUnits: ss,msub,dd,ca,lst,pt - UnitsToBuild: - harv: 1% - heli: 30% - hind: 30% - mig: 30% - yak: 30% - ss: 10% - msub: 30% - dd: 30% - ca: 20% - pt: 10% - UnitLimits: - harv: 8 - SquadSize: 1 SupportPowerBotModule: RequiresCondition: enable-rush-ai || enable-normal-ai || enable-turtle-ai || enable-naval-ai Decisions: @@ -427,3 +269,146 @@ Player: mslo: 1 BuildingRepairBotModule: RequiresCondition: enable-rush-ai || enable-normal-ai || enable-turtle-ai || enable-naval-ai + SquadManagerBotModule@rush: + RequiresCondition: enable-rush-ai + SquadSize: 20 + ExcludeFromSquadsTypes: harv, mcv + NavalUnitsTypes: ss,msub,dd,ca,lst,pt + ConstructionYardTypes: fact + McvManagerBotModule: + RequiresCondition: enable-rush-ai || enable-normal-ai || enable-turtle-ai || enable-naval-ai + McvTypes: mcv + ConstructionYardTypes: fact + McvFactoryTypes: weap + UnitBuilderBotModule@rush: + RequiresCondition: enable-rush-ai + UnitsToBuild: + e1: 65 + e2: 15 + e3: 30 + e4: 15 + dog: 15 + shok: 15 + harv: 10 + apc: 30 + jeep: 20 + arty: 15 + v2rl: 40 + ftrk: 30 + 1tnk: 50 + 2tnk: 50 + 3tnk: 50 + 4tnk: 25 + ttnk: 25 + stnk: 5 + UnitLimits: + dog: 4 + harv: 8 + jeep: 4 + ftrk: 4 + SquadManagerBotModule@normal: + RequiresCondition: enable-normal-ai + SquadSize: 40 + ExcludeFromSquadsTypes: harv, mcv + NavalUnitsTypes: ss,msub,dd,ca,lst,pt + ConstructionYardTypes: fact + NavalProductionTypes: spen,syrd + UnitBuilderBotModule@normal: + RequiresCondition: enable-normal-ai + UnitsToBuild: + e1: 65 + e2: 15 + e3: 30 + e4: 15 + dog: 15 + shok: 15 + harv: 15 + apc: 30 + jeep: 20 + arty: 15 + v2rl: 40 + ftrk: 30 + 1tnk: 40 + 2tnk: 50 + 3tnk: 50 + 4tnk: 25 + ttnk: 25 + stnk: 5 + heli: 30 + hind: 30 + mig: 30 + yak: 30 + ss: 10 + msub: 10 + dd: 10 + ca: 10 + pt: 10 + UnitLimits: + dog: 4 + harv: 8 + jeep: 4 + ftrk: 4 + SquadManagerBotModule@turtle: + RequiresCondition: enable-turtle-ai + SquadSize: 10 + ExcludeFromSquadsTypes: harv, mcv + NavalUnitsTypes: ss,msub,dd,ca,lst,pt + ConstructionYardTypes: fact + NavalProductionTypes: spen,syrd + UnitBuilderBotModule@turtle: + RequiresCondition: enable-turtle-ai + UnitsToBuild: + e1: 65 + e2: 15 + e3: 30 + e4: 15 + dog: 15 + shok: 15 + harv: 15 + apc: 30 + jeep: 20 + arty: 15 + v2rl: 40 + ftrk: 50 + 1tnk: 50 + 2tnk: 50 + 3tnk: 50 + 4tnk: 25 + ttnk: 25 + stnk: 10 + heli: 30 + hind: 30 + mig: 30 + yak: 30 + ss: 10 + msub: 10 + dd: 10 + ca: 10 + pt: 10 + UnitLimits: + dog: 4 + harv: 8 + jeep: 4 + ftrk: 4 + SquadManagerBotModule@naval: + RequiresCondition: enable-naval-ai + SquadSize: 1 + ExcludeFromSquadsTypes: harv, mcv + NavalUnitsTypes: ss,msub,dd,ca,lst,pt + ConstructionYardTypes: fact + NavalProductionTypes: spen,syrd + UnitBuilderBotModule@naval: + RequiresCondition: enable-naval-ai + UnitsToBuild: + harv: 1 + heli: 30 + hind: 30 + mig: 30 + yak: 30 + ss: 10 + msub: 30 + dd: 30 + ca: 20 + pt: 10 + UnitLimits: + harv: 8 diff --git a/mods/ts/rules/ai.yaml b/mods/ts/rules/ai.yaml index 41fb50bbf5..176fb44d83 100644 --- a/mods/ts/rules/ai.yaml +++ b/mods/ts/rules/ai.yaml @@ -1,41 +1,7 @@ Player: - HackyAI@TestAI: + ModularBot@TestAI: Name: Test AI Type: test - BuildingCommonNames: - ConstructionYard: gacnst - Refinery: proc - Power: gapowr, napowr, naapwr - Barracks: gapile, nahand - VehiclesFactory: gaweap, naweap - Production: gapile, nahand, gaweap, naweap - Silo: gasilo - UnitsCommonNames: - Mcv: mcv - ExcludeFromSquads: harv - UnitsToBuild: - e1: 80% - e2: 25% - e3: 25% - cyborg: 15% - jumpjet: 15% - repair: 2% - medic: 2% - harv: 10% - mmch: 15% - ttnk: 15% - smech: 25% - bggy: 25% - hvr: 20% - bike: 20% - subtank: 10% - sonic: 10% - stnk: 8% - UnitLimits: - harv: 12 - medic: 3 - repair: 3 - SquadSize: 20 GrantConditionOnBotOwner@test: Condition: enable-test-ai Bots: test @@ -93,3 +59,37 @@ Player: naobel: 3 BuildingRepairBotModule: RequiresCondition: enable-test-ai + SquadManagerBotModule@test: + RequiresCondition: enable-test-ai + SquadSize: 20 + ExcludeFromSquadsTypes: harv, mcv + ConstructionYardTypes: gacnst + UnitBuilderBotModule@test: + RequiresCondition: enable-test-ai + UnitsToBuild: + e1: 80 + e2: 25 + e3: 25 + cyborg: 15 + jumpjet: 15 + repair: 2 + medic: 2 + harv: 10 + mmch: 15 + ttnk: 15 + smech: 25 + bggy: 25 + hvr: 20 + bike: 20 + subtank: 10 + sonic: 10 + stnk: 8 + UnitLimits: + harv: 12 + medic: 3 + repair: 3 + McvManagerBotModule@test: + RequiresCondition: enable-test-ai + McvTypes: mcv + ConstructionYardTypes: gacnst + McvFactoryTypes: gaweap, naweap