diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountCultureTokensEvaluator.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountCultureTokensEvaluator.java index a22fe0f91..a11d6319d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountCultureTokensEvaluator.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountCultureTokensEvaluator.java @@ -12,17 +12,24 @@ import java.util.Map; public class CountCultureTokensEvaluator implements Evaluator { private Filterable[] _filters; + private Token _token; public CountCultureTokensEvaluator(Filterable... filters) { _filters = filters; } + public CountCultureTokensEvaluator(Token token, Filterable... filters) { + _token = token; + _filters = filters; + } + @Override public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) { int count = 0; for (PhysicalCard physicalCard : Filters.filterActive(gameState, modifiersQuerying, Filters.and(_filters, Filters.hasAnyCultureTokens(1)))) { for (Map.Entry tokens : gameState.getTokens(physicalCard).entrySet()) { - if (tokens.getKey().getCulture() != null) + if (tokens.getKey().getCulture() != null + && ((_token == null) || tokens.getKey() == _token)) count += tokens.getValue(); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/LimitEvaluator.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/LimitEvaluator.java new file mode 100644 index 000000000..dface4494 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/LimitEvaluator.java @@ -0,0 +1,21 @@ +package com.gempukku.lotro.cards.modifiers.evaluator; + +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; + +public class LimitEvaluator implements Evaluator { + private int _limit; + private Evaluator _evaluator; + + public LimitEvaluator(Evaluator evaluator, int limit) { + _evaluator = evaluator; + _limit = limit; + } + + @Override + public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) { + return Math.min(_limit, _evaluator.evaluateExpression(gameState, modifiersQuerying, cardAffected)); + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/men/Card18_064.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/men/Card18_064.java new file mode 100644 index 000000000..35b4bcf7d --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/men/Card18_064.java @@ -0,0 +1,36 @@ +package com.gempukku.lotro.cards.set18.men; + +import com.gempukku.lotro.cards.AbstractAttachable; +import com.gempukku.lotro.cards.modifiers.evaluator.CountCultureTokensEvaluator; +import com.gempukku.lotro.cards.modifiers.evaluator.LimitEvaluator; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; + +/** + * Set: Treachery & Deceit + * Side: Shadow + * Culture: Men + * Twilight Cost: 2 + * Type: Possession • Hand Weapon + * Game Text: Bearer must be a [MEN] minion. Bearer is strength +1 for each [MEN] token you can spot (limit +5). + */ +public class Card18_064 extends AbstractAttachable { + public Card18_064() { + super(Side.SHADOW, CardType.POSSESSION, 2, Culture.MEN, PossessionClass.HAND_WEAPON, "Corsair Scimitar"); + } + + @Override + protected Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Filters.and(Culture.MEN, CardType.MINION); + } + + @Override + public Modifier getAlwaysOnModifier(PhysicalCard self) { + return new StrengthModifier(self, Filters.hasAttached(self), null, + new LimitEvaluator(new CountCultureTokensEvaluator(Token.MEN, Filters.any), 5)); + } +}