diff --git a/OpenRA.Mods.RA/AI/HackyAI.cs b/OpenRA.Mods.RA/AI/HackyAI.cs index c8105a2dc1..1c2125a4eb 100644 --- a/OpenRA.Mods.RA/AI/HackyAI.cs +++ b/OpenRA.Mods.RA/AI/HackyAI.cs @@ -150,7 +150,8 @@ namespace OpenRA.Mods.RA.AI public bool TargetIsValid { - get { return (target != null && !target.IsDead() && !target.Destroyed && target.IsInWorld); } + get { return (target != null && !target.IsDead() && !target.Destroyed + && target.IsInWorld && !target.HasTrait()); } } //********************************************************************************** @@ -508,7 +509,8 @@ namespace OpenRA.Mods.RA.AI var enemyUnits = owner.world.FindUnitsInCircle(owner.Target.CenterLocation, Game.CellSize * 10) .Where(unit => owner.bot.p.Stances[unit.Owner] == Stance.Enemy).ToList(); if (enemyUnits.Any()) - { + + { owner.attackOrFleeFuzzy.CalculateFuzzy(owner.units, enemyUnits); if (owner.attackOrFleeFuzzy.CanAttack) { @@ -1178,8 +1180,8 @@ namespace OpenRA.Mods.RA.AI foreach (var a in unitsHangingAroundTheBase) if (!a.HasTrait()) attackForce.units.Add(a); - unitsHangingAroundTheBase.Clear(); - } + unitsHangingAroundTheBase.Clear(); + } } void TryToRushAttack() diff --git a/OpenRA.Mods.RA/AI/RushFuzzy.cs b/OpenRA.Mods.RA/AI/RushFuzzy.cs index d717db604a..5d6925763d 100644 --- a/OpenRA.Mods.RA/AI/RushFuzzy.cs +++ b/OpenRA.Mods.RA/AI/RushFuzzy.cs @@ -27,8 +27,8 @@ namespace OpenRA.Mods.RA.AI "and ((EnemyHealth is NearDead) or (EnemyHealth is Injured) or (EnemyHealth is Normal)) " + "and (RelativeAttackPower is Strong) " + "and ((RelativeSpeed is Slow) or (RelativeSpeed is Equal) or (RelativeSpeed is Fast))) " + - "then AttackOrFlee is Attack")); - + "then AttackOrFlee is Attack")); + fuzzyEngine.Rules.Add(fuzzyEngine.ParseRule("if ((OwnHealth is Normal) " + "and ((EnemyHealth is NearDead) or (EnemyHealth is Injured) or (EnemyHealth is Normal)) " + "and ((RelativeAttackPower is Weak) or (RelativeAttackPower is Equal)) " +