From aa2d9e99b599a0c3e49b92a6649d7cf80b978701 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Wed, 31 Aug 2011 22:54:47 +0000 Subject: [PATCH] "Trollshaw Forest" --- .../cards/actions/AttachPermanentAction.java | 15 +++---- .../lotro/cards/set1/site/Card1_338.java | 45 +++++++++++++++++++ .../logic/timing/results/PlayCardResult.java | 10 +++++ 3 files changed, 62 insertions(+), 8 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_338.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/AttachPermanentAction.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/AttachPermanentAction.java index 3211cc07c..de786024c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/AttachPermanentAction.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/AttachPermanentAction.java @@ -6,34 +6,33 @@ import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.CostToEffectAction; -import com.gempukku.lotro.logic.effects.ChooseActiveCardsEffect; +import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; import com.gempukku.lotro.logic.effects.TriggeringEffect; import com.gempukku.lotro.logic.timing.results.PlayCardResult; -import java.util.List; import java.util.Map; public class AttachPermanentAction extends CostToEffectAction { public AttachPermanentAction(final LotroGame game, final PhysicalCard card, Filter filter, final Map attachCostModifiers) { super(card, null, "Attach " + card.getBlueprint().getName() + " from hand"); - addCost(new ChooseActiveCardsEffect(card.getOwner(), "Choose target to attach to", 1, 1, filter) { + addCost(new ChooseActiveCardEffect(card.getOwner(), "Choose target to attach to", filter) { @Override - protected void cardsSelected(List target) { + protected void cardSelected(PhysicalCard target) { addCost(new RemoveCardFromZoneEffect(card)); int modifier = 0; for (Map.Entry filterIntegerEntry : attachCostModifiers.entrySet()) - if (filterIntegerEntry.getKey().accepts(game.getGameState(), game.getModifiersQuerying(), target.get(0))) + if (filterIntegerEntry.getKey().accepts(game.getGameState(), game.getModifiersQuerying(), target)) modifier += filterIntegerEntry.getValue(); - addCost(new PayPlayOnTwilightCostEffect(card, target.get(0), modifier)); + addCost(new PayPlayOnTwilightCostEffect(card, target, modifier)); - addEffect(new AttachCardFromHandEffect(card, target.get(0))); + addEffect(new AttachCardFromHandEffect(card, target)); if (card.getZone() == Zone.DECK) addEffect(new ShuffleDeckEffect(card.getOwner())); addEffect(new CardAffectingGameEffect(card)); - addEffect(new TriggeringEffect(new PlayCardResult(card))); + addEffect(new TriggeringEffect(new PlayCardResult(card, target))); addFailedCostEffect(new PutCardIntoDiscardEffect(card)); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_338.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_338.java new file mode 100644 index 000000000..d657a85cb --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_338.java @@ -0,0 +1,45 @@ +package com.gempukku.lotro.cards.set1.site; + +import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Keyword; +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.CostToEffectAction; +import com.gempukku.lotro.logic.effects.DrawCardEffect; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.results.PlayCardResult; + +import java.util.Collections; +import java.util.List; + +/** + * Set: The Fellowship of the Ring + * Twilight Cost: 1 + * Type: Site + * Site: 2 + * Game Text: Forest. Each time you play a possession or artifact on your companion, draw a card. + */ +public class Card1_338 extends AbstractSite { + public Card1_338() { + super("Trollshaw Forest", 2, 1, Direction.LEFT); + addKeyword(Keyword.FOREST); + } + + @Override + public List getRequiredWhenActions(LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (PlayConditions.played(game.getGameState(), game.getModifiersQuerying(), effectResult, Filters.or(Filters.type(CardType.POSSESSION), Filters.type(CardType.ARTIFACT)))) { + PlayCardResult playCardResult = (PlayCardResult) effectResult; + PhysicalCard attachedTo = playCardResult.getAttachedTo(); + if (attachedTo != null && attachedTo.getBlueprint().getCardType() == CardType.COMPANION) { + CostToEffectAction action = new CostToEffectAction(self, null, "Draw a card"); + action.addEffect(new DrawCardEffect(game.getGameState().getCurrentPlayerId())); + return Collections.singletonList(action); + } + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/PlayCardResult.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/PlayCardResult.java index e26effb08..3f1fc4fa4 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/PlayCardResult.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/PlayCardResult.java @@ -5,13 +5,23 @@ import com.gempukku.lotro.logic.timing.EffectResult; public class PlayCardResult extends EffectResult { private PhysicalCard _playedCard; + private PhysicalCard _attachedTo; public PlayCardResult(PhysicalCard playedCard) { + this(playedCard, null); + } + + public PlayCardResult(PhysicalCard playedCard, PhysicalCard attachedTo) { super(EffectResult.Type.PLAY); _playedCard = playedCard; + _attachedTo = attachedTo; } public PhysicalCard getPlayedCard() { return _playedCard; } + + public PhysicalCard getAttachedTo() { + return _attachedTo; + } }