diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_167.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_167.java index c3ff7db05..22c15fb70 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_167.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_167.java @@ -41,7 +41,7 @@ public class Card4_167 extends AbstractAttachable { new Condition() { @Override public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { - return Filters.filter(gameState.getStackedCards(self.getAttachedTo()), gameState, modifiersQuerying, Race.URUK_HAI).size() > 0; + return Filters.filter(gameState.getStackedCards(self.getAttachedTo()), gameState, modifiersQuerying, Filters.activeSide, Race.URUK_HAI).size() > 0; } }, Side.FREE_PEOPLE, Phase.SKIRMISH)); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/sauron/Card7_316.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/sauron/Card7_316.java index da0e94029..0e87f8b8c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/sauron/Card7_316.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/sauron/Card7_316.java @@ -49,12 +49,8 @@ public class Card7_316 extends AbstractPermanent { @Override public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) { int counter = 0; - for (PhysicalCard site : Filters.filterActive(gameState, modifiersQuerying, CardType.SITE)) { - for (PhysicalCard physicalCard : gameState.getStackedCards(site)) { - if (modifiersQuerying.hasKeyword(gameState, physicalCard, Keyword.BESIEGER)) - counter++; - } - } + for (PhysicalCard site : Filters.filterActive(gameState, modifiersQuerying, CardType.SITE)) + counter += Filters.filter(gameState.getStackedCards(site), gameState, modifiersQuerying, Filters.activeSide, Keyword.BESIEGER).size(); return counter; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/sauron/Card8_105.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/sauron/Card8_105.java index c24fec3f7..ecce1887e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/sauron/Card8_105.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/sauron/Card8_105.java @@ -44,7 +44,7 @@ public class Card8_105 extends AbstractMinion { int count = 0; final Collection sites = Filters.filterActive(gameState, modifiersQuerying, CardType.SITE); for (PhysicalCard site : sites) - count += Filters.filter(gameState.getStackedCards(site), gameState, modifiersQuerying, Culture.SAURON, CardType.MINION).size(); + count += Filters.filter(gameState.getStackedCards(site), gameState, modifiersQuerying, Filters.activeSide, Culture.SAURON, CardType.MINION).size(); return -2 * count; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java index d253d15c4..544d83579 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java @@ -637,7 +637,7 @@ public class Filters { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { List physicalCardList = gameState.getStackedCards(physicalCard); - return (Filters.filter(physicalCardList, gameState, modifiersQuerying, filter).size() > 0); + return (Filters.filter(physicalCardList, gameState, modifiersQuerying, Filters.and(filter, activeSide)).size() > 0); } }; } @@ -830,6 +830,17 @@ public class Filters { throw new IllegalArgumentException("Unknown type of filterable: " + filter); } + public static Filter activeSide = new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + boolean shadow = physicalCard.getBlueprint().getSide() == Side.SHADOW; + if (shadow) + return !physicalCard.getOwner().equals(gameState.getCurrentPlayerId()); + else + return physicalCard.getOwner().equals(gameState.getCurrentPlayerId()); + } + }; + private static Filter andInternal(final Filter... filters) { return new Filter() { @Override