"Agents of Orthanc"
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
package com.gempukku.lotro.cards.modifiers.evaluator;
|
||||
|
||||
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.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class CountCulturesEvaluator implements Evaluator {
|
||||
private Filterable[] _filters;
|
||||
private int _multiplier;
|
||||
private int _over;
|
||||
|
||||
public CountCulturesEvaluator(int over, int multiplier, Filterable... filters) {
|
||||
_over = over;
|
||||
_multiplier = multiplier;
|
||||
_filters = filters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) {
|
||||
Set<Culture> cultures = new HashSet<Culture>();
|
||||
for (PhysicalCard physicalCard : Filters.filterActive(gameState, modifiersQuerying, _filters))
|
||||
cultures.add(physicalCard.getBlueprint().getCulture());
|
||||
return _multiplier * Math.max(0, cultures.size() - _over);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.gempukku.lotro.cards.set6.isengard;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractMinion;
|
||||
import com.gempukku.lotro.cards.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.evaluator.CountCulturesEvaluator;
|
||||
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: Ents of Fangorn
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 5
|
||||
* Type: Minion • Man
|
||||
* Strength: 9
|
||||
* Vitality: 3
|
||||
* Site: 3
|
||||
* Game Text: This minion is strength +2 and damage +1 for each Free Peoples culture that you can spot over 2.
|
||||
*/
|
||||
public class Card6_057 extends AbstractMinion {
|
||||
public Card6_057() {
|
||||
super(5, 9, 3, 3, Race.MAN, Culture.ISENGARD, "Agents of Orthanc");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
|
||||
List<Modifier> modifiers = new LinkedList<Modifier>();
|
||||
modifiers.add(
|
||||
new StrengthModifier(self, self, null, new CountCulturesEvaluator(2, 2, Side.FREE_PEOPLE)));
|
||||
modifiers.add(
|
||||
new KeywordModifier(self, self, null, Keyword.DAMAGE, new CountCulturesEvaluator(2, 1, Side.FREE_PEOPLE)));
|
||||
return modifiers;
|
||||
}
|
||||
}
|
||||
@@ -4,25 +4,38 @@ import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
|
||||
|
||||
public class KeywordModifier extends AbstractModifier {
|
||||
private Keyword _keyword;
|
||||
private int _count;
|
||||
private Evaluator _evaluator;
|
||||
|
||||
public KeywordModifier(PhysicalCard physicalCard, Filterable affectFilter, Keyword keyword) {
|
||||
this(physicalCard, affectFilter, keyword, 1);
|
||||
}
|
||||
|
||||
public KeywordModifier(PhysicalCard physicalCard, Filterable affectFilter, Keyword keyword, int count) {
|
||||
super(physicalCard, "Has " + keyword.getHumanReadable() + ((count > 1) ? (" +" + count) : ""), affectFilter, new ModifierEffect[]{ModifierEffect.KEYWORD_MODIFIER});
|
||||
_keyword = keyword;
|
||||
_count = count;
|
||||
this(physicalCard, affectFilter, null, keyword, count);
|
||||
}
|
||||
|
||||
public KeywordModifier(PhysicalCard physicalCard, Filterable affectFilter, Condition condition, Keyword keyword, int count) {
|
||||
super(physicalCard, "Has " + keyword.getHumanReadable() + ((count > 1) ? (" +" + count) : ""), affectFilter, condition, new ModifierEffect[]{ModifierEffect.KEYWORD_MODIFIER});
|
||||
this(physicalCard, affectFilter, condition, keyword, new ConstantEvaluator(count));
|
||||
}
|
||||
|
||||
public KeywordModifier(PhysicalCard physicalCard, Filterable affectFilter, Condition condition, Keyword keyword, Evaluator evaluator) {
|
||||
super(physicalCard, null, affectFilter, condition, new ModifierEffect[]{ModifierEffect.KEYWORD_MODIFIER});
|
||||
_keyword = keyword;
|
||||
_count = count;
|
||||
_evaluator = evaluator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) {
|
||||
if (_keyword.isMultiples()) {
|
||||
int count = _evaluator.evaluateExpression(gameState, modifiersQuerying, self);
|
||||
return _keyword.getHumanReadable() + " +" + count;
|
||||
}
|
||||
return _keyword.getHumanReadable();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -33,7 +46,7 @@ public class KeywordModifier extends AbstractModifier {
|
||||
@Override
|
||||
public int getKeywordCount(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword, int result) {
|
||||
if (keyword == _keyword)
|
||||
return result + _count;
|
||||
return result + _evaluator.evaluateExpression(gameState, modifiersQuerying, physicalCard);
|
||||
else
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user