From 453353d1d657d25e188085758920f764416a1dfe Mon Sep 17 00:00:00 2001 From: marcins78 Date: Thu, 24 Jan 2013 14:24:48 +0000 Subject: [PATCH] "Overwhelming Numbers" --- .../evaluator/CountSpottableEvaluator.java | 36 +++++++++++++++++++ .../lotro/cards/set20/dunland/Card20_007.java | 4 +-- .../lotro/cards/set20/dunland/Card20_012.java | 4 +-- .../lotro/cards/set20/dunland/Card20_023.java | 4 +-- .../lotro/cards/set20/elven/Card20_095.java | 4 +-- .../cards/set20/fallenRealms/Card20_127.java | 4 +-- .../cards/set20/fallenRealms/Card20_132.java | 33 +++++++++++++++++ 7 files changed, 79 insertions(+), 10 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountSpottableEvaluator.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/fallenRealms/Card20_132.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountSpottableEvaluator.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountSpottableEvaluator.java new file mode 100644 index 000000000..1ceef4e48 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountSpottableEvaluator.java @@ -0,0 +1,36 @@ +package com.gempukku.lotro.cards.modifiers.evaluator; + +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; + +public class CountSpottableEvaluator implements Evaluator { + private int _over; + private Filterable[] _filters; + private Integer _limit; + + public CountSpottableEvaluator(Filterable... filters) { + this(null, filters); + } + + public CountSpottableEvaluator(Integer limit, Filterable... filters) { + this(0, limit, filters); + } + + public CountSpottableEvaluator(int over, Integer limit, Filterable... filters) { + _over = over; + _filters = filters; + _limit = limit; + } + + @Override + public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { + final int active = Math.max(0, Filters.countSpottable(gameState, modifiersQuerying, _filters) - _over); + if (_limit == null) + return active; + return Math.min(_limit, active); + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_007.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_007.java index 2b33a4c44..74e6a8a07 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_007.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_007.java @@ -1,7 +1,7 @@ package com.gempukku.lotro.cards.set20.dunland; import com.gempukku.lotro.cards.AbstractMinion; -import com.gempukku.lotro.cards.modifiers.evaluator.CountActiveEvaluator; +import com.gempukku.lotro.cards.modifiers.evaluator.CountSpottableEvaluator; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Race; @@ -30,7 +30,7 @@ public class Card20_007 extends AbstractMinion { public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { List modifiers = new LinkedList(); modifiers.add( - new StrengthModifier(self, self, null, new CountActiveEvaluator(Side.FREE_PEOPLE, CardType.POSSESSION))); + new StrengthModifier(self, self, null, new CountSpottableEvaluator(Side.FREE_PEOPLE, CardType.POSSESSION))); return modifiers; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_012.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_012.java index 05376997f..6d5bd9825 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_012.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_012.java @@ -1,7 +1,7 @@ package com.gempukku.lotro.cards.set20.dunland; import com.gempukku.lotro.cards.AbstractMinion; -import com.gempukku.lotro.cards.modifiers.evaluator.CountActiveEvaluator; +import com.gempukku.lotro.cards.modifiers.evaluator.CountSpottableEvaluator; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Race; import com.gempukku.lotro.filters.Filters; @@ -29,7 +29,7 @@ public class Card20_012 extends AbstractMinion { public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { List modifiers = new LinkedList(); modifiers.add( - new StrengthModifier(self, self, null, new CountActiveEvaluator(Filters.not(self), Culture.DUNLAND, Race.MAN))); + new StrengthModifier(self, self, null, new CountSpottableEvaluator(Filters.not(self), Culture.DUNLAND, Race.MAN))); return modifiers; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_023.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_023.java index 2f3252c23..7aff0c061 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_023.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_023.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set20.dunland; import com.gempukku.lotro.cards.AbstractEvent; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; -import com.gempukku.lotro.cards.modifiers.evaluator.CountActiveEvaluator; +import com.gempukku.lotro.cards.modifiers.evaluator.CountSpottableEvaluator; import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; @@ -22,7 +22,7 @@ public class Card20_023 extends AbstractEvent { public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { PlayEventAction action = new PlayEventAction(self); action.appendEffect( - new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, new CountActiveEvaluator(CardType.POSSESSION), Culture.DUNLAND, Race.MAN)); + new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, new CountSpottableEvaluator(CardType.POSSESSION), Culture.DUNLAND, Race.MAN)); return action; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/elven/Card20_095.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/elven/Card20_095.java index 142af94fc..78f9bc81b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/elven/Card20_095.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/elven/Card20_095.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set20.elven; import com.gempukku.lotro.cards.AbstractEvent; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; -import com.gempukku.lotro.cards.modifiers.evaluator.CountActiveEvaluator; +import com.gempukku.lotro.cards.modifiers.evaluator.CountSpottableEvaluator; import com.gempukku.lotro.cards.modifiers.evaluator.MultiplyEvaluator; import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.PhysicalCard; @@ -25,7 +25,7 @@ public class Card20_095 extends AbstractEvent { PlayEventAction action = new PlayEventAction(self); action.appendEffect( new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, - new MultiplyEvaluator(-1, new CountActiveEvaluator(CardType.ALLY, Keyword.RIVENDELL)), CardType.MINION)); + new MultiplyEvaluator(-1, new CountSpottableEvaluator(CardType.ALLY, Keyword.RIVENDELL)), CardType.MINION)); return action; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/fallenRealms/Card20_127.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/fallenRealms/Card20_127.java index fad84f91a..45a6717ea 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/fallenRealms/Card20_127.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/fallenRealms/Card20_127.java @@ -1,7 +1,7 @@ package com.gempukku.lotro.cards.set20.fallenRealms; import com.gempukku.lotro.cards.AbstractMinion; -import com.gempukku.lotro.cards.modifiers.evaluator.CountActiveEvaluator; +import com.gempukku.lotro.cards.modifiers.evaluator.CountSpottableEvaluator; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Race; @@ -28,6 +28,6 @@ public class Card20_127 extends AbstractMinion { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { return new StrengthModifier(self, self, null, - new CountActiveEvaluator(Filters.not(self), Keyword.EASTERLING)); + new CountSpottableEvaluator(Filters.not(self), Keyword.EASTERLING)); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/fallenRealms/Card20_132.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/fallenRealms/Card20_132.java new file mode 100644 index 000000000..0ed0f1d07 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/fallenRealms/Card20_132.java @@ -0,0 +1,33 @@ +package com.gempukku.lotro.cards.set20.fallenRealms; + +import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; +import com.gempukku.lotro.cards.modifiers.evaluator.CountSpottableEvaluator; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Keyword; +import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; + +/** + * 2 + * Overwhelming Numbers + * Fallen Realms Event • Skirmish + * Make an Easterling strength +1 for each Easterling you can spot. + */ +public class Card20_132 extends AbstractEvent { + public Card20_132() { + super(Side.SHADOW, 2, Culture.FALLEN_REALMS, "Overwhelming Numbers", Phase.SKIRMISH); + } + + @Override + public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { + PlayEventAction action = new PlayEventAction(self); + action.appendEffect( + new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, + new CountSpottableEvaluator(Keyword.EASTERLING), Keyword.EASTERLING)); + return action; + } +}