Index: ps/trunk/binaries/data/mods/public/simulation/components/Attack.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/Attack.js +++ ps/trunk/binaries/data/mods/public/simulation/components/Attack.js @@ -412,8 +412,12 @@ // Check whether the target is capturable and prefer that when it is allowed. let captureIndex = types.indexOf("Capture"); - if (captureIndex != -1 && allowCapture) - return "Capture"; + if (captureIndex != -1) + { + if (allowCapture) + return "Capture"; + types.splice(captureIndex, 1); + } let isPreferred = className => this.GetPreferredClasses(className).some(isTargetClass); Index: ps/trunk/binaries/data/mods/public/simulation/components/tests/test_Attack.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/tests/test_Attack.js +++ ps/trunk/binaries/data/mods/public/simulation/components/tests/test_Attack.js @@ -268,6 +268,7 @@ testGetBestAttackAgainst("Archer", "Ranged", undefined); testGetBestAttackAgainst("Domestic", "Slaughter", "Slaughter"); testGetBestAttackAgainst("Structure", "Capture", "Capture", true); +testGetBestAttackAgainst("Structure", "Ranged", undefined, false); function testPredictTimeToTarget(selfPosition, horizSpeed, targetPosition, targetVelocity) {