From 3fdd681e07e064e765841bfdffd84e7cbeb79c87 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Fri, 30 Sep 2011 09:14:45 +0000 Subject: [PATCH] "Cast It Into the Fire!" --- .../ChooseAndDiscardCardsFromHandEffect.java | 7 ++ .../lotro/cards/set3/elven/Card3_011.java | 69 +++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_011.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ChooseAndDiscardCardsFromHandEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ChooseAndDiscardCardsFromHandEffect.java index c767a4314..8b0f3303c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ChooseAndDiscardCardsFromHandEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ChooseAndDiscardCardsFromHandEffect.java @@ -75,6 +75,7 @@ public class ChooseAndDiscardCardsFromHandEffect implements ChooseableEffect, Ch for (PhysicalCard card : hand) { _action.appendCost(new DiscardCardFromHandEffect(card)); } + cardsBeingDiscarded(hand); } else { game.getUserFeedback().sendAwaitingDecision(_playerId, new CardsSelectionDecision(1, "Choose card(s) to discard", hand, _minimum, _maximum) { @@ -84,6 +85,7 @@ public class ChooseAndDiscardCardsFromHandEffect implements ChooseableEffect, Ch for (PhysicalCard card : cards) { _action.appendCost(new DiscardCardFromHandEffect(card)); } + cardsBeingDiscarded(cards); } }); } @@ -102,6 +104,7 @@ public class ChooseAndDiscardCardsFromHandEffect implements ChooseableEffect, Ch for (PhysicalCard card : hand) { _action.insertEffect(new DiscardCardFromHandEffect(card)); } + cardsBeingDiscarded(hand); } else { game.getUserFeedback().sendAwaitingDecision(_playerId, new CardsSelectionDecision(1, "Choose card(s) to discard", hand, _minimum, _maximum) { @@ -111,10 +114,14 @@ public class ChooseAndDiscardCardsFromHandEffect implements ChooseableEffect, Ch for (PhysicalCard card : cards) { _action.insertEffect(new DiscardCardFromHandEffect(card)); } + cardsBeingDiscarded(cards); } }); } return null; } + + protected void cardsBeingDiscarded(Collection cardsBeingDiscarded) { + } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_011.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_011.java new file mode 100644 index 000000000..63a239b2d --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_011.java @@ -0,0 +1,69 @@ +package com.gempukku.lotro.cards.set3.elven; + +import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.GameUtils; +import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.effects.ChooseAndDiscardCardsFromHandEffect; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.common.Race; +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.DrawCardEffect; +import com.gempukku.lotro.logic.timing.UnrespondableEffect; + +import java.util.Collection; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * Set: Realms of Elf-lords + * Side: Free + * Culture: Elven + * Twilight Cost: 1 + * Type: Event + * Game Text: Maneuver: Spot an Elf to make each opponent discard a card from his or her hand. Draw a card for each + * card discarded in this way. + */ +public class Card3_011 extends AbstractEvent { + public Card3_011() { + super(Side.FREE_PEOPLE, Culture.ELVEN, "Cast It Into the Fire!", Phase.MANEUVER); + } + + @Override + public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + return super.checkPlayRequirements(playerId, game, self, twilightModifier) + && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.race(Race.ELF)); + } + + @Override + public int getTwilightCost() { + return 1; + } + + @Override + public PlayEventAction getPlayCardAction(final String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + final PlayEventAction action = new PlayEventAction(self); + String[] opponents = GameUtils.getOpponents(game, playerId); + final AtomicInteger integer = new AtomicInteger(0); + for (String opponent : opponents) { + action.appendEffect( + new ChooseAndDiscardCardsFromHandEffect(action, opponent, 1) { + @Override + protected void cardsBeingDiscarded(Collection cardsBeingDiscarded) { + integer.addAndGet(cardsBeingDiscarded.size()); + } + }); + } + action.appendEffect( + new UnrespondableEffect() { + @Override + protected void doPlayEffect(LotroGame game) { + action.insertEffect( + new DrawCardEffect(playerId, integer.get())); + } + }); + return null; + } +}