diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutCardsFromDeckIntoHandDiscardRestEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutCardsFromDeckIntoHandDiscardRestEffect.java index 52f9a5f6e..3cf659f61 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutCardsFromDeckIntoHandDiscardRestEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutCardsFromDeckIntoHandDiscardRestEffect.java @@ -20,11 +20,18 @@ public class PutCardsFromDeckIntoHandDiscardRestEffect extends AbstractSubAction private String _playerId; private Filterable[] _filters; private Set _cards; + private int _drawn; + private int _maxCount; public PutCardsFromDeckIntoHandDiscardRestEffect(Action action, PhysicalCard source, String playerId, Collection cards, Filterable... filters) { + this(action, source, playerId, cards, Integer.MAX_VALUE, filters); + } + + public PutCardsFromDeckIntoHandDiscardRestEffect(Action action, PhysicalCard source, String playerId, Collection cards, int maxCount, Filterable... filters) { _action = action; _source = source; _playerId = playerId; + _maxCount = maxCount; _filters = filters; _cards = new HashSet(cards); } @@ -74,12 +81,14 @@ public class PutCardsFromDeckIntoHandDiscardRestEffect extends AbstractSubAction @Override protected void doPlayEffect(LotroGame game) { if (game.getModifiersQuerying().canDrawCardNoIncrement(game.getGameState(), _playerId) + && _drawn < _maxCount && Filters.filter(_remainingCards, game.getGameState(), game.getModifiersQuerying(), _filters).size() > 0) { _subAction.insertEffect( new ChooseArbitraryCardsEffect(_playerId, "Put next card to put into your hand", _remainingCards, Filters.and(_filters), 1, 1) { @Override protected void cardsSelected(LotroGame game, Collection selectedCards) { for (PhysicalCard selectedCard : selectedCards) { + _drawn++; _remainingCards.remove(selectedCard); _subAction.insertEffect( new ChooseAndPutNextCardFromDeckIntoHand(_subAction, _remainingCards)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_028.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_028.java index b811e28a8..14eaf81b9 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_028.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_028.java @@ -2,8 +2,7 @@ package com.gempukku.lotro.cards.set1.dwarven; import com.gempukku.lotro.cards.AbstractOldEvent; import com.gempukku.lotro.cards.actions.PlayEventAction; -import com.gempukku.lotro.cards.effects.DiscardCardFromDeckEffect; -import com.gempukku.lotro.cards.effects.PutCardFromDeckIntoHandOrDiscardEffect; +import com.gempukku.lotro.cards.effects.PutCardsFromDeckIntoHandDiscardRestEffect; import com.gempukku.lotro.cards.effects.RevealTopCardsOfDrawDeckEffect; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Phase; @@ -41,18 +40,14 @@ public class Card1_028 extends AbstractOldEvent { } @Override - public PlayEventAction getPlayCardAction(final String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { + public PlayEventAction getPlayCardAction(final String playerId, LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { final PlayEventAction action = new PlayEventAction(self); action.appendEffect( new RevealTopCardsOfDrawDeckEffect(self, playerId, 3) { @Override protected void cardsRevealed(List cards) { - for (PhysicalCard card : cards) { - if (card.getBlueprint().getSide() == Side.FREE_PEOPLE) - action.appendEffect(new PutCardFromDeckIntoHandOrDiscardEffect(card)); - else - action.appendEffect(new DiscardCardFromDeckEffect(card)); - } + action.appendEffect( + new PutCardsFromDeckIntoHandDiscardRestEffect(action, self, playerId, cards, Side.FREE_PEOPLE)); } }); return action; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_081.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_081.java index e4f7ac903..9fe749450 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_081.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_081.java @@ -2,8 +2,7 @@ package com.gempukku.lotro.cards.set1.gandalf; import com.gempukku.lotro.cards.AbstractOldEvent; import com.gempukku.lotro.cards.actions.PlayEventAction; -import com.gempukku.lotro.cards.effects.DiscardCardFromDeckEffect; -import com.gempukku.lotro.cards.effects.PutCardFromDeckIntoHandOrDiscardEffect; +import com.gempukku.lotro.cards.effects.PutCardsFromDeckIntoHandDiscardRestEffect; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Phase; @@ -11,9 +10,7 @@ import com.gempukku.lotro.common.Side; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.effects.ChooseArbitraryCardsEffect; -import java.util.Collection; import java.util.LinkedList; import java.util.List; @@ -45,18 +42,7 @@ public class Card1_081 extends AbstractOldEvent { List deck = game.getGameState().getDeck(playerId); final List cards = new LinkedList(deck.subList(0, Math.min(deck.size(), 4))); action.appendEffect( - new ChooseArbitraryCardsEffect(playerId, "Choose cards to put into hand", cards, Math.min(cards.size(), 2), Math.min(cards.size(), 2)) { - @Override - protected void cardsSelected(LotroGame game, Collection selectedCards) { - for (PhysicalCard selectedCard : selectedCards) { - action.appendEffect(new PutCardFromDeckIntoHandOrDiscardEffect(selectedCard)); - cards.remove(selectedCard); - } - - for (PhysicalCard remainingCard : cards) - action.appendEffect(new DiscardCardFromDeckEffect(remainingCard)); - } - }); + new PutCardsFromDeckIntoHandDiscardRestEffect(action, self, playerId, cards, 2, Filters.any)); return action; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_082.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_082.java index d526a17cb..8493e110e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_082.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_082.java @@ -2,8 +2,7 @@ package com.gempukku.lotro.cards.set1.gandalf; import com.gempukku.lotro.cards.AbstractOldEvent; import com.gempukku.lotro.cards.actions.PlayEventAction; -import com.gempukku.lotro.cards.effects.DiscardCardFromDeckEffect; -import com.gempukku.lotro.cards.effects.PutCardFromDeckIntoHandOrDiscardEffect; +import com.gempukku.lotro.cards.effects.PutCardsFromDeckIntoHandDiscardRestEffect; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Phase; @@ -11,9 +10,7 @@ import com.gempukku.lotro.common.Side; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.effects.ChooseArbitraryCardsEffect; -import java.util.Collection; import java.util.LinkedList; import java.util.List; @@ -45,18 +42,7 @@ public class Card1_082 extends AbstractOldEvent { List deck = game.getGameState().getDeck(playerId); final List cards = new LinkedList(deck.subList(0, Math.min(deck.size(), 2))); action.appendEffect( - new ChooseArbitraryCardsEffect(playerId, "Choose card to put into hand", cards, Math.min(cards.size(), 1), Math.min(cards.size(), 1)) { - @Override - protected void cardsSelected(LotroGame game, Collection selectedCards) { - for (PhysicalCard selectedCard : selectedCards) { - action.appendEffect(new PutCardFromDeckIntoHandOrDiscardEffect(selectedCard)); - cards.remove(selectedCard); - } - - for (PhysicalCard remainingCard : cards) - action.appendEffect(new DiscardCardFromDeckEffect(remainingCard)); - } - }); + new PutCardsFromDeckIntoHandDiscardRestEffect(action, self, playerId, cards, 1, Filters.any)); return action; }