From 6b2ad74437867dbd1cd4630d053dca12fb4cc81a Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Wed, 2 Oct 2019 17:12:32 -0700 Subject: [PATCH] Dwarven and Elvencards from set 31 --- .../main/web/cards/{ => set30}/set30-fp.json | 0 .../web/cards/{ => set30}/set30-shadow.json | 0 .../web/cards/{ => set30}/set30-sites.json | 0 .../src/main/web/cards/set31/set31-fp.json | 425 ++++++++++++++++++ .../lotro/cards/set31/dwarven/Card31_001.java | 42 -- .../lotro/cards/set31/dwarven/Card31_002.java | 72 --- .../lotro/cards/set31/dwarven/Card31_003.java | 73 --- .../lotro/cards/set31/dwarven/Card31_004.java | 78 ---- .../lotro/cards/set31/dwarven/Card31_005.java | 56 --- .../lotro/cards/set31/dwarven/Card31_006.java | 62 --- .../lotro/cards/set31/dwarven/Card31_007.java | 75 ---- .../lotro/cards/set31/elven/Card31_008.java | 49 -- .../lotro/cards/set31/elven/Card31_009.java | 52 --- .../lotro/cards/set31/elven/Card31_010.java | 47 -- .../lotro/cards/set31/elven/Card31_011.java | 57 --- .../lotro/cards/set31/elven/Card31_012.java | 72 --- 16 files changed, 425 insertions(+), 735 deletions(-) rename gemp-lotr/gemp-lotr-async/src/main/web/cards/{ => set30}/set30-fp.json (100%) rename gemp-lotr/gemp-lotr-async/src/main/web/cards/{ => set30}/set30-shadow.json (100%) rename gemp-lotr/gemp-lotr-async/src/main/web/cards/{ => set30}/set30-sites.json (100%) create mode 100644 gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-fp.json delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_001.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_002.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_003.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_004.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_005.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_006.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_007.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_008.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_009.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_010.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_011.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_012.java diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30-fp.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-fp.json similarity index 100% rename from gemp-lotr/gemp-lotr-async/src/main/web/cards/set30-fp.json rename to gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-fp.json diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30-shadow.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-shadow.json similarity index 100% rename from gemp-lotr/gemp-lotr-async/src/main/web/cards/set30-shadow.json rename to gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-shadow.json diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30-sites.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-sites.json similarity index 100% rename from gemp-lotr/gemp-lotr-async/src/main/web/cards/set30-sites.json rename to gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-sites.json diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-fp.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-fp.json new file mode 100644 index 000000000..a77df4ff1 --- /dev/null +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-fp.json @@ -0,0 +1,425 @@ +{ + "31_1": { + "title": "Dwarven Axe", + "culture": "dwarven", + "cost": 1, + "type": "possession", + "possession": "hand weapon", + "strength": 2, + "target": "culture(dwarven),character", + "effects": { + "type": "modifier", + "modifier": { + "type": "addKeyword", + "filter": "bearer", + "condition": { + "type": "location", + "filter": "mountain" + }, + "keyword": "damage+1" + } + } + }, + "31_2": { + "title": "Dwarven Song", + "culture": "dwarven", + "cost": 3, + "type": "event", + "keyword": "regroup", + "effects": { + "type": "event", + "cost": { + "type": "discard", + "filter": "choose(culture(dwarven),follower,attachedTo(any))", + "memorize": "discardedFollower" + }, + "effect": { + "type": "choice", + "texts": [ + "Play possessions", + "Play artifacts" + ], + "effects": [ + { + "type": "duplicate", + "effect": { + "type": "playCardFromDrawDeck", + "filter": "choose(culture(dwarven),possession)" + }, + "amount": { + "type": "twilightCostInMemory", + "memory": "discardedFollower" + } + }, + { + "type": "duplicate", + "effect": { + "type": "playCardFromDrawDeck", + "filter": "choose(culture(dwarven),artifact)" + }, + "amount": { + "type": "twilightCostInMemory", + "memory": "discardedFollower" + } + } + ] + } + } + }, + "31_3": { + "title": "*Emeralds of Girion", + "culture": "dwarven", + "cost": 2, + "type": "artifact", + "keyword": "support area", + "effects": [ + { + "type": "activated", + "phase": "fellowship", + "cost": { + "type": "addTwilight", + "amount": 1 + }, + "effect": { + "type": "putStackedCardsIntoHand", + "filter": "choose(any)", + "on": "self" + } + }, + { + "type": "activated", + "phase": "regroup", + "cost": { + "type": "exert", + "filter": "choose(ally)" + }, + "effect": { + "type": "stackCardsFromHand", + "filter": "choose(culture(dwarven),event)", + "where": "self" + } + } + ] + }, + "31_4": { + "title": "*Great Barricade", + "culture": "dwarven", + "cost": 2, + "type": "possession", + "keyword": [ + "support area", + "fortification" + ], + "effects": [ + { + "type": "extraCost", + "cost": { + "type": "exert", + "filter": "choose(culture(dwarven),companion)" + } + }, + { + "type": "trigger", + "trigger": { + "type": "moves" + }, + "condition": { + "type": "phase", + "phase": "regroup" + }, + "effect": { + "type": "discard", + "filter": "self" + } + }, + { + "type": "modifier", + "modifier": { + "type": "modifyStrength", + "filter": "minion,inSkirmishAgainst(culture(dwarven),companion)", + "condition": { + "type": "location", + "filter": "siteNumber(7-8)" + }, + "amount": -3 + } + } + ] + }, + "31_5": { + "title": "*Mithril-coat", + "culture": "dwarven", + "cost": 2, + "type": "artifact", + "vitality": 1, + "target": "name(Bilbo)", + "effects": [ + { + "type": "modifier", + "modifier": { + "type": "modifyArcheryTotal", + "side": "shadow", + "amount": -1 + } + }, + { + "type": "modifier", + "modifier": { + "type": "modifyCost", + "condition": { + "type": "canSpot", + "filter": "bearer,inSkirmish" + }, + "filter": "side(shadow),event", + "amount": 2 + } + } + ] + }, + "31_6": { + "title": "*Oakenshield", + "culture": "dwarven", + "cost": 1, + "type": "possession", + "possession": "shield", + "strength": 1, + "target": "name(Thorin)", + "effects": [ + { + "type": "modifier", + "modifier": { + "type": "modifyCost", + "filter": "culture(dwarven),event", + "amount": -1 + } + }, + { + "type": "activatedTrigger", + "trigger": { + "type": "aboutToTakeWound", + "filter": "bearer" + }, + "cost": [ + { + "type": "memorize", + "filter": "bearer", + "memory": "bearer" + }, + { + "type": "discard", + "filter": "self" + } + ], + "effect": { + "type": "preventWound", + "filter": "choose(memory(bearer))" + } + } + ] + }, + "31_7": { + "title": "*The Arkenstone", + "culture": "dwarven", + "cost": 2, + "type": "artifact", + "keyword": "support area", + "effects": [ + { + "type": "modifier", + "modifier": { + "type": "modifyCost", + "filter": "name(Smaug)", + "amount": -4 + } + }, + { + "type": "activated", + "phase": "fellowship", + "cost": { + "type": "addTwilight", + "amount": 1 + }, + "effect": { + "type": "putStackedCardsIntoHand", + "filter": "choose(any)", + "on": "self" + } + }, + { + "type": "activated", + "phase": "maneuver", + "effect": { + "type": "stackCardsFromHand", + "filter": "choose(culture(dwarven))", + "where": "self" + } + } + ] + }, + "31_8": { + "title": "*Elf Army", + "culture": "elven", + "cost": 3, + "type": "ally", + "allyHome": "hobbit,5", + "race": "elf", + "strength": 7, + "vitality": 4, + "keyword": "archer", + "effects": { + "type": "activated", + "phase": "maneuver", + "condition": { + "type": "isMore", + "firstNumber": { + "type": "forEachYouCanSpot", + "filter": "minion" + }, + "secondNumber": { + "type": "forEachYouCanSpot", + "filter": "companion" + } + }, + "cost": { + "type": "exert", + "filter": "self" + }, + "effect": { + "type": "canParticipateInArcheryFireAndSkirmishes", + "filter": "self", + "until": "start(regroup)" + } + } + }, + "31_9": { + "title": "*Legolas", + "subtitle": "Prince of Mirkwood", + "culture": "elven", + "cost": 2, + "type": "ally", + "allyHome": "hobbit,5", + "race": "elf", + "strength": 6, + "vitality": 3, + "keyword": "archer", + "effects": { + "type": "activated", + "phase": "archery", + "condition": { + "type": "canSpot", + "filter": "orc" + }, + "cost": { + "type": "exert", + "filter": "self" + }, + "effect": { + "type": "modifyArcheryTotal", + "side": "free people", + "amount": { + "type": "condition", + "condition": { + "type": "location", + "filter": "or(river,forest)" + }, + "true": 2, + "false": 1 + } + } + } + }, + "31_10": { + "title": "*Tauriel", + "subtitle": "Staunch Defender", + "culture": "elven", + "cost": 2, + "type": "ally", + "allyHome": "hobbit,5", + "race": "elf", + "strength": 6, + "vitality": 3, + "keyword": "archer", + "effects": { + "type": "activated", + "phase": "maneuver", + "cost": { + "type": "exert", + "filter": "self" + }, + "effect": { + "type": "returnToHand", + "filter": "choose(orc,strengthLessThan(8))" + } + } + }, + "31_11": { + "title": "The Evil Becomes Stronger", + "culture": "elven", + "cost": 2, + "type": "event", + "keyword": "archery", + "effects": { + "type": "event", + "cost": { + "type": "spot", + "filter": "choose(culture(elven),archer,ally)", + "memorize": "chosenAlly" + }, + "effect": [ + { + "type": "exert", + "filter": "choose(minion)" + }, + { + "type": "modifyStrength", + "filter": "memory(chosenAlly)", + "amount": 2, + "until": "start(regroup)" + }, + { + "type": "canParticipateInArcheryFireAndSkirmishes", + "filter": "memory(chosenAlly)", + "until": "start(regroup)" + } + ] + } + }, + "31_12": { + "title": "*Thranduil", + "subtitle": "Elven King", + "culture": "elven", + "cost": 4, + "type": "ally", + "allyHome": "hobbit,5", + "race": "elf", + "strength": 9, + "vitality": 4, + "effects": { + "type": "activated", + "phase": "maneuver", + "cost": { + "type": "choice", + "texts": [ + "Exert Thorin twice", + "Discard a DWARVEN artifact" + ], + "effects": [ + { + "type": "exert", + "filter": "self", + "times": 2 + }, + { + "type": "discard", + "filter": "choose(culture(dwarven),artifact)" + } + ] + }, + "effect": { + "type": "canParticipateInArcheryFireAndSkirmishes", + "filter": "self", + "until": "start(regroup)" + } + } + } +} \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_001.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_001.java deleted file mode 100644 index 4b0e69c37..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_001.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.gempukku.lotro.cards.set31.dwarven; - -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Filterable; -import com.gempukku.lotro.common.Keyword; -import com.gempukku.lotro.common.PossessionClass; -import com.gempukku.lotro.filters.Filters; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession; -import com.gempukku.lotro.logic.modifiers.KeywordModifier; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.condition.LocationCondition; - -import java.util.Collections; -import java.util.List; - -/** - * Set: The Short Rest - * Side: Free - * Culture: Dwarven - * Twilight Cost: 1 - * Type: Possession • Hand Weapon - * Strength: +2 - * Game Text: Bearer must be a [DWARVEN] character. While bearer is at a mountain site, he is damage +1. - */ -public class Card31_001 extends AbstractAttachableFPPossession { - public Card31_001() { - super(1, 2, 0, Culture.DWARVEN, PossessionClass.HAND_WEAPON, "Dwarven Axe"); - } - - @Override - public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { - return Culture.DWARVEN; - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { - return Collections.singletonList( - new KeywordModifier(self, Filters.hasAttached(self), new LocationCondition(Keyword.MOUNTAIN), Keyword.DAMAGE, 1)); - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_002.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_002.java deleted file mode 100644 index 4fb650a39..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_002.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.gempukku.lotro.cards.set31.dwarven; - -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Phase; -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.actions.PlayEventAction; -import com.gempukku.lotro.logic.cardtype.AbstractEvent; -import com.gempukku.lotro.logic.decisions.MultipleChoiceAwaitingDecision; -import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; -import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect; -import com.gempukku.lotro.logic.effects.ShuffleDeckEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndPlayCardFromDeckEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndPutCardFromDeckIntoHandEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - - -/** - * Set: The Short Rest - * Side: Free - * Culture: Dwarven - * Twilight Cost: 3 - * Type: Event - * Game Text: Regroup: Discard an attached [DWARVEN] follower with a twilight cost of X to play X [DWARVEN] possessions - * or X [DWARVEN] artifacts from your draw deck. - */ -public class Card31_002 extends AbstractEvent { - public Card31_002() { - super(Side.FREE_PEOPLE, 3, Culture.DWARVEN, "Dwarven Song", Phase.REGROUP); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canDiscardFromPlay(self, game, Filters.and(Culture.DWARVEN, CardType.FOLLOWER), Filters.attachedTo(CardType.COMPANION)); - } - - @Override - public PlayEventAction getPlayEventCardAction(final String playerId, LotroGame game, PhysicalCard self) { - final PlayEventAction action = new PlayEventAction(self); - action.appendCost( - new ChooseActiveCardEffect(self, playerId, "Choose an attached Dwarven follower", Filters.and(Culture.DWARVEN, CardType.FOLLOWER), Filters.attachedTo(CardType.COMPANION)) { - @Override - protected void cardSelected(LotroGame game, final PhysicalCard follower) { - action.insertCost(new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, follower)); - final int twilightCost = follower.getBlueprint().getTwilightCost(); - action.appendEffect( - new PlayoutDecisionEffect(playerId, - new MultipleChoiceAwaitingDecision(1, "What would you like to do", new String[]{"Play " + twilightCost + " Dwarven artifacts", "Play " + twilightCost + " Dwarven possessions"}) { - @Override - protected void validDecisionMade(int index, String result) { - new ChooseAndPutCardFromDeckIntoHandEffect(action, playerId, 1, 1, Culture.GONDOR); - for (int i = 0; i < twilightCost; i++) { - if (index == 0) { - action.appendEffect( - new ChooseAndPlayCardFromDeckEffect(playerId, Culture.DWARVEN, CardType.ARTIFACT)); - } else { - action.appendEffect( - new ChooseAndPlayCardFromDeckEffect(playerId, Culture.DWARVEN, CardType.POSSESSION)); - } - } - action.appendEffect(new ShuffleDeckEffect(playerId)); - } - })); - } - }); - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_003.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_003.java deleted file mode 100644 index deb471c33..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_003.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.gempukku.lotro.cards.set31.dwarven; - -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Phase; -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.actions.ActivateCardAction; -import com.gempukku.lotro.logic.cardtype.AbstractPermanent; -import com.gempukku.lotro.logic.effects.AddTwilightEffect; -import com.gempukku.lotro.logic.effects.ChooseArbitraryCardsEffect; -import com.gempukku.lotro.logic.effects.PutCardFromStackedIntoHandEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndStackCardsFromHandEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -/** - * Set: The Short Rest - * Side: Free - * Culture: Dwarven - * Twilight Cost: 2 - * Type: Artifact • Support Area - * Game Text: Fellowship: Add (1) to take a card stacked here into hand. Regroup: Exert an ally to stack a [DWARVEN] - * event from hand on Emeralds of Girion. - */ -public class Card31_003 extends AbstractPermanent { - public Card31_003() { - super(Side.FREE_PEOPLE, 2, CardType.ARTIFACT, Culture.DWARVEN, "Emeralds of Girion", null, true); - } - - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self)) { - List stackedCards = game.getGameState().getStackedCards(self); - if (stackedCards.size() > 0) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new AddTwilightEffect(self, 1)); - action.appendEffect( - new ChooseArbitraryCardsEffect(playerId, "Choose card", stackedCards, 1, 1) { - @Override - protected void cardsSelected(LotroGame game, Collection selectedCards) { - for (PhysicalCard selectedCard : selectedCards) { - action.appendEffect( - new PutCardFromStackedIntoHandEffect(selectedCard)); - } - } - }); - return Collections.singletonList(action); - } - } - - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self) - && PlayConditions.canExert(self, game, CardType.ALLY)) { - if (Filters.filter(game.getGameState().getHand(playerId), game, - Culture.DWARVEN, CardType.EVENT).size() > 0) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost(new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.ALLY)); - action.appendEffect( - new ChooseAndStackCardsFromHandEffect(action, playerId, 1, 1, self, Culture.DWARVEN)); - return Collections.singletonList(action); - } - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_004.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_004.java deleted file mode 100644 index ddb988d54..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_004.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.gempukku.lotro.cards.set31.dwarven; - -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.RequiredTriggerAction; -import com.gempukku.lotro.logic.cardtype.AbstractPermanent; -import com.gempukku.lotro.logic.effects.SelfDiscardEffect; -import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier; -import com.gempukku.lotro.logic.modifiers.Condition; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.StrengthModifier; -import com.gempukku.lotro.logic.modifiers.cost.ExertExtraPlayCostModifier; -import com.gempukku.lotro.logic.timing.EffectResult; -import com.gempukku.lotro.logic.timing.PlayConditions; -import com.gempukku.lotro.logic.timing.TriggerConditions; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -/** - * Set: The Short Rest - * Side: Free - * Culture: Dwarven - * Twilight Cost: 2 - * Type: Possession • Support Area - * Game Text: Fortification. To play, exert a [DWARVEN] companion. If the fellowship moves during the regroup phase, - * discard this possession. At sites 7 and 8, each minion skirmishing a [DWARVEN] companion is strength -3. - */ -public class Card31_004 extends AbstractPermanent { - public Card31_004() { - super(Side.FREE_PEOPLE, 2, CardType.POSSESSION, Culture.DWARVEN, "Great Barricade", null, true); - addKeyword(Keyword.FORTIFICATION); - } - - @Override - public List getExtraCostToPlay(LotroGame game, PhysicalCard self) { - return Collections.singletonList( - new ExertExtraPlayCostModifier(self, self, null, Culture.DWARVEN, CardType.COMPANION)); - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { - return Arrays.asList( - new StrengthModifier(self, - Filters.and( - CardType.MINION, - Filters.inSkirmishAgainst( - Filters.and( - CardType.COMPANION, - Culture.DWARVEN - ) - ) - ), - new Condition() { - @Override - public boolean isFullfilled(LotroGame game) { - return (game.getGameState().getCurrentSiteNumber() == 7 || game.getGameState().getCurrentSiteNumber() == 8) - && game.getGameState().getCurrentSiteBlock() == SitesBlock.HOBBIT; - } - }, -3)); - } - - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.moves(game, effectResult) - && PlayConditions.isPhase(game, Phase.REGROUP)) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect( - new SelfDiscardEffect(self)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_005.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_005.java deleted file mode 100644 index 85c7e8bbc..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_005.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.gempukku.lotro.cards.set31.dwarven; - -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.PossessionClass; -import com.gempukku.lotro.common.Side; -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.cardtype.AbstractAttachableFPPossession; -import com.gempukku.lotro.logic.modifiers.ArcheryTotalModifier; -import com.gempukku.lotro.logic.modifiers.Condition; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; - -import java.util.LinkedList; -import java.util.List; - -/** - * Set: The Short Rest - * Side: Free - * Culture: Shire - * Twilight Cost: 2 - * Type: Artifact - * Vitality: +1 - * Game Text: Bearer must be Bilbo. The minion archery total is -1. While Bilbo is skirmishing, the twilight cost - * of each Shadow event is +2. - */ -public class Card31_005 extends AbstractAttachableFPPossession { - public Card31_005() { - super(2, 0, 1, Culture.DWARVEN, CardType.ARTIFACT, PossessionClass.ARMOR, "Mithril-coat", null, true); - } - - @Override - public Filter getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { - return Filters.name("Bilbo"); - } - - @Override - public List getInPlayModifiers(LotroGame game, final PhysicalCard self) { - List modifiers = new LinkedList(); - modifiers.add( - new ArcheryTotalModifier(self, Side.SHADOW, -1)); - modifiers.add( - new TwilightCostModifier(self, Filters.and(Side.SHADOW, CardType.EVENT), - new Condition() { - @Override - public boolean isFullfilled(LotroGame game) { - return game.getGameState().getSkirmish() != null - && game.getGameState().getSkirmish().getFellowshipCharacter() == self.getAttachedTo(); - } - }, 2)); - return modifiers; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_006.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_006.java deleted file mode 100644 index 2ed9a9249..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_006.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.gempukku.lotro.cards.set31.dwarven; - -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.PossessionClass; -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.cardtype.AbstractAttachableFPPossession; -import com.gempukku.lotro.logic.effects.PreventCardEffect; -import com.gempukku.lotro.logic.effects.SelfDiscardEffect; -import com.gempukku.lotro.logic.effects.WoundCharactersEffect; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; -import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.TriggerConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: The Short Rest - * Side: Free - * Culture: Dwarven - * Twilight Cost: 1 - * Type: Possession • Shield - * Strength: +1 - * Game Text: Bearer must be Thorin. The twilight cost of each [DWARVEN] event is -1. - * Response: If Thorin is about to take a wound, discard this possession to prevent that wound. - */ -public class Card31_006 extends AbstractAttachableFPPossession { - public Card31_006() { - super(1, 1, 0, Culture.DWARVEN, PossessionClass.SHIELD, "Oakenshield", null, true); - } - - @Override - public Filter getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { - return Filters.name("Thorin"); - } - - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { - return Collections.singletonList( - new TwilightCostModifier(self, Filters.and(Culture.DWARVEN, CardType.EVENT), -1)); - } - - @Override - public List getOptionalInPlayBeforeActions(String playerId, LotroGame game, Effect effect, PhysicalCard self) { - if (TriggerConditions.isGettingWounded(effect, game, Filters.hasAttached(self))) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new SelfDiscardEffect(self)); - action.appendEffect( - new PreventCardEffect((WoundCharactersEffect) effect, self.getAttachedTo())); - return Collections.singletonList(action); - } - return null; - } -} \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_007.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_007.java deleted file mode 100644 index 6a21960ad..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_007.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.gempukku.lotro.cards.set31.dwarven; - -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Phase; -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.actions.ActivateCardAction; -import com.gempukku.lotro.logic.cardtype.AbstractPermanent; -import com.gempukku.lotro.logic.effects.AddTwilightEffect; -import com.gempukku.lotro.logic.effects.ChooseArbitraryCardsEffect; -import com.gempukku.lotro.logic.effects.PutCardFromStackedIntoHandEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndStackCardsFromHandEffect; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -/** - * Set: The Short Rest - * Side: Free - * Culture: Dwarven - * Twilight Cost: 2 - * Type: Artifact • Support Area - * Game Text: Smaug's twilight cost is -4. Fellowship: Add (1) to take a card stacked here into hand. - * Maneuver: Stack a [DWARVEN] card from hand on The Arkenstone. - */ -public class Card31_007 extends AbstractPermanent { - public Card31_007() { - super(Side.FREE_PEOPLE, 2, CardType.ARTIFACT, Culture.DWARVEN, "The Arkenstone", null, true); - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { -return Collections.singletonList(new TwilightCostModifier(self, Filters.name("Smaug"), -4)); -} - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self)) { - List stackedCards = game.getGameState().getStackedCards(self); - if (stackedCards.size() > 0) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new AddTwilightEffect(self, 1)); - action.appendEffect( - new ChooseArbitraryCardsEffect(playerId, "Choose card", stackedCards, 1, 1) { - @Override - protected void cardsSelected(LotroGame game, Collection selectedCards) { - for (PhysicalCard selectedCard : selectedCards) { - action.appendEffect( - new PutCardFromStackedIntoHandEffect(selectedCard)); - } - } - }); - return Collections.singletonList(action); - } - } - - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.MANEUVER, self)) { - if (Filters.filter(game.getGameState().getHand(playerId), game, Culture.DWARVEN).size() > 0) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendEffect( - new ChooseAndStackCardsFromHandEffect(action, playerId, 1, 1, self, Culture.DWARVEN)); - return Collections.singletonList(action); - } - } - return null; - } -} \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_008.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_008.java deleted file mode 100644 index 1d3b90e31..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_008.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.gempukku.lotro.cards.set31.elven; - -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.cardtype.AbstractAlly; -import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect; -import com.gempukku.lotro.logic.effects.SelfExertEffect; -import com.gempukku.lotro.logic.modifiers.AllyParticipatesInArcheryFireAndSkirmishesModifier; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: The Short Rest - * Side: Free - * Culture: Elven - * Twilight Cost: 3 - * Type: Ally • Home 5 • Elf - * Strength: 7 - * Vitality: 4 - * Site: 5 - * Game Text: Archer. Maneuver: If you can spot more minions than companions, exert Elf Army to allow it - * to participate in archery fire and skirmishes until the regroup phase. - */ -public class Card31_008 extends AbstractAlly { - public Card31_008() { - super(3, SitesBlock.HOBBIT, 5, 7, 4, Race.ELF, Culture.ELVEN, "Elf Army", null, true); - addKeyword(Keyword.ARCHER); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.MANEUVER, self) - && PlayConditions.canSelfExert(self, game) - && Filters.countActive(game, CardType.MINION) > Filters.countActive(game, CardType.COMPANION)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost(new SelfExertEffect(action, self)); - action.appendEffect( - new AddUntilStartOfPhaseModifierEffect( - new AllyParticipatesInArcheryFireAndSkirmishesModifier(self, self), Phase.REGROUP)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_009.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_009.java deleted file mode 100644 index 147f8dd1a..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_009.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.gempukku.lotro.cards.set31.elven; - -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.cardtype.AbstractAlly; -import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect; -import com.gempukku.lotro.logic.effects.SelfExertEffect; -import com.gempukku.lotro.logic.modifiers.ArcheryTotalModifier; -import com.gempukku.lotro.logic.modifiers.condition.LocationCondition; -import com.gempukku.lotro.logic.modifiers.evaluator.ConditionEvaluator; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: The Short Rest - * Side: Free - * Culture: Elven - * Twilight Cost: 2 - * Type: Ally • Home 5 • Elf - * Strength: 6 - * Vitality: 3 - * Site: 5 - * Game Text: Archer. Archery: Spot an Orc and exert Legolas to make the fellowship archery total +1 - * (or +2 if at a river or forest) - */ -public class Card31_009 extends AbstractAlly { - public Card31_009() { - super(2, SitesBlock.HOBBIT, 5, 6, 3, Race.ELF, Culture.ELVEN, "Legolas", "Prince of Mirkwood", true); - addKeyword(Keyword.ARCHER); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.ARCHERY, self) - && PlayConditions.canExert(self, game, self) - && PlayConditions.canSpot(game, Race.ORC)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new SelfExertEffect(action, self)); - action.appendEffect( - new AddUntilEndOfPhaseModifierEffect( - new ArcheryTotalModifier(self, Side.FREE_PEOPLE, null, new ConditionEvaluator(1, 2, new LocationCondition(Filters.or(Keyword.RIVER, Keyword.FOREST)))))); - return Collections.singletonList(action); - } - return null; - } -} \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_010.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_010.java deleted file mode 100644 index a50d3bd82..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_010.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.gempukku.lotro.cards.set31.elven; - -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.cardtype.AbstractAlly; -import com.gempukku.lotro.logic.effects.SelfExertEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndReturnCardsToHandEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: The Short Rest - * Side: Free - * Culture: Elven - * Twilight Cost: 2 - * Type: Ally • Home 5 • Elf - * Strength: 6 - * Vitality: 3 - * Site: 5 - * Game Text: Archer. Maneuver: Exert Tauriel to return an Orc with strength 7 or less to its owner's hand. - */ -public class Card31_010 extends AbstractAlly { - public Card31_010() { - super(2, SitesBlock.HOBBIT, 5, 6, 3, Race.ELF, Culture.ELVEN, "Tauriel", "Staunch Defender", true); - addKeyword(Keyword.ARCHER); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.MANEUVER, self) - && PlayConditions.canExert(self, game, self) - && Filters.canSpot(game, CardType.MINION)) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new SelfExertEffect(action, self)); - action.appendEffect( - new ChooseAndReturnCardsToHandEffect(action, playerId, 1, 1, Race.ORC, Filters.lessStrengthThan(8))); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_011.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_011.java deleted file mode 100644 index 047013f31..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_011.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gempukku.lotro.cards.set31.elven; - -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.PlayEventAction; -import com.gempukku.lotro.logic.cardtype.AbstractEvent; -import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect; -import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.modifiers.AllyParticipatesInArcheryFireAndSkirmishesModifier; -import com.gempukku.lotro.logic.modifiers.StrengthModifier; -import com.gempukku.lotro.logic.timing.PlayConditions; - -/** - * Set: The Short Rest - * Side: Free - * Culture: Elven - * Twilight Cost: 2 - * Type: Event - * Game Text: Archery: Spot an [ELVEN] archer ally to exert a minion. Until the regroup phase, that ally is - * strength +2 and participates in archery fire and skirmishes. - */ -public class Card31_011 extends AbstractEvent { - public Card31_011() { - super(Side.FREE_PEOPLE, 2, Culture.ELVEN, "The Evil Becomes Stronger", Phase.ARCHERY); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Race.ELF, CardType.ALLY); - } - - @Override - public PlayEventAction getPlayEventCardAction(final String playerId, LotroGame game, final PhysicalCard self) { - if (Filters.canSpot(game, Culture.ELVEN, Keyword.ARCHER, CardType.ALLY)) { - final PlayEventAction action = new PlayEventAction(self); - action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose an Ally", Culture.ELVEN, Keyword.ARCHER, CardType.ALLY) { - @Override - protected void cardSelected(LotroGame game, PhysicalCard card) { - action.insertEffect( - new AddUntilStartOfPhaseModifierEffect( - new StrengthModifier(self, Filters.sameCard(card), 2), Phase.REGROUP)); - action.insertEffect( - new AddUntilStartOfPhaseModifierEffect( - new AllyParticipatesInArcheryFireAndSkirmishesModifier(self, card), Phase.REGROUP)); - } - }); - action.appendEffect( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.MINION)); - return action; - } - return null; - } -} \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_012.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_012.java deleted file mode 100644 index 34bdc72a6..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/elven/Card31_012.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.gempukku.lotro.cards.set31.elven; - -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.cardtype.AbstractAlly; -import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect; -import com.gempukku.lotro.logic.effects.ChoiceEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.modifiers.AllyParticipatesInArcheryFireAndSkirmishesModifier; -import com.gempukku.lotro.logic.modifiers.CantTakeArcheryWoundsModifier; -import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -/** - * Set: The Short Rest - * Side: Free - * Culture: Elven - * Twilight Cost: 4 - * Type: Ally • Home 5 • Elf - * Strength: 9 - * Vitality: 4 - * Site: 5 - * Game Text: Maneuver: Exert Thorin twice or discard a [DWARVEN] artifact to allow Thranduil - * to participate in skirmishes until the regroup phase. - */ -public class Card31_012 extends AbstractAlly { - public Card31_012() { - super(4, SitesBlock.HOBBIT, 5, 9, 4, Race.ELF, Culture.ELVEN, "Thranduil", "Elven King", true); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.MANEUVER, self) - && (PlayConditions.canExert(self, game, 2, Filters.name("Thorin")) - || PlayConditions.canDiscardFromPlay(self, game, Culture.DWARVEN, CardType.ARTIFACT))) { - ActivateCardAction action = new ActivateCardAction(self); - List possibleCosts = new LinkedList(); - possibleCosts.add( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, 2, Filters.name("Thorin")) { - @Override - public String getText(LotroGame game) { - return "Exert Thorin twice"; - } - }); - possibleCosts.add( - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Culture.DWARVEN, CardType.ARTIFACT) { - @Override - public String getText(LotroGame game) { - return "Discard a DWARVEN artifact"; - } - }); - action.appendCost( - new ChoiceEffect(action, playerId, possibleCosts)); - action.appendEffect( - new AddUntilStartOfPhaseModifierEffect( - new AllyParticipatesInArcheryFireAndSkirmishesModifier(self, self), Phase.REGROUP)); - action.appendEffect( - new AddUntilStartOfPhaseModifierEffect( - new CantTakeArcheryWoundsModifier(self, self), Phase.ASSIGNMENT)); - return Collections.singletonList(action); - } - return null; - } -}