From fee7dba38ff1e4e046ee23fbd659aab6687844c9 Mon Sep 17 00:00:00 2001 From: wraitii Date: Mon, 29 Jul 2019 18:51:50 +0000 Subject: [PATCH] Fix Capture oversight in GetBestAttackAgainst in 9fcfdb0324 This fixes units always using capture attack on a building, since rp22569 forgot to eliminate Capture from the attack types when not allowed. Reported by: minohaka Patch by: Freagarach Reviewed by: wraitii Fixes #5544 Differential Revision: https://code.wildfiregames.com/D2134 This was SVN commit r22575. --- binaries/data/mods/public/simulation/components/Attack.js | 8 ++++++-- .../public/simulation/components/tests/test_Attack.js | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) 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) {