diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DiscardTopCardFromDeck.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DiscardTopCardFromDeck.java index 41791f926..4c0ecad72 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DiscardTopCardFromDeck.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DiscardTopCardFromDeck.java @@ -24,16 +24,23 @@ public class DiscardTopCardFromDeck implements EffectAppenderProducer { final String deck = FieldUtils.getString(effectObject.get("deck"), "deck", "owner"); final int count = FieldUtils.getInteger(effectObject.get("count"), "count", 1); - MultiEffectAppender result = new MultiEffectAppender(); - String deckPlayerMemory = "_temp1"; + final PlayerSource playerSource = PlayerResolver.resolvePlayer(deck, environment); + + MultiEffectAppender result = new MultiEffectAppender(); - result.addEffectAppender( - PlayerResolver.resolvePlayer(deck, deckPlayerMemory, environment)); result.addEffectAppender( new DelayedAppender() { + @Override + public boolean isPlayableInFull(String playerId, LotroGame game, PhysicalCard self, EffectResult effectResult, Effect effect) { + final String deckId = playerSource.getPlayer(playerId, game, self, effectResult, effect); + + return game.getGameState().getDeck(deckId).size() >= count + && game.getModifiersQuerying().canDiscardCardsFromTopOfDeck(game, deckId, self); + } + @Override protected Effect createEffect(CostToEffectAction action, String playerId, LotroGame game, PhysicalCard self, EffectResult effectResult, Effect effect) { - final String deckId = action.getValueFromMemory(deckPlayerMemory); + final String deckId = playerSource.getPlayer(playerId, game, self, effectResult, effect); return new DiscardTopCardFromDeckEffect(self, deckId, count, true); } @@ -51,6 +58,10 @@ public class DiscardTopCardFromDeck implements EffectAppenderProducer { final PlayerSource playerSource = PlayerResolver.resolvePlayer(deck, environment); - return (playerId, game, self, effectResult, effect) -> game.getGameState().getDeck(playerSource.getPlayer(playerId, game, self, effectResult, effect)).size() >= count; + return (playerId, game, self, effectResult, effect) -> { + final String deckId = playerSource.getPlayer(playerId, game, self, effectResult, effect); + return game.getGameState().getDeck(deckId).size() >= count + && game.getModifiersQuerying().canDiscardCardsFromTopOfDeck(game, deckId, self); + }; } }