From 9eaa6d0d519be53a02d51f5c7fa81be26841e126 Mon Sep 17 00:00:00 2001 From: MarcinSc Date: Mon, 22 Apr 2024 22:59:10 +0700 Subject: [PATCH] Migrated Ringwraith cards in set 6 to hjson --- .../lotro/cards/set6/wraith/Card6_083.java | 60 ---- .../lotro/cards/set6/wraith/Card6_084.java | 51 ---- .../lotro/cards/set6/wraith/Card6_085.java | 53 ---- .../lotro/cards/set6/wraith/Card6_086.java | 50 ---- .../lotro/cards/set6/wraith/Card6_087.java | 48 --- .../lotro/cards/set6/wraith/Card6_088.java | 57 ---- .../lotro/cards/set6/wraith/Card6_089.java | 53 ---- .../lotro/cards/set6/wraith/Card6_122.java | 79 ----- .../official/set06}/set06-Ringwraith.hjson | 280 ++++++++++++------ .../lotro/cards/build/field/FieldUtils.java | 7 +- 10 files changed, 200 insertions(+), 538 deletions(-) delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_083.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_084.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_085.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_086.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_087.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_088.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_089.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_122.java rename gemp-lotr/gemp-lotr-cards/src/main/resources/{card-stubs => cards/official/set06}/set06-Ringwraith.hjson (58%) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_083.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_083.java deleted file mode 100644 index 8776e942e..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_083.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.gempukku.lotro.cards.set6.wraith; - -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.cardtype.AbstractAttachable; -import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier; -import com.gempukku.lotro.logic.modifiers.KeywordModifier; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.cost.DiscardFromHandExtraPlayCostModifier; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -/** - * Set: Ents of Fangorn - * Side: Shadow - * Culture: Wraith - * Twilight Cost: 0 - * Type: Possession • Mount - * Strength: +2 - * Game Text: To play, discard 2 cards from hand. Bearer must be a Nazgul. Bearer is fierce. - */ -public class Card6_083 extends AbstractAttachable { - public Card6_083() { - super(Side.SHADOW, CardType.POSSESSION, 0, Culture.WRAITH, PossessionClass.MOUNT, "Fell Beast"); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canDiscardCardsFromHandToPlay(self, game, self.getOwner(), 2, Filters.any); - } - - @Override - public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { - return Race.NAZGUL; - } - - @Override - public List getExtraCostToPlay(LotroGame game, PhysicalCard self) { - return Collections.singletonList( - new DiscardFromHandExtraPlayCostModifier(self, self, 2, null, Filters.any)); - } - - @Override - public int getStrength() { - return 2; - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { - List modifiers = new LinkedList<>(); - modifiers.add( - new KeywordModifier(self, Filters.hasAttached(self), Keyword.FIERCE)); - return modifiers; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_084.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_084.java deleted file mode 100644 index c63d83653..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_084.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.gempukku.lotro.cards.set6.wraith; - -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.ExhaustCharacterEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndPlayCardFromHandEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Ents of Fangorn - * Side: Shadow - * Culture: Wraith - * Twilight Cost: 1 - * Type: Condition - * Game Text: Plays to your support area. Regroup: Exert a Nazgul twice to play a [WRAITH] or [SAURON] minion. That - * minion's twilight cost is -8 and it comes into play exhausted. - */ -public class Card6_084 extends AbstractPermanent { - public Card6_084() { - super(Side.SHADOW, 1, CardType.CONDITION, Culture.WRAITH, "Spied From Above"); - } - - @Override - public List getPhaseActionsInPlay(final String playerId, LotroGame game, final PhysicalCard self) { - if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0) - && PlayConditions.canExert(self, game, 2, Race.NAZGUL) - && PlayConditions.canPlayFromHand(playerId, game, -8, CardType.MINION, Filters.or(Culture.WRAITH, Culture.SAURON))) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, 2, Race.NAZGUL)); - action.appendEffect( - new ChooseAndPlayCardFromHandEffect(playerId, game, -8, CardType.MINION, Filters.or(Culture.WRAITH, Culture.SAURON)) { - @Override - protected void afterCardPlayed(PhysicalCard cardPlayed) { - action.appendEffect( - new ExhaustCharacterEffect(self, action, cardPlayed)); - } - }); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_085.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_085.java deleted file mode 100644 index 837a01a3e..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_085.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.gempukku.lotro.cards.set6.wraith; - -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.AbstractAttachable; -import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect; -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: Ents of Fangorn - * Side: Shadow - * Culture: Wraith - * Twilight Cost: 2 - * Type: Possession • Hand Weapon - * Strength: +2 - * Game Text: Bearer must be a Nazgul. While bearer is Úlairë Toldëa, each time he wins a skirmish the Free Peoples - * player must discard a Free Peoples possession or a Free Peoples condition. - */ -public class Card6_085 extends AbstractAttachable { - public Card6_085() { - super(Side.SHADOW, CardType.POSSESSION, 2, Culture.WRAITH, PossessionClass.HAND_WEAPON, "Sword of Dol Guldur", null, true); - } - - @Override - public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { - return Race.NAZGUL; - } - - @Override - public int getStrength() { - return 2; - } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.winsSkirmish(game, effectResult, self.getAttachedTo()) - && PlayConditions.canSpot(game, Filters.hasAttached(self), Filters.name(Names.toldea))) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect( - new ChooseAndDiscardCardsFromPlayEffect(action, game.getGameState().getCurrentPlayerId(), 1, 1, Side.FREE_PEOPLE, Filters.or(CardType.POSSESSION, CardType.CONDITION))); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_086.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_086.java deleted file mode 100644 index 91e3fe3f3..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_086.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gempukku.lotro.cards.set6.wraith; - -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.AbstractMinion; -import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect; -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: Ents of Fangorn - * Side: Shadow - * Culture: Wraith - * Twilight Cost: 4 - * Type: Minion • Nazgul - * Strength: 9 - * Vitality: 2 - * Site: 3 - * Game Text: Regroup: Exert Úlairë Lemenya and discard 3 cards from hand to return a companion (except the Ring-bearer) - * to owner's hand. - */ -public class Card6_086 extends AbstractMinion { - public Card6_086() { - super(4, 9, 2, 3, Race.NAZGUL, Culture.WRAITH, Names.lemenya, "Winged Hunter", true); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0) - && PlayConditions.canDiscardFromHand(game, playerId, 3, Filters.any) - && PlayConditions.canSelfExert(self, game)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new SelfExertEffect(action, self)); - action.appendCost( - new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 3)); - action.appendEffect( - new ChooseAndReturnCardsToHandEffect(action, playerId, 1, 1, CardType.COMPANION, Filters.not(Filters.ringBearer))); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_087.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_087.java deleted file mode 100644 index 767a8db4d..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_087.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.gempukku.lotro.cards.set6.wraith; - -import com.gempukku.lotro.logic.cardtype.AbstractMinion; -import com.gempukku.lotro.logic.timing.PlayConditions; -import com.gempukku.lotro.logic.timing.TriggerConditions; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.modifiers.evaluator.CountCulturesEvaluator; -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.timing.EffectResult; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Ents of Fangorn - * Side: Shadow - * Culture: Wraith - * Twilight Cost: 4 - * Type: Minion • Nazgul - * Strength: 9 - * Vitality: 2 - * Site: 3 - * Game Text: When you play Úlairë Nertëa, spot another Nazgul to make the Free Peoples player exert a Ring-bound - * companion for each Free Peoples culture you can spot over 2. - */ -public class Card6_087 extends AbstractMinion { - public Card6_087() { - super(4, 9, 2, 3, Race.NAZGUL, Culture.WRAITH, Names.nertea, "Winged Hunter", true); - } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.played(game, effectResult, self) - && PlayConditions.canSpot(game, Race.NAZGUL, Filters.not(self))) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - int count = new CountCulturesEvaluator(2, 1, Side.FREE_PEOPLE).evaluateExpression(game, null); - for (int i = 0; i < count; i++) - action.appendEffect( - new ChooseAndExertCharactersEffect(action, game.getGameState().getCurrentPlayerId(), 1, 1, CardType.COMPANION, Keyword.RING_BOUND)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_088.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_088.java deleted file mode 100644 index 605269169..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_088.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gempukku.lotro.cards.set6.wraith; - -import com.gempukku.lotro.logic.cardtype.AbstractMinion; -import com.gempukku.lotro.logic.timing.TriggerConditions; -import com.gempukku.lotro.logic.effects.AddBurdenEffect; -import com.gempukku.lotro.logic.effects.ChoiceEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -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.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; - -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -/** - * Set: Ents of Fangorn - * Side: Shadow - * Culture: Wraith - * Twilight Cost: 6 - * Type: Minion • Nazgul - * Strength: 12 - * Vitality: 3 - * Site: 3 - * Game Text: Fierce. Each time Úlairë Toldëa wins a skirmish, the Free Peoples player must exert a companion or add - * a burden. - */ -public class Card6_088 extends AbstractMinion { - public Card6_088() { - super(6, 12, 3, 3, Race.NAZGUL, Culture.WRAITH, Names.toldea, "Winged Sentry", true); - addKeyword(Keyword.FIERCE); - } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.winsSkirmish(game, effectResult, self)) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - List possibleEffects = new LinkedList<>(); - possibleEffects.add( - new ChooseAndExertCharactersEffect(action, game.getGameState().getCurrentPlayerId(), 1, 1, CardType.COMPANION) { - @Override - public String getText(LotroGame game) { - return "Exert a companion"; - } - }); - possibleEffects.add( - new AddBurdenEffect(game.getGameState().getCurrentPlayerId(), self, 1)); - action.appendEffect( - new ChoiceEffect(action, game.getGameState().getCurrentPlayerId(), possibleEffects)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_089.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_089.java deleted file mode 100644 index 89901596f..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_089.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.gempukku.lotro.cards.set6.wraith; - -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.AbstractPermanent; -import com.gempukku.lotro.logic.effects.AddTokenEffect; -import com.gempukku.lotro.logic.effects.AddTwilightEffect; -import com.gempukku.lotro.logic.effects.RemoveTokenEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Ents of Fangorn - * Side: Shadow - * Culture: Wraith - * Twilight Cost: 1 - * Type: Condition - * Game Text: Plays to your support area. Regroup: Exert a Nazgul to place a [WRAITH] token on this card. - * Shadow: Remove 3 [WRAITH] tokens from here to add (2). - */ -public class Card6_089 extends AbstractPermanent { - public Card6_089() { - super(Side.SHADOW, 1, CardType.CONDITION, Culture.WRAITH, "Winged and Ominous"); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 0) - && PlayConditions.canRemoveTokens(game, self, Token.WRAITH, 3)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new RemoveTokenEffect(self, self, Token.WRAITH, 3)); - action.appendEffect( - new AddTwilightEffect(self, 2)); - return Collections.singletonList(action); - } - if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0) - && PlayConditions.canExert(self, game, Race.NAZGUL)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.NAZGUL)); - action.appendEffect( - new AddTokenEffect(self, self, Token.WRAITH, 1)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_122.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_122.java deleted file mode 100644 index 5c9c478c6..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_122.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.gempukku.lotro.cards.set6.wraith; - -import com.gempukku.lotro.logic.cardtype.AbstractMinion; -import com.gempukku.lotro.logic.timing.TriggerConditions; -import com.gempukku.lotro.logic.effects.ChoiceEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -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.effects.ChooseAndWoundCharactersEffect; -import com.gempukku.lotro.logic.effects.WoundCharactersEffect; -import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; - - -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -/** - * Set: Ents of Fangorn - * Side: Shadow - * Culture: Wraith - * Twilight Cost: 8 - * Type: Minion • Nazgul - * Strength: 14 - * Vitality: 4 - * Site: 3 - * Game Text: Fierce. Each time a companion is killed in a skirmish involving a Nazgul, wound an ally twice - * or exert a companion. - */ -public class Card6_122 extends AbstractMinion { - public Card6_122() { - super(8, 14, 4, 3, Race.NAZGUL, Culture.WRAITH, Names.witchKing, "Deathless Lord", true); - addKeyword(Keyword.FIERCE); - } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, final PhysicalCard self) { - if (TriggerConditions.forEachKilledInASkirmish(game, effectResult, Race.NAZGUL, CardType.COMPANION)) { - final RequiredTriggerAction action = new RequiredTriggerAction(self); - List possibleEffects = new LinkedList<>(); - if (Filters.canSpot(game, - CardType.ALLY, Filters.canTakeWounds(self, 2))) { - possibleEffects.add( - new ChooseAndWoundCharactersEffect(action, self.getOwner(), 1, 1, 2, CardType.ALLY) { - @Override - public String getText(LotroGame game) { - return "Wound an ally twice"; - } - }); - } else if (!Filters.canSpot(game, - CardType.COMPANION, Filters.canExert(self))) { - possibleEffects.add( - new ChooseAndWoundCharactersEffect(action, self.getOwner(), 1, 1, 1, CardType.ALLY) { - @Override - protected void woundedCardsCallback(Collection cards) { - for (PhysicalCard card : cards) - action.appendEffect(new WoundCharactersEffect(self, card)); - } - }); - } - possibleEffects.add( - new ChooseAndExertCharactersEffect(action, self.getOwner(), 1, 1, CardType.COMPANION) { - @Override - public String getText(LotroGame game) { - return "Exert a companion"; - } - }); - action.appendEffect( - new ChoiceEffect(action, self.getOwner(), possibleEffects)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set06-Ringwraith.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set06/set06-Ringwraith.hjson similarity index 58% rename from gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set06-Ringwraith.hjson rename to gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set06/set06-Ringwraith.hjson index 735cb58dd..a78723ed5 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set06-Ringwraith.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set06/set06-Ringwraith.hjson @@ -23,18 +23,25 @@ type: Possession strength: 2 itemclass: Mount - #target: a Nazgûl - /*requires: { - - } + target: nazgul effects: [ - { - - } - { - - } - ]*/ + { + type: extraCost + cost: { + type: discardFromHand + forced: false + count: 2 + } + } + { + type: modifier + modifier: { + type: addKeyword + filter: bearer + keyword: fierce + } + } + ] gametext: To play, discard 2 cards from hand. Bearer must be a Nazgûl.
Bearer is fierce. lore: And these winged creatures that they ride on now, they can probably see more than any other creature. They are like great carrion birds.' promotext: "" @@ -68,17 +75,29 @@ twilight: 1 type: Condition keywords: Support Area - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: activated + phase: regroup + cost: { + type: exert + filter: choose(nazgul) + times: 2 + } + effect: [ + { + type: play + filter: choose(or(culture(wraith),culture(sauron)),minion) + cost: -8 + memorize: playedMinion + } + { + type: exhaust + filter: memory(playedMinion) + } + ] + } + ] gametext: Plays to your support area.
Regroup: Exert a Nazgûl twice to play a [wraith] or [sauron] minion. That minion's twilight cost is -8 and it comes into play exhausted. lore: It leaped into all of their minds that the Black Wings had spied them and had sent armed soldiers to seize them.... promotext: "" @@ -113,18 +132,25 @@ type: Possession strength: 2 itemclass: Hand weapon - #target: a Nazgûl - /*requires: { - - } + target: nazgul effects: [ - { - - } - { - - } - ]*/ + { + type: trigger + requires: { + type: canSpot + filter: bearer,name(Úlairë Toldëa) + } + trigger: { + type: winsSkirmish + filter: bearer + } + effect: { + type: discard + player: fp + filter: choose(side(free),or(possession,condition)) + } + } + ] gametext: Bearer must be a Nazgûl.
While bearer is Úlairë Toldëa, each time he wins a skirmish the Free Peoples player must discard a Free Peoples possession or a Free Peoples condition. lore: The weapons of the Nine are wrought with sorcery. promotext: "" @@ -158,21 +184,31 @@ culture: Wraith twilight: 4 type: Minion - race: Nazgûl + race: Nazgul strength: 9 vitality: 2 site: 3 - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: activated + phase: regroup + cost: [ + { + type: exert + filter: self + } + { + type: discardFromHand + forced: false + count: 3 + } + ] + effect: { + type: returnToHand + filter: choose(companion,not(ringBearer)) + } + } + ] gametext: Regroup: Exert Úlairë Lemenya and discard 3 cards from hand to return a companion (except the Ring-bearer) to owner's hand. lore: ...the helpless horror that had come with the cry in the wind and the shadow on the moon.... promotext: "" @@ -206,21 +242,32 @@ culture: Wraith twilight: 4 type: Minion - race: Nazgûl + race: Nazgul strength: 9 vitality: 2 site: 3 - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: trigger + trigger: { + type: played + filter: self + } + requires: { + type: canSpot + filter: another,nazgul + } + effect: { + type: exert + player: fp + filter: choose(ringBound,companion) + count: { + type: forEachFPCulture + over: 2 + } + } + } + ] gametext: When you play Úlairë Nertëa, spot another Nazgûl to make the Free Peoples player exert a Ring-bound companion for each Free Peoples culture you can spot over 2. lore: A vast winged shape passed over the moon like a black cloud... The stars fainted before it.... promotext: "" @@ -254,22 +301,39 @@ culture: Wraith twilight: 6 type: Minion - race: Nazgûl + race: Nazgul strength: 12 vitality: 3 site: 3 keywords: Fierce - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: trigger + trigger: { + type: winsSkirmish + filter: self + } + effect: { + type: choice + player: fp + texts: [ + Exert a companion + Add a burden + ] + effects: [ + { + type: exert + player: fp + filter: choose(companion) + } + { + type: addBurdens + player: fp + } + ] + } + } + ] gametext: Fierce.
Each time Úlairë Toldëa wins a skirmish, the Free Peoples player must exert a companion or add a burden. lore: They are calling for it. Calling for the precious.' promotext: "" @@ -303,17 +367,35 @@ twilight: 1 type: Condition keywords: Support Area - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: activated + phase: regroup + cost: { + type: exert + filter: choose(nazgul) + } + effect: { + type: addTokens + culture: wraith + filter: self + } + } + { + type: activated + phase: shadow + cost: { + type: removeTokens + culture: wraith + count: 3 + filter: self + } + effect: { + type: addTwilight + amount: 2 + } + } + ] gametext: Plays to your support area.
Regroup: Exert a Nazgûl to place a [wraith] token on this card.
Shadow: Remove 3 [wraith] tokens from here to add (2). lore: It scudded across the moon... outrunning the wind in its fell speed. promotext: "" @@ -347,22 +429,48 @@ culture: Wraith twilight: 8 type: Minion - race: Nazgûl + race: Nazgul strength: 14 vitality: 4 site: 3 keywords: Fierce - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: trigger + trigger: { + type: killed + filter: companion + } + requires: [ + { + type: phase + phase: skirmish + } + { + type: canSpot + filter: nazgul,inSkirmish + } + ] + effect: { + type: choice + texts: [ + Wound an ally twice + Exert a companion + ] + effects: [ + { + type: wound + filter: choose(ally) + times: 2 + } + { + type: exert + filter: choose(companion) + } + ] + } + } + ] gametext: Fierce.
Each time a companion is killed in a skirmish involving a Nazgûl, wound an ally twice or exert a companion. lore: Dead? No, you cannot kill them.' promotext: "" diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/FieldUtils.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/FieldUtils.java index 61a5975d7..e310b3a09 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/FieldUtils.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/FieldUtils.java @@ -69,7 +69,11 @@ public class FieldUtils { if (value == null) return null; final String string = getString(value, key); - return Enum.valueOf(enumClass, string.toUpperCase().replace(' ', '_').replace('-', '_')); + try { + return Enum.valueOf(enumClass, string.toUpperCase().replace(' ', '_').replace('-', '_')); + } catch (IllegalArgumentException exp) { + throw new InvalidCardDefinitionException("Unknown enum value - " + string + ", in " + key + " field"); + } } public static Side getSide(Object value, String key) throws InvalidCardDefinitionException { @@ -114,6 +118,7 @@ public class FieldUtils { } private static final JSONParser parser = new JSONParser(); + public static JSONObject parseSubObject(String jsonString) throws ParseException { String json = JsonValue.readHjson(jsonString).toString(); var subObject = (JSONObject) parser.parse(json);