From d38c24fdfc272cecdce4e1e77983915edbe2841f Mon Sep 17 00:00:00 2001 From: marcins78 Date: Thu, 3 Jan 2013 16:44:29 +0000 Subject: [PATCH] "Westfold in Flames" --- .../lotro/cards/TriggerConditions.java | 6 ++ .../lotro/cards/set20/dunland/Card20_034.java | 58 +++++++++++++++++++ .../results/DiscardCardFromHandResult.java | 4 ++ 3 files changed, 68 insertions(+) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_034.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/TriggerConditions.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/TriggerConditions.java index 48a0cfa21..6ffb38182 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/TriggerConditions.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/TriggerConditions.java @@ -159,6 +159,12 @@ public class TriggerConditions { return false; } + public static boolean forEachDiscardedFromHand(LotroGame game, EffectResult effectResult, Filterable... filters) { + if (effectResult.getType() == EffectResult.Type.FOR_EACH_DISCARDED_FROM_HAND) + return Filters.and(filters).accepts(game.getGameState(), game.getModifiersQuerying(), ((DiscardCardFromHandResult) effectResult).getDiscardedCard()); + return false; + } + public static boolean forEachWounded(LotroGame game, EffectResult effectResult, Filterable... filters) { if (effectResult.getType() == EffectResult.Type.FOR_EACH_WOUNDED) return Filters.and(filters).accepts(game.getGameState(), game.getModifiersQuerying(), ((WoundResult) effectResult).getWoundedCard()); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_034.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_034.java new file mode 100644 index 000000000..3ad2c6efb --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/dunland/Card20_034.java @@ -0,0 +1,58 @@ +package com.gempukku.lotro.cards.set20.dunland; + +import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromStackedEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndStackCardsFromDiscardEffect; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.actions.OptionalTriggerAction; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.results.DiscardCardFromHandResult; + +import java.util.Collections; +import java.util.List; + +/** + * 1 + * Westfold in Flames + * Dunland Condition • Support Area + * Each time you discard a [Dunland] card from hand during the Shadow phase, you may stack that card here. + * Shadow or Skirmish: Spot 3 [Dunland] cards stacked here to play a card stacked here as if from hand. + */ +public class Card20_034 extends AbstractPermanent { + public Card20_034() { + super(Side.SHADOW, 1, CardType.CONDITION, Culture.DUNLAND, Zone.SUPPORT, "Westfold in Flames"); + } + + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.forEachDiscardedFromHand(game, effectResult, Culture.DUNLAND) + && PlayConditions.isPhase(game, Phase.SHADOW)) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendEffect( + new ChooseAndStackCardsFromDiscardEffect(action, playerId, 1, 1, self, ((DiscardCardFromHandResult) effectResult).getDiscardedCard())); + return Collections.singletonList(action); + } + return null; + } + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if ((PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 0) + || PlayConditions.canUseShadowCardDuringPhase(game, Phase.SKIRMISH, self, 0)) + && Filters.filter(game.getGameState().getStackedCards(self), game.getGameState(), game.getModifiersQuerying(), Culture.DUNLAND).size()>=3 + && PlayConditions.canPlayFromStacked(playerId, game, self, Filters.any)) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendEffect( + new ChooseAndPlayCardFromStackedEffect(playerId, self, Filters.any)); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/DiscardCardFromHandResult.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/DiscardCardFromHandResult.java index 9a0321072..19c78e09f 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/DiscardCardFromHandResult.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/DiscardCardFromHandResult.java @@ -28,4 +28,8 @@ public class DiscardCardFromHandResult extends EffectResult { public String getHandPlayerId() { return _handPlayerId; } + + public PhysicalCard getDiscardedCard() { + return _card; + } } \ No newline at end of file