Improving performance of trying to spot multiples. Now it doesn't count them, just counts UP to the number you need to spot.
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -37,7 +37,7 @@ public class Card1_125 extends AbstractPermanent {
|
||||
@Override
|
||||
public List<? extends Action> 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(
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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<? extends Action> 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));
|
||||
|
||||
@@ -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<? extends Action> 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(
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<PlayEventAction> 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));
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ public class Card1_262 extends AbstractMinion {
|
||||
@Override
|
||||
protected List<? extends Action> 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(
|
||||
|
||||
@@ -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<? extends Action> 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(
|
||||
|
||||
@@ -35,10 +35,8 @@ public class Card1_231 extends AbstractMinion {
|
||||
@Override
|
||||
protected List<? extends Action> 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));
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<OptionalTriggerAction> 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));
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -30,7 +30,7 @@ public class Card3_120 extends AbstractSite {
|
||||
@Override
|
||||
public List<? extends Action> 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(
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<OptionalTriggerAction> 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);
|
||||
|
||||
@@ -39,7 +39,7 @@ public class Card4_030 extends AbstractAttachable {
|
||||
@Override
|
||||
protected List<? extends Action> 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));
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -68,7 +68,7 @@ public class Card6_109 extends AbstractAttachable {
|
||||
@Override
|
||||
protected List<? extends Action> 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));
|
||||
|
||||
@@ -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<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
|
||||
public List<? extends Modifier> 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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)));
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user