From 2edc29902cfc5023971a578290458d5687fcac0c Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Wed, 4 Sep 2019 13:28:34 -0700 Subject: [PATCH] You should technically be able to play an effect that requires playing from draw deck, even if you don't have the card in deck. --- .../cards/build/field/effect/filter/FilterFactory.java | 8 ++++++++ .../effects/choose/ChooseAndPlayCardFromDeckEffect.java | 2 +- .../com/gempukku/lotro/logic/timing/PlayConditions.java | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/filter/FilterFactory.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/filter/FilterFactory.java index 26fafe05b..f26f83f8a 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/filter/FilterFactory.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/filter/FilterFactory.java @@ -6,6 +6,7 @@ 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.logic.GameUtils; import com.gempukku.lotro.logic.timing.results.CharacterLostSkirmishResult; import java.util.*; @@ -46,6 +47,13 @@ public class FilterFactory { }); simpleFilters.put("unbound", (actionContext) -> Filters.not(Keyword.RING_BOUND)); + simpleFilters.put("attachedtoinsameregion", + actionContext -> { + final PhysicalCard attachedTo = actionContext.getSource().getAttachedTo(); + return Filters.region(GameUtils.getRegion(attachedTo.getSiteNumber())); + }); + simpleFilters.put("currentsite", + (actionContext) -> Filters.currentSite); parameterFilters.put("culture", (parameter, environment) -> { final Culture culture = Culture.valueOf(parameter.toUpperCase()); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/choose/ChooseAndPlayCardFromDeckEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/choose/ChooseAndPlayCardFromDeckEffect.java index 5ae239dbe..c54cab3bb 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/choose/ChooseAndPlayCardFromDeckEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/choose/ChooseAndPlayCardFromDeckEffect.java @@ -86,7 +86,7 @@ public class ChooseAndPlayCardFromDeckEffect implements Effect { if (_playCardAction == null) return false; if (_playCardAction instanceof PlayPermanentAction) - return ((PlayPermanentAction) _playCardAction).wasCarriedOut(); + return _playCardAction.wasCarriedOut(); return true; } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/PlayConditions.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/PlayConditions.java index e5f783e12..727171802 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/PlayConditions.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/PlayConditions.java @@ -313,7 +313,7 @@ public class PlayConditions { public static boolean canPlayFromDeck(String playerId, LotroGame game, Filterable... filters) { if (game.getModifiersQuerying().hasFlagActive(game, ModifierFlag.CANT_PLAY_FROM_DISCARD_OR_DECK)) return false; - return Filters.filter(game.getGameState().getDeck(playerId), game, Filters.and(filters, Filters.playable(game))).size() > 0; + return true; } public static boolean canPlayFromHand(String playerId, LotroGame game, Filterable... filters) {