From 440d0842b5cb364d8c510f7c4d1a91503d75ef99 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Sat, 15 Oct 2011 17:25:59 +0000 Subject: [PATCH] - Permanents will no longer highlight in had if they have Response action on them - Fixed all the cards that were supposed to discard themselves on use, but did not (i.e. "Gondor Bowmen") --- .../gempukku/lotro/cards/PlayConditions.java | 9 ++-- .../lotro/cards/set2/dwarven/Card2_003.java | 2 +- .../lotro/cards/set2/dwarven/Card2_004.java | 2 +- .../lotro/cards/set2/dwarven/Card2_010.java | 2 +- .../lotro/cards/set2/sauron/Card2_089.java | 2 +- .../lotro/cards/set2/shire/Card2_097.java | 2 +- .../lotro/cards/set2/shire/Card2_106.java | 2 +- .../lotro/cards/set2/shire/Card2_108.java | 2 +- .../lotro/cards/set3/dwarven/Card3_005.java | 2 +- .../lotro/cards/set3/gondor/Card3_041.java | 2 +- .../lotro/cards/set4/rohan/Card4_279.java | 2 +- .../com/gempukku/lotro/common/Culture.java | 2 +- .../com/gempukku/lotro/common/Duration.java | 5 -- .../com/gempukku/lotro/common/Filterable.java | 4 ++ .../com/gempukku/lotro/common/Keyword.java | 2 +- .../lotro/common/PossessionClass.java | 2 +- .../java/com/gempukku/lotro/common/Race.java | 2 +- .../java/com/gempukku/lotro/common/Side.java | 2 +- .../com/gempukku/lotro/common/Signet.java | 2 +- .../java/com/gempukku/lotro/common/Zone.java | 2 +- .../com/gempukku/lotro/filters/Filter.java | 3 +- .../com/gempukku/lotro/filters/Filters.java | 47 ++++++++++++++++--- .../src/main/webapp/includes/changeLog.html | 4 ++ 23 files changed, 71 insertions(+), 35 deletions(-) delete mode 100644 gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Duration.java create mode 100644 gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Filterable.java 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 cdcac5ba8..4ca27ebbb 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 @@ -1,9 +1,6 @@ package com.gempukku.lotro.cards; -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Token; -import com.gempukku.lotro.common.Zone; +import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.LotroCardBlueprint; @@ -113,11 +110,11 @@ public class PlayConditions { return canExert(source, game.getGameState(), game.getModifiersQuerying(), times, filters); } - public static boolean canSpot(LotroGame game, Filter... filters) { + public static boolean canSpot(LotroGame game, Filterable... filters) { return canSpot(game, 1, filters); } - public static boolean canSpot(LotroGame game, int count, Filter... filters) { + public static boolean canSpot(LotroGame game, int count, Filterable... filters) { return Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), filters) >= count; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_003.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_003.java index f88b8ca00..06d9ee61c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_003.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_003.java @@ -45,7 +45,7 @@ public class Card2_003 extends AbstractAttachableFPPossession { && ((WoundCharactersEffect) effect).getAffectedCardsMinusPrevented(game).contains(self.getAttachedTo())) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new DiscardCardsFromPlayEffect(self)); + new DiscardCardsFromPlayEffect(self, self)); action.appendEffect( new PreventCardEffect((WoundCharactersEffect) effect, self.getAttachedTo())); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_004.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_004.java index 94847b1b0..83366a66c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_004.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_004.java @@ -47,7 +47,7 @@ public class Card2_004 extends AbstractAttachable { if (PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.SKIRMISH, self)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new DiscardCardsFromPlayEffect(self)); + new DiscardCardsFromPlayEffect(self, self)); action.appendEffect( new AddUntilEndOfPhaseModifierEffect( new StrengthModifier(self, Filters.sameCard(self.getAttachedTo()), 1), Phase.SKIRMISH)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_010.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_010.java index b2393d47a..6bb920dfb 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_010.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_010.java @@ -46,7 +46,7 @@ public class Card2_010 extends AbstractAttachableFPPossession { if (PlayConditions.canPlayCardDuringPhase(game, Phase.ARCHERY, self)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new DiscardCardsFromPlayEffect(self)); + new DiscardCardsFromPlayEffect(self, self)); action.appendEffect( new AddUntilEndOfPhaseModifierEffect( new ArcheryTotalModifier(self, Side.FREE_PEOPLE, 1), Phase.ARCHERY)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/sauron/Card2_089.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/sauron/Card2_089.java index bf91af7a8..1521947c9 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/sauron/Card2_089.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/sauron/Card2_089.java @@ -57,7 +57,7 @@ public class Card2_089 extends AbstractMinion { possibleCosts.add( new ExertCharactersEffect(self, self)); possibleCosts.add( - new DiscardCardsFromPlayEffect(self)); + new DiscardCardsFromPlayEffect(self, self)); action.appendCost( new ChoiceEffect(action, playerId, possibleCosts)); action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_097.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_097.java index 2356f82ea..1d9054413 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_097.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_097.java @@ -66,7 +66,7 @@ public class Card2_097 extends AbstractAttachable { possibleCosts.add( new ExertCharactersEffect(self, self.getAttachedTo())); possibleCosts.add( - new DiscardCardsFromPlayEffect(self)); + new DiscardCardsFromPlayEffect(self, self)); action.appendCost( new ChoiceEffect(action, playerId, possibleCosts)); action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_106.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_106.java index 53e8780bc..a80cdeecc 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_106.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_106.java @@ -40,7 +40,7 @@ public class Card2_106 extends AbstractPermanent { if (Filters.filter(woundedCharacters, game.getGameState(), game.getModifiersQuerying(), Filters.race(Race.HOBBIT)).size() > 0) { final ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new DiscardCardsFromPlayEffect(self)); + new DiscardCardsFromPlayEffect(self, self)); action.appendEffect( new ChooseActiveCardEffect(self, playerId, "Choose Hobbit", Filters.in(woundedCharacters), Filters.race(Race.HOBBIT)) { @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_108.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_108.java index 09e97cbbc..bc1360b55 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_108.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_108.java @@ -54,7 +54,7 @@ public class Card2_108 extends AbstractAttachable { if (PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.SKIRMISH, self)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new DiscardCardsFromPlayEffect(self)); + new DiscardCardsFromPlayEffect(self, self)); List possibleEffects = new LinkedList(); possibleEffects.add( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/dwarven/Card3_005.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/dwarven/Card3_005.java index 83cdb2543..718a36111 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/dwarven/Card3_005.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/dwarven/Card3_005.java @@ -58,7 +58,7 @@ public class Card3_005 extends AbstractPermanent { if (PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.FELLOWSHIP, self)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new DiscardCardsFromPlayEffect(self)); + new DiscardCardsFromPlayEffect(self, self)); action.appendEffect( new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 0, 2, Filters.culture(Culture.MORIA), Filters.type(CardType.CONDITION))); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gondor/Card3_041.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gondor/Card3_041.java index d82e54368..5d8d67de0 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gondor/Card3_041.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gondor/Card3_041.java @@ -39,7 +39,7 @@ public class Card3_041 extends AbstractPermanent { action.appendCost( new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.culture(Culture.GONDOR), Filters.type(CardType.COMPANION))); action.appendCost( - new DiscardCardsFromPlayEffect(self)); + new DiscardCardsFromPlayEffect(self, self)); action.appendEffect( new AddUntilEndOfPhaseModifierEffect( new ArcheryTotalModifier(self, Side.FREE_PEOPLE, 2), Phase.ARCHERY)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_279.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_279.java index 9e2625d0f..b46750d4f 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_279.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_279.java @@ -34,7 +34,7 @@ public class Card4_279 extends AbstractEvent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { return super.checkPlayRequirements(playerId, game, self, twilightModifier) - && PlayConditions.canSpot(game, 2, Filters.mounted, Filters.culture(Culture.ROHAN), Filters.race(Race.MAN)); + && PlayConditions.canSpot(game, 2, Filters.mounted, Culture.ROHAN, Race.MAN); } @Override diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Culture.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Culture.java index 60117241a..1ed215d17 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Culture.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Culture.java @@ -1,6 +1,6 @@ package com.gempukku.lotro.common; -public enum Culture { +public enum Culture implements Filterable { DWARVEN, ELVEN, GANDALF, GOLLUM, GONDOR, ROHAN, SHIRE, DUNLAND, ISENGARD, MEN, MORIA, ORC, RAIDER, SAURON, WRAITH } diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Duration.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Duration.java deleted file mode 100644 index e56b0d972..000000000 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Duration.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.gempukku.lotro.common; - -public enum Duration { - END_OF_TURN, END_OF_PHASE -} diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Filterable.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Filterable.java new file mode 100644 index 000000000..a71aaf78c --- /dev/null +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Filterable.java @@ -0,0 +1,4 @@ +package com.gempukku.lotro.common; + +public interface Filterable { +} diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java index ab893c6bf..1ee8183ed 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java @@ -1,6 +1,6 @@ package com.gempukku.lotro.common; -public enum Keyword { +public enum Keyword implements Filterable { SUPPORT_AREA("Support Area"), SKIRMISH("Skirmish"), FELLOWSHIP("Fellowship"), RESPONSE("Response"), MANEUVER("Maneuver"), ARCHERY("Archery"), SHADOW("Shadow"), ASSIGNMENT("Assignment"), REGROUP("Regroup"), diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/PossessionClass.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/PossessionClass.java index d5e06d1d3..57fdaa727 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/PossessionClass.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/PossessionClass.java @@ -1,6 +1,6 @@ package com.gempukku.lotro.common; -public enum PossessionClass { +public enum PossessionClass implements Filterable { HAND_WEAPON("Hand Weapon"), ARMOR("Armor"), HELM("Helm"), MOUNT("Mount"), RANGED_WEAPON("Ranged Weapon"), CLOAK("Cloak"), PIPE("Pipe"), PIPEWEED("Pipeweed"), SHIELD("Shield"), BRACERS("Bracers"), STAFF("Staff"), RING("Ring"), BROOCH("Brooch"), GAUNTLETS("Gauntlets"); diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Race.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Race.java index a3310efc0..4977460cb 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Race.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Race.java @@ -1,6 +1,6 @@ package com.gempukku.lotro.common; -public enum Race { +public enum Race implements Filterable { BALROG("Balrog"), CREATURE("Creature"), ELF("Elf"), HOBBIT("Hobbit"), DWARF("Dwarf"), MAN("Man"), WIZARD("Wizard"), URUK_HAI("Uruk-Hai"), NAZGUL("Nazgul"), ORC("Orc"), TROLL("Troll"), ENT("Ent"); diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Side.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Side.java index 47c3fdad1..db42ede51 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Side.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Side.java @@ -1,5 +1,5 @@ package com.gempukku.lotro.common; -public enum Side { +public enum Side implements Filterable { FREE_PEOPLE, SHADOW, RING, SITE } diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Signet.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Signet.java index 7f8e11199..f256c97a0 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Signet.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Signet.java @@ -1,5 +1,5 @@ package com.gempukku.lotro.common; -public enum Signet { +public enum Signet implements Filterable { ARAGORN, FRODO, GANDALF, THÉODEN } diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Zone.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Zone.java index 19d5f4cfd..b4c16a2a3 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Zone.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Zone.java @@ -1,6 +1,6 @@ package com.gempukku.lotro.common; -public enum Zone { +public enum Zone implements Filterable { FREE_CHARACTERS("play", true), SUPPORT("play", true), SHADOW_CHARACTERS("play", true), ADVENTURE_PATH("play", true), HAND("hand", false), DECK("deck", false), ATTACHED("play", true), STACKED("stacked", false), diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filter.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filter.java index 763051bea..7ff9a7865 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filter.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filter.java @@ -1,9 +1,10 @@ package com.gempukku.lotro.filters; +import com.gempukku.lotro.common.Filterable; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; -public interface Filter { +public interface Filter extends Filterable { public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard); } 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 74ac9be0c..f46e7766b 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 @@ -13,28 +13,28 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import java.util.*; public class Filters { - public static boolean canSpot(GameState gameState, ModifiersQuerying modifiersQuerying, Filter... 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(); } - public static int countSpottable(GameState gameState, ModifiersQuerying modifiersQuerying, Filter... filters) { + public static int countSpottable(GameState gameState, ModifiersQuerying modifiersQuerying, Filterable... filters) { Filter filter = Filters.and(filters); GetCardsMatchingFilterVisitor visitor = new GetCardsMatchingFilterVisitor(gameState, modifiersQuerying, filter); gameState.iterateActiveCards(visitor); return modifiersQuerying.getSpotCount(gameState, filter, visitor.getCounter()); } - public static Collection filterActive(GameState gameState, ModifiersQuerying modifiersQuerying, Filter... filters) { + public static Collection filterActive(GameState gameState, ModifiersQuerying modifiersQuerying, Filterable... filters) { Filter filter = Filters.and(filters); GetCardsMatchingFilterVisitor getCardsMatchingFilter = new GetCardsMatchingFilterVisitor(gameState, modifiersQuerying, filter); gameState.iterateActiveCards(getCardsMatchingFilter); return getCardsMatchingFilter.getPhysicalCards(); } - public static Collection filter(Collection cards, GameState gameState, ModifiersQuerying modifiersQuerying, Filter... filters) { + public static Collection filter(Collection cards, GameState gameState, ModifiersQuerying modifiersQuerying, Filterable... filters) { Filter filter = Filters.and(filters); List result = new LinkedList(); for (PhysicalCard card : cards) @@ -432,7 +432,42 @@ public class Filters { }; } - public static Filter and(final Filter... filters) { + public static Filter and(final Filterable... filters) { + Filter[] filtersInt = new Filter[filters.length]; + for (int i = 0; i < filtersInt.length; i++) + filtersInt[i] = changeToFilter(filters[i]); + return andInternal(filtersInt); + } + + public static Filter or(final Filterable... filters) { + Filter[] filtersInt = new Filter[filters.length]; + for (int i = 0; i < filtersInt.length; i++) + filtersInt[i] = changeToFilter(filters[i]); + return orInternal(filtersInt); + } + + private static Filter changeToFilter(Filterable filter) { + if (filter instanceof Filter) + return (Filter) filter; + else if (filter instanceof Culture) + return Filters.culture((Culture) filter); + else if (filter instanceof Keyword) + return Filters.keyword((Keyword) filter); + else if (filter instanceof PossessionClass) + return Filters.possessionClass((PossessionClass) filter); + else if (filter instanceof Race) + return Filters.race((Race) filter); + else if (filter instanceof Side) + return Filters.side((Side) filter); + else if (filter instanceof Signet) + return Filters.signet((Signet) filter); + else if (filter instanceof Zone) + return Filters.zone((Zone) filter); + else + throw new IllegalArgumentException("Unknown type of filterable: " + filter); + } + + private static Filter andInternal(final Filter... filters) { return new Filter() { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { @@ -462,7 +497,7 @@ public class Filters { }; } - public static Filter or(final Filter... filters) { + private static Filter orInternal(final Filter... filters) { return new Filter() { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html index ccec4effa..b5e5733d9 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html @@ -1,4 +1,8 @@
+15 Oct. 2011
+- Permanents will no longer highlight in had if they have Response action on them
+- Fixed all the cards that were supposed to discard themselves on use, but did not (i.e. "Gondor Bowmen")
+
 14 Oct. 2011
 - Uruviel and all other copying site allies should now correctly have modifiers off sites
 - Ulaire Nertea now actually allows to play minions from discard