From d87ec4dd469f33b0d5a7ff437102284d5ab207d3 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Tue, 25 Oct 2011 09:44:31 +0000 Subject: [PATCH] Simplifying some modifiers. --- .../cards/modifiers/CantHealModifier.java | 25 +++++++++++++ .../modifiers/ShouldSkipPhaseModifier.java | 8 +++-- .../conditions/CantSpotCondition.java | 20 +++++++++++ .../evaluator/CountActiveEvaluator.java | 36 +++++++++++++++++++ .../lotro/cards/set1/isengard/Card1_140.java | 16 ++------- .../lotro/cards/set1/sauron/Card1_264.java | 17 ++------- .../lotro/cards/set1/sauron/Card1_283.java | 15 ++------ .../lotro/cards/set1/site/Card1_330.java | 28 +++++++-------- .../lotro/cards/set1/site/Card1_354.java | 16 ++------- .../lotro/cards/set1/site/Card1_356.java | 19 +++------- .../lotro/cards/set1/site/Card1_357.java | 18 ++-------- .../lotro/cards/set1/wraith/Card1_207.java | 12 +++---- .../lotro/cards/set2/dwarven/Card2_015.java | 13 ++----- .../lotro/cards/set2/moria/Card2_051.java | 15 ++------ .../lotro/cards/set4/dunland/Card4_022.java | 14 +++----- .../lotro/cards/set4/isengard/Card4_215.java | 12 ++----- 16 files changed, 134 insertions(+), 150 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantHealModifier.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/CantSpotCondition.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountActiveEvaluator.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantHealModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantHealModifier.java new file mode 100644 index 000000000..a7caad261 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantHealModifier.java @@ -0,0 +1,25 @@ +package com.gempukku.lotro.cards.modifiers; + +import com.gempukku.lotro.common.Filterable; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; +import com.gempukku.lotro.logic.modifiers.AbstractModifier; +import com.gempukku.lotro.logic.modifiers.Condition; +import com.gempukku.lotro.logic.modifiers.ModifierEffect; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; + +public class CantHealModifier extends AbstractModifier { + public CantHealModifier(PhysicalCard source, Filterable... affectFilters) { + this(source, null, affectFilters); + } + + public CantHealModifier(PhysicalCard source, Condition condition, Filterable... affectFilters) { + super(source, "Can't be healed", Filters.and(affectFilters), condition, new ModifierEffect[]{ModifierEffect.WOUND_MODIFIER}); + } + + @Override + public boolean canBeHealed(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card) { + return false; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/ShouldSkipPhaseModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/ShouldSkipPhaseModifier.java index e14b5753d..eb0307b21 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/ShouldSkipPhaseModifier.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/ShouldSkipPhaseModifier.java @@ -14,12 +14,16 @@ public class ShouldSkipPhaseModifier extends AbstractModifier { private String _playerId; public ShouldSkipPhaseModifier(PhysicalCard source, Phase phase) { - super(source, "Skip " + phase.toString() + " phase", null, new ModifierEffect[]{ModifierEffect.ACTION_MODIFIER}); - _phase = phase; + this(source, null, phase); } public ShouldSkipPhaseModifier(PhysicalCard source, Condition condition, Phase phase) { + this(source, null, condition, phase); + } + + public ShouldSkipPhaseModifier(PhysicalCard source, String playerId, Condition condition, Phase phase) { super(source, "Skip " + phase.toString() + " phase", null, new ModifierEffect[]{ModifierEffect.ACTION_MODIFIER}); + _playerId = playerId; _condition = condition; _phase = phase; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/CantSpotCondition.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/CantSpotCondition.java new file mode 100644 index 000000000..faf7ecad7 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/CantSpotCondition.java @@ -0,0 +1,20 @@ +package com.gempukku.lotro.cards.modifiers.conditions; + +import com.gempukku.lotro.common.Filterable; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.state.GameState; +import com.gempukku.lotro.logic.modifiers.Condition; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; + +public class CantSpotCondition implements Condition { + private Filterable[] _filters; + + public CantSpotCondition(Filterable... filters) { + this._filters = filters; + } + + @Override + public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { + return !Filters.canSpot(gameState, modifiersQuerying, _filters); + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountActiveEvaluator.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountActiveEvaluator.java new file mode 100644 index 000000000..b958bec34 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountActiveEvaluator.java @@ -0,0 +1,36 @@ +package com.gempukku.lotro.cards.modifiers.evaluator; + +import com.gempukku.lotro.common.Filterable; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; + +public class CountActiveEvaluator implements Evaluator { + private int _over; + private Filterable[] _filters; + private Integer _limit; + + public CountActiveEvaluator(Filterable... filters) { + this(null, filters); + } + + public CountActiveEvaluator(Integer limit, Filterable... filters) { + this(0, limit, filters); + } + + public CountActiveEvaluator(int over, Integer limit, Filterable... filters) { + _over = over; + _filters = filters; + _limit = limit; + } + + @Override + public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { + final int active = Math.max(0, Filters.countSpottable(gameState, modifiersQuerying, _filters) - _over); + if (_limit == null) + return active; + return Math.min(_limit, active); + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_140.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_140.java index b30a044aa..8161071a7 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_140.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_140.java @@ -4,6 +4,8 @@ import com.gempukku.lotro.cards.AbstractAttachable; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.AttachPermanentAction; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.modifiers.ShouldSkipPhaseModifier; +import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Phase; @@ -11,14 +13,10 @@ import com.gempukku.lotro.common.Side; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect; -import com.gempukku.lotro.logic.modifiers.AbstractModifier; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.timing.EffectResult; import java.util.Collections; @@ -59,15 +57,7 @@ public class Card1_140 extends AbstractAttachable { @Override public Modifier getAlwaysOnModifier(final PhysicalCard self) { - return new AbstractModifier(self, "Skip archery phase", null, new ModifierEffect[]{ModifierEffect.ACTION_MODIFIER}) { - @Override - public boolean shouldSkipPhase(GameState gameState, ModifiersQuerying modifiersQuerying, Phase phase, String playerId) { - if (phase == Phase.ARCHERY - && gameState.getCurrentSite() == self.getAttachedTo()) - return true; - return false; - } - }; + return new ShouldSkipPhaseModifier(self, new LocationCondition(Filters.hasAttached(self)), Phase.ARCHERY); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_264.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_264.java index 82122821d..a66713f27 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_264.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_264.java @@ -1,14 +1,11 @@ package com.gempukku.lotro.cards.set1.sauron; import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.modifiers.ArcheryTotalModifier; import com.gempukku.lotro.common.*; -import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.GameState; -import com.gempukku.lotro.logic.modifiers.AbstractModifier; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.SpotCondition; /** * Set: The Fellowship of the Ring @@ -25,14 +22,6 @@ public class Card1_264 extends AbstractPermanent { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { - return new AbstractModifier(self, "While you can spot a SAURON Orc, add 1 to the minion archery total.", null, new ModifierEffect[]{ModifierEffect.ARCHERY_MODIFIER}) { - @Override - public int getArcheryTotalModifier(GameState gameState, ModifiersQuerying modifiersLogic, Side side) { - if (side == Side.SHADOW - && Filters.canSpot(gameState, modifiersLogic, Filters.culture(Culture.SAURON), Filters.race(Race.ORC))) - return 1; - return 0; - } - }; + return new ArcheryTotalModifier(self, Side.SHADOW, new SpotCondition(Culture.SAURON, Race.ORC), 1); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_283.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_283.java index f2380fb87..b1041b14b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_283.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_283.java @@ -1,16 +1,14 @@ package com.gempukku.lotro.cards.set1.sauron; import com.gempukku.lotro.cards.AbstractAttachable; +import com.gempukku.lotro.cards.modifiers.CantHealModifier; +import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.modifiers.AbstractModifier; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; /** * Set: The Fellowship of the Ring @@ -39,13 +37,6 @@ public class Card1_283 extends AbstractAttachable { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { - return new AbstractModifier(self, "While at a sanctuary, bearer cannot heal.", Filters.hasAttached(self), new ModifierEffect[]{ModifierEffect.WOUND_MODIFIER}) { - @Override - public boolean canBeHealed(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card) { - if (modifiersQuerying.hasKeyword(gameState, gameState.getCurrentSite(), Keyword.SANCTUARY)) - return false; - return true; - } - }; + return new CantHealModifier(self, new LocationCondition(Keyword.SANCTUARY), Filters.hasAttached(self)); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_330.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_330.java index 9a9e52358..9094f9f20 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_330.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_330.java @@ -1,14 +1,16 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.modifiers.ShouldSkipPhaseModifier; +import com.gempukku.lotro.cards.modifiers.conditions.CantSpotCondition; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.GameState; -import com.gempukku.lotro.logic.modifiers.AbstractModifier; +import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; + +import java.util.LinkedList; +import java.util.List; /** * Set: The Fellowship of the Ring @@ -25,16 +27,12 @@ public class Card1_330 extends AbstractSite { } @Override - public Modifier getAlwaysOnModifier(final PhysicalCard self) { - return new AbstractModifier(self, "While only Hobbits are in the fellowship, there are no assignment and skirmish phases at Buckleberry Ferry.", null, new ModifierEffect[]{ModifierEffect.ACTION_MODIFIER}) { - @Override - public boolean shouldSkipPhase(GameState gameState, ModifiersQuerying modifiersQuerying, Phase phase, String playerId) { - if (gameState.getCurrentSite() == self - && (phase == Phase.ASSIGNMENT || phase == Phase.SKIRMISH) - && !Filters.canSpot(gameState, modifiersQuerying, Filters.type(CardType.COMPANION), Filters.not(Filters.race(Race.HOBBIT)))) - return true; - return false; - } - }; + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + List modifiers = new LinkedList(); + modifiers.add( + new ShouldSkipPhaseModifier(self, new CantSpotCondition(CardType.COMPANION, Filters.not(Race.HOBBIT)), Phase.ASSIGNMENT)); + modifiers.add( + new ShouldSkipPhaseModifier(self, new CantSpotCondition(CardType.COMPANION, Filters.not(Race.HOBBIT)), Phase.SKIRMISH)); + return modifiers; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_354.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_354.java index e59e43f77..f07934e9e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_354.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_354.java @@ -1,15 +1,13 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.modifiers.ShouldSkipPhaseModifier; +import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.GameState; -import com.gempukku.lotro.logic.modifiers.AbstractModifier; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; /** * Set: The Fellowship of the Ring @@ -27,14 +25,6 @@ public class Card1_354 extends AbstractSite { @Override public Modifier getAlwaysOnModifier(final PhysicalCard self) { - return new AbstractModifier(self, "Skip archery phase", null, new ModifierEffect[]{ModifierEffect.ACTION_MODIFIER}) { - @Override - public boolean shouldSkipPhase(GameState gameState, ModifiersQuerying modifiersQuerying, Phase phase, String playerId) { - if (phase == Phase.ARCHERY - && gameState.getCurrentSite() == self) - return true; - return false; - } - }; + return new ShouldSkipPhaseModifier(self, new LocationCondition(self), Phase.ARCHERY); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_356.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_356.java index 7269e7fca..737c99249 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_356.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_356.java @@ -1,17 +1,15 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.modifiers.ArcheryTotalModifier; +import com.gempukku.lotro.cards.modifiers.evaluator.CountActiveEvaluator; +import com.gempukku.lotro.cards.modifiers.evaluator.MultiplyEvaluator; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Side; -import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.GameState; -import com.gempukku.lotro.logic.modifiers.AbstractModifier; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; /** * Set: The Fellowship of the Ring @@ -28,15 +26,6 @@ public class Card1_356 extends AbstractSite { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { - return new AbstractModifier(self, "For each companion in the fellowship over 4, add 2 to the minion archery total.", null, new ModifierEffect[]{ModifierEffect.ARCHERY_MODIFIER}) { - @Override - public int getArcheryTotalModifier(GameState gameState, ModifiersQuerying modifiersLogic, Side side) { - if (side == Side.SHADOW) { - int bonus = Math.max(0, Filters.countActive(gameState, modifiersLogic, Filters.type(CardType.COMPANION)) - 4); - return bonus * 2; - } - return 0; - } - }; + return new ArcheryTotalModifier(self, Side.SHADOW, null, new MultiplyEvaluator(2, new CountActiveEvaluator(4, null, CardType.COMPANION))); } } \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_357.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_357.java index 3c143c0f2..4878a30b3 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_357.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_357.java @@ -1,17 +1,14 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.modifiers.ArcheryTotalModifier; +import com.gempukku.lotro.cards.modifiers.evaluator.CountActiveEvaluator; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Side; -import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.GameState; -import com.gempukku.lotro.logic.modifiers.AbstractModifier; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; /** * Set: The Fellowship of the Ring @@ -28,15 +25,6 @@ public class Card1_357 extends AbstractSite { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { - return new AbstractModifier(self, "For each minion archer at Brown Lands, the minion archery total is +1 (limit +4).", null, new ModifierEffect[]{ModifierEffect.ARCHERY_MODIFIER}) { - @Override - public int getArcheryTotalModifier(GameState gameState, ModifiersQuerying modifiersLogic, Side side) { - if (side == Side.SHADOW) { - int bonus = Math.min(Filters.countActive(gameState, modifiersLogic, Filters.type(CardType.MINION), Filters.keyword(Keyword.ARCHER)), 4); - return bonus; - } - return 0; - } - }; + return new ArcheryTotalModifier(self, Side.SHADOW, null, new CountActiveEvaluator(4, CardType.MINION, Keyword.ARCHER)); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_207.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_207.java index 06b9cf32c..5f47e2cae 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_207.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_207.java @@ -3,14 +3,15 @@ package com.gempukku.lotro.cards.set1.wraith; import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.TransferPermanentEffect; +import com.gempukku.lotro.cards.modifiers.CantHealModifier; import com.gempukku.lotro.cards.modifiers.CantRemoveBurdensModifier; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; -import com.gempukku.lotro.logic.modifiers.*; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.SpotCondition; import com.gempukku.lotro.logic.timing.Action; import java.util.Collections; @@ -49,12 +50,7 @@ public class Card1_207 extends AbstractPermanent { public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { List modifiers = new LinkedList(); modifiers.add( - new AbstractModifier(self, "Burdens and wounds may not be removed from bearer.", Filters.hasAttached(self), new ModifierEffect[]{ModifierEffect.WOUND_MODIFIER}) { - @Override - public boolean canBeHealed(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card) { - return false; - } - }); + new CantHealModifier(self, Filters.hasAttached(self))); modifiers.add( new CantRemoveBurdensModifier(self, new SpotCondition(Keyword.RING_BEARER, Filters.hasAttached(self)), Filters.any)); return modifiers; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_015.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_015.java index 3ca490ee8..7003e2f29 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_015.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_015.java @@ -7,18 +7,15 @@ import com.gempukku.lotro.cards.effects.ChoiceEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromHandEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; import com.gempukku.lotro.cards.effects.choose.ChooseOpponentEffect; +import com.gempukku.lotro.cards.modifiers.ShouldSkipPhaseModifier; 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.GameState; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.effects.DrawCardEffect; -import com.gempukku.lotro.logic.modifiers.AbstractModifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.timing.Effect; import java.util.LinkedList; @@ -84,13 +81,7 @@ public class Card2_015 extends AbstractOldEvent { private class SkipNextShadowPhaseChooseableEffect extends AddUntilEndOfTurnModifierEffect { public SkipNextShadowPhaseChooseableEffect(PhysicalCard card, final String opponentId) { super( - new AbstractModifier(card, "Skip Shadow phase", null, new ModifierEffect[]{ModifierEffect.ACTION_MODIFIER}) { - @Override - public boolean shouldSkipPhase(GameState gameState, ModifiersQuerying modifiersQuerying, Phase phase, String playerId) { - return phase == Phase.SHADOW && opponentId.equals(playerId); - } - } - ); + new ShouldSkipPhaseModifier(card, opponentId, null, Phase.SHADOW)); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/moria/Card2_051.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/moria/Card2_051.java index 16a7c6a35..e8518daf4 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/moria/Card2_051.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/moria/Card2_051.java @@ -1,17 +1,14 @@ package com.gempukku.lotro.cards.set2.moria; import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.modifiers.ShouldSkipPhaseModifier; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect; -import com.gempukku.lotro.logic.modifiers.AbstractModifier; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.timing.EffectResult; import java.util.Collections; @@ -40,15 +37,7 @@ public class Card2_051 extends AbstractMinion { @Override public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { return Collections.singletonList( - new AbstractModifier(self, "Skip archery phase", null, new ModifierEffect[]{ModifierEffect.ACTION_MODIFIER}) { - @Override - public boolean shouldSkipPhase(GameState gameState, ModifiersQuerying modifiersQuerying, Phase phase, String playerId) { - if (phase == Phase.ARCHERY) - return true; - return false; - } - } - ); + new ShouldSkipPhaseModifier(self, Phase.ARCHERY)); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_022.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_022.java index 8d0f50dbf..2b3ff39fe 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_022.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_022.java @@ -1,15 +1,17 @@ package com.gempukku.lotro.cards.set4.dunland; import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.modifiers.ShouldSkipPhaseModifier; 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.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.modifiers.*; +import com.gempukku.lotro.logic.modifiers.KeywordModifier; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.SpotCondition; import java.util.LinkedList; import java.util.List; @@ -35,13 +37,7 @@ public class Card4_022 extends AbstractMinion { public List getAlwaysOnModifiers(LotroGame game, final PhysicalCard self) { List modifiers = new LinkedList(); modifiers.add( - new AbstractModifier(self, "Skip the archery phase", null, new ModifierEffect[]{ModifierEffect.ACTION_MODIFIER}) { - @Override - public boolean shouldSkipPhase(GameState gameState, ModifiersQuerying modifiersQuerying, Phase phase, String playerId) { - return phase == Phase.ARCHERY - && Filters.countSpottable(gameState, modifiersQuerying, Filters.siteControlled(self.getOwner())) >= 2; - } - }); + new ShouldSkipPhaseModifier(self, new SpotCondition(2, Filters.siteControlled(self.getOwner())), Phase.ARCHERY)); modifiers.add( new KeywordModifier(self, Filters.and(Filters.owner(self.getOwner()), Filters.culture(Culture.DUNLAND), Filters.race(Race.MAN)), new SpotCondition(3, Filters.siteControlled(self.getOwner())), Keyword.FIERCE, 1)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_215.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_215.java index 8ae65fc16..e0239ff00 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_215.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_215.java @@ -5,6 +5,7 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.AttachPermanentAction; import com.gempukku.lotro.cards.effects.ExertCharactersEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.modifiers.CantHealModifier; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Race; @@ -12,13 +13,9 @@ import com.gempukku.lotro.common.Side; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; -import com.gempukku.lotro.logic.modifiers.AbstractModifier; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.timing.EffectResult; import java.util.Collections; @@ -71,11 +68,6 @@ public class Card4_215 extends AbstractAttachable { @Override public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { return Collections.singletonList( - new AbstractModifier(self, "Can't have wounds removed", Filters.hasAttached(self), new ModifierEffect[]{ModifierEffect.WOUND_MODIFIER}) { - @Override - public boolean canBeHealed(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card) { - return false; - } - }); + new CantHealModifier(self, Filters.hasAttached(self))); } }