From 54a72999d1cae8919e51a664de16a341683c6ecb Mon Sep 17 00:00:00 2001 From: Northmoc Date: Sat, 23 Apr 2022 00:10:02 -0400 Subject: [PATCH] CountersPutEffect: support "EachType" in "CounterTypes" --- .../ability/effects/CountersPutEffect.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java index eef79368fa8..a528ad557b5 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java @@ -285,7 +285,24 @@ public class CountersPutEffect extends SpellAbilityEffect { types = types.replace("ChosenFromList", ""); } for (String type : types.split(",")) { - typesToAdd.add(CounterType.getType(type)); + if (type.contains("EachType")) { + CardCollectionView counterCards = + CardLists.getValidCards(game.getCardsIn(ZoneType.Battlefield), + type.split("_")[1], card.getController(), card, sa); + List counterTypes = Lists.newArrayList(); + for (Card c : counterCards) { + for (final Map.Entry map : c.getCounters().entrySet()) { + if (!counterTypes.contains(map.getKey())) { + counterTypes.add(map.getKey()); + } + } + } + for (CounterType ct : counterTypes) { + resolvePerType(sa, placer, ct, counterAmount, table, false); + } + } else { + typesToAdd.add(CounterType.getType(type)); + } } for (CounterType ct : typesToAdd) { if (obj instanceof Player) {