Dwarven and Elvencards from set 31

This commit is contained in:
marcin.sciesinski
2019-10-02 17:12:32 -07:00
parent 947b1e0044
commit 6b2ad74437
16 changed files with 425 additions and 735 deletions

View File

@@ -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)"
}
}
}
}

View File

@@ -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<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new KeywordModifier(self, Filters.hasAttached(self), new LocationCondition(Keyword.MOUNTAIN), Keyword.DAMAGE, 1));
}
}

View File

@@ -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;
}
}

View File

@@ -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<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self)) {
List<PhysicalCard> 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<PhysicalCard> 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;
}
}

View File

@@ -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<? extends AbstractExtraPlayCostModifier> getExtraCostToPlay(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new ExertExtraPlayCostModifier(self, self, null, Culture.DWARVEN, CardType.COMPANION));
}
@Override
public List<? extends Modifier> 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<RequiredTriggerAction> 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;
}
}

View File

@@ -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<? extends Modifier> getInPlayModifiers(LotroGame game, final PhysicalCard self) {
List<Modifier> modifiers = new LinkedList<Modifier>();
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;
}
}

View File

@@ -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<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new TwilightCostModifier(self, Filters.and(Culture.DWARVEN, CardType.EVENT), -1));
}
@Override
public List<? extends ActivateCardAction> 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;
}
}

View File

@@ -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<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(new TwilightCostModifier(self, Filters.name("Smaug"), -4));
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self)) {
List<PhysicalCard> 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<PhysicalCard> 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;
}
}

View File

@@ -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<? extends ActivateCardAction> 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;
}
}

View File

@@ -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<? extends ActivateCardAction> 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;
}
}

View File

@@ -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<? extends ActivateCardAction> 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;
}
}

View File

@@ -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;
}
}

View File

@@ -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<? extends ActivateCardAction> 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<Effect> possibleCosts = new LinkedList<Effect>();
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;
}
}