diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/decisions/ForEachYouSpotDecision.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/decisions/ForEachYouSpotDecision.java index 903b20afb..77c7df201 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/decisions/ForEachYouSpotDecision.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/decisions/ForEachYouSpotDecision.java @@ -25,6 +25,7 @@ public abstract class ForEachYouSpotDecision extends IntegerAwaitingDecision { public Map getDecisionParameters() { Map result = super.getDecisionParameters(); int count = Filters.countSpottable(_lotroGame.getGameState(), _lotroGame.getModifiersQuerying(), _filter); + count += _lotroGame.getModifiersQuerying().getSpotBonus(_lotroGame.getGameState(), _filter); _max = count; result.put("max", String.valueOf(count)); if (_defaultValue > _max) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/KeywordSpotModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/KeywordSpotModifier.java deleted file mode 100644 index e1773b260..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/KeywordSpotModifier.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gempukku.lotro.cards.modifiers; - -import com.gempukku.lotro.cards.modifiers.spotting.SimpleLotroCardBlueprint; -import com.gempukku.lotro.cards.modifiers.spotting.SimplePhysicalCard; -import com.gempukku.lotro.common.Keyword; -import com.gempukku.lotro.filters.Filter; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.GameState; -import com.gempukku.lotro.logic.modifiers.AbstractModifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; - -public class KeywordSpotModifier extends AbstractModifier { - private Keyword _keyword; - - public KeywordSpotModifier(PhysicalCard source, Keyword keyword) { - super(source, "Spotting modifier", null, ModifierEffect.SPOT_MODIFIER); - _keyword = keyword; - } - - @Override - public int getSpotCountModifier(GameState gameState, ModifiersQuerying modifiersQuerying, Filter filter) { - if (filter.accepts(gameState, modifiersQuerying, - new SimplePhysicalCard( - new SimpleLotroCardBlueprint() { - @Override - public boolean hasKeyword(Keyword keyword) { - return keyword == _keyword; - } - }))) - return +1; - return 0; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PossessionClassSpotModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PossessionClassSpotModifier.java index 87402a5d8..ccf852cbf 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PossessionClassSpotModifier.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PossessionClassSpotModifier.java @@ -1,9 +1,7 @@ package com.gempukku.lotro.cards.modifiers; -import com.gempukku.lotro.cards.modifiers.spotting.SimpleLotroCardBlueprint; -import com.gempukku.lotro.cards.modifiers.spotting.SimplePhysicalCard; +import com.gempukku.lotro.common.Filterable; import com.gempukku.lotro.common.PossessionClass; -import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.logic.modifiers.AbstractModifier; @@ -18,16 +16,10 @@ public class PossessionClassSpotModifier extends AbstractModifier { _possessionClass = possessionClass; } + @Override - public int getSpotCountModifier(GameState gameState, ModifiersQuerying modifiersQuerying, Filter filter) { - if (filter.accepts(gameState, modifiersQuerying, - new SimplePhysicalCard( - new SimpleLotroCardBlueprint() { - @Override - public PossessionClass getPossessionClass() { - return _possessionClass; - } - }))) + public int getSpotCountModifier(GameState gameState, ModifiersQuerying modifiersQuerying, Filterable filter) { + if (filter == _possessionClass) return 1; return 0; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_028.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_028.java index a689ddab8..6f68102cc 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_028.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_028.java @@ -3,9 +3,12 @@ package com.gempukku.lotro.cards.set15.gandalf; import com.gempukku.lotro.cards.AbstractCompanion; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Race; +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.Modifier; -import com.gempukku.lotro.logic.modifiers.SpotCondition; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.modifiers.StrengthModifier; /** @@ -26,6 +29,13 @@ public class Card15_028 extends AbstractCompanion { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { - return new StrengthModifier(self, self, new SpotCondition(3, Race.ENT), 2); + return new StrengthModifier(self, self, + new Condition() { + @Override + public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { + return Filters.countActive(gameState, modifiersQuerying, Race.ENT) + + modifiersQuerying.getSpotBonus(gameState, Race.ENT) >= 3; + } + }, 2); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_030.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_030.java index 1a7a035bf..77e10a56e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_030.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_030.java @@ -6,9 +6,9 @@ import com.gempukku.lotro.common.Race; 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.Modifier; import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; -import com.gempukku.lotro.logic.modifiers.SpotCondition; import com.gempukku.lotro.logic.modifiers.StrengthModifier; /** @@ -29,11 +29,19 @@ public class Card15_030 extends AbstractCompanion { @Override public int getTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { - return -Filters.countSpottable(gameState, modifiersQuerying, Race.ENT); + return -Filters.countActive(gameState, modifiersQuerying, Race.ENT) + - modifiersQuerying.getSpotBonus(gameState, Race.ENT); } @Override - public Modifier getAlwaysOnModifier(PhysicalCard self) { - return new StrengthModifier(self, self, new SpotCondition(4, Filters.not(self), Race.ENT), 4); + public Modifier getAlwaysOnModifier(final PhysicalCard self) { + return new StrengthModifier(self, self, + new Condition() { + @Override + public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { + return Filters.countActive(gameState, modifiersQuerying, Filters.not(self), Race.ENT) + + modifiersQuerying.getSpotBonus(gameState, Race.ENT) >= 4; + } + }, 4); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_032.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_032.java index c273dfdf8..8b90bffb0 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_032.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_032.java @@ -1,12 +1,12 @@ package com.gempukku.lotro.cards.set15.gandalf; import com.gempukku.lotro.cards.AbstractEvent; -import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.ChoiceEffect; import com.gempukku.lotro.cards.effects.ShuffleDeckEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndPutCardFromDeckIntoHandEffect; 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.timing.Effect; @@ -31,23 +31,21 @@ public class Card15_032 extends AbstractEvent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int withTwilightRemoved, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && PlayConditions.canSpot(game, Race.ENT); + && (Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Race.ENT) + game.getModifiersQuerying().getSpotBonus(game.getGameState(), Race.ENT)) > 1; } @Override public PlayEventAction getPlayCardAction(final String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { final PlayEventAction action = new PlayEventAction(self); List possibleEffects = new LinkedList(); - if (PlayConditions.canSpot(game, Race.ENT)) { - possibleEffects.add( - new ChooseAndPutCardFromDeckIntoHandEffect(action, playerId, 1, 1, Culture.GANDALF, CardType.COMPANION) { - @Override - public String getText(LotroGame game) { - return "Take a GANDALF companion into hand from your draw deck"; - } - }); - } - if (PlayConditions.canSpot(game, 2, Race.ENT)) { + possibleEffects.add( + new ChooseAndPutCardFromDeckIntoHandEffect(action, playerId, 1, 1, Culture.GANDALF, CardType.COMPANION) { + @Override + public String getText(LotroGame game) { + return "Take a GANDALF companion into hand from your draw deck"; + } + }); + if ((Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Race.ENT) + game.getModifiersQuerying().getSpotBonus(game.getGameState(), Race.ENT)) >= 2) { possibleEffects.add( new ChooseAndPutCardFromDeckIntoHandEffect(action, playerId, 1, 1, Culture.GANDALF, CardType.COMPANION) { @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_034.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_034.java index 1875ea5d1..2f715d521 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_034.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_034.java @@ -35,7 +35,8 @@ public class Card15_034 extends AbstractCompanion { @Override public int getTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { - return -Filters.countSpottable(gameState, modifiersQuerying, Race.ENT); + return -Filters.countSpottable(gameState, modifiersQuerying, Race.ENT) + - modifiersQuerying.getSpotBonus(gameState, Race.ENT); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_036.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_036.java index 2c780c4bc..74b441ebd 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_036.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_036.java @@ -10,10 +10,12 @@ import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.common.Race; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.modifiers.Condition; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.SpotCondition; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.modifiers.StrengthModifier; import com.gempukku.lotro.logic.timing.UnrespondableEffect; @@ -39,7 +41,14 @@ public class Card15_036 extends AbstractCompanion { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { - return new StrengthModifier(self, self, new SpotCondition(4, Race.ENT), 3); + return new StrengthModifier(self, self, + new Condition() { + @Override + public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { + return Filters.countActive(gameState, modifiersQuerying, Race.ENT) + + modifiersQuerying.getSpotBonus(gameState, Race.ENT) >= 4; + } + }, 3); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/gandalf/Card17_025.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/gandalf/Card17_025.java index 95adb7dca..b34ded905 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/gandalf/Card17_025.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/gandalf/Card17_025.java @@ -6,10 +6,13 @@ import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; import com.gempukku.lotro.cards.modifiers.evaluator.ConditionEvaluator; import com.gempukku.lotro.common.*; +import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect; -import com.gempukku.lotro.logic.modifiers.SpotCondition; +import com.gempukku.lotro.logic.modifiers.Condition; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; /** * Set: Rise of Saruman @@ -37,7 +40,14 @@ public class Card17_025 extends AbstractEvent { new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 1, CardType.COMPANION)); action.appendEffect( new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, - new ConditionEvaluator(3, 4, new SpotCondition(3, Race.ENT)), Culture.GANDALF, CardType.COMPANION)); + new ConditionEvaluator(3, 4, + new Condition() { + @Override + public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { + return Filters.countActive(gameState, modifiersQuerying, Race.ENT) + + modifiersQuerying.getSpotBonus(gameState, Race.ENT) >= 3; + } + }), Culture.GANDALF, CardType.COMPANION)); return action; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_027.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_027.java index 5946277c6..ac3458eaa 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_027.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_027.java @@ -3,10 +3,13 @@ package com.gempukku.lotro.cards.set6.gandalf; import com.gempukku.lotro.cards.AbstractCompanion; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Race; +import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.modifiers.Condition; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.SpotCondition; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.modifiers.StrengthModifier; import java.util.Collections; @@ -31,6 +34,13 @@ public class Card6_027 extends AbstractCompanion { @Override public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { return Collections.singletonList( - new StrengthModifier(self, self, new SpotCondition(3, Race.ENT), 2)); + new StrengthModifier(self, self, + new Condition() { + @Override + public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { + return Filters.countActive(gameState, modifiersQuerying, Race.ENT) + + modifiersQuerying.getSpotBonus(gameState, Race.ENT) >= 3; + } + }, 2)); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_028.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_028.java index ab26636ac..ed35807c7 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_028.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_028.java @@ -43,7 +43,9 @@ public class Card6_028 extends AbstractCompanion { @Override public int getTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { - return -2 * Filters.countSpottable(gameState, modifiersQuerying, Filters.or(Race.ENT, Filters.and(Race.HOBBIT, Filters.unboundCompanion))); + return -2 * ( + Filters.countActive(gameState, modifiersQuerying, Filters.or(Race.ENT, Filters.and(Race.HOBBIT, Filters.unboundCompanion))) + + modifiersQuerying.getSpotBonus(gameState, Race.ENT)); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_032.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_032.java index af8bea06e..b5f808e23 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_032.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_032.java @@ -36,6 +36,7 @@ public class Card6_032 extends AbstractCompanion { @Override public int getTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { - return -2 * Filters.countSpottable(gameState, modifiersQuerying, Filters.or(Race.ENT, Filters.and(Race.HOBBIT, Filters.unboundCompanion))); + return -2 * (Filters.countSpottable(gameState, modifiersQuerying, Filters.or(Race.ENT, Filters.and(Race.HOBBIT, Filters.unboundCompanion))) + + modifiersQuerying.getSpotBonus(gameState, Race.ENT)); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_033.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_033.java index fc243fcf9..0bf8effca 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_033.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_033.java @@ -26,6 +26,7 @@ public class Card6_033 extends AbstractCompanion { @Override public int getTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { - return -Filters.countSpottable(gameState, modifiersQuerying, Filters.or(Race.ENT, Filters.and(Race.HOBBIT, Filters.unboundCompanion))); + return -Filters.countSpottable(gameState, modifiersQuerying, Filters.or(Race.ENT, Filters.and(Race.HOBBIT, Filters.unboundCompanion))) + - modifiersQuerying.getSpotBonus(gameState, Race.ENT); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_034.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_034.java index 645113fac..ceed5f0f1 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_034.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_034.java @@ -40,7 +40,8 @@ public class Card6_034 extends AbstractEvent { new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.ENT) { @Override protected void forEachCardExertedCallback(PhysicalCard character) { - int bonus = Math.min(4, Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.ENT)); + int bonus = Math.min(4, Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.ENT) + + game.getModifiersQuerying().getSpotBonus(game.getGameState(), Race.ENT)); action.appendEffect( new AddUntilEndOfPhaseModifierEffect( new StrengthModifier(self, character, bonus), Phase.SKIRMISH)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_035.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_035.java index 5bc573d0e..834c3ee4a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_035.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gandalf/Card6_035.java @@ -40,7 +40,8 @@ public class Card6_035 extends AbstractCompanion { @Override public int getTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { - return -Filters.countSpottable(gameState, modifiersQuerying, Filters.or(Race.ENT, Filters.and(Race.HOBBIT, Filters.unboundCompanion))); + return -Filters.countSpottable(gameState, modifiersQuerying, Filters.or(Race.ENT, Filters.and(Race.HOBBIT, Filters.unboundCompanion))) + - modifiersQuerying.getSpotBonus(gameState, Race.ENT); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/gandalf/Card9_024.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/gandalf/Card9_024.java index 0c7e45d89..9402c420a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/gandalf/Card9_024.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/gandalf/Card9_024.java @@ -36,7 +36,7 @@ public class Card9_024 extends AbstractAttachable { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, Filter additionalAttachmentFilter, int twilightModifier) { return super.checkPlayRequirements(playerId, game, self, additionalAttachmentFilter, twilightModifier) - && PlayConditions.canSpot(game, Race.ENT); + && (Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Race.ENT) + game.getModifiersQuerying().getSpotBonus(game.getGameState(), Race.ENT)) >= 1; } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/gandalf/Card9_025.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/gandalf/Card9_025.java index d4724806d..07c5e532c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/gandalf/Card9_025.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/gandalf/Card9_025.java @@ -5,16 +5,19 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; -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; +import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.effects.WoundCharactersEffect; import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; @@ -41,7 +44,13 @@ public class Card9_025 extends AbstractCompanion { @Override public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { return Collections.singletonList( - new StrengthModifier(self, self, null, new CountSpottableEvaluator(Race.ENT))); + new StrengthModifier(self, self, null, + new Evaluator() { + @Override + public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) { + return Filters.countActive(gameState, modifiersQuerying, Race.ENT) + modifiersQuerying.getSpotBonus(gameState, Race.ENT); + } + })); } @Override diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java index 659d5930f..19c7042e3 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java @@ -71,10 +71,7 @@ public class Filters { } public static int countSpottable(GameState gameState, ModifiersQuerying modifiersQuerying, Filterable... filters) { - Filter filter = Filters.and(filters); - GetCardsMatchingFilterVisitor visitor = new GetCardsMatchingFilterVisitor(gameState, modifiersQuerying, filter); - gameState.iterateActiveCards(visitor); - return modifiersQuerying.getSpotCount(gameState, filter, visitor.getCounter()); + return countActive(gameState, modifiersQuerying, filters); } public static Collection filterActive(GameState gameState, ModifiersQuerying modifiersQuerying, Filterable... filters) { diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java index 49c356e74..abebdd1b1 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java @@ -298,7 +298,7 @@ public abstract class AbstractModifier implements Modifier { } @Override - public int getSpotCountModifier(GameState gameState, ModifiersQuerying modifiersQuerying, Filter filter) { + public int getSpotCountModifier(GameState gameState, ModifiersQuerying modifiersQuerying, Filterable filter) { return 0; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java index 4d962bb95..7a2f4eeda 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java @@ -1,7 +1,6 @@ package com.gempukku.lotro.logic.modifiers; import com.gempukku.lotro.common.*; -import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.logic.actions.ActivateCardAction; @@ -119,7 +118,7 @@ public interface Modifier { public boolean canDiscardCardsFromTopOfDeck(GameState gameState, ModifiersQuerying modifiersQuerying, String playerId, PhysicalCard source); - public int getSpotCountModifier(GameState gameState, ModifiersQuerying modifiersQuerying, Filter filter); + public int getSpotCountModifier(GameState gameState, ModifiersQuerying modifiersQuerying, Filterable filter); public boolean hasFlagActive(GameState gameState, ModifiersQuerying modifiersQuerying, ModifierFlag modifierFlag); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java index 4b2506d4b..ba3fbf42b 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java @@ -1,7 +1,6 @@ package com.gempukku.lotro.logic.modifiers; import com.gempukku.lotro.common.*; -import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.logic.actions.ActivateCardAction; @@ -866,8 +865,8 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying { } @Override - public int getSpotCount(GameState gameState, Filter filter, int inPlayCount) { - int result = inPlayCount; + public int getSpotBonus(GameState gameState, Filterable filter) { + int result = 0; for (Modifier modifier : getModifiers(gameState, ModifierEffect.SPOT_MODIFIER)) result += modifier.getSpotCountModifier(gameState, this, filter); return Math.max(0, result); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java index b5b11c293..ba057d208 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java @@ -1,7 +1,6 @@ package com.gempukku.lotro.logic.modifiers; import com.gempukku.lotro.common.*; -import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.logic.actions.ActivateCardAction; @@ -119,7 +118,7 @@ public interface ModifiersQuerying { public Side hasInitiative(GameState gameState); - public int getSpotCount(GameState gameState, Filter filter, int inPlayCount); + public int getSpotBonus(GameState gameState, Filterable filter); public boolean hasFlagActive(GameState gameState, ModifierFlag modifierFlag);