From 03590b13cc065c864f7453b63279432e30ed3ab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Sun, 24 Jan 2016 13:52:44 +0100 Subject: [PATCH 1/2] check the cheap bool before expensive trait lookups --- OpenRA.Mods.Common/AI/HackyAI.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenRA.Mods.Common/AI/HackyAI.cs b/OpenRA.Mods.Common/AI/HackyAI.cs index fa21d57570..cdc1f12d62 100644 --- a/OpenRA.Mods.Common/AI/HackyAI.cs +++ b/OpenRA.Mods.Common/AI/HackyAI.cs @@ -765,7 +765,7 @@ namespace OpenRA.Mods.Common.AI { var allEnemyBaseBuilder = FindEnemyConstructionYards(); var ownUnits = activeUnits - .Where(unit => unit.Info.HasTraitInfo() && !unit.Info.HasTraitInfo() && unit.IsIdle).ToList(); + .Where(unit => unit.IsIdle && unit.Info.HasTraitInfo() && !unit.Info.HasTraitInfo()).ToList(); if (!allEnemyBaseBuilder.Any() || (ownUnits.Count < Info.SquadSize)) return; From 922217271cabc69814fff116e811f811a4cb4f69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Sun, 24 Jan 2016 13:55:37 +0100 Subject: [PATCH 2/2] don't actively attack nor defend with armed harvesters --- OpenRA.Mods.Common/AI/HackyAI.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.Common/AI/HackyAI.cs b/OpenRA.Mods.Common/AI/HackyAI.cs index cdc1f12d62..a31ed06dab 100644 --- a/OpenRA.Mods.Common/AI/HackyAI.cs +++ b/OpenRA.Mods.Common/AI/HackyAI.cs @@ -765,7 +765,8 @@ namespace OpenRA.Mods.Common.AI { var allEnemyBaseBuilder = FindEnemyConstructionYards(); var ownUnits = activeUnits - .Where(unit => unit.IsIdle && unit.Info.HasTraitInfo() && !unit.Info.HasTraitInfo()).ToList(); + .Where(unit => unit.IsIdle && unit.Info.HasTraitInfo() + && !unit.Info.HasTraitInfo() && !unit.Info.HasTraitInfo()).ToList(); if (!allEnemyBaseBuilder.Any() || (ownUnits.Count < Info.SquadSize)) return; @@ -802,7 +803,7 @@ namespace OpenRA.Mods.Common.AI if (!protectSq.IsValid) { var ownUnits = World.FindActorsInCircle(World.Map.CenterOfCell(GetRandomBaseCenter()), WDist.FromCells(Info.ProtectUnitScanRadius)) - .Where(unit => unit.Owner == Player && !unit.Info.HasTraitInfo() + .Where(unit => unit.Owner == Player && !unit.Info.HasTraitInfo() && !unit.Info.HasTraitInfo() && unit.Info.HasTraitInfo()); foreach (var a in ownUnits)