From 9b2fcb58f6c68c4507f27d302a16fef154b5d76d Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Mon, 14 Nov 2011 15:01:55 +0000 Subject: [PATCH] - "Barrows of Edoras" now makes you choose the order you put cards on bottom of your deck. --- .../effects/PutHandBeneathDrawDeckEffect.java | 73 +++++++++++++++++++ .../choose/ChooseArbitraryCardsEffect.java | 7 +- .../lotro/cards/set4/site/Card4_337.java | 7 +- .../src/main/webapp/includes/changeLog.html | 3 + 4 files changed, 82 insertions(+), 8 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutHandBeneathDrawDeckEffect.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutHandBeneathDrawDeckEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutHandBeneathDrawDeckEffect.java new file mode 100644 index 000000000..d494219ae --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutHandBeneathDrawDeckEffect.java @@ -0,0 +1,73 @@ +package com.gempukku.lotro.cards.effects; + +import com.gempukku.lotro.cards.effects.choose.ChooseArbitraryCardsEffect; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.SubAction; +import com.gempukku.lotro.logic.timing.AbstractSubActionEffect; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +public class PutHandBeneathDrawDeckEffect extends AbstractSubActionEffect { + private Action _action; + private String _playerId; + + public PutHandBeneathDrawDeckEffect(Action action, String playerId) { + _action = action; + _playerId = playerId; + } + + @Override + public String getText(LotroGame game) { + return null; + } + + @Override + public Type getType() { + return null; + } + + @Override + public boolean isPlayableInFull(LotroGame game) { + return true; + } + + @Override + public Collection playEffect(LotroGame game) { + final Set hand = new HashSet(game.getGameState().getHand(_playerId)); + + SubAction subAction = new SubAction(_action); + subAction.appendEffect( + new ChooseAndPutNextCardFromHandOnBottomOfLibrary(subAction, hand)); + processSubAction(game, subAction); + + return null; + } + + private class ChooseAndPutNextCardFromHandOnBottomOfLibrary extends ChooseArbitraryCardsEffect { + private Set _remainingCards; + private SubAction _subAction; + + public ChooseAndPutNextCardFromHandOnBottomOfLibrary(SubAction subAction, Set remainingCards) { + super(_playerId, "Choose a card to put on bottom of your deck", remainingCards, 1, 1); + _subAction = subAction; + _remainingCards = remainingCards; + } + + @Override + protected void cardsSelected(LotroGame game, Collection selectedCards) { + for (PhysicalCard selectedCard : selectedCards) { + _subAction.appendEffect( + new PutCardFromHandOnBottomOfDeckEffect(selectedCard)); + _remainingCards.remove(selectedCard); + if (_remainingCards.size() > 0) + _subAction.appendEffect( + new ChooseAndPutNextCardFromHandOnBottomOfLibrary(_subAction, _remainingCards)); + } + } + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseArbitraryCardsEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseArbitraryCardsEffect.java index 84b2ca378..47cf4b16a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseArbitraryCardsEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseArbitraryCardsEffect.java @@ -11,21 +11,20 @@ import com.gempukku.lotro.logic.timing.Effect; import java.util.Collection; import java.util.Collections; -import java.util.List; public abstract class ChooseArbitraryCardsEffect extends AbstractEffect { private String _playerId; private String _choiceText; - private List _cards; + private Collection _cards; private Filterable _filter; private int _minimum; private int _maximum; - public ChooseArbitraryCardsEffect(String playerId, String choiceText, List cards, int minimum, int maximum) { + public ChooseArbitraryCardsEffect(String playerId, String choiceText, Collection cards, int minimum, int maximum) { this(playerId, choiceText, cards, Filters.any, minimum, maximum); } - public ChooseArbitraryCardsEffect(String playerId, String choiceText, List cards, Filterable filter, int minimum, int maximum) { + public ChooseArbitraryCardsEffect(String playerId, String choiceText, Collection cards, Filterable filter, int minimum, int maximum) { _playerId = playerId; _choiceText = choiceText; _cards = cards; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/site/Card4_337.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/site/Card4_337.java index 4fc272eac..c69ca0212 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/site/Card4_337.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/site/Card4_337.java @@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.set4.site; import com.gempukku.lotro.cards.AbstractSite; import com.gempukku.lotro.cards.PlayConditions; -import com.gempukku.lotro.cards.effects.PutCardFromHandOnBottomOfDeckEffect; +import com.gempukku.lotro.cards.effects.PutHandBeneathDrawDeckEffect; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.game.PhysicalCard; @@ -31,9 +31,8 @@ public class Card4_337 extends AbstractSite { public List getPhaseActions(String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseSiteDuringPhase(game.getGameState(), Phase.FELLOWSHIP, self)) { ActivateCardAction action = new ActivateCardAction(self); - for (PhysicalCard card : game.getGameState().getHand(playerId)) - action.appendCost( - new PutCardFromHandOnBottomOfDeckEffect(card)); + action.appendCost( + new PutHandBeneathDrawDeckEffect(action, playerId)); action.appendEffect( new DrawCardEffect(playerId, 4)); return Collections.singletonList(action); 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 eb1fbd347..62910089d 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,7 @@
+14 Nov. 2011
+- "Barrows of Edoras" now makes you choose the order you put cards on bottom of your deck.
+
 13 Nov. 2011
 - "Uruk Stormer" now allows to take control of a site, if any other Uruk-hai kills a companion or ally.
 - "Citadel of Minas Tirith" no longer allows you to heal companion if non-Gondor companion lost a skirmish.