From 59549ef7b07d9dfbe9fb4d1de1c03ee4b9dcef19 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 23 Sep 2021 18:31:55 -0400 Subject: [PATCH] ChooseCardEffect "EachDifferentPower" --- .../ability/effects/ChooseCardEffect.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java index 2fbc44996ff..204122f9eab 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java @@ -1,5 +1,7 @@ package forge.game.ability.effects; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.apache.commons.lang3.StringUtils; @@ -137,6 +139,26 @@ public class ChooseCardEffect extends SpellAbilityEffect { chosenPool.add(choice); } chosen.addAll(chosenPool); + } else if (sa.hasParam("EachDifferentPower")) { + List powers = new ArrayList<>(); + CardCollection chosenPool = new CardCollection(); + for (Card c : choices) { + int pow = c.getNetPower(); + if (!powers.contains(pow)) { + powers.add(c.getNetPower()); + } + } + Collections.sort(powers); + String re = sa.getParam("Choices"); + re = re + (re.contains(".") ? "+powerEQ" : ".powerEQ"); + for (int i : powers) { + String restrict = re + i; + CardCollection valids = CardLists.getValidCards(choices, restrict, activator, host, sa); + Card choice = p.getController().chooseSingleEntityForEffect(valids, sa, + Localizer.getInstance().getMessage("lblChooseCreatureWithXPower", i), false, null); + chosenPool.add(choice); + } + chosen.addAll(chosenPool); } else if ((tgt == null) || p.canBeTargetedBy(sa)) { if (sa.hasParam("AtRandom") && !choices.isEmpty()) { Aggregates.random(choices, validAmount, chosen);