From 5379d4ea36ec86dea44b802b8de2fb338b12b140 Mon Sep 17 00:00:00 2001 From: MarcinSc Date: Thu, 16 May 2024 17:55:37 +0700 Subject: [PATCH] Migrated Elven cards in set 10 to hjson --- .../lotro/cards/set10/elven/Card10_004.java | 54 --- .../lotro/cards/set10/elven/Card10_005.java | 59 --- .../lotro/cards/set10/elven/Card10_006.java | 43 --- .../lotro/cards/set10/elven/Card10_007.java | 75 ---- .../lotro/cards/set10/elven/Card10_008.java | 61 --- .../lotro/cards/set10/elven/Card10_009.java | 70 ---- .../lotro/cards/set10/elven/Card10_010.java | 38 -- .../lotro/cards/set10/elven/Card10_011.java | 53 --- .../lotro/cards/set10/elven/Card10_012.java | 53 --- .../lotro/cards/set10/elven/Card10_013.java | 56 --- .../official/set10}/set10-Elven.hjson | 352 +++++++++++++----- .../field/effect/EffectAppenderFactory.java | 2 +- ...k.java => DiscardBottomCardsFromDeck.java} | 2 +- 13 files changed, 253 insertions(+), 665 deletions(-) delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_004.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_005.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_006.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_007.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_008.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_009.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_010.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_011.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_012.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_013.java rename gemp-lotr/gemp-lotr-cards/src/main/resources/{card-stubs => cards/official/set10}/set10-Elven.hjson (55%) rename gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/{DiscardBottomCardFromDeck.java => DiscardBottomCardsFromDeck.java} (97%) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_004.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_004.java deleted file mode 100644 index 23ce81bc3..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_004.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gempukku.lotro.cards.set10.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.AbstractCompanion; -import com.gempukku.lotro.logic.effects.ForEachYouSpotEffect; -import com.gempukku.lotro.logic.effects.SelfExertEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Mount Doom - * Side: Free - * Culture: Elven - * Twilight Cost: 2 - * Type: Companion • Elf - * Strength: 6 - * Vitality: 3 - * Resistance: 6 - * Game Text: Skirmish: Exert Aegnor to make a minion skirmishing an unbound [ELVEN] companion strength -1 for each - * archer you spot. - */ -public class Card10_004 extends AbstractCompanion { - public Card10_004() { - super(2, 6, 3, 6, Culture.ELVEN, Race.ELF, null, "Aegnor", "Elven Escort", true); - } - - @Override - public List getPhaseActionsInPlay(final String playerId, final LotroGame game, final PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) - && PlayConditions.canSelfExert(self, game)) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new SelfExertEffect(action, self)); - action.appendEffect( - new ForEachYouSpotEffect(playerId, Keyword.ARCHER) { - @Override - protected void spottedCards(int spotCount) { - action.insertEffect( - new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, -spotCount, CardType.MINION, Filters.inSkirmishAgainst(Culture.ELVEN, Filters.unboundCompanion))); - } - }); - return Collections.singletonList(action); - } - - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_005.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_005.java deleted file mode 100644 index 249b8ab12..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_005.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.gempukku.lotro.cards.set10.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.AbstractCompanion; -import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect; -import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect; -import com.gempukku.lotro.logic.effects.DiscardBottomCardFromDeckEffect; -import com.gempukku.lotro.logic.modifiers.StrengthModifier; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -/** - * Set: Mount Doom - * Side: Free - * Culture: Elven - * Twilight Cost: 2 - * Type: Companion • Elf - * Strength: 6 - * Vitality: 3 - * Resistance: 6 - * Signet: Aragorn - * Game Text: Skirmish: Discard a card from hand to discard the bottom card of your draw deck. If the bottom card was - * an [ELVEN] card, each minion skirmishing Arwen is strength -3. - */ -public class Card10_005 extends AbstractCompanion { - public Card10_005() { - super(2, 6, 3, 6, Culture.ELVEN, Race.ELF, Signet.ARAGORN, "Arwen", "Echo of Lúthien", true); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) - && PlayConditions.canDiscardFromHand(game, playerId, 1, Filters.any)) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 1)); - action.appendEffect( - new DiscardBottomCardFromDeckEffect(self, playerId, 1, false) { - @Override - protected void cardsDiscardedCallback(Collection cards) { - for (final PhysicalCard card : cards) - if (card.getBlueprint().getCulture() == Culture.ELVEN) { - action.appendEffect( - new AddUntilEndOfPhaseModifierEffect(new StrengthModifier(self, Filters.and(CardType.MINION, Filters.inSkirmishAgainst(self)), -3))); - } - } - }); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_006.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_006.java deleted file mode 100644 index 023d72f03..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_006.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.gempukku.lotro.cards.set10.elven; - -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Race; -import com.gempukku.lotro.common.Signet; -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.AbstractCompanion; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.StrengthModifier; -import com.gempukku.lotro.logic.modifiers.evaluator.CountActiveEvaluator; -import com.gempukku.lotro.logic.modifiers.evaluator.MultiplyEvaluator; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Mount Doom - * Side: Free - * Culture: Elven - * Twilight Cost: 2 - * Type: Companion • Elf - * Strength: 6 - * Vitality: 3 - * Resistance: 6 - * Signet: Frodo - * Game Text: Each minion skirmishing Arwen is strength -2 for each wounded minion you can spot. - */ -public class Card10_006 extends AbstractCompanion { - public Card10_006() { - super(2, 6, 3, 6, Culture.ELVEN, Race.ELF, Signet.FRODO, "Arwen", "Queen of Elves and Men", true); - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { - return Collections.singletonList( - new StrengthModifier(self, - Filters.and(CardType.MINION, Filters.inSkirmishAgainst(self)), null, - new MultiplyEvaluator(-2, new CountActiveEvaluator(CardType.MINION, Filters.wounded)))); - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_007.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_007.java deleted file mode 100644 index 60b5d21ab..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_007.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.gempukku.lotro.cards.set10.elven; - -import com.gempukku.lotro.logic.cardtype.AbstractCompanion; -import com.gempukku.lotro.logic.timing.TriggerConditions; -import com.gempukku.lotro.logic.effects.DiscardCardFromDeckEffect; -import com.gempukku.lotro.logic.effects.OptionalEffect; -import com.gempukku.lotro.logic.effects.RevealTopCardsOfDrawDeckEffect; -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Race; -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.WoundCharactersEffect; -import com.gempukku.lotro.logic.timing.EffectResult; -import com.gempukku.lotro.logic.timing.UnrespondableEffect; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Mount Doom - * Side: Free - * Culture: Elven - * Twilight Cost: 2 - * Type: Companion • Elf - * Strength: 6 - * Vitality: 3 - * Resistance: 6 - * Game Text: At the start of each skirmish involving Celeborn, you may reveal the top card of your draw deck. If it is - * an [ELVEN] card, you may discard it to wound each minion in that skirmish. - */ -public class Card10_007 extends AbstractCompanion { - public Card10_007() { - super(2, 6, 3, 6, Culture.ELVEN, Race.ELF, null, "Celeborn", "Lord of the Galadhrim", true); - } - - @Override - public List getOptionalAfterTriggers(final String playerId, LotroGame game, EffectResult effectResult, final PhysicalCard self) { - if (TriggerConditions.startOfPhase(game, effectResult, Phase.SKIRMISH) - && Filters.inSkirmish.accepts(game, self)) { - final OptionalTriggerAction action = new OptionalTriggerAction(self); - action.appendCost( - new RevealTopCardsOfDrawDeckEffect(self, playerId, 1) { - @Override - protected void cardsRevealed(List revealedCards) { - for (final PhysicalCard card : revealedCards) { - if (card.getBlueprint().getCulture() == Culture.ELVEN) { - action.insertCost( - new OptionalEffect(action, playerId, - new UnrespondableEffect() { - @Override - public String getText(LotroGame game) { - return "Discard revealed card"; - } - - @Override - protected void doPlayEffect(LotroGame game) { - action.insertCost( - new DiscardCardFromDeckEffect(card)); - action.appendEffect( - new WoundCharactersEffect(self, CardType.MINION, Filters.inSkirmish)); - } - })); - } - } - } - }); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_008.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_008.java deleted file mode 100644 index fd0297752..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_008.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gempukku.lotro.cards.set10.elven; - -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Race; -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.AbstractCompanion; -import com.gempukku.lotro.logic.effects.SelfExertEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; -import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Mount Doom - * Side: Free - * Culture: Elven - * Twilight Cost: 4 - * Type: Companion • Elf - * Strength: 7 - * Vitality: 4 - * Resistance: 6 - * Game Text: To play, spot 2 Elves. Skirmish: Exert Cirdan to make a minion he is skirmishing strength -1 for each - * [ELVEN] event in your discard pile. - */ -public class Card10_008 extends AbstractCompanion { - public Card10_008() { - super(4, 7, 4, 6, Culture.ELVEN, Race.ELF, null, "Círdan", "The Shipwright", true); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, 2, Race.ELF); - } - - @Override - public List getPhaseActionsInPlay(final String playerId, final LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) - && PlayConditions.canSelfExert(self, game)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new SelfExertEffect(action, self)); - action.appendEffect( - new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, - new Evaluator() { - @Override - public int evaluateExpression(LotroGame game, PhysicalCard cardAffected) { - return -Filters.filter(game.getGameState().getDiscard(playerId), game, CardType.EVENT, Culture.ELVEN).size(); - } - }, CardType.MINION, Filters.inSkirmishAgainst(self))); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_009.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_009.java deleted file mode 100644 index 6f9daa44a..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_009.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.gempukku.lotro.cards.set10.elven; - -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Race; -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.cardtype.AbstractCompanion; -import com.gempukku.lotro.logic.effects.ChooseAndHealCharactersEffect; -import com.gempukku.lotro.logic.effects.OptionalEffect; -import com.gempukku.lotro.logic.effects.RevealTopCardsOfDrawDeckEffect; -import com.gempukku.lotro.logic.timing.EffectResult; -import com.gempukku.lotro.logic.timing.PlayConditions; -import com.gempukku.lotro.logic.timing.TriggerConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Mount Doom - * Side: Free - * Culture: Elven - * Twilight Cost: 4 - * Type: Companion • Elf - * Strength: 8 - * Vitality: 4 - * Resistance: 6 - * Game Text: To play, spot an Elf. At the start of each skirmish involving Elrond, you may reveal the top card of your - * draw deck. If it is an [ELVEN] card, you may heal another Elf. - */ -public class Card10_009 extends AbstractCompanion { - public Card10_009() { - super(4, 8, 4, 6, Culture.ELVEN, Race.ELF, null, "Elrond", "Venerable Lord", true); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Race.ELF); - } - - @Override - public List getOptionalAfterTriggers(final String playerId, LotroGame game, EffectResult effectResult, final PhysicalCard self) { - if (TriggerConditions.startOfPhase(game, effectResult, Phase.SKIRMISH) - && Filters.inSkirmish.accepts(game, self)) { - final OptionalTriggerAction action = new OptionalTriggerAction(self); - action.appendEffect( - new RevealTopCardsOfDrawDeckEffect(self, playerId, 1) { - @Override - protected void cardsRevealed(List revealedCards) { - for (PhysicalCard card : revealedCards) { - if (card.getBlueprint().getCulture() == Culture.ELVEN) { - action.appendEffect( - new OptionalEffect(action, playerId, - new ChooseAndHealCharactersEffect(action, playerId, 1, 1, Filters.not(self), Race.ELF) { - @Override - public String getText(LotroGame game) { - return "Heal another Elf"; - } - })); - } - } - } - }); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_010.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_010.java deleted file mode 100644 index 05a149cee..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_010.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gempukku.lotro.cards.set10.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.OptionalEffect; -import com.gempukku.lotro.logic.effects.PutPlayedEventOnTopOfDeckEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; - -/** - * Set: Mount Doom - * Side: Free - * Culture: Elven - * Twilight Cost: 1 - * Type: Event • Skirmish - * Game Text: Make a minion skirmishing an Elf strength -2. Spot a site in a support area to place this event on top - * of your draw deck. - */ -public class Card10_010 extends AbstractEvent { - public Card10_010() { - super(Side.FREE_PEOPLE, 1, Culture.ELVEN, "Fleet-footed", Phase.SKIRMISH); - } - - @Override - public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, final PhysicalCard self) { - final PlayEventAction action = new PlayEventAction(self); - action.appendEffect( - new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, -2, CardType.MINION, Filters.inSkirmishAgainst(Race.ELF))); - if (Filters.canSpot(game, CardType.SITE, Zone.SUPPORT)) - action.appendEffect( - new OptionalEffect(action, playerId, - new PutPlayedEventOnTopOfDeckEffect(self))); - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_011.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_011.java deleted file mode 100644 index ce3c6f599..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_011.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.gempukku.lotro.cards.set10.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.AbstractCompanion; -import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Mount Doom - * Side: Free - * Culture: Elven - * Twilight Cost: 3 - * Type: Companion • Elf - * Strength: 3 - * Vitality: 3 - * Resistance: 6 - * Game Text: When Galadriel is in your starting fellowship, her twilight cost is -3. Fellowship or Regroup: Discard - * an [ELVEN] event from hand to discard a Shadow condition or Shadow possession. - */ -public class Card10_011 extends AbstractCompanion { - public Card10_011() { - super(3, 3, 3, 6, Culture.ELVEN, Race.ELF, null, "Galadriel", "Lady Redeemed", true); - } - - @Override - public int getTwilightCostModifier(LotroGame game, PhysicalCard self, PhysicalCard target) { - if (game.getGameState().getCurrentPhase() == Phase.PLAY_STARTING_FELLOWSHIP) - return -3; - return 0; - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if ((PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self) || PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self)) - && PlayConditions.canDiscardFromHand(game, playerId, 1, Culture.ELVEN, CardType.EVENT)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 1, Culture.ELVEN, CardType.EVENT)); - action.appendEffect( - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Side.SHADOW, Filters.or(CardType.CONDITION, CardType.POSSESSION))); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_012.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_012.java deleted file mode 100644 index 3a301503b..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_012.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.gempukku.lotro.cards.set10.elven; - -import com.gempukku.lotro.common.*; -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.AddUntilStartOfPhaseModifierEffect; -import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; -import com.gempukku.lotro.logic.modifiers.StrengthModifier; -import com.gempukku.lotro.logic.timing.EffectResult; -import com.gempukku.lotro.logic.timing.PlayConditions; -import com.gempukku.lotro.logic.timing.TriggerConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Mount Doom - * Side: Free - * Culture: Elven - * Twilight Cost: 0 - * Type: Condition • Support Area - * Game Text: To play, spot 2 Elves. Each time you lose initiative, make a minion strength -4 until the regroup phase. - */ -public class Card10_012 extends AbstractPermanent { - public Card10_012() { - super(Side.FREE_PEOPLE, 0, CardType.CONDITION, Culture.ELVEN, "Glimpse of Fate", null, true); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, 2, Race.ELF); - } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, final PhysicalCard self) { - if (TriggerConditions.losesInitiative(effectResult, Side.FREE_PEOPLE)) { - final RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect( - new ChooseActiveCardEffect(self, self.getOwner(), "Choose a minion", CardType.MINION) { - @Override - protected void cardSelected(LotroGame game, PhysicalCard card) { - action.insertEffect( - new AddUntilStartOfPhaseModifierEffect( - new StrengthModifier(self, card, -4), Phase.REGROUP)); - } - }); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_013.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_013.java deleted file mode 100644 index c13ea14da..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_013.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.gempukku.lotro.cards.set10.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.AbstractAttachableFPPossession; -import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect; -import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; -import com.gempukku.lotro.logic.effects.SelfDiscardEffect; -import com.gempukku.lotro.logic.modifiers.RemoveGameTextModifier; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Mount Doom - * Side: Free - * Culture: Elven - * Twilight Cost: 0 - * Type: Artifact - * Game Text: Bearer must be a Hobbit. Skirmish: Until the regroup phase, remove the game text (except card type - * and race) from a minion skirmishing bearer and make it unable to gain game text. Discard this artifact. - */ -public class Card10_013 extends AbstractAttachableFPPossession { - public Card10_013() { - super(0, 0, 0, Culture.ELVEN, CardType.ARTIFACT, null, "Phial of Galadriel", "Star-glass", true); - } - - @Override - public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { - return Race.HOBBIT; - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose a minion", CardType.MINION, Filters.inSkirmishAgainst(self.getAttachedTo())) { - @Override - protected void cardSelected(LotroGame game, PhysicalCard card) { - action.appendEffect( - new AddUntilStartOfPhaseModifierEffect( - new RemoveGameTextModifier(self, card), Phase.REGROUP)); - } - }); - action.appendEffect( - new SelfDiscardEffect(self)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set10-Elven.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set10/set10-Elven.hjson similarity index 55% rename from gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set10-Elven.hjson rename to gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set10/set10-Elven.hjson index f11503d83..853b34118 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set10-Elven.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set10/set10-Elven.hjson @@ -26,17 +26,32 @@ strength: 6 vitality: 3 resistance: 6 - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: activated + phase: skirmish + cost: { + type: exert + filter: self + } + effect: [ + { + type: chooseHowManyToSpot + filter: archer + memorize: spotCount + } + { + type: modifyStrength + filter: choose(minion,inSkirmishAgainst(culture(elven),companion)) + amount: { + type: fromMemory + memory: spotCount + multiplier: -1 + } + } + ] + } + ] gametext: Skirmish: Exert Aegnor to make a minion skirmishing an unbound [elven] companion strength -1 for each archer you spot. lore: Affectionately referred to as 'Figwit' by his contemporaries in Rivendell. promotext: "" @@ -75,17 +90,36 @@ vitality: 3 signet: Aragorn resistance: 6 - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: activated + phase: skirmish + cost: { + type: discardFromHand + forced: false + } + effect: [ + { + type: discardBottomCardsFromDeck + memorize: discardedCard + forced: false + } + { + type: conditional + requires: { + type: memoryMatches + memory: discardedCard + filter: culture(elven) + } + effect: { + type: modifyStrength + filter: all(minion,inSkirmishAgainst(self)) + amount: -3 + } + } + ] + } + ] gametext: Skirmish: Discard a card from hand to discard the bottom card of your draw deck. If the bottom card was an [elven] card, each minion skirmishing Arwen is strength -3. lore: ...mine is the choice of Lúthien, and as she so have I chosen, both the sweet and the bitter.' promotext: "" @@ -124,17 +158,20 @@ vitality: 3 signet: Frodo resistance: 6 - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: modifier + modifier: { + type: modifyStrength + filter: minion,inSkirmishAgainst(self) + amount: { + type: forEachYouCanSpot + filter: wounded,minion + multiplier: -2 + } + } + } + ] gametext: Each minion skirmishing Arwen is strength -2 for each wounded minion you can spot. lore: Often is it seen," said Aragorn, "that in dangerous days men hide their chief treasure."'" promotext: "" @@ -172,17 +209,49 @@ strength: 6 vitality: 3 resistance: 6 - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: trigger + optional: true + trigger: { + type: startOfPhase + phase: skirmish + } + requires: { + type: canSpot + filter: self,inSkirmish + } + effect: [ + { + type: revealTopCardsOfDrawDeck + memorize: revealedCard + } + { + type: conditional + requires: { + type: memoryMatches + memory: revealedCard + filter: culture(elven) + } + effect: { + type: optional + text: Discard the card? + effect: { + type: costToEffect + cost: { + type: discardCardsFromDrawDeck + filter: memory(revealedCard) + } + effect: { + type: wound + filter: all(minion,inSkirmish) + } + } + } + } + ] + } + ] gametext: At the start of each skirmish involving Celeborn, you may reveal the top card of your draw deck. If it is an [elven] card, you may discard it to wound each minion in that skirmish. lore: ...with him went the last living memory of the Elder Days in Middle-earth. promotext: "" @@ -220,17 +289,33 @@ strength: 7 vitality: 4 resistance: 6 - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: toPlay + requires: { + type: canSpot + filter: elf + count: 2 + } + } + { + type: activated + phase: skirmish + cost: { + type: exert + filter: self + } + effect: { + type: modifyStrength + filter: choose(minion,inSkirmishAgainst(self)) + amount: { + type: forEachInDiscard + filter: your,culture(elven),event + multiplier: -1 + } + } + } + ] gametext: To play, spot 2 Elves.
Skirmish: Exert Círdan to make a minion he is skirmishing strength -1 for each [elven] event in your discard pile. lore: ...he was grey and old, save that his eyes were keen as stars.... promotext: "" @@ -268,17 +353,46 @@ strength: 8 vitality: 4 resistance: 6 - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: toPlay + requires: { + type: canSpot + filter: elf + } + } + { + type: trigger + optional: true + trigger: { + type: startOfPhase + phase: skirmish + } + requires: { + type: canSpot + filter: self,inSkirmish + } + effect: [ + { + type: revealTopCardsOfDrawDeck + memorize: revealedCard + } + { + type: conditional + requires: { + type: memoryMatches + memory: revealedCard + filter: culture(elven) + } + effect: { + type: heal + filter: choose(another,elf) + count: 0-1 + } + } + ] + } + ] gametext: To play, spot an Elf.
At the start of each skirmish involving Elrond, you may reveal the top card of your draw deck. If it is an [elven] card, you may heal another Elf. lore: To me then even our victory can bring only sorrow and parting – but to you hope of joy for a while.' promotext: "" @@ -312,20 +426,23 @@ twilight: 1 type: Event keywords: Skirmish - /*requires: { - - } - */ effects: { type: event - cost: { - type: SendMessage - text: Placeholder effect for development. - }, effect: [ { - type: SendMessage - text: Placeholder effect for development. + type: modifyStrength + filter: choose(minion,inSkirmishAgainst(elf)) + amount: -2 + } + { + type: conditional + requires: { + type: canSpot + filter: site,zone(support) + } + effect: { + type: putPlayedEventOnTopOfDrawDeck + } } ] } @@ -366,17 +483,32 @@ strength: 3 vitality: 3 resistance: 6 - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: modifyOwnCost + requires: { + type: phase + phase: play starting fellowship + } + amount: -3 + } + { + type: activated + phase: [ + fellowship + regroup + ] + cost: { + type: discardFromHand + forced: false + filter: choose(culture(elven),event) + } + effect: { + type: discard + filter: choose(side(shadow),or(condition,possession)) + } + } + ] gametext: When Galadriel is in your starting fellowship, her twilight cost is -3.
Fellowship or Regroup: Discard an [elven] event from hand to discard a Shadow condition or Shadow possession. lore: I pass the test,' she said. 'I will diminish, and go into the West, and remain Galadriel.' promotext: "" @@ -410,17 +542,29 @@ twilight: 0 type: Condition keywords: Support Area - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: toPlay + requires: { + type: canSpot + filter: elf + count: 2 + } + } + { + type: trigger + trigger: { + type: losesInitiative + side: free people + } + effect: { + type: modifyStrength + filter: choose(minion) + amount: -4 + until: regroup + } + } + ] gametext: To play, spot 2 Elves.
Each time you lose initiative, make a minion strength -4 until the regroup phase. lore: The uttermost choice is before you: to repent and go to the Havens... or else to abide the Doom of Men.' promotext: "" @@ -454,18 +598,24 @@ culture: Elven twilight: 0 type: Artifact - #target: a Hobbit - /*requires: { - - } + target: hobbit effects: [ - { - - } - { - - } - ]*/ + { + type: activated + phase: skirmish + effect: [ + { + type: removeText + filter: choose(minion,inSkirmishAgainst(bearer)) + until: regroup + } + { + type: discard + filter: self + } + ] + } + ] gametext: Bearer must be a Hobbit.
Skirmish: Until the regroup phase, remove the game text (except card type and race) from a minion skirmishing bearer and make it unable to gain game text. Discard this artifact. lore: ...the hand that held it sparkled with white fire. promotext: "" diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/EffectAppenderFactory.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/EffectAppenderFactory.java index 51671333f..c1aa23b0e 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/EffectAppenderFactory.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/EffectAppenderFactory.java @@ -57,7 +57,7 @@ public class EffectAppenderFactory { effectAppenderProducers.put("disablewoundsover", new DisableWoundsOver()); effectAppenderProducers.put("disablewounds", new DisableWounds()); effectAppenderProducers.put("discard", new DiscardFromPlay()); - effectAppenderProducers.put("discardbottomcardsfromdeck", new DiscardBottomCardFromDeck()); + effectAppenderProducers.put("discardbottomcardsfromdeck", new DiscardBottomCardsFromDeck()); effectAppenderProducers.put("discardcardatrandomfromhand", new DiscardCardAtRandomFromHand()); effectAppenderProducers.put("discardcardsfromdrawdeck", new DiscardCardsFromDrawDeck()); effectAppenderProducers.put("discardfromhand", new DiscardFromHand()); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DiscardBottomCardFromDeck.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DiscardBottomCardsFromDeck.java similarity index 97% rename from gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DiscardBottomCardFromDeck.java rename to gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DiscardBottomCardsFromDeck.java index 7aee59e1c..55e39db9f 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DiscardBottomCardFromDeck.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DiscardBottomCardsFromDeck.java @@ -15,7 +15,7 @@ import org.json.simple.JSONObject; import java.util.Collection; -public class DiscardBottomCardFromDeck implements EffectAppenderProducer { +public class DiscardBottomCardsFromDeck implements EffectAppenderProducer { @Override public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { FieldUtils.validateAllowedFields(effectObject, "deck", "count", "forced", "memorize");