diff --git a/binaries/data/mods/public/simulation/components/Attack.js b/binaries/data/mods/public/simulation/components/Attack.js index 3544a1e9fc..32720a1ec4 100644 --- a/binaries/data/mods/public/simulation/components/Attack.js +++ b/binaries/data/mods/public/simulation/components/Attack.js @@ -412,8 +412,12 @@ Attack.prototype.GetBestAttackAgainst = function(target, allowCapture) // 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); diff --git a/binaries/data/mods/public/simulation/components/tests/test_Attack.js b/binaries/data/mods/public/simulation/components/tests/test_Attack.js index c36a1c0395..a6678fe779 100644 --- a/binaries/data/mods/public/simulation/components/tests/test_Attack.js +++ b/binaries/data/mods/public/simulation/components/tests/test_Attack.js @@ -268,6 +268,7 @@ testGetBestAttackAgainst("FemaleCitizen", "Melee", undefined); testGetBestAttackAgainst("Archer", "Ranged", undefined); testGetBestAttackAgainst("Domestic", "Slaughter", "Slaughter"); testGetBestAttackAgainst("Structure", "Capture", "Capture", true); +testGetBestAttackAgainst("Structure", "Ranged", undefined, false); function testPredictTimeToTarget(selfPosition, horizSpeed, targetPosition, targetVelocity) {