From 28fec9a8f2971c2504694bdb3547ceeaeaec0f22 Mon Sep 17 00:00:00 2001 From: MarcinSc Date: Fri, 17 May 2024 01:37:34 +0700 Subject: [PATCH] Migrated Gandalf cards in set 11 to hjson --- .../lotro/cards/set11/gandalf/Card11_028.java | 65 --- .../lotro/cards/set11/gandalf/Card11_029.java | 40 -- .../lotro/cards/set11/gandalf/Card11_030.java | 50 --- .../lotro/cards/set11/gandalf/Card11_031.java | 50 --- .../lotro/cards/set11/gandalf/Card11_032.java | 35 -- .../lotro/cards/set11/gandalf/Card11_033.java | 45 -- .../lotro/cards/set11/gandalf/Card11_034.java | 62 --- .../lotro/cards/set11/gandalf/Card11_035.java | 47 -- .../lotro/cards/set11/gandalf/Card11_036.java | 49 --- .../lotro/cards/set11/gandalf/Card11_037.java | 66 --- .../lotro/cards/set11/gandalf/Card11_038.java | 39 -- .../lotro/cards/set11/gandalf/Card11_039.java | 46 -- .../lotro/cards/set11/gandalf/Card11_040.java | 56 --- .../official/set11}/set11-Gandalf.hjson | 408 ++++++++++++------ .../appender/resolver/ValueResolver.java | 6 +- 15 files changed, 272 insertions(+), 792 deletions(-) delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_028.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_029.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_030.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_031.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_032.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_033.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_034.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_035.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_036.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_037.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_038.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_039.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_040.java rename gemp-lotr/gemp-lotr-cards/src/main/resources/{card-stubs => cards/official/set11}/set11-Gandalf.hjson (62%) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_028.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_028.java deleted file mode 100644 index 022184cf9..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_028.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.gempukku.lotro.cards.set11.gandalf; - -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.AbstractPermanent; -import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect; -import com.gempukku.lotro.logic.effects.PutCardFromStackedIntoHandEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndStackCardsFromHandEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseStackedCardsEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -/** - * Set: Shadows - * Side: Free - * Culture: Gandalf - * Twilight Cost: 1 - * Type: Possession • Support Area - * Game Text: To play, spot a [GANDALF] Wizard. Regroup: Stack a spell from hand here. Fellowship: Discard a [GANDALF] - * card from hand to take a card stacked here into hand. - */ -public class Card11_028 extends AbstractPermanent { - public Card11_028() { - super(Side.FREE_PEOPLE, 1, CardType.POSSESSION, Culture.GANDALF, "The Art of Gandalf"); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Culture.GANDALF, Race.WIZARD); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendEffect( - new ChooseAndStackCardsFromHandEffect(action, playerId, 1, 1, self, Keyword.SPELL)); - return Collections.singletonList(action); - } - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self) - && PlayConditions.canDiscardFromHand(game, playerId, 1, Culture.GANDALF)) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 1, Culture.GANDALF)); - action.appendEffect( - new ChooseStackedCardsEffect(action, playerId, 1, 1, self, Filters.any) { - @Override - protected void cardsChosen(LotroGame game, Collection stackedCards) { - for (PhysicalCard stackedCard : stackedCards) { - action.appendEffect( - new PutCardFromStackedIntoHandEffect(stackedCard)); - } - } - }); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_029.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_029.java deleted file mode 100644 index 85e01eb21..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_029.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.gempukku.lotro.cards.set11.gandalf; - -import com.gempukku.lotro.common.*; -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.RemoveBurdenEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -/** - * Set: Shadows - * Side: Free - * Culture: Gandalf - * Twilight Cost: 2 - * Type: Event • Fellowship - * Game Text: Exert a [GANDALF] Wizard to remove a burden (or 2 burdens, if the fellowship is at a dwelling site). - */ -public class Card11_029 extends AbstractEvent { - public Card11_029() { - super(Side.FREE_PEOPLE, 2, Culture.GANDALF, "Ease the Burden", Phase.FELLOWSHIP); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canExert(self, game, Culture.GANDALF, Race.WIZARD); - } - - @Override - public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) { - PlayEventAction action = new PlayEventAction(self); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Culture.GANDALF, Race.WIZARD)); - int count = PlayConditions.location(game, Keyword.DWELLING) ? 2 : 1; - action.appendEffect( - new RemoveBurdenEffect(playerId, self, count)); - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_030.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_030.java deleted file mode 100644 index 7919222ae..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_030.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gempukku.lotro.cards.set11.gandalf; - -import com.gempukku.lotro.common.*; -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.ChooseAndPutCardFromDiscardIntoHandEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Shadows - * Side: Free - * Culture: Gandalf - * Twilight Cost: 2 - * Type: Companion • Man - * Strength: 5 - * Vitality: 3 - * Resistance: 6 - * Game Text: To play, spot a [GANDALF] companion. Skirmish: Exert Erland to take a [GANDALF] skirmish event from your - * discard pile into hand. - */ -public class Card11_030 extends AbstractCompanion { - public Card11_030() { - super(2, 5, 3, 6, Culture.GANDALF, Race.MAN, null, "Erland", "Dale Counselor", true); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Culture.GANDALF, CardType.COMPANION); - } - - @Override - public List getPhaseActionsInPlay(String playerId, 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 ChooseAndPutCardFromDiscardIntoHandEffect(action, playerId, 1, 1, Culture.GANDALF, CardType.EVENT, Keyword.SKIRMISH)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_031.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_031.java deleted file mode 100644 index 9afb55127..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_031.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gempukku.lotro.cards.set11.gandalf; - -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Race; -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.effects.ChooseAndDiscardCardsFromHandEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndPutCardFromDiscardIntoHandEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -/** - * Set: Shadows - * Side: Free - * Culture: Gandalf - * Twilight Cost: 1 - * Type: Event • Fellowship - * Game Text: To play, exert a [GANDALF] Wizard. Discard 2 cards from hand to take a Free Peoples card and a Shadow card - * from your discard pile into hand. - */ -public class Card11_031 extends AbstractEvent { - public Card11_031() { - super(Side.FREE_PEOPLE, 1, Culture.GANDALF, "Final Account", Phase.FELLOWSHIP); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canExert(self, game, Culture.GANDALF, Race.WIZARD) - && PlayConditions.canDiscardCardsFromHandToPlay(self, game, self.getOwner(), 2, Filters.any); - } - - @Override - public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) { - PlayEventAction action = new PlayEventAction(self); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Culture.GANDALF, Race.WIZARD)); - action.appendCost( - new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 2)); - action.appendEffect( - new ChooseAndPutCardFromDiscardIntoHandEffect(action, playerId, 1, 1, Side.FREE_PEOPLE)); - action.appendEffect( - new ChooseAndPutCardFromDiscardIntoHandEffect(action, playerId, 1, 1, Side.SHADOW)); - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_032.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_032.java deleted file mode 100644 index 67b5c7bea..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_032.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gempukku.lotro.cards.set11.gandalf; - -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Race; -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.cardtype.AbstractPermanent; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.SpotCondition; -import com.gempukku.lotro.logic.modifiers.StrengthModifier; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Shadows - * Side: Free - * Culture: Gandalf - * Twilight Cost: 3 - * Type: Condition • Support Area - * Game Text: While you can spot a [GANDALF] Wizard, each companion who has resistance 6 or more is strength +1. - */ -public class Card11_032 extends AbstractPermanent { - public Card11_032() { - super(Side.FREE_PEOPLE, 3, CardType.CONDITION, Culture.GANDALF, "G for Grand"); - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { -return Collections.singletonList(new StrengthModifier(self, Filters.and(CardType.COMPANION, Filters.minResistance(6)), new SpotCondition(Culture.GANDALF, Race.WIZARD), 1)); -} -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_033.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_033.java deleted file mode 100644 index cc890d999..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_033.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.gempukku.lotro.cards.set11.gandalf; - -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Culture; -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.cardtype.AbstractCompanion; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.StrengthModifier; -import com.gempukku.lotro.logic.modifiers.condition.LocationCondition; - -import java.util.LinkedList; -import java.util.List; - -/** - * Set: Shadows - * Side: Free - * Culture: Gandalf - * Twilight Cost: 4 - * Type: Companion • Wizard - * Strength: 7 - * Vitality: 4 - * Resistance: 7 - * Game Text: While Gandalf is in region 1, each other companion is strength +2. While Gandalf is in region 2, each - * companion is strength +1. While Gandalf is in region 3, he is strength +2. - */ -public class Card11_033 extends AbstractCompanion { - public Card11_033() { - super(4, 7, 4, 7, Culture.GANDALF, Race.WIZARD, null, "Gandalf", "Leader of the Company", true); - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { - List modifiers = new LinkedList<>(); - modifiers.add( - new StrengthModifier(self, Filters.and(CardType.COMPANION, Filters.not(self)), new LocationCondition(Filters.region(1)), 2)); - modifiers.add( - new StrengthModifier(self, CardType.COMPANION, new LocationCondition(Filters.region(2)), 1)); - modifiers.add( - new StrengthModifier(self, self, new LocationCondition(Filters.region(3)), 2)); - return modifiers; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_034.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_034.java deleted file mode 100644 index 9ad5288d3..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_034.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.gempukku.lotro.cards.set11.gandalf; - -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.AbstractAttachableFPPossession; -import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseOpponentEffect; -import com.gempukku.lotro.logic.modifiers.KeywordModifier; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.timing.EffectResult; -import com.gempukku.lotro.logic.timing.TriggerConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Shadows - * Side: Free - * Culture: Gandalf - * Twilight Cost: 2 - * Type: Artifact • Staff - * Vitality: +1 - * Game Text: Bearer must be a Wizard. If bearer is Gandalf, he gains muster. (At the start of the regroup phase, you - * may discard a card from hand to draw a card.) Each time bearer wins a skirmish, choose a Shadow player who must wound - * a minion. - */ -public class Card11_034 extends AbstractAttachableFPPossession { - public Card11_034() { - super(2, 0, 1, Culture.GANDALF, CardType.ARTIFACT, PossessionClass.STAFF, "Gandalf's Staff", "Ash-staff", true); - } - - @Override - public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { - return Race.WIZARD; - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { - return Collections.singletonList( - new KeywordModifier(self, Filters.and(Filters.hasAttached(self), Filters.gandalf), Keyword.MUSTER)); - } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.winsSkirmish(game, effectResult, Filters.hasAttached(self))) { - final RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect( - new ChooseOpponentEffect(self.getOwner()) { - @Override - protected void opponentChosen(String opponentId) { - action.appendEffect( - new ChooseAndWoundCharactersEffect(action, opponentId, 1, 1, CardType.MINION)); - } - }); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_035.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_035.java deleted file mode 100644 index 6ca99932a..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_035.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.gempukku.lotro.cards.set11.gandalf; - -import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession; -import com.gempukku.lotro.logic.timing.TriggerConditions; -import com.gempukku.lotro.logic.effects.RemoveBurdenEffect; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Filterable; -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.actions.OptionalTriggerAction; -import com.gempukku.lotro.logic.timing.EffectResult; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Shadows - * Side: Free - * Culture: Gandalf - * Twilight Cost: 2 - * Type: Possession • Hand Weapon - * Strength: +2 - * Game Text: Bearer must be Gandalf. Each time Gandalf wins a skirmish, you may remove a burden. - */ -public class Card11_035 extends AbstractAttachableFPPossession { - public Card11_035() { - super(2, 2, 0, Culture.GANDALF, PossessionClass.HAND_WEAPON, "Glamdring", "Foe-hammer", true); - } - - @Override - public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { - return Filters.gandalf; - } - - @Override - public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.winsSkirmish(game, effectResult, Filters.gandalf)) { - OptionalTriggerAction action = new OptionalTriggerAction(self); - action.appendEffect( - new RemoveBurdenEffect(playerId, self)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_036.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_036.java deleted file mode 100644 index daac55af3..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_036.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.gempukku.lotro.cards.set11.gandalf; - -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.RevealHandEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collection; - -/** - * Set: Shadows - * Side: Free - * Culture: Gandalf - * Twilight Cost: 1 - * Type: Event • Skirmish - * Game Text: Spot a [GANDALF] Wizard to reveal your hand and make a minion strength -3 for each companion in your hand - * (or -4 for each if the fellowship is at a battleground site). - */ -public class Card11_036 extends AbstractEvent { - public Card11_036() { - super(Side.FREE_PEOPLE, 1, Culture.GANDALF, "Inspiration", Phase.SKIRMISH); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Culture.GANDALF, Race.WIZARD); - } - - @Override - public PlayEventAction getPlayEventCardAction(final String playerId, final LotroGame game, final PhysicalCard self) { - final PlayEventAction action = new PlayEventAction(self); - action.appendEffect( - new RevealHandEffect(self, playerId, playerId) { - @Override - protected void cardsRevealed(Collection cards) { - int companionCount = Filters.filter(cards, game, CardType.COMPANION).size(); - int penalty = companionCount * (PlayConditions.location(game, Keyword.BATTLEGROUND) ? -4 : -3); - action.appendEffect( - new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, penalty, CardType.MINION)); - } - }); - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_037.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_037.java deleted file mode 100644 index 7eb2ce682..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_037.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.gempukku.lotro.cards.set11.gandalf; - -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Race; -import com.gempukku.lotro.common.Side; -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.actions.OptionalTriggerAction; -import com.gempukku.lotro.logic.cardtype.AbstractPermanent; -import com.gempukku.lotro.logic.effects.CancelActivatedEffect; -import com.gempukku.lotro.logic.effects.RemoveTwilightEffect; -import com.gempukku.lotro.logic.effects.SelfDiscardEffect; -import com.gempukku.lotro.logic.timing.EffectResult; -import com.gempukku.lotro.logic.timing.PlayConditions; -import com.gempukku.lotro.logic.timing.TriggerConditions; -import com.gempukku.lotro.logic.timing.results.ActivateCardResult; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Shadows - * Side: Free - * Culture: Gandalf - * Twilight Cost: 1 - * Type: Condition • Support Area - * Game Text: To play, spot a [GANDALF] Wizard. Each time a Shadow card adds a burden, you may remove (3). - * Response: If a minion uses its special ability, discard this condition to cancel the effect of that special ability. - */ -public class Card11_037 extends AbstractPermanent { - public Card11_037() { - super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.GANDALF, "New Authority", null, true); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Culture.GANDALF, Race.WIZARD); - } - - @Override - public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.addedBurden(game, effectResult, Side.SHADOW)) { - OptionalTriggerAction action = new OptionalTriggerAction(self); - action.appendEffect( - new RemoveTwilightEffect(3)); - return Collections.singletonList(action); - } - return null; - } - - @Override - public List getOptionalInPlayAfterActions(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.activated(game, effectResult, CardType.MINION) - && PlayConditions.canSelfDiscard(self, game)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new SelfDiscardEffect(self)); - action.appendEffect( - new CancelActivatedEffect(self, (ActivateCardResult) effectResult)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_038.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_038.java deleted file mode 100644 index 7f4fd27b7..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_038.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.gempukku.lotro.cards.set11.gandalf; - -import com.gempukku.lotro.common.*; -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.choose.ChooseAndDiscardCardsFromPlayEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -/** - * Set: Shadows - * Side: Free - * Culture: Gandalf - * Twilight Cost: 6 - * Type: Event • Fellowship - * Game Text: Spell. Toil 2. (For each [GANDALF] character you exert when playing this, its twilight cost is -2.) - * Spot a [GANDALF] Wizard to discard 2 conditions from play. - */ -public class Card11_038 extends AbstractEvent { - public Card11_038() { - super(Side.FREE_PEOPLE, 6, Culture.GANDALF, "New-awakened", Phase.FELLOWSHIP); - addKeyword(Keyword.SPELL); - addKeyword(Keyword.TOIL, 2); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Culture.GANDALF, Race.WIZARD); - } - - @Override - public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) { - PlayEventAction action = new PlayEventAction(self); - action.appendEffect( - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 2, 2, CardType.CONDITION)); - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_039.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_039.java deleted file mode 100644 index 80e032536..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_039.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.gempukku.lotro.cards.set11.gandalf; - -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.ChooseAndWoundCharactersEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -/** - * Set: Shadows - * Side: Free - * Culture: Gandalf - * Twilight Cost: 3 - * Type: Event • Skirmish - * Game Text: Exert a [GANDALF] Wizard and spot 2 companions who each have resistance 7 or more to wound a minion that - * Wizard is skirmishing twice. - */ -public class Card11_039 extends AbstractEvent { - public Card11_039() { - super(Side.FREE_PEOPLE, 3, Culture.GANDALF, "Prolonged Struggle", Phase.SKIRMISH); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canExert(self, game, Culture.GANDALF, Race.WIZARD) - && PlayConditions.canSpot(game, 2, CardType.COMPANION, Filters.minResistance(7)); - } - - @Override - public PlayEventAction getPlayEventCardAction(final String playerId, LotroGame game, PhysicalCard self) { - final PlayEventAction action = new PlayEventAction(self); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Culture.GANDALF, Race.WIZARD) { - @Override - protected void forEachCardExertedCallback(PhysicalCard character) { - action.appendEffect( - new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, 2, CardType.MINION, Filters.inSkirmishAgainst(character))); - } - }); - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_040.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_040.java deleted file mode 100644 index 268bcbfee..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_040.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.gempukku.lotro.cards.set11.gandalf; - -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Filterable; -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.actions.OptionalTriggerAction; -import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession; -import com.gempukku.lotro.logic.effects.AddBurdenEffect; -import com.gempukku.lotro.logic.effects.PreventableCardEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndPreventCardEffect; -import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.TriggerConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Shadows - * Side: Free - * Culture: Gandalf - * Twilight Cost: 2 - * Type: Possession • Mount - * Resistance: +2 - * Game Text: Bearer must be Gandalf. Each time Gandalf is about to take a wound, you may add a burden to prevent that. - */ -public class Card11_040 extends AbstractAttachableFPPossession { - public Card11_040() { - super(2, 0, 0, Culture.GANDALF, PossessionClass.MOUNT, "Shadowfax", "Unequaled Steed", true); - } - - @Override - public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { - return Filters.gandalf; - } - - @Override - public int getResistance() { - return 2; - } - - @Override - public List getOptionalBeforeTriggers(String playerId, LotroGame game, Effect effect, PhysicalCard self) { - if (TriggerConditions.isGettingWounded(effect, game, Filters.gandalf)) { - OptionalTriggerAction action = new OptionalTriggerAction(self); - action.appendCost( - new AddBurdenEffect(playerId, self, 1)); - action.appendEffect( - new ChooseAndPreventCardEffect(self, (PreventableCardEffect) effect, playerId, "Choose Gandalf", Filters.gandalf)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set11-Gandalf.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Gandalf.hjson similarity index 62% rename from gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set11-Gandalf.hjson rename to gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Gandalf.hjson index 811ef248c..9d3965d9d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set11-Gandalf.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Gandalf.hjson @@ -23,17 +23,37 @@ type: Possession #target: keywords: Support Area - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: toPlay + requires: { + type: canSpot + filter: culture(gandalf),wizard + } + } + { + type: activated + phase: regroup + effect: { + type: stackCardsFromHand + filter: choose(spell) + where: self + } + } + { + type: activated + phase: fellowship + cost: { + type: discardFromHand + forced: false + filter: choose(culture(gandalf)) + } + effect: { + type: putStackedCardsIntoHand + on: self + } + } + ] gametext: To play, spot a [gandalf] Wizard.
Regroup: Stack a spell from hand here.
Fellowship: Discard a [gandalf] card from hand to take a card stacked here into hand. lore: The fireworks were by Gandalf: they were not only brought by him, but designed and made by him.... promotext: "" @@ -67,21 +87,25 @@ twilight: 2 type: Event keywords: Fellowship - /*requires: { - - } - */ effects: { type: event cost: { - type: SendMessage - text: Placeholder effect for development. + type: exert + filter: choose(culture(gandalf),wizard) }, effect: [ - { - type: SendMessage - text: Placeholder effect for development. - } + { + type: removeBurdens + amount: { + type: condition + condition: { + type: location + filter: dwelling + } + true: 2 + false: 1 + } + } ] } gametext: Exert a [gandalf] Wizard to remove a burden (or 2 burdens if the fellowship is at a dwelling site). @@ -121,17 +145,27 @@ strength: 5 vitality: 3 resistance: 6 - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: toPlay + requires: { + type: canSpot + filter: culture(gandalf),companion + } + } + { + type: activated + phase: skirmish + cost: { + type: exert + filter: self + } + effect: { + type: putCardsFromDiscardIntoHand + filter: choose(culture(gandalf),skirmish,event) + } + } + ] gametext: To play, spot a [gandalf] companion.
Skirmish: Exert Erland to take a [gandalf] skirmish event from your discard pile into hand. lore: They are valiant men and keep open the High Pass and the Ford of Carrock.' promotext: "" @@ -165,21 +199,28 @@ twilight: 1 type: Event keywords: Fellowship - /*requires: { - - } - */ effects: { type: event - cost: { - type: SendMessage - text: Placeholder effect for development. - }, + cost: [ + { + type: exert + filter: choose(culture(gandalf),wizard) + } + { + type: discardFromHand + forced: false + count: 2 + } + ] effect: [ - { - type: SendMessage - text: Placeholder effect for development. - } + { + type: putCardsFromDiscardIntoHand + filter: choose(side(free people)) + } + { + type: putCardsFromDiscardIntoHand + filter: choose(side(shadow)) + } ] } gametext: To play, exert a [gandalf] Wizard.
Discard 2 cards from hand to take a Free Peoples card and a Shadow card from your discard pile into hand. @@ -215,17 +256,20 @@ twilight: 3 type: Condition keywords: Support Area - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: modifier + modifier: { + type: modifyStrength + requires: { + type: canSpot + filter: culture(gandalf),wizard + } + filter: companion,resistanceMoreThan(5) + amount: 1 + } + } + ] gametext: While you can spot a [gandalf] Wizard, each companion who has resistance 6 or more is strength +1. lore: To them he was just one of the 'attractions' at the party. Hence the excitement of the hobbit-children. promotext: "" @@ -263,17 +307,44 @@ strength: 7 vitality: 4 resistance: 7 - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: modifier + modifier: { + type: modifyStrength + requires: { + type: location + filter: regionNumber(1) + } + filter: other,companion + amount: 2 + } + } + { + type: modifier + modifier: { + type: modifyStrength + requires: { + type: location + filter: regionNumber(2) + } + filter: companion + amount: 1 + } + } + { + type: modifier + modifier: { + type: modifyStrength + requires: { + type: location + filter: regionNumber(3) + } + filter: self + amount: 2 + } + } + ] gametext: While Gandalf is in region 1, each other companion is strength +2.
While Gandalf is in region 2, each companion is strength +1.
While Gandalf is in region 3, he is strength +2. lore: I will help you bear this burden, Frodo Baggins....' promotext: "" @@ -309,18 +380,29 @@ type: Artifact vitality: 1 itemclass: Staff - #target: a Wizard - /*requires: { - - } + target: wizard effects: [ - { - - } - { - - } - ]*/ + { + type: modifier + modifier: { + type: addKeyword + filter: bearer,name(Gandalf) + keyword: muster + } + } + { + type: trigger + trigger: { + type: winsSkirmish + filter: bearer + } + effect: { + type: wound + player: shadow + filter: choose(minion) + } + } + ] gametext: Bearer must be a Wizard.
If bearer is Gandalf, he gains muster. (At the start of the regroup phase, you may discard a card from hand to draw a card.)
Each time bearer wins a skirmish, choose a Shadow player who must wound a minion. lore: "" promotext: "" @@ -356,18 +438,20 @@ type: Possession strength: 2 itemclass: Hand weapon - #target: title(Gandalf) - /*requires: { - - } + target: title(Gandalf) effects: [ - { - - } - { - - } - ]*/ + { + type: trigger + optional: true + trigger: { + type: winsSkirmish + filter: bearer + } + effect: { + type: removeBurdens + } + } + ] gametext: Bearer must be Gandalf.
Each time Gandalf wins a skirmish, you may remove a burden. lore: There was a ringing clash and a stab of white fire. promotext: "" @@ -401,21 +485,35 @@ twilight: 1 type: Event keywords: Skirmish - /*requires: { - - } - */ effects: { type: event - cost: { - type: SendMessage - text: Placeholder effect for development. - }, + requires: { + type: canSpot + filter: culture(gandalf),wizard + } effect: [ - { - type: SendMessage - text: Placeholder effect for development. - } + { + type: revealHand + memorize: revealedCards + } + { + type: modifyStrength + filter: choose(minion) + amount: { + type: forEachMatchingInMemory + memory: revealedCards + filter: companion + multiplier: { + type: condition + condition: { + type: location + filter: battleground + } + true: -4 + false: -3 + } + } + } ] } gametext: Spot a [gandalf] Wizard to reveal your hand and make a minion strength -3 for each companion in your hand (or -4 for each if the fellowship is at a battleground site). @@ -451,17 +549,41 @@ twilight: 1 type: Condition keywords: Support Area - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: toPlay + requires: { + type: canSpot + filter: culture(gandalf),wizard + } + } + { + type: trigger + optional: true + trigger: { + type: addsBurden + filter: side(shadow) + } + effect: { + type: removeTwilight + amount: 3 + } + } + { + type: activatedTrigger + trigger: { + type: usesSpecialAbility + filter: minion + } + cost: { + type: discard + filter: self + } + effect: { + type: cancelSpecialAbility + } + } + ] gametext: To play, spot a [gandalf] Wizard.
Each time a Shadow card adds a burden, you may remove (3).
Response: If a minion uses its special ability, discard this condition to cancel the effect of that special ability. lore: Prepare for battle!' promotext: "" @@ -499,21 +621,18 @@ Toil 2 Fellowship ] - /*requires: { - - } - */ effects: { type: event - cost: { - type: SendMessage - text: Placeholder effect for development. - }, + requires: { + type: canSpot + filter: culture(gandalf),wizard + } effect: [ - { - type: SendMessage - text: Placeholder effect for development. - } + { + type: discard + filter: choose(condition) + count: 2 + } ] } gametext: Spell. Toil 2. (For each [gandalf] character you exert when playing this, its twilight cost is -2.)
Spot a [gandalf] Wizard to discard 2 conditions from play. @@ -549,21 +668,24 @@ twilight: 3 type: Event keywords: Skirmish - /*requires: { - - } - */ effects: { type: event cost: { - type: SendMessage - text: Placeholder effect for development. - }, + type: exert + filter: choose(culture(gandalf),wizard) + memorize: exertedWizard + } + requires: { + type: canSpot + filter: companion,resistanceMoreThan(6) + count: 2 + } effect: [ - { - type: SendMessage - text: Placeholder effect for development. - } + { + type: wound + filter: choose(minion,inSkirmishAgainst(memory(exertedWizard))) + times: 2 + } ] } gametext: Exert a [gandalf] Wizard and spot 2 companions who each have resistance 7 or more to wound a minion that Wizard is skirmishing twice. @@ -601,18 +723,24 @@ type: Possession resistance: 2 itemclass: Mount - #target: title(Gandalf) - /*requires: { - - } + target: title(Gandalf) effects: [ - { - - } - { - - } - ]*/ + { + type: trigger + optional: true + trigger: { + type: aboutToTakeWound + filter: name(Gandalf) + } + cost: { + type: addBurdens + } + effect: { + type: preventWound + filter: choose(name(Gandalf)) + } + } + ] gametext: Bearer must be Gandalf.
Each time Gandalf is about to take a wound, you may add a burden to prevent that. lore: He has come for me: the horse of the White Rider. We are going to battle together.' promotext: "" diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/ValueResolver.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/ValueResolver.java index 9e008bc03..2ccef9e03 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/ValueResolver.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/ValueResolver.java @@ -151,15 +151,17 @@ public class ValueResolver { return new ConstantEvaluator(Math.min(limit, multiplier * count)); }; } else if (type.equalsIgnoreCase("forEachMatchingInMemory")) { - FieldUtils.validateAllowedFields(object, "memory", "filter", "limit"); + FieldUtils.validateAllowedFields(object, "memory", "filter", "limit", "multiplier"); + final ValueSource multiplierSource = ValueResolver.resolveEvaluator(object.get("multiplier"), 1, environment); final String memory = FieldUtils.getString(object.get("memory"), "memory"); final String filter = FieldUtils.getString(object.get("filter"), "filter"); final int limit = FieldUtils.getInteger(object.get("limit"), "limit", Integer.MAX_VALUE); final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); return (actionContext) -> { + final int multiplier = multiplierSource.getEvaluator(actionContext).evaluateExpression(actionContext.getGame(), null); final int count = Filters.filter(actionContext.getCardsFromMemory(memory), actionContext.getGame(), filterableSource.getFilterable(actionContext)).size(); - return new ConstantEvaluator(Math.min(limit, count)); + return new ConstantEvaluator(multiplier * Math.min(limit, count)); }; } else if (type.equalsIgnoreCase("forEachThreat")) { FieldUtils.validateAllowedFields(object, "multiplier");