From b6015ab65c44e6367083afcde880b40439312c32 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Sun, 4 Dec 2011 04:15:03 +0000 Subject: [PATCH] Improving performance of trying to spot multiples. Now it doesn't count them, just counts UP to the number you need to spot. --- .../gempukku/lotro/cards/PlayConditions.java | 6 +-- .../lotro/cards/effects/SpotEffect.java | 2 +- .../evaluator/CountActiveEvaluator.java | 2 +- .../lotro/cards/set1/isengard/Card1_123.java | 2 +- .../lotro/cards/set1/isengard/Card1_125.java | 2 +- .../lotro/cards/set1/isengard/Card1_139.java | 3 +- .../lotro/cards/set1/isengard/Card1_146.java | 3 +- .../lotro/cards/set1/isengard/Card1_156.java | 3 +- .../lotro/cards/set1/moria/Card1_169.java | 3 +- .../lotro/cards/set1/moria/Card1_194.java | 4 +- .../lotro/cards/set1/sauron/Card1_239.java | 5 ++- .../lotro/cards/set1/sauron/Card1_251.java | 3 +- .../lotro/cards/set1/sauron/Card1_253.java | 16 +------- .../lotro/cards/set1/sauron/Card1_260.java | 14 +------ .../lotro/cards/set1/sauron/Card1_262.java | 2 +- .../lotro/cards/set1/site/Card1_359.java | 8 +--- .../lotro/cards/set1/wraith/Card1_231.java | 6 +-- .../lotro/cards/set10/shire/Card10_111.java | 3 +- .../lotro/cards/set2/isengard/Card2_039.java | 3 +- .../lotro/cards/set2/shire/Card2_099.java | 4 +- .../lotro/cards/set2/shire/Card2_107.java | 4 +- .../lotro/cards/set3/elven/Card3_015.java | 4 +- .../lotro/cards/set3/elven/Card3_022.java | 3 +- .../lotro/cards/set3/isengard/Card3_060.java | 3 +- .../lotro/cards/set3/moria/Card3_078.java | 3 +- .../lotro/cards/set3/shire/Card3_113.java | 4 +- .../lotro/cards/set3/site/Card3_119.java | 4 +- .../lotro/cards/set3/site/Card3_120.java | 2 +- .../lotro/cards/set4/dunland/Card4_003.java | 6 +-- .../lotro/cards/set4/dunland/Card4_013.java | 4 +- .../lotro/cards/set4/dunland/Card4_030.java | 2 +- .../lotro/cards/set4/dunland/Card4_035.java | 3 +- .../lotro/cards/set4/dunland/Card4_039.java | 3 +- .../lotro/cards/set4/elven/Card4_060.java | 4 +- .../lotro/cards/set4/elven/Card4_061.java | 4 +- .../lotro/cards/set4/elven/Card4_072.java | 3 +- .../lotro/cards/set4/elven/Card4_075.java | 3 +- .../lotro/cards/set4/elven/Card4_077.java | 3 +- .../lotro/cards/set4/elven/Card4_083.java | 8 ++-- .../lotro/cards/set4/elven/Card4_084.java | 4 +- .../lotro/cards/set4/raider/Card4_241.java | 3 +- .../lotro/cards/set6/isengard/Card6_068.java | 3 +- .../lotro/cards/set6/shire/Card6_109.java | 2 +- .../lotro/cards/set7/gandalf/Card7_036.java | 5 ++- .../lotro/cards/set7/gondor/Card7_099.java | 3 +- .../lotro/cards/set9/dwarven/Card9_003.java | 2 +- .../com/gempukku/lotro/filters/Filters.java | 38 ++++++++++++++++--- .../lotro/logic/modifiers/SpotCondition.java | 2 +- 48 files changed, 114 insertions(+), 112 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java index 6fc62723e..531c67c5d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java @@ -153,7 +153,7 @@ public class PlayConditions { } public static boolean canSpot(LotroGame game, int count, Filterable... filters) { - return Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), filters) >= count; + return Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), count, filters); } public static boolean canSpotThreat(LotroGame game, int count) { @@ -282,11 +282,11 @@ public class PlayConditions { } public static boolean canCardAssignToSkirmish(PhysicalCard source, LotroGame game, Filterable filter) { - return Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Filters.canBeAssignedToSkirmishByEffect(source.getBlueprint().getSide()), filter) > 0; + return Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.canBeAssignedToSkirmishByEffect(source.getBlueprint().getSide()), filter); } public static boolean canRemoveAnyCultureTokens(LotroGame game, int count, Filterable... fromFilters) { - return Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), Filters.and(fromFilters, Filters.hasAnyCultureTokens(count))).size() > 0; + return Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.and(fromFilters, Filters.hasAnyCultureTokens(count))); } public static boolean canRemoveTokens(LotroGame game, PhysicalCard from, Token token) { diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/SpotEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/SpotEffect.java index d06d320e5..8adbaf5b4 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/SpotEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/SpotEffect.java @@ -17,7 +17,7 @@ public class SpotEffect extends AbstractEffect { @Override public boolean isPlayableInFull(LotroGame game) { - return Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), _filters) >= _count; + return Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), _count, _filters); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountActiveEvaluator.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountActiveEvaluator.java index b958bec34..8bbb56f3f 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountActiveEvaluator.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountActiveEvaluator.java @@ -28,7 +28,7 @@ public class CountActiveEvaluator implements Evaluator { @Override public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { - final int active = Math.max(0, Filters.countSpottable(gameState, modifiersQuerying, _filters) - _over); + final int active = Math.max(0, Filters.countActive(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/set1/isengard/Card1_123.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_123.java index b0e44d0ae..68eb12165 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_123.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_123.java @@ -36,7 +36,7 @@ public class Card1_123 extends AbstractOldEvent { public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) && PlayConditions.canExert(self, game, Culture.ISENGARD, CardType.MINION) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION) >= 5; + && PlayConditions.canSpot(game, 5, CardType.COMPANION); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_125.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_125.java index 6403eb4fe..c5dada16b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_125.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_125.java @@ -37,7 +37,7 @@ public class Card1_125 extends AbstractPermanent { @Override public List getExtraPhaseActions(final String playerId, LotroGame game, final PhysicalCard self) { if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.MANEUVER, self, 2) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION) >= 6) { + && PlayConditions.canSpot(game, 6, CardType.COMPANION)) { final ActivateCardAction action = new ActivateCardAction(self); action.appendCost(new RemoveTwilightEffect(2)); action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_139.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_139.java index c0ab5ce71..34761d739 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_139.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_139.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set1.isengard; import com.gempukku.lotro.cards.AbstractOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; @@ -38,7 +39,7 @@ public class Card1_139 extends AbstractOldEvent { new ChooseActiveCardEffect(self, playerId, "Choose an Uruk-hai", Race.URUK_HAI) { @Override protected void cardSelected(LotroGame game, PhysicalCard urukHai) { - if (Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION) >= 5) { + if (PlayConditions.canSpot(game, 5, CardType.COMPANION)) { action.appendEffect( new AddUntilStartOfPhaseModifierEffect( new StrengthModifier(self, Filters.sameCard(urukHai), 4), Phase.REGROUP)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_146.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_146.java index 94b7a9600..e57c55035 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_146.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_146.java @@ -4,7 +4,6 @@ import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; 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.actions.ActivateCardAction; @@ -34,7 +33,7 @@ public class Card1_146 extends AbstractMinion { @Override protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.MANEUVER, self, 0) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION) >= 5) { + && PlayConditions.canSpot(game, 5, CardType.COMPANION)) { ActivateCardAction action = new ActivateCardAction(self); action.appendEffect(new AddUntilStartOfPhaseModifierEffect(new KeywordModifier(self, self, Keyword.FIERCE), Phase.REGROUP)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_156.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_156.java index d42c9fa56..3d594e87c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_156.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_156.java @@ -4,7 +4,6 @@ import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; 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.actions.ActivateCardAction; @@ -34,7 +33,7 @@ public class Card1_156 extends AbstractMinion { @Override protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 0) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION) >= 6) { + && PlayConditions.canSpot(game, 6, CardType.COMPANION)) { ActivateCardAction action = new ActivateCardAction(self); action.appendEffect( new AddUntilStartOfPhaseModifierEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_169.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_169.java index 756cc26ad..5882211c1 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_169.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_169.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set1.moria; import com.gempukku.lotro.cards.AbstractOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.choose.ChooseAndAssignMinionToCompanionEffect; import com.gempukku.lotro.common.CardType; @@ -27,7 +28,7 @@ public class Card1_169 extends AbstractOldEvent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Culture.MORIA, CardType.MINION) >= 5; + && PlayConditions.canSpot(game, 5, Culture.MORIA, CardType.MINION); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_194.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_194.java index e65e6c53f..070de5a3e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_194.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_194.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set1.moria; import com.gempukku.lotro.cards.AbstractResponseOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.CancelEventEffect; @@ -8,7 +9,6 @@ import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Side; -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.EffectResult; @@ -39,7 +39,7 @@ public class Card1_194 extends AbstractResponseOldEvent { @Override public List getOptionalAfterActions(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { if (TriggerConditions.played(game, effectResult, CardType.EVENT, Keyword.STEALTH) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Culture.MORIA, CardType.MINION) >= 3 + && PlayConditions.canSpot(game, 3, Culture.MORIA, CardType.MINION) && checkPlayRequirements(playerId, game, self, 0, false, false)) { PlayEventAction action = new PlayEventAction(self); action.appendEffect(new CancelEventEffect(self, (PlayEventResult) effectResult)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_239.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_239.java index b47efa3bd..adf55fc38 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_239.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_239.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set1.sauron; import com.gempukku.lotro.cards.AbstractOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; import com.gempukku.lotro.common.*; @@ -26,8 +27,8 @@ public class Card1_239 extends AbstractOldEvent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Culture.SAURON, Race.ORC) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION) >= 5; + && PlayConditions.canSpot(game, Culture.SAURON, Race.ORC) + && PlayConditions.canSpot(game, 5, CardType.COMPANION); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_251.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_251.java index 0d8b29778..411995655 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_251.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_251.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set1.sauron; import com.gempukku.lotro.cards.AbstractOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; @@ -27,7 +28,7 @@ public class Card1_251 extends AbstractOldEvent { public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Culture.SAURON, Race.ORC) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION) >= 6; + && PlayConditions.canSpot(game, 6, CardType.COMPANION); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_253.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_253.java index 0b6908826..d8fcaa3e4 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_253.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_253.java @@ -5,13 +5,10 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayPermanentAction; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; import com.gempukku.lotro.common.*; -import com.gempukku.lotro.filters.Filter; -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.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.SpotCondition; import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; /** @@ -45,15 +42,6 @@ public class Card1_253 extends AbstractPermanent { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { - return new TwilightCostModifier(self, - Filters.and( - CardType.COMPANION, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return Filters.countSpottable(gameState, modifiersQuerying, CardType.COMPANION) >= 5; - } - } - ), 2); + return new TwilightCostModifier(self, CardType.COMPANION, new SpotCondition(5, CardType.COMPANION), 2); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_260.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_260.java index 3307e123b..5d1bbf3ed 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_260.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_260.java @@ -3,12 +3,9 @@ package com.gempukku.lotro.cards.set1.sauron; import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.modifiers.MoveLimitModifier; 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.logic.modifiers.Condition; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.SpotCondition; /** * Set: The Fellowship of the Ring @@ -27,13 +24,6 @@ public class Card1_260 extends AbstractPermanent { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { - return new MoveLimitModifier(self, - new Condition() { - @Override - public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { - return Filters.countSpottable(gameState, modifiersQuerying, CardType.COMPANION) >= 7; - } - }, - -1); + return new MoveLimitModifier(self, new SpotCondition(7, CardType.COMPANION), -1); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_262.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_262.java index 7c3be3912..1a9066718 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_262.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_262.java @@ -41,7 +41,7 @@ public class Card1_262 extends AbstractMinion { @Override protected List getExtraPhaseActions(final String playerId, LotroGame game, final PhysicalCard self) { if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.ASSIGNMENT, self, 0) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.HOBBIT, CardType.COMPANION) >= 2 + && PlayConditions.canSpot(game, 2, Race.HOBBIT, CardType.COMPANION) && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), self, Filters.notAssignedToSkirmish, Filters.canBeAssignedToSkirmish(Side.SHADOW))) { final ActivateCardAction action = new ActivateCardAction(self); action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_359.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_359.java index 087083c49..f8f513bd0 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_359.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_359.java @@ -4,11 +4,7 @@ import com.gempukku.lotro.cards.AbstractSite; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddUntilEndOfTurnModifierEffect; import com.gempukku.lotro.cards.modifiers.MoveLimitModifier; -import com.gempukku.lotro.common.Block; -import com.gempukku.lotro.common.Keyword; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Race; -import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; @@ -33,7 +29,7 @@ public class Card1_359 extends AbstractSite { @Override public List getPhaseActions(String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseSiteDuringPhase(game, Phase.SHADOW, self) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.ORC) >= 5) { + && PlayConditions.canSpot(game, 5, CardType.MINION, Race.ORC)) { ActivateCardAction action = new ActivateCardAction(self); action.appendEffect( new AddUntilEndOfTurnModifierEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_231.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_231.java index 08cfe5778..67c4ba4b8 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_231.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_231.java @@ -35,10 +35,8 @@ public class Card1_231 extends AbstractMinion { @Override protected List getExtraPhaseActions(final String playerId, LotroGame game, final PhysicalCard self) { if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.MANEUVER, self, 0) - && PlayConditions.canExert(self, game, self) - && ( - Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION) >= 6 - || game.getGameState().getBurdens() >= 5)) { + && PlayConditions.canSelfExert(self, game) + && (PlayConditions.canSpotBurdens(game, 5) || PlayConditions.canSpot(game, 6, CardType.COMPANION))) { final ActivateCardAction action = new ActivateCardAction(self); action.appendCost( new SelfExertEffect(self)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/shire/Card10_111.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/shire/Card10_111.java index 508d74b03..291f9a269 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/shire/Card10_111.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/shire/Card10_111.java @@ -6,7 +6,6 @@ import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect; import com.gempukku.lotro.cards.effects.choose.ChooseOpponentEffect; import com.gempukku.lotro.common.*; -import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; @@ -33,7 +32,7 @@ public class Card10_111 extends AbstractEvent { @Override public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { final PlayEventAction action = new PlayEventAction(self); - final int discardCount = (Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.HOBBIT, CardType.COMPANION) >= 4) ? 2 : 1; + final int discardCount = (PlayConditions.canSpot(game, 4, Race.HOBBIT, CardType.COMPANION)) ? 2 : 1; action.appendEffect( new ChooseOpponentEffect(playerId) { @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/isengard/Card2_039.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/isengard/Card2_039.java index 23983b4d6..aa9af2fbf 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/isengard/Card2_039.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/isengard/Card2_039.java @@ -41,8 +41,7 @@ public class Card2_039 extends AbstractOldEvent { PlayEventAction action = new PlayEventAction(self); action.appendCost( new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.URUK_HAI)); - int companions = Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION); - if (companions >= 6) + if (PlayConditions.canSpot(game, 6, CardType.COMPANION)) action.appendEffect( new DiscardCardsFromPlayEffect(self, Filters.and( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_099.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_099.java index 978a91dc0..a4ee648a9 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_099.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_099.java @@ -1,10 +1,10 @@ package com.gempukku.lotro.cards.set2.shire; import com.gempukku.lotro.cards.AbstractOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.AddUntilEndOfTurnModifierEffect; 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.TwilightCostModifier; @@ -26,7 +26,7 @@ public class Card2_099 extends AbstractOldEvent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.HOBBIT) >= 2; + && PlayConditions.canSpot(game, 2, Race.HOBBIT); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_107.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_107.java index 8e46c9ce9..31c01b2c2 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_107.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_107.java @@ -1,10 +1,10 @@ package com.gempukku.lotro.cards.set2.shire; import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.effects.SelfDiscardEffect; 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.actions.RequiredTriggerAction; @@ -32,7 +32,7 @@ public class Card2_107 extends AbstractPermanent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.HOBBIT) >= 2; + && PlayConditions.canSpot(game, 2, Race.HOBBIT); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_015.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_015.java index ffb934b0c..22ff034c6 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_015.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_015.java @@ -1,11 +1,11 @@ package com.gempukku.lotro.cards.set3.elven; import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Side; import com.gempukku.lotro.common.Zone; -import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.OptionalTriggerAction; @@ -32,7 +32,7 @@ public class Card3_015 extends AbstractPermanent { @Override public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { if (effectResult.getType() == EffectResult.Type.WHEN_FELLOWSHIP_MOVES - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Culture.ELVEN, CardType.ALLY) >= 3) { + && PlayConditions.canSpot(game, 3, Culture.ELVEN, CardType.ALLY)) { OptionalTriggerAction action = new OptionalTriggerAction(self); action.appendEffect( new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_022.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_022.java index 311fef8f6..3977194c7 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_022.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_022.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set3.elven; import com.gempukku.lotro.cards.AbstractOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; @@ -28,7 +29,7 @@ public class Card3_022 extends AbstractOldEvent { public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) && (Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.name("Elrond")) - || Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Culture.ELVEN, CardType.ALLY) >= 2); + || PlayConditions.canSpot(game, 2, Culture.ELVEN, CardType.ALLY)); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_060.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_060.java index 97387a412..a99521f1e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_060.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_060.java @@ -39,8 +39,7 @@ public class Card3_060 extends AbstractMinion { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( new SelfExertEffect(self)); - int characterSpot = Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION); - if (characterSpot >= 5) { + if (PlayConditions.canSpot(game, 5, CardType.COMPANION)) { action.appendEffect( new DiscardCardsFromPlayEffect(self, Filters.and(Side.FREE_PEOPLE, CardType.POSSESSION))); } else { diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/moria/Card3_078.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/moria/Card3_078.java index 2b0664048..fca0e822d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/moria/Card3_078.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/moria/Card3_078.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set3.moria; import com.gempukku.lotro.cards.AbstractOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; import com.gempukku.lotro.common.*; @@ -27,7 +28,7 @@ public class Card3_078 extends AbstractOldEvent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Culture.SHIRE, CardType.COMPANION) >= 2; + && PlayConditions.canSpot(game, 2, Culture.SHIRE, CardType.COMPANION); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/shire/Card3_113.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/shire/Card3_113.java index 97865cd3e..07c6f1058 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/shire/Card3_113.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/shire/Card3_113.java @@ -1,8 +1,8 @@ package com.gempukku.lotro.cards.set3.shire; import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; 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.actions.OptionalTriggerAction; @@ -30,7 +30,7 @@ public class Card3_113 extends AbstractPermanent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Culture.SHIRE, CardType.COMPANION) >= 2; + && PlayConditions.canSpot(game, 2, Culture.SHIRE, CardType.COMPANION); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/site/Card3_119.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/site/Card3_119.java index 0c9a02ec1..29b4d95fa 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/site/Card3_119.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/site/Card3_119.java @@ -1,10 +1,10 @@ package com.gempukku.lotro.cards.set3.site; import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.RemoveBurdenEffect; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.Race; -import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.OptionalTriggerAction; @@ -32,7 +32,7 @@ public class Card3_119 extends AbstractSite { if (effectResult.getType() == EffectResult.Type.WHEN_MOVE_TO && playerId.equals(game.getGameState().getCurrentPlayerId()) && game.getGameState().getCurrentSite() == self - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.ELF) >= 2) { + && PlayConditions.canSpot(game, 2, Race.ELF)) { OptionalTriggerAction action = new OptionalTriggerAction(self); action.appendEffect( new RemoveBurdenEffect(playerId, self)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/site/Card3_120.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/site/Card3_120.java index e0497652c..77ffe9b97 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/site/Card3_120.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/site/Card3_120.java @@ -30,7 +30,7 @@ public class Card3_120 extends AbstractSite { @Override public List getPhaseActions(String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseSiteDuringPhase(game, Phase.MANEUVER, self) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION) >= 4 + && PlayConditions.canSpot(game, 4, CardType.COMPANION) && PlayConditions.canExert(self, game, Filters.owner(playerId), Culture.ISENGARD, Race.ORC)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_003.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_003.java index 795dd8e0a..bef47bbc3 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_003.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_003.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set4.dunland; import com.gempukku.lotro.cards.AbstractOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; import com.gempukku.lotro.common.*; @@ -26,9 +27,8 @@ public class Card4_003 extends AbstractOldEvent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && ( - Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Culture.DUNLAND, CardType.MINION) >= 3 - || Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.siteControlled(playerId))); + && (Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.siteControlled(playerId)) + || PlayConditions.canSpot(game, 3, Culture.DUNLAND, CardType.MINION)); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_013.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_013.java index 7363da961..66e7e9014 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_013.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_013.java @@ -1,13 +1,13 @@ package com.gempukku.lotro.cards.set4.dunland; import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Race; import com.gempukku.lotro.common.Side; -import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.OptionalTriggerAction; @@ -37,7 +37,7 @@ public class Card4_013 extends AbstractMinion { public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { if (TriggerConditions.winsSkirmish(game, effectResult, self)) { OptionalTriggerAction action = new OptionalTriggerAction(self); - int max = (Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION) >= 6) ? 2 : 1; + int max = (PlayConditions.canSpot(game, 6, CardType.COMPANION)) ? 2 : 1; action.appendEffect( new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, max, Side.FREE_PEOPLE, CardType.POSSESSION)); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_030.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_030.java index 7f74b8ed4..1b76623cc 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_030.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_030.java @@ -39,7 +39,7 @@ public class Card4_030 extends AbstractAttachable { @Override protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Culture.DUNLAND, Race.MAN) >= 2) { + && PlayConditions.canSpot(game, 2, Culture.DUNLAND, Race.MAN)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( new SelfDiscardEffect(self)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_035.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_035.java index aa812566c..d9ebd4268 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_035.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_035.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set4.dunland; import com.gempukku.lotro.cards.AbstractOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; import com.gempukku.lotro.common.*; @@ -24,7 +25,7 @@ public class Card4_035 extends AbstractOldEvent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { - return Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Filters.siteControlled(playerId)) >= 2; + return PlayConditions.canSpot(game, 2, Filters.siteControlled(playerId)); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_039.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_039.java index 0825e50af..dcc59db4c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_039.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_039.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set4.dunland; import com.gempukku.lotro.cards.AbstractOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect; import com.gempukku.lotro.common.*; @@ -24,7 +25,7 @@ public class Card4_039 extends AbstractOldEvent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Culture.DUNLAND, Race.MAN) >= 3; + && PlayConditions.canSpot(game, 3, Culture.DUNLAND, Race.MAN); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_060.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_060.java index afeee3d3f..55e0f6c20 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_060.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_060.java @@ -1,9 +1,9 @@ package com.gempukku.lotro.cards.set4.elven; import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.SelfDiscardEffect; 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; @@ -34,7 +34,7 @@ public class Card4_060 extends AbstractPermanent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.ELF) >= 3; + && PlayConditions.canSpot(game, 3, Race.ELF); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_061.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_061.java index 74bbc1e2c..31b725d4b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_061.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_061.java @@ -1,10 +1,10 @@ package com.gempukku.lotro.cards.set4.elven; import com.gempukku.lotro.cards.AbstractOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect; import com.gempukku.lotro.common.*; -import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; @@ -24,7 +24,7 @@ public class Card4_061 extends AbstractOldEvent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.ELF, CardType.COMPANION) >= 2; + && PlayConditions.canSpot(game, 2, Race.ELF, CardType.COMPANION); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_072.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_072.java index 8361c8b2a..6ceb68ee8 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_072.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_072.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set4.elven; import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.SelfDiscardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; @@ -31,7 +32,7 @@ public class Card4_072 extends AbstractPermanent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.ELF) >= 3; + && PlayConditions.canSpot(game, 3, Race.ELF); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_075.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_075.java index ecfb78328..48bd0bbe4 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_075.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_075.java @@ -5,7 +5,6 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.SelfDiscardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filter; -import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; @@ -33,7 +32,7 @@ public class Card4_075 extends AbstractAttachableFPPossession { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, Filter additionalAttachmentFilter, int twilightModifier) { return super.checkPlayRequirements(playerId, game, self, additionalAttachmentFilter, twilightModifier) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.ELF) >= 3; + && PlayConditions.canSpot(game, 3, Race.ELF); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_077.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_077.java index ea39ab3af..06a3a7a73 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_077.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_077.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set4.elven; import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.SelfDiscardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; @@ -31,7 +32,7 @@ public class Card4_077 extends AbstractPermanent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.ELF) >= 3; + && PlayConditions.canSpot(game, 3, Race.ELF); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_083.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_083.java index 527701cea..c52565bed 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_083.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_083.java @@ -1,12 +1,10 @@ package com.gempukku.lotro.cards.set4.elven; import com.gempukku.lotro.cards.AbstractOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Race; -import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; @@ -33,7 +31,7 @@ public class Card4_083 extends AbstractOldEvent { new ChooseActiveCardEffect(self, playerId, "Choose an Elf", Race.ELF) { @Override protected void cardSelected(LotroGame game, PhysicalCard card) { - int bonus = (Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.ELF) >= 3) ? 3 : 2; + int bonus = (PlayConditions.canSpot(game, 3, CardType.COMPANION, Race.ELF)) ? 3 : 2; action.insertEffect( new AddUntilEndOfPhaseModifierEffect( new StrengthModifier(self, Filters.sameCard(card), bonus), Phase.SKIRMISH)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_084.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_084.java index 650585390..9c69fd8d5 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_084.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_084.java @@ -1,12 +1,12 @@ package com.gempukku.lotro.cards.set4.elven; import com.gempukku.lotro.cards.AbstractOldEvent; +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.LiberateASiteEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; 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; @@ -30,7 +30,7 @@ public class Card4_084 extends AbstractOldEvent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.ELF) >= 3; + && PlayConditions.canSpot(game, 3, CardType.COMPANION, Race.ELF); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_241.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_241.java index 08ee71a1a..d29c21878 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_241.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_241.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set4.raider; import com.gempukku.lotro.cards.AbstractOldEvent; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; import com.gempukku.lotro.common.*; @@ -30,7 +31,7 @@ public class Card4_241 extends AbstractOldEvent { new ChooseActiveCardEffect(self, playerId, "Choose RAIDER Man", Culture.RAIDER, Race.MAN) { @Override protected void cardSelected(LotroGame game, PhysicalCard card) { - int bonus = (Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION) >= 6) ? 5 : 3; + int bonus = (PlayConditions.canSpot(game, 6, CardType.COMPANION)) ? 5 : 3; action.insertEffect( new AddUntilEndOfPhaseModifierEffect( new StrengthModifier(self, Filters.sameCard(card), bonus), Phase.SKIRMISH)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/isengard/Card6_068.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/isengard/Card6_068.java index f1eb9d190..4429e25f2 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/isengard/Card6_068.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/isengard/Card6_068.java @@ -8,7 +8,6 @@ import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; 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.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; @@ -44,7 +43,7 @@ public class Card6_068 extends AbstractMinion { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Culture.ISENGARD, Race.ORC)); - int count = (Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION) >= 6) ? 2 : 1; + int count = (PlayConditions.canSpot(game, 6, CardType.COMPANION)) ? 2 : 1; action.appendEffect( new ChooseAndWoundCharactersEffect(action, playerId, count, count, CardType.COMPANION)); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/shire/Card6_109.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/shire/Card6_109.java index a7dd42e0d..d7c55d595 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/shire/Card6_109.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/shire/Card6_109.java @@ -68,7 +68,7 @@ public class Card6_109 extends AbstractAttachable { @Override protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self) - && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), CardType.MINION) == 0) { + && !PlayConditions.canSpot(game, CardType.MINION)) { ActivateCardAction action = new ActivateCardAction(self); action.appendEffect( new SelfDiscardEffect(self)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gandalf/Card7_036.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gandalf/Card7_036.java index 511575a79..d58e763a3 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gandalf/Card7_036.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gandalf/Card7_036.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set7.gandalf; import com.gempukku.lotro.cards.AbstractCompanion; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Race; @@ -37,7 +38,7 @@ public class Card7_036 extends AbstractCompanion { } @Override - public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + public List getAlwaysOnModifiers(final LotroGame game, PhysicalCard self) { return Collections.singletonList( new StrengthModifier(self, self, new Condition() { @@ -48,7 +49,7 @@ public class Card7_036 extends AbstractCompanion { companionCultures.add(companion.getBlueprint().getCulture()); for (Culture companionCulture : companionCultures) { - if (Filters.countSpottable(gameState, modifiersQuerying, CardType.COMPANION, companionCulture) >= 3) + if (PlayConditions.canSpot(game, 3, CardType.COMPANION, companionCulture)) return false; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gondor/Card7_099.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gondor/Card7_099.java index 34dd65179..1ed5e1a5c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gondor/Card7_099.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gondor/Card7_099.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set7.gondor; 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.choose.ChooseAndExertCharactersEffect; import com.gempukku.lotro.common.*; @@ -33,7 +34,7 @@ public class Card7_099 extends AbstractEvent { protected void cardSelected(LotroGame game, PhysicalCard card) { game.getModifiersEnvironment().addUntilEndOfPhaseModifier( new StrengthModifier(self, card, 2), Phase.SKIRMISH); - if (Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Culture.GONDOR, Keyword.FORTIFICATION) >= 2) { + if (PlayConditions.canSpot(game, 2, Culture.GONDOR, Keyword.FORTIFICATION)) { action.appendEffect( new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.inSkirmishAgainst(card))); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/dwarven/Card9_003.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/dwarven/Card9_003.java index d61d3fbec..658935139 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/dwarven/Card9_003.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/dwarven/Card9_003.java @@ -37,7 +37,7 @@ public class Card9_003 extends AbstractCompanion { @Override public int getTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { - if (Filters.countSpottable(gameState, modifiersQuerying, Race.DWARF) >= 2) + if (Filters.canSpot(gameState, modifiersQuerying, 2, Race.DWARF)) return -2; return 0; } 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 d05894860..cd1c41927 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 @@ -60,8 +60,13 @@ public class Filters { public static boolean canSpot(GameState gameState, ModifiersQuerying modifiersQuerying, Filterable... filters) { Filter filter = Filters.and(filters); SpotFilterCardInPlayVisitor visitor = new SpotFilterCardInPlayVisitor(gameState, modifiersQuerying, filter); - gameState.iterateActiveCards(visitor); - return visitor.isSpotted(); + return gameState.iterateActiveCards(visitor); + } + + public static boolean canSpot(GameState gameState, ModifiersQuerying modifiersQuerying, int count, Filterable... filters) { + Filter filter = Filters.and(filters); + SpotCountFilterCardInPlayVisitor visitor = new SpotCountFilterCardInPlayVisitor(gameState, modifiersQuerying, count, filter); + return gameState.iterateActiveCards(visitor); } public static int countSpottable(GameState gameState, ModifiersQuerying modifiersQuerying, Filterable... filters) { @@ -771,15 +776,36 @@ public class Filters { return false; } - public boolean isSpotted() { - return _card != null; - } - public PhysicalCard getCard() { return _card; } } + private static class SpotCountFilterCardInPlayVisitor implements PhysicalCardVisitor { + private GameState _gameState; + private ModifiersQuerying _modifiersQuerying; + private Filter _filter; + private int _spottedCount; + private int _searchingToSpot; + + private SpotCountFilterCardInPlayVisitor(GameState gameState, ModifiersQuerying modifiersQuerying, int count, Filter filter) { + _gameState = gameState; + _modifiersQuerying = modifiersQuerying; + _searchingToSpot = count; + _filter = filter; + } + + @Override + public boolean visitPhysicalCard(PhysicalCard physicalCard) { + if (_filter.accepts(_gameState, _modifiersQuerying, physicalCard)) { + _spottedCount++; + if (_spottedCount >= _searchingToSpot) + return true; + } + return false; + } + } + private static class GetCardsMatchingFilterVisitor extends CompletePhysicalCardVisitor { private GameState _gameState; private ModifiersQuerying _modifiersQuerying; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/SpotCondition.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/SpotCondition.java index 8b85c5c5c..cca926d15 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/SpotCondition.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/SpotCondition.java @@ -19,7 +19,7 @@ public class SpotCondition implements Condition { @Override public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { - return Filters.countSpottable(gameState, modifiersQuerying, _filter) >= _count; + return Filters.canSpot(gameState, modifiersQuerying, _count, _filter); } }