From f30e853a262e49d8e3c9bc625218371b7e6e4a20 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Tue, 11 Oct 2011 08:36:27 +0000 Subject: [PATCH] Uruk Crossbow Troop" --- .../gempukku/lotro/cards/PlayConditions.java | 4 ++ .../lotro/cards/set4/isengard/Card4_182.java | 53 +++++++++++++++++++ .../com/gempukku/lotro/common/Keyword.java | 2 +- 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_182.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 0a112855e..27e9e948b 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 @@ -230,6 +230,10 @@ public class PlayConditions { return false; } + public static boolean played(LotroGame game, EffectResult effectResult, Filter... filters) { + return played(game.getGameState(), game.getModifiersQuerying(), effectResult, Filters.and(filters)); + } + public static boolean played(GameState gameState, ModifiersQuerying modifiersQuerying, Effect effect, Filter filter) { if (effect.getType() == EffectResult.Type.PLAY) { PhysicalCard playedCard = ((PlayCardEffect) effect).getPlayedCard(); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_182.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_182.java new file mode 100644 index 000000000..02fdca5d1 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_182.java @@ -0,0 +1,53 @@ +package com.gempukku.lotro.cards.set4.isengard; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.effects.AddTokenEffect; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Keyword; +import com.gempukku.lotro.common.Race; +import com.gempukku.lotro.common.Token; +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.OptionalTriggerAction; +import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * Set: The Two Towers + * Side: Shadow + * Culture: Isengard + * Twilight Cost: 4 + * Type: Minion • Uruk-Hai + * Strength: 8 + * Vitality: 2 + * Site: 5 + * Game Text: Archer. When you play this minion, you may place an [ISENGARD] token on a machine. + */ +public class Card4_182 extends AbstractMinion { + public Card4_182() { + super(4, 8, 2, 5, Race.URUK_HAI, Culture.ISENGARD, "Uruk Crossbow Troop"); + addKeyword(Keyword.ARCHER); + } + + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, final PhysicalCard self) { + if (PlayConditions.played(game, effectResult, Filters.sameCard(self))) { + final OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendEffect( + new ChooseActiveCardEffect(self, playerId, "Choose machine", Filters.keyword(Keyword.MACHINE)) { + @Override + protected void cardSelected(PhysicalCard card) { + action.insertEffect( + new AddTokenEffect(self, card, Token.ISENGARD)); + } + }); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java index 2fb1c487f..d9b541387 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java @@ -15,7 +15,7 @@ public enum Keyword { BATTLEGROUND("Battleground", true), DAMAGE("Damage", true, true), DEFENDER("Defender", true, true), FIERCE("Fierce", true), ARCHER("Archer", true), UNHASTY("Unhasty", true), - RANGER("Ranger", true), TRACKER("Tracker", true), + RANGER("Ranger", true), TRACKER("Tracker", true), MACHINE("Machine", true), HAND_WEAPON("Hand Weapon"), ARMOR("Armor"), HELM("Helm"), MOUNT("Mount"), RANGED_WEAPON("Ranged Weapon"), CLOAK("Cloak"), PIPE("Pipe"), PIPEWEED("Pipeweed"), SHIELD("Shield"), BRACERS("Bracers"), STAFF("Staff"), RING("Ring"),