Simplifying PossessionClass filtering.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package com.gempukku.lotro.cards.decisions;
|
||||
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
@@ -10,11 +10,11 @@ import java.util.Map;
|
||||
|
||||
public abstract class ForEachYouSpotDecision extends IntegerAwaitingDecision {
|
||||
private LotroGame _lotroGame;
|
||||
private Filter _filter;
|
||||
private Filterable _filter;
|
||||
private int _defaultValue;
|
||||
private int _max;
|
||||
|
||||
protected ForEachYouSpotDecision(int id, String text, LotroGame lotroGame, Filter filter, int defaultValue) {
|
||||
protected ForEachYouSpotDecision(int id, String text, LotroGame lotroGame, Filterable filter, int defaultValue) {
|
||||
super(id, text, 0);
|
||||
_lotroGame = lotroGame;
|
||||
_filter = filter;
|
||||
|
||||
@@ -28,7 +28,7 @@ public class Card1_003 extends AbstractOldEvent {
|
||||
action.appendEffect(
|
||||
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId,
|
||||
new CardMatchesEvaluator(2, 3,
|
||||
Filters.hasAttached(Culture.DWARVEN, Filters.possessionClass(PossessionClass.HAND_WEAPON))),
|
||||
Filters.hasAttached(Culture.DWARVEN, PossessionClass.HAND_WEAPON)),
|
||||
Filters.race(Race.DWARF)));
|
||||
|
||||
return action;
|
||||
|
||||
@@ -45,7 +45,7 @@ public class Card1_074 extends AbstractAttachableFPPossession {
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.keyword(Keyword.PIPEWEED), CardType.POSSESSION));
|
||||
action.appendEffect(
|
||||
new PlayoutDecisionEffect(game.getUserFeedback(), playerId,
|
||||
new ForEachYouSpotDecision(1, "Choose number of pipes you wish to spot", game, Filters.possessionClass(PossessionClass.PIPE), Integer.MAX_VALUE) {
|
||||
new ForEachYouSpotDecision(1, "Choose number of pipes you wish to spot", game, PossessionClass.PIPE, Integer.MAX_VALUE) {
|
||||
@Override
|
||||
public void decisionMade(String result) throws DecisionResultInvalidException {
|
||||
int spotCount = getValidatedResult(result);
|
||||
|
||||
@@ -47,7 +47,7 @@ public class Card1_091 extends AbstractAttachableFPPossession {
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.keyword(Keyword.PIPEWEED), CardType.POSSESSION));
|
||||
action.appendEffect(
|
||||
new PlayoutDecisionEffect(game.getUserFeedback(), playerId,
|
||||
new ForEachYouSpotDecision(1, "Choose number of pipes you wish to spot", game, Filters.possessionClass(PossessionClass.PIPE), Integer.MAX_VALUE) {
|
||||
new ForEachYouSpotDecision(1, "Choose number of pipes you wish to spot", game, PossessionClass.PIPE, Integer.MAX_VALUE) {
|
||||
@Override
|
||||
public void decisionMade(String result) throws DecisionResultInvalidException {
|
||||
int spotCount = getValidatedResult(result);
|
||||
|
||||
@@ -28,7 +28,7 @@ public class Card1_102 extends AbstractOldEvent {
|
||||
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose GONDOR of SHIRE companion bearing a hand weapon", Filters.or(Culture.GONDOR, Culture.SHIRE), CardType.COMPANION, Filters.hasAttached(Filters.possessionClass(PossessionClass.HAND_WEAPON))) {
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose GONDOR of SHIRE companion bearing a hand weapon", Filters.or(Culture.GONDOR, Culture.SHIRE), CardType.COMPANION, Filters.hasAttached(PossessionClass.HAND_WEAPON)) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard companion) {
|
||||
action.appendEffect(
|
||||
|
||||
@@ -49,7 +49,7 @@ public class Card1_285 extends AbstractAttachableFPPossession {
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.keyword(Keyword.PIPEWEED), CardType.POSSESSION));
|
||||
action.appendEffect(
|
||||
new PlayoutDecisionEffect(game.getUserFeedback(), playerId,
|
||||
new ForEachYouSpotDecision(1, "Choose number of pipes you wish to spot", game, Filters.possessionClass(PossessionClass.PIPE), Integer.MAX_VALUE) {
|
||||
new ForEachYouSpotDecision(1, "Choose number of pipes you wish to spot", game, PossessionClass.PIPE, Integer.MAX_VALUE) {
|
||||
@Override
|
||||
public void decisionMade(String result) throws DecisionResultInvalidException {
|
||||
int spotCount = getValidatedResult(result);
|
||||
|
||||
@@ -45,7 +45,7 @@ public class Card1_292 extends AbstractAttachableFPPossession {
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.keyword(Keyword.PIPEWEED), CardType.POSSESSION));
|
||||
action.appendEffect(
|
||||
new PlayoutDecisionEffect(game.getUserFeedback(), playerId,
|
||||
new ForEachYouSpotDecision(1, "Choose number of pipes you wish to spot", game, Filters.possessionClass(PossessionClass.PIPE), Integer.MAX_VALUE) {
|
||||
new ForEachYouSpotDecision(1, "Choose number of pipes you wish to spot", game, PossessionClass.PIPE, Integer.MAX_VALUE) {
|
||||
@Override
|
||||
public void decisionMade(String result) throws DecisionResultInvalidException {
|
||||
int spotCount = getValidatedResult(result);
|
||||
|
||||
@@ -39,8 +39,8 @@ public class Card1_345 extends AbstractSite {
|
||||
Filters.and(
|
||||
Filters.side(Side.SHADOW),
|
||||
Filters.or(
|
||||
Filters.possessionClass(PossessionClass.HAND_WEAPON),
|
||||
Filters.possessionClass(PossessionClass.RANGED_WEAPON))
|
||||
PossessionClass.HAND_WEAPON,
|
||||
PossessionClass.RANGED_WEAPON)
|
||||
)));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public class Card1_347 extends AbstractSite {
|
||||
CardType.COMPANION,
|
||||
CardType.MINION),
|
||||
Filters.hasAttached(
|
||||
Filters.possessionClass(PossessionClass.HAND_WEAPON))
|
||||
PossessionClass.HAND_WEAPON)
|
||||
), Keyword.DAMAGE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public class Card2_005 extends AbstractOldEvent {
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose a Dwarf", Filters.race(Race.DWARF)) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard dwarf) {
|
||||
boolean has2Weapons = Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.attachedTo(Filters.sameCard(dwarf)), Filters.possessionClass(PossessionClass.HAND_WEAPON)) == 2;
|
||||
boolean has2Weapons = Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.attachedTo(Filters.sameCard(dwarf)), PossessionClass.HAND_WEAPON) == 2;
|
||||
|
||||
if (has2Weapons) {
|
||||
action.appendEffect(
|
||||
|
||||
@@ -37,10 +37,10 @@ public class Card2_025 extends AbstractAlly {
|
||||
public Modifier getAlwaysOnModifier(PhysicalCard self) {
|
||||
return new TwilightCostModifier(self,
|
||||
Filters.or(
|
||||
Filters.possessionClass(PossessionClass.SHIELD),
|
||||
Filters.possessionClass(PossessionClass.ARMOR),
|
||||
Filters.possessionClass(PossessionClass.HELM),
|
||||
Filters.possessionClass(PossessionClass.HAND_WEAPON)
|
||||
PossessionClass.SHIELD,
|
||||
PossessionClass.ARMOR,
|
||||
PossessionClass.HELM,
|
||||
PossessionClass.HAND_WEAPON
|
||||
), 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ public class Card2_027 extends AbstractOldEvent {
|
||||
List<PhysicalCard> attachedToGandalf = game.getGameState().getAttachedCards(gandalf);
|
||||
if (gandalf != null
|
||||
&& PlayConditions.canExert(self, game.getGameState(), game.getModifiersQuerying(), 2, Filters.sameCard(gandalf))
|
||||
&& Filters.filter(attachedToGandalf, game.getGameState(), game.getModifiersQuerying(), Filters.possessionClass(PossessionClass.STAFF)).size() > 0)
|
||||
&& Filters.filter(attachedToGandalf, game.getGameState(), game.getModifiersQuerying(), PossessionClass.STAFF).size() > 0)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@@ -45,7 +45,7 @@ public class Card2_027 extends AbstractOldEvent {
|
||||
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.possessionClass(PossessionClass.STAFF), Filters.attachedTo(Filters.gandalf)));
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, PossessionClass.STAFF, Filters.attachedTo(Filters.gandalf)));
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.gandalf));
|
||||
action.appendCost(
|
||||
|
||||
@@ -28,7 +28,7 @@ public class Card2_030 extends AbstractOldEvent {
|
||||
@Override
|
||||
public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
|
||||
return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty)
|
||||
&& Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.gandalf, Filters.hasAttached(Filters.possessionClass(PossessionClass.STAFF)));
|
||||
&& Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.gandalf, Filters.hasAttached(PossessionClass.STAFF));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -49,9 +49,9 @@ public class Card2_039 extends AbstractOldEvent {
|
||||
Filters.side(Side.FREE_PEOPLE),
|
||||
CardType.POSSESSION,
|
||||
Filters.or(
|
||||
Filters.possessionClass(PossessionClass.ARMOR),
|
||||
Filters.possessionClass(PossessionClass.HELM),
|
||||
Filters.possessionClass(PossessionClass.SHIELD)
|
||||
PossessionClass.ARMOR,
|
||||
PossessionClass.HELM,
|
||||
PossessionClass.SHIELD
|
||||
))));
|
||||
else
|
||||
action.appendEffect(
|
||||
@@ -59,9 +59,9 @@ public class Card2_039 extends AbstractOldEvent {
|
||||
action, playerId, 1, 1,
|
||||
CardType.POSSESSION,
|
||||
Filters.or(
|
||||
Filters.possessionClass(PossessionClass.ARMOR),
|
||||
Filters.possessionClass(PossessionClass.HELM),
|
||||
Filters.possessionClass(PossessionClass.SHIELD)
|
||||
PossessionClass.ARMOR,
|
||||
PossessionClass.HELM,
|
||||
PossessionClass.SHIELD
|
||||
)));
|
||||
return action;
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ public class Card2_056 extends AbstractPermanent {
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.balrog));
|
||||
action.appendEffect(
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.possessionClass(PossessionClass.RANGED_WEAPON)));
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, PossessionClass.RANGED_WEAPON));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -53,9 +53,9 @@ public class Card2_074 extends AbstractAttachable {
|
||||
action.appendEffect(
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1,
|
||||
Filters.or(
|
||||
Filters.possessionClass(PossessionClass.HELM),
|
||||
Filters.possessionClass(PossessionClass.SHIELD),
|
||||
Filters.possessionClass(PossessionClass.ARMOR)),
|
||||
PossessionClass.HELM,
|
||||
PossessionClass.SHIELD,
|
||||
PossessionClass.ARMOR),
|
||||
Filters.attachedTo(
|
||||
Filters.inSkirmishAgainst(Filters.hasAttached(self)))));
|
||||
return Collections.singletonList(action);
|
||||
|
||||
@@ -46,7 +46,7 @@ public class Card3_107 extends AbstractAttachableFPPossession {
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.keyword(Keyword.PIPEWEED), CardType.POSSESSION));
|
||||
action.appendEffect(
|
||||
new PlayoutDecisionEffect(game.getUserFeedback(), playerId,
|
||||
new ForEachYouSpotDecision(1, "Choose number of pipes you wish to spot", game, Filters.possessionClass(PossessionClass.PIPE), Integer.MAX_VALUE) {
|
||||
new ForEachYouSpotDecision(1, "Choose number of pipes you wish to spot", game, PossessionClass.PIPE, Integer.MAX_VALUE) {
|
||||
@Override
|
||||
public void decisionMade(String result) throws DecisionResultInvalidException {
|
||||
final int spotCount = getValidatedResult(result);
|
||||
|
||||
@@ -49,7 +49,7 @@ public class Card3_084 extends AbstractOldEvent {
|
||||
final int twilightCost = revealedCard.getBlueprint().getTwilightCost();
|
||||
if (twilightCost > 0) {
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose companion", CardType.COMPANION, Filters.hasAttached(Filters.possessionClass(PossessionClass.RANGED_WEAPON))) {
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose companion", CardType.COMPANION, Filters.hasAttached(PossessionClass.RANGED_WEAPON)) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
for (int i = 0; i < twilightCost; i++)
|
||||
|
||||
@@ -46,7 +46,7 @@ public class Card4_065 extends AbstractCompanion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(Filters.possessionClass(PossessionClass.RANGED_WEAPON))) > 0;
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(PossessionClass.RANGED_WEAPON)) > 0;
|
||||
}
|
||||
}, 1));
|
||||
modifiers.add(
|
||||
@@ -54,7 +54,7 @@ public class Card4_065 extends AbstractCompanion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(Filters.possessionClass(PossessionClass.RANGED_WEAPON))) > 0;
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(PossessionClass.RANGED_WEAPON)) > 0;
|
||||
}
|
||||
}, Keyword.DAMAGE, 1));
|
||||
modifiers.add(
|
||||
@@ -62,7 +62,7 @@ public class Card4_065 extends AbstractCompanion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(Filters.possessionClass(PossessionClass.RANGED_WEAPON))) > 0;
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(PossessionClass.RANGED_WEAPON)) > 0;
|
||||
}
|
||||
}));
|
||||
return modifiers;
|
||||
|
||||
@@ -41,7 +41,7 @@ public class Card4_080 extends AbstractCompanion {
|
||||
@Override
|
||||
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, final PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new AbstractModifier(self, "The twilight cost of each ranged weapon played on Ordulus is -1.", Filters.possessionClass(PossessionClass.RANGED_WEAPON), ModifierEffect.TWILIGHT_COST_MODIFIER) {
|
||||
new AbstractModifier(self, "The twilight cost of each ranged weapon played on Ordulus is -1.", PossessionClass.RANGED_WEAPON, ModifierEffect.TWILIGHT_COST_MODIFIER) {
|
||||
@Override
|
||||
public int getPlayOnTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, PhysicalCard target) {
|
||||
if (target == self)
|
||||
|
||||
@@ -48,7 +48,7 @@ public class Card4_081 extends AbstractCompanion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(Filters.possessionClass(PossessionClass.RANGED_WEAPON))) > 0;
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(PossessionClass.RANGED_WEAPON)) > 0;
|
||||
}
|
||||
}, 2));
|
||||
modifiers.add(
|
||||
@@ -56,7 +56,7 @@ public class Card4_081 extends AbstractCompanion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(Filters.possessionClass(PossessionClass.RANGED_WEAPON))) > 0;
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(PossessionClass.RANGED_WEAPON)) > 0;
|
||||
}
|
||||
}));
|
||||
return modifiers;
|
||||
|
||||
@@ -50,7 +50,7 @@ public class Card4_086 extends AbstractCompanion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(Filters.possessionClass(PossessionClass.RANGED_WEAPON))) > 0;
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(PossessionClass.RANGED_WEAPON)) > 0;
|
||||
}
|
||||
}, -2));
|
||||
modifiers.add(
|
||||
@@ -58,7 +58,7 @@ public class Card4_086 extends AbstractCompanion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(Filters.possessionClass(PossessionClass.RANGED_WEAPON))) > 0;
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(PossessionClass.RANGED_WEAPON)) > 0;
|
||||
}
|
||||
}));
|
||||
return modifiers;
|
||||
|
||||
@@ -43,7 +43,7 @@ public class Card4_100 extends AbstractAttachableFPPossession {
|
||||
@Override
|
||||
protected List<? extends Modifier> getNonBasicStatsModifiers(PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new MayNotBearModifier(self, Filters.hasAttached(self), Filters.possessionClass(PossessionClass.HAND_WEAPON)));
|
||||
new MayNotBearModifier(self, Filters.hasAttached(self), PossessionClass.HAND_WEAPON));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -51,7 +51,7 @@ public class Card4_100 extends AbstractAttachableFPPossession {
|
||||
if (PlayConditions.played(game.getGameState(), game.getModifiersQuerying(), effectResult, Filters.sameCard(self))) {
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(
|
||||
new DiscardCardsFromPlayEffect(self, Filters.and(Filters.attachedTo(Filters.hasAttached(self)), Filters.possessionClass(PossessionClass.HAND_WEAPON))));
|
||||
new DiscardCardsFromPlayEffect(self, Filters.and(Filters.attachedTo(Filters.hasAttached(self)), PossessionClass.HAND_WEAPON)));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
if (effectResult.getType() == EffectResult.Type.START_OF_PHASE
|
||||
|
||||
@@ -50,7 +50,7 @@ public class Card4_196 extends AbstractAttachable {
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.hasAttached(self)));
|
||||
action.appendEffect(
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.side(Side.FREE_PEOPLE), Filters.possessionClass(PossessionClass.MOUNT)));
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.side(Side.FREE_PEOPLE), PossessionClass.MOUNT));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -47,7 +47,7 @@ public class Card5_013 extends AbstractCompanion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(Filters.possessionClass(PossessionClass.RANGED_WEAPON))) > 0;
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(PossessionClass.RANGED_WEAPON)) > 0;
|
||||
}
|
||||
}, 2));
|
||||
modifiers.add(
|
||||
@@ -55,7 +55,7 @@ public class Card5_013 extends AbstractCompanion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(Filters.possessionClass(PossessionClass.RANGED_WEAPON))) > 0;
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(PossessionClass.RANGED_WEAPON)) > 0;
|
||||
}
|
||||
}));
|
||||
return modifiers;
|
||||
|
||||
@@ -47,7 +47,7 @@ public class Card6_023 extends AbstractCompanion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(Filters.possessionClass(PossessionClass.RANGED_WEAPON))) > 0;
|
||||
return Filters.countActive(gameState, modifiersQuerying, Filters.sameCard(self), Filters.hasAttached(PossessionClass.RANGED_WEAPON)) > 0;
|
||||
}
|
||||
}));
|
||||
modifiers.add(
|
||||
|
||||
@@ -85,7 +85,14 @@ public class Filters {
|
||||
};
|
||||
}
|
||||
|
||||
public static Filter possessionClass(final PossessionClass possessionClass) {
|
||||
public static final Map<PossessionClass, Filter> _possessionClassFilterMap = new HashMap<PossessionClass, Filter>();
|
||||
|
||||
static {
|
||||
for (PossessionClass possessionClass : PossessionClass.values())
|
||||
_possessionClassFilterMap.put(possessionClass, possessionClass(possessionClass));
|
||||
}
|
||||
|
||||
private static Filter possessionClass(final PossessionClass possessionClass) {
|
||||
return new Filter() {
|
||||
@Override
|
||||
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
|
||||
@@ -231,7 +238,7 @@ public class Filters {
|
||||
|
||||
public static final Filter galadriel = Filters.name("Galadriel");
|
||||
|
||||
public static final Filter weapon = Filters.or(Filters.possessionClass(PossessionClass.HAND_WEAPON), Filters.possessionClass(PossessionClass.RANGED_WEAPON));
|
||||
public static final Filter weapon = Filters.or(PossessionClass.HAND_WEAPON, PossessionClass.RANGED_WEAPON);
|
||||
|
||||
public static final Filter inSkirmish = new Filter() {
|
||||
@Override
|
||||
@@ -622,7 +629,7 @@ public class Filters {
|
||||
else if (filter instanceof Keyword)
|
||||
return Filters.keyword((Keyword) filter);
|
||||
else if (filter instanceof PossessionClass)
|
||||
return Filters.possessionClass((PossessionClass) filter);
|
||||
return _possessionClassFilterMap.get((PossessionClass) filter);
|
||||
else if (filter instanceof Race)
|
||||
return Filters.race((Race) filter);
|
||||
else if (filter instanceof Side)
|
||||
@@ -682,7 +689,7 @@ public class Filters {
|
||||
|
||||
public static final Filter unboundCompanion = Filters.and(CardType.COMPANION, Filters.not(Filters.keyword(Keyword.RING_BOUND)));
|
||||
public static final Filter roaminMinion = Filters.and(CardType.MINION, Filters.keyword(Keyword.ROAMING));
|
||||
public static final Filter mounted = Filters.hasAttached(Filters.possessionClass(PossessionClass.MOUNT));
|
||||
public static final Filter mounted = Filters.hasAttached(PossessionClass.MOUNT);
|
||||
|
||||
private static class SpotFilterCardInPlayVisitor implements PhysicalCardVisitor {
|
||||
private GameState _gameState;
|
||||
|
||||
Reference in New Issue
Block a user