From 548b6a5ff490f09e0daf2c8439d838497d6f759d Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Mon, 10 Oct 2011 19:36:27 +0000 Subject: [PATCH] "Ugluk's Sword" --- .../gempukku/lotro/cards/PlayConditions.java | 4 ++ .../lotro/cards/set4/isengard/Card4_177.java | 64 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_177.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java index b84aed206..0a112855e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java @@ -134,6 +134,10 @@ public class PlayConditions { return Filters.filter(game.getGameState().getHand(playerId), game.getGameState(), game.getModifiersQuerying(), Filters.and(filters, Filters.playable(game))).size() > 0; } + public static boolean canPlayFromHand(String playerId, LotroGame game, int twilightModifier, Filter... filters) { + return Filters.filter(game.getGameState().getHand(playerId), game.getGameState(), game.getModifiersQuerying(), Filters.and(filters, Filters.playable(game, twilightModifier))).size() > 0; + } + public static boolean canPlayFromDiscard(String playerId, LotroGame game, Filter... filters) { return Filters.filter(game.getGameState().getDiscard(playerId), game.getGameState(), game.getModifiersQuerying(), Filters.and(filters, Filters.playable(game))).size() > 0; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_177.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_177.java new file mode 100644 index 000000000..10160b570 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_177.java @@ -0,0 +1,64 @@ +package com.gempukku.lotro.cards.set4.isengard; + +import com.gempukku.lotro.cards.AbstractAttachable; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.effects.ChooseAndDiscardCardsFromHandEffect; +import com.gempukku.lotro.cards.effects.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.effects.ChooseAndPlayCardFromHandEffect; +import com.gempukku.lotro.cards.modifiers.StrengthModifier; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.filters.Filter; +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.modifiers.Modifier; +import com.gempukku.lotro.logic.timing.Action; + +import java.util.Collections; +import java.util.List; + +/** + * Set: The Two Towers + * Side: Shadow + * Culture: Isengard + * Twilight Cost: 1 + * Type: Possession • Hand Weapon + * Strength: +3 + * Game Text: Bearer must be an Uruk-hai. Shadow: If bearer is Ugluk, exert it and discard a minion from hand to play + * a minion. Its twilight cost is -3. + */ +public class Card4_177 extends AbstractAttachable { + public Card4_177() { + super(Side.SHADOW, CardType.POSSESSION, 1, Culture.ISENGARD, Keyword.HAND_WEAPON, "Ugluk's Sword", true); + } + + @Override + protected Filter getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Filters.race(Race.URUK_HAI); + } + + @Override + public List getAlwaysOnModifiers(PhysicalCard self) { + return Collections.singletonList( + new StrengthModifier(self, Filters.hasAttached(self), 3)); + } + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game.getGameState(), Phase.SHADOW, self, 0) + && self.getAttachedTo().getBlueprint().getName().equals("Ugluk") + && PlayConditions.canExert(self, game, Filters.name("Ugluk")) + && PlayConditions.canPlayFromHand(playerId, game, -3, Filters.type(CardType.MINION))) { + ActivateCardAction action = new ActivateCardAction(self, Keyword.SHADOW); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.name("Ugluk"))); + action.appendCost( + new ChooseAndDiscardCardsFromHandEffect(action, playerId, 1, Filters.type(CardType.MINION))); + action.appendEffect( + new ChooseAndPlayCardFromHandEffect(playerId, game.getGameState().getHand(playerId), Filters.type(CardType.MINION), -3)); + return Collections.singletonList(action); + } + return null; + } +}