From cec066cb14c1f2b2d0d3d6095c414297393728ed Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Wed, 28 Aug 2019 15:02:44 -0700 Subject: [PATCH] Checking if can discard top cards --- .../appender/DiscardTopCardFromDeck.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) 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); + }; } }