diff --git a/OpenRA.Mods.Common/AI/HackyAI.cs b/OpenRA.Mods.Common/AI/HackyAI.cs index d5fac5a165..1f5ba71d03 100644 --- a/OpenRA.Mods.Common/AI/HackyAI.cs +++ b/OpenRA.Mods.Common/AI/HackyAI.cs @@ -49,11 +49,6 @@ namespace OpenRA.Mods.Common.AI [Desc("Human-readable name this bot uses.")] public readonly string Name = "Unnamed Bot"; - [FieldLoader.Require] - [GrantedConditionReference] - [Desc("Condition to grant. Mostly used to activate modules.")] - public readonly string Condition = null; - [Desc("Minimum number of units AI must have before attacking.")] public readonly int SquadSize = 8; @@ -269,7 +264,6 @@ namespace OpenRA.Mods.Common.AI readonly Predicate unitCannotBeOrdered; BotOrderManager botOrderManager; - int conditionToken = ConditionManager.InvalidConditionToken; CPos initialBaseCenter; PowerManager playerPower; @@ -350,10 +344,6 @@ namespace OpenRA.Mods.Common.AI resourceTypeIndices = new BitArray(tileset.TerrainInfo.Length); // Big enough foreach (var t in Map.Rules.Actors["world"].TraitInfos()) resourceTypeIndices.Set(tileset.GetTerrainIndex(t.TerrainType), true); - - var conditionManager = p.PlayerActor.TraitOrDefault(); - if (conditionManager != null && conditionToken == ConditionManager.InvalidConditionToken) - conditionToken = conditionManager.GrantCondition(p.PlayerActor, Info.Condition); } // DEPRECATED: Bot modules should queue orders directly. diff --git a/OpenRA.Mods.Common/UpdateRules/Rules/20180923/AddHarvesterBotModule.cs b/OpenRA.Mods.Common/UpdateRules/Rules/20180923/AddHarvesterBotModule.cs index d8d8b6c94a..cbf36c1fa5 100644 --- a/OpenRA.Mods.Common/UpdateRules/Rules/20180923/AddHarvesterBotModule.cs +++ b/OpenRA.Mods.Common/UpdateRules/Rules/20180923/AddHarvesterBotModule.cs @@ -66,11 +66,21 @@ namespace OpenRA.Mods.Common.UpdateRules.Rules var aiType = hackyAINode.LastChildMatching("Type").NodeValue(); var conditionString = "enable-" + aiType + "-ai"; var requiresCondition = new MiniYamlNode("RequiresCondition", conditionString); - var conditionNode = hackyAINode.LastChildMatching("Condition"); - if (conditionNode == null) + + var addGrantConditionOnBotOwner = true; + var grantBotConditions = actorNode.ChildrenMatching("GrantConditionOnBotOwner"); + foreach (var grant in grantBotConditions) + if (grant.LastChildMatching("Condition").NodeValue() == conditionString) + addGrantConditionOnBotOwner = false; + + if (addGrantConditionOnBotOwner) { - var enableModule = new MiniYamlNode("Condition", conditionString); - hackyAINode.AddNode(enableModule); + var grantNode = new MiniYamlNode("GrantConditionOnBotOwner@" + aiType, ""); + var grantCondition = new MiniYamlNode("Condition", conditionString); + var bot = new MiniYamlNode("Bots", aiType); + grantNode.AddNode(grantCondition); + grantNode.AddNode(bot); + addNodes.Add(grantNode); } if (harvesterFields.Any(f => hackyAINode.ChildrenMatching(f).Any())) diff --git a/mods/cnc/rules/ai.yaml b/mods/cnc/rules/ai.yaml index ac8503cf0c..2dd5d9a7d9 100644 --- a/mods/cnc/rules/ai.yaml +++ b/mods/cnc/rules/ai.yaml @@ -131,7 +131,6 @@ Player: Attractiveness: -10 TargetMetric: Value CheckRadius: 7c0 - Condition: enable-cabal-ai HackyAI@Watson: Name: Watson Type: watson @@ -263,7 +262,6 @@ Player: Attractiveness: -10 TargetMetric: Value CheckRadius: 7c0 - Condition: enable-watson-ai HackyAI@HAL9001: Name: HAL 9001 Type: hal9001 @@ -397,6 +395,14 @@ Player: Attractiveness: -10 TargetMetric: Value CheckRadius: 7c0 + GrantConditionOnBotOwner@cabal: + Condition: enable-cabal-ai + Bots: cabal + GrantConditionOnBotOwner@watson: + Condition: enable-watson-ai + Bots: watson + GrantConditionOnBotOwner@hal9001: Condition: enable-hal9001-ai + Bots: hal9001 HarvesterBotModule: RequiresCondition: enable-cabal-ai || enable-watson-ai || enable-hal9001-ai diff --git a/mods/d2k/rules/ai.yaml b/mods/d2k/rules/ai.yaml index f1f6a0e171..cf5dba7a5b 100644 --- a/mods/d2k/rules/ai.yaml +++ b/mods/d2k/rules/ai.yaml @@ -125,7 +125,6 @@ Player: OrderName: ProduceActorPower.Fremen Consideration@1: Against: Ally - Condition: enable-omnius-ai HackyAI@Vidius: Name: Vidious Type: vidious @@ -251,7 +250,6 @@ Player: OrderName: ProduceActorPower.Fremen Consideration@1: Against: Ally - Condition: enable-vidious-ai HackyAI@Gladius: Name: Gladius Type: gladius @@ -376,6 +374,14 @@ Player: OrderName: ProduceActorPower.Fremen Consideration@1: Against: Ally + GrantConditionOnBotOwner@omnius: + Condition: enable-omnius-ai + Bots: omnius + GrantConditionOnBotOwner@vidious: + Condition: enable-vidious-ai + Bots: vidious + GrantConditionOnBotOwner@gladius: Condition: enable-gladius-ai + Bots: gladius HarvesterBotModule: RequiresCondition: enable-omnius-ai || enable-vidious-ai || enable-gladius-ai diff --git a/mods/ra/maps/fort-lonestar/rules.yaml b/mods/ra/maps/fort-lonestar/rules.yaml index 93b7158d26..7be7e6031e 100644 --- a/mods/ra/maps/fort-lonestar/rules.yaml +++ b/mods/ra/maps/fort-lonestar/rules.yaml @@ -105,8 +105,6 @@ Player: DefaultCashDropdownLocked: True DefaultCashDropdownVisible: False DefaultCash: 50 - -ConditionManager: - -HarvesterBotModule: -HackyAI@RushAI: -HackyAI@NormalAI: -HackyAI@NavalAI: diff --git a/mods/ra/rules/ai.yaml b/mods/ra/rules/ai.yaml index dc8f695b38..41e8c495d0 100644 --- a/mods/ra/rules/ai.yaml +++ b/mods/ra/rules/ai.yaml @@ -121,7 +121,6 @@ Player: Attractiveness: -10 TargetMetric: Value CheckRadius: 7c0 - Condition: enable-rush-ai HackyAI@NormalAI: Name: Normal AI Type: normal @@ -262,7 +261,6 @@ Player: Attractiveness: -10 TargetMetric: Value CheckRadius: 7c0 - Condition: enable-normal-ai HackyAI@TurtleAI: Name: Turtle AI Type: turtle @@ -404,7 +402,6 @@ Player: Attractiveness: -10 TargetMetric: Value CheckRadius: 7c0 - Condition: enable-turtle-ai HackyAI@NavalAI: Name: Naval AI Type: naval @@ -521,6 +518,17 @@ Player: Attractiveness: -10 TargetMetric: Value CheckRadius: 7c0 + GrantConditionOnBotOwner@rush: + Condition: enable-rush-ai + Bots: rush + GrantConditionOnBotOwner@normal: + Condition: enable-normal-ai + Bots: normal + GrantConditionOnBotOwner@turtle: + Condition: enable-turtle-ai + Bots: turtle + GrantConditionOnBotOwner@naval: Condition: enable-naval-ai + Bots: naval HarvesterBotModule: RequiresCondition: enable-rush-ai || enable-normal-ai || enable-turtle-ai || enable-naval-ai diff --git a/mods/ts/rules/ai.yaml b/mods/ts/rules/ai.yaml index f7cf9ae0ae..f8558f5c99 100644 --- a/mods/ts/rules/ai.yaml +++ b/mods/ts/rules/ai.yaml @@ -78,6 +78,8 @@ Player: medic: 3 repair: 3 SquadSize: 20 + GrantConditionOnBotOwner@test: Condition: enable-test-ai + Bots: test HarvesterBotModule: RequiresCondition: enable-test-ai