diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/SpotCulturesCondition.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/SpotCulturesCondition.java new file mode 100644 index 000000000..fa7a26f6e --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/SpotCulturesCondition.java @@ -0,0 +1,35 @@ +package com.gempukku.lotro.cards.modifiers.conditions; + +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Filterable; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; +import com.gempukku.lotro.logic.modifiers.Condition; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; + +import java.util.HashSet; +import java.util.Set; + +public class SpotCulturesCondition implements Condition { + private int _count; + private Filterable _filters; + + public SpotCulturesCondition(int count, Filterable filters) { + _count = count; + _filters = filters; + } + + @Override + public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { + Set cultures = new HashSet(); + for (PhysicalCard physicalCard : Filters.filterActive(gameState, modifiersQuerying, _filters)) { + final Culture culture = physicalCard.getBlueprint().getCulture(); + if (cultures.add(culture)) + if (cultures.size() >= _count) + return true; + } + + return cultures.size() >= _count; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gondor/Card18_038.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gondor/Card18_038.java new file mode 100644 index 000000000..69c3e0975 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gondor/Card18_038.java @@ -0,0 +1,44 @@ +package com.gempukku.lotro.cards.set18.gondor; + +import com.gempukku.lotro.cards.AbstractCompanion; +import com.gempukku.lotro.cards.modifiers.conditions.SpotCulturesCondition; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Keyword; +import com.gempukku.lotro.common.Race; +import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.modifiers.KeywordModifier; +import com.gempukku.lotro.logic.modifiers.Modifier; + +import java.util.LinkedList; +import java.util.List; + +/** + * Set: Treachery & Deceit + * Side: Free + * Culture: Gondor + * Twilight Cost: 4 + * Type: Companion • Man + * Strength: 8 + * Vitality: 4 + * Resistance: 8 + * Game Text: Hunter 2. While you can spot 3 Free Peoples cultures, Aragorn is defender +1. While you can spot 2 Shadow + * cultures, Aragorn is defender +1. + */ +public class Card18_038 extends AbstractCompanion { + public Card18_038() { + super(4, 8, 4, 8, Culture.GONDOR, Race.MAN, null, "Aragorn", true); + addKeyword(Keyword.HUNTER, 2); + } + + @Override + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + List modifiers = new LinkedList(); + modifiers.add( + new KeywordModifier(self, self, new SpotCulturesCondition(3, Side.FREE_PEOPLE), Keyword.DEFENDER, 1)); + modifiers.add( + new KeywordModifier(self, self, new SpotCulturesCondition(2, Side.SHADOW), Keyword.DEFENDER, 1)); + return modifiers; + } +}