diff --git a/forge-ai/src/main/java/forge/ai/ability/CountersPutOrRemoveAi.java b/forge-ai/src/main/java/forge/ai/ability/CountersPutOrRemoveAi.java index 89f06af68ea..4a60b929783 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CountersPutOrRemoveAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CountersPutOrRemoveAi.java @@ -27,6 +27,7 @@ import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; import forge.ai.SpellAbilityAi; import forge.game.Game; +import forge.game.ability.AbilityUtils; import forge.game.card.Card; import forge.game.card.CardCollection; import forge.game.card.CardCollectionView; @@ -68,8 +69,6 @@ public class CountersPutOrRemoveAi extends SpellAbilityAi { private boolean doTgt(Player ai, SpellAbility sa, boolean mandatory) { final Game game = ai.getGame(); - final int amount = Integer.valueOf(sa.getParam("CounterNum")); - // remove counter with Time might use Exile Zone too final TargetRestrictions tgt = sa.getTargetRestrictions(); // need to targetable @@ -82,6 +81,8 @@ public class CountersPutOrRemoveAi extends SpellAbilityAi { // Filter AI-specific targets if provided list = ComputerUtil.filterAITgts(sa, ai, list, false); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParamOrDefault("CounterNum", "1"), sa); + if (sa.hasParam("CounterType")) { // currently only Jhoira's Timebug final CounterType type = CounterType.getType(sa.getParam("CounterType")); diff --git a/forge-core/src/main/java/forge/util/collect/FCollection.java b/forge-core/src/main/java/forge/util/collect/FCollection.java index 1cc57002a02..a08141ccd89 100644 --- a/forge-core/src/main/java/forge/util/collect/FCollection.java +++ b/forge-core/src/main/java/forge/util/collect/FCollection.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.ListIterator; import java.util.NoSuchElementException; import java.util.Set; +import java.util.function.Predicate; import org.apache.commons.lang3.ArrayUtils; @@ -270,6 +271,15 @@ public class FCollection implements List, /*Set,*/ FCollectionView, return false; } + @Override + public boolean removeIf(Predicate filter) { + if (list.removeIf(filter)) { + set.removeIf(filter); + return true; + } + return false; + } + /** * {@inheritDoc} */