"Corsair Scimitar"

This commit is contained in:
marcins78@gmail.com
2012-03-07 12:50:40 +00:00
parent 4533e8d0fa
commit 172b518967
3 changed files with 65 additions and 1 deletions

View File

@@ -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<Token, Integer> tokens : gameState.getTokens(physicalCard).entrySet()) {
if (tokens.getKey().getCulture() != null)
if (tokens.getKey().getCulture() != null
&& ((_token == null) || tokens.getKey() == _token))
count += tokens.getValue();
}
}

View File

@@ -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));
}
}

View File

@@ -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));
}
}