From 5aec24553e3de7b013291d3550b2b92b042f84bc Mon Sep 17 00:00:00 2001 From: MarcinSc Date: Sun, 26 May 2024 17:22:09 +0700 Subject: [PATCH] Migrated Shire cards in set 17 to hjson --- .../lotro/cards/set17/shire/Card17_106.java | 49 ------ .../lotro/cards/set17/shire/Card17_107.java | 55 ------- .../lotro/cards/set17/shire/Card17_108.java | 60 -------- .../lotro/cards/set17/shire/Card17_109.java | 54 ------- .../lotro/cards/set17/shire/Card17_110.java | 61 -------- .../lotro/cards/set17/shire/Card17_111.java | 58 ------- .../official/set17}/set17-Shire.hjson | 141 ++++++++++++++++++ .../modifier/ModifierSourceFactory.java | 1 + .../effect/modifier/ModifyRaceSpotCount.java | 22 +++ 9 files changed, 164 insertions(+), 337 deletions(-) delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_106.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_107.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_108.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_109.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_110.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_111.java rename gemp-lotr/gemp-lotr-cards/src/main/resources/{card-stubs => cards/official/set17}/set17-Shire.hjson (60%) create mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifyRaceSpotCount.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_106.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_106.java deleted file mode 100644 index 5fdfe84aa..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_106.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.gempukku.lotro.cards.set17.shire; - -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.CancelSkirmishEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Rise of Saruman - * Side: Free - * Culture: Shire - * Twilight Cost: 1 - * Type: Condition • Support Area - * Game Text: Pipeweed. To play, spot a Hobbit. Skirmish: Discard a pipeweed from play to cancel a skirmish involving - * an unbound Hobbit. - */ -public class Card17_106 extends AbstractPermanent { - public Card17_106() { - super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.SHIRE, "Halfling Leaf"); - addKeyword(Keyword.PIPEWEED); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Race.HOBBIT); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) - && PlayConditions.canDiscardFromPlay(self, game, Keyword.PIPEWEED)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Keyword.PIPEWEED)); - action.appendEffect( - new CancelSkirmishEffect(Filters.unboundCompanion, Race.HOBBIT)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_107.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_107.java deleted file mode 100644 index 22cbd549c..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_107.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.gempukku.lotro.cards.set17.shire; - -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Keyword; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Race; -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.ChooseAndPutCardFromDiscardOnBottomOfDeckEffect; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.RaceSpotModifier; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Rise of Saruman - * Side: Free - * Culture: Shire - * Twilight Cost: 1 - * Type: Companion • Hobbit - * Strength: 3 - * Vitality: 4 - * Resistance: 8 - * Game Text: Add 1 to the number of Ents you can spot. Regroup: Exert Merry to place a pipeweed from your discard pile - * beneath your draw deck. - */ -public class Card17_107 extends AbstractCompanion { - public Card17_107() { - super(1, 3, 4, 8, Culture.SHIRE, Race.HOBBIT, null, "Merry", "In the Bloom of Health", true); - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { -return Collections.singletonList(new RaceSpotModifier(self, Race.ENT)); -} - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self) - && PlayConditions.canSelfExert(self, game)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new SelfExertEffect(action, self)); - action.appendEffect( - new ChooseAndPutCardFromDiscardOnBottomOfDeckEffect(action, playerId, 1, 1, Keyword.PIPEWEED)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_108.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_108.java deleted file mode 100644 index 4cce62e96..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_108.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.gempukku.lotro.cards.set17.shire; - -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.RemoveThreatsEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.LinkedList; -import java.util.List; - -/** - * Set: Rise of Saruman - * Side: Free - * Culture: Shire - * Twilight Cost: 1 - * Type: Condition • Support Area - * Game Text: Pipeweed. To play, spot an unbound Hobbit. Regroup: Discard a pipeweed from play to remove a threat. - * Regroup: Discard a pipeweed from play to discard a minion. - */ -public class Card17_108 extends AbstractPermanent { - public Card17_108() { - super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.SHIRE, "Hornblower Leaf"); - addKeyword(Keyword.PIPEWEED); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Filters.unboundCompanion, Race.HOBBIT); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self) - && PlayConditions.canDiscardFromPlay(self, game, Keyword.PIPEWEED)) { - List actions = new LinkedList<>(); - ActivateCardAction action1 = new ActivateCardAction(self); - action1.setText("Remove a threat"); - action1.appendCost( - new ChooseAndDiscardCardsFromPlayEffect(action1, playerId, 1, 1, Keyword.PIPEWEED)); - action1.appendEffect( - new RemoveThreatsEffect(self, 1)); - actions.add(action1); - - ActivateCardAction action2 = new ActivateCardAction(self); - action2.setText("Discard a minion"); - action2.appendCost( - new ChooseAndDiscardCardsFromPlayEffect(action2, playerId, 1, 1, Keyword.PIPEWEED)); - action2.appendEffect( - new ChooseAndDiscardCardsFromPlayEffect(action2, playerId, 1, 1, CardType.MINION)); - actions.add(action2); - return actions; - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_109.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_109.java deleted file mode 100644 index 2bc73a2ef..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_109.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gempukku.lotro.cards.set17.shire; - -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Keyword; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Race; -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.RemoveBurdenEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.RaceSpotModifier; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Rise of Saruman - * Side: Free - * Culture: Shire - * Twilight Cost: 1 - * Type: Companion • Hobbit - * Strength: 3 - * Vitality: 4 - * Resistance: 8 - * Game Text: Add 1 to the number of Ents you can spot. Maneuver: Discard 2 pipeweed cards from play to remove a burden. - */ -public class Card17_109 extends AbstractCompanion { - public Card17_109() { - super(1, 3, 4, 8, Culture.SHIRE, Race.HOBBIT, null, "Pippin", "In the Bloom of Health", true); - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { -return Collections.singletonList(new RaceSpotModifier(self, Race.ENT)); -} - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.MANEUVER, self) - && PlayConditions.canDiscardFromPlay(self, game, 2, Keyword.PIPEWEED)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 2, 2, Keyword.PIPEWEED)); - 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/set17/shire/Card17_110.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_110.java deleted file mode 100644 index 2a19da599..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_110.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gempukku.lotro.cards.set17.shire; - -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.SelfDiscardEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndPlayCardFromDeckEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Rise of Saruman - * Side: Free - * Culture: Shire - * Twilight Cost: 1 - * Type: Condition • Support Area - * Game Text: Pipeweed. To play, spot an unbound Hobbit. Skirmish: Discard a pipeweed from play to make an unbound - * Hobbit strength +2. Regroup: Discard this pipeweed from play to play a pipeweed from your draw deck. Reshuffle your - * draw deck. - */ -public class Card17_110 extends AbstractPermanent { - public Card17_110() { - super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.SHIRE, "Southfarthing Leaf"); - addKeyword(Keyword.PIPEWEED); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Filters.unboundCompanion, Race.HOBBIT); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) - && PlayConditions.canDiscardFromPlay(self, game, Keyword.PIPEWEED)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Keyword.PIPEWEED)); - action.appendEffect( - new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, 2, Filters.unboundCompanion, Race.HOBBIT)); - return Collections.singletonList(action); - } - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self) - && PlayConditions.canSelfDiscard(self, game)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new SelfDiscardEffect(self)); - action.appendEffect( - new ChooseAndPlayCardFromDeckEffect(playerId, Keyword.PIPEWEED)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_111.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_111.java deleted file mode 100644 index 703f04398..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/shire/Card17_111.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.gempukku.lotro.cards.set17.shire; - -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.AddUntilEndOfPhaseModifierEffect; -import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect; -import com.gempukku.lotro.logic.modifiers.OverwhelmedByMultiplierModifier; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Rise of Saruman - * Side: Free - * Culture: Shire - * Twilight Cost: 1 - * Type: Condition • Support Area - * Game Text: Pipeweed. To play, spot a Hobbit. Skirmish: Discard a pipeweed from play to prevent an unbound Hobbit from - * being overwhelmed unless that Hobbit's strength is tripled. - */ -public class Card17_111 extends AbstractPermanent { - public Card17_111() { - super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.SHIRE, "Southlinch Leaf"); - addKeyword(Keyword.PIPEWEED); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Race.HOBBIT); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) - && PlayConditions.canDiscardFromPlay(self, game, Keyword.PIPEWEED)) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Keyword.PIPEWEED)); - action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose a Hobbit", Filters.unboundCompanion, Race.HOBBIT) { - @Override - protected void cardSelected(LotroGame game, PhysicalCard card) { - action.appendEffect( - new AddUntilEndOfPhaseModifierEffect( - new OverwhelmedByMultiplierModifier(self, card, 3))); - } - }); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set17-Shire.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set17/set17-Shire.hjson similarity index 60% rename from gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set17-Shire.hjson rename to gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set17/set17-Shire.hjson index 334d8367b..565a76b07 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set17-Shire.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set17/set17-Shire.hjson @@ -26,6 +26,25 @@ Support Area ] effects: [ + { + type: toPlay + requires: { + type: canSpot + filter: hobbit + } + } + { + type: activated + phase: skirmish + cost: { + type: discard + filter: choose(pipeweed) + } + effect: { + type: cancelSkirmish + filter: unbound,hobbit + } + } ] gametext: Pipeweed. To play, spot a Hobbit.
Skirmish: Discard a pipeweed from play to cancel a skirmish involving an unbound Hobbit. lore: It feels good, and it smells good.' @@ -65,6 +84,25 @@ vitality: 4 resistance: 8 effects: [ + { + type: modifier + modifier: { + type: modifyRaceSpotCount + race: ent + } + } + { + type: activated + phase: regroup + cost: { + type: exert + filter: self + } + effect: { + type: putCardsFromDiscardOnBottomOfDeck + filter: choose(pipeweed) + } + } ] gametext: Add 1 to the number of Ents you can spot.
Regroup: Exert Merry to place a pipeweed from your discard pile beneath your draw deck. lore: I think we may have made a mistake leaving the Shire, Pippin.' @@ -103,6 +141,38 @@ Support Area ] effects: [ + { + type: toPlay + requires: { + type: canSpot + filter: unbound,hobbit + } + } + { + type: activated + phase: regroup + text: Remove a threat + cost: { + type: discard + filter: choose(pipeweed) + } + effect: { + type: removeThreats + } + } + { + type: activated + phase: regroup + text: Discard a minion + cost: { + type: discard + filter: choose(pipeweed) + } + effect: { + type: discard + filter: choose(minion) + } + } ] gametext: Pipeweed. To play, spot an unbound Hobbit.
Regroup: Discard a pipeweed from play to remove a threat.
Regroup: Discard a pipeweed from play to discard a minion. lore: These are the Hornblower brandmarks....' @@ -142,6 +212,25 @@ vitality: 4 resistance: 8 effects: [ + { + type: modifier + modifier: { + type: modifyRaceSpotCount + race: ent + } + } + { + type: activated + phase: maneuver + cost: { + type: discard + filter: choose(pipeweed) + count: 2 + } + effect: { + type: removeBurdens + } + } ] gametext: Add 1 to the number of Ents you can spot.
Maneuver: Discard 2 pipeweed cards from play to remove a burden. lore: Ents are – well Ents are all different for one thing. @@ -180,6 +269,38 @@ Support Area ] effects: [ + { + type: toPlay + requires: { + type: canSpot + filter: unbound,hobbit + } + } + { + type: activated + phase: skirmish + cost: { + type: discard + filter: choose(pipeweed) + } + effect: { + type: modifyStrength + filter: choose(unbound,hobbit) + amount: 2 + } + } + { + type: activated + phase: regroup + cost: { + type: discard + filter: self + } + effect: { + type: playCardFromDrawDeck + filter: choose(pipeweed) + } + } ] gametext: Pipeweed. To play, spot an unbound Hobbit.
Skirmish: Discard a pipeweed from play to make an unbound Hobbit strength +2.
Regroup: Discard this pipeweed from play to play a pipeweed from your draw deck. Reshuffle your draw deck. lore: "" @@ -218,6 +339,26 @@ Support Area ] effects: [ + { + type: toPlay + requires: { + type: canSpot + filter: hobbit + } + } + { + type: activated + phase: skirmish + cost: { + type: discard + filter: choose(pipeweed) + } + effect: { + type: alterOverwhelmMultiplier + filter: choose(unbound,hobbit) + multiplier: 3 + } + } ] gametext: Pipeweed. To play, spot a Hobbit.
Skirmish: Discard a pipeweed from play to prevent an unbound Hobbit from being overwhelmed unless that Hobbit's strength is tripled. lore: How it came here, I can't imagine. For Saruman's private use, I fancy.' diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifierSourceFactory.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifierSourceFactory.java index 8820ed1b0..ee5940ce9 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifierSourceFactory.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifierSourceFactory.java @@ -71,6 +71,7 @@ public class ModifierSourceFactory { modifierProducers.put("modifyinitiativehandsize", new ModifyInitiativeHandSize()); modifierProducers.put("modifymovelimit", new ModifyMoveLimit()); modifierProducers.put("modifyplayoncost", new ModifyPlayOnCost()); + modifierProducers.put("modifyracespotcount", new ModifyRaceSpotCount()); modifierProducers.put("modifyresistance", new ModifyResistance()); modifierProducers.put("modifyroamingpenalty", new ModifyRoamingPenalty()); modifierProducers.put("modifysanctuaryheal", new ModifySanctuaryHeal()); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifyRaceSpotCount.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifyRaceSpotCount.java new file mode 100644 index 000000000..27796513a --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifyRaceSpotCount.java @@ -0,0 +1,22 @@ +package com.gempukku.lotro.cards.build.field.effect.modifier; + +import com.gempukku.lotro.cards.build.CardGenerationEnvironment; +import com.gempukku.lotro.cards.build.InvalidCardDefinitionException; +import com.gempukku.lotro.cards.build.ModifierSource; +import com.gempukku.lotro.cards.build.field.FieldUtils; +import com.gempukku.lotro.common.Race; +import com.gempukku.lotro.logic.modifiers.RaceSpotModifier; +import org.json.simple.JSONObject; + +public class ModifyRaceSpotCount implements ModifierSourceProducer { + @Override + public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { + FieldUtils.validateAllowedFields(object, "race"); + + Race race = FieldUtils.getEnum(Race.class, object.get("race"), "race"); + if (race == null) + throw new InvalidCardDefinitionException("Race is required for \"modify race spot count\""); + + return (actionContext) -> new RaceSpotModifier(actionContext.getSource(), race); + } +}