From 6ee50faf8e7af3722db4e910a204e1e2188f7c34 Mon Sep 17 00:00:00 2001 From: Hanmac Date: Sat, 16 Jul 2016 04:37:53 +0000 Subject: [PATCH] AbilityUtils: if filtering a ListByType check for other Compare like LT, LE, GT, GE too it does optimize the calculating --- .../java/forge/game/ability/AbilityUtils.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index c8832952854..50618b4a519 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -1,6 +1,7 @@ package forge.game.ability; import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import forge.card.ColorSet; import forge.card.MagicColor; @@ -783,12 +784,15 @@ public class AbilityUtils { } String valid = type; - int eqIndex = valid.indexOf("EQ"); - if (eqIndex >= 0) { - char reference = valid.charAt(eqIndex + 2); // take whatever goes after EQ - if (Character.isLetter(reference)) { - String varName = valid.split(",")[0].split("EQ")[1].split("\\+")[0]; - valid = valid.replace("EQ" + varName, "EQ" + Integer.toString(calculateAmount(source, varName, sa))); + + for (String t : Lists.newArrayList("LT", "LE", "EQ", "GE", "GT", "NE")) { + int index = valid.indexOf(t); + if (index >= 0) { + char reference = valid.charAt(index + 2); // take whatever goes after EQ + if (Character.isLetter(reference)) { + String varName = valid.split(",")[0].split(t)[1].split("\\+")[0]; + valid = valid.replace(t + varName, t + Integer.toString(calculateAmount(source, varName, sa))); + } } } if (sa.hasParam("AbilityCount")) { // replace specific string other than "EQ" cases