From 1075420e45f55dbd476150bb39aee8408ba4287a Mon Sep 17 00:00:00 2001 From: marcins78 Date: Tue, 12 Feb 2013 10:23:55 +0000 Subject: [PATCH] - "Eregion's Trails" now makes a snapshot of affected cards upon being played and does not apply to any other cards. --- .../src/main/web/includes/changeLog.html | 3 ++ ...rengthModifierUntilStartOfPhaseEffect.java | 51 +++++++++++++++++++ .../lotro/cards/set1/gondor/Card1_104.java | 13 ++--- 3 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/SnapshotAndApplyStrengthModifierUntilStartOfPhaseEffect.java diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html index 621a30043..abd022304 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html +++ b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html @@ -1,4 +1,7 @@
+12 Feb. 2013
+- "Eregion's Trails" now makes a snapshot of affected cards upon being played and does not apply to any other cards.
+
 05 Feb. 2013
 - "Throne of the Dark Lord" should now correctly apply the resistance penalty.
 
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/SnapshotAndApplyStrengthModifierUntilStartOfPhaseEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/SnapshotAndApplyStrengthModifierUntilStartOfPhaseEffect.java
new file mode 100644
index 000000000..c777ea788
--- /dev/null
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/SnapshotAndApplyStrengthModifierUntilStartOfPhaseEffect.java
@@ -0,0 +1,51 @@
+package com.gempukku.lotro.cards.effects;
+
+import com.gempukku.lotro.common.Filterable;
+import com.gempukku.lotro.common.Phase;
+import com.gempukku.lotro.filters.Filters;
+import com.gempukku.lotro.game.PhysicalCard;
+import com.gempukku.lotro.game.state.LotroGame;
+import com.gempukku.lotro.logic.modifiers.StrengthModifier;
+import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
+import com.gempukku.lotro.logic.timing.AbstractEffect;
+
+public class SnapshotAndApplyStrengthModifierUntilStartOfPhaseEffect extends AbstractEffect {
+    private PhysicalCard _source;
+    private Filterable[] _filters;
+    private Evaluator _evaluator;
+    private Phase _phase;
+
+    public SnapshotAndApplyStrengthModifierUntilStartOfPhaseEffect(PhysicalCard source, Evaluator evaluator, Phase phase, Filterable... filter) {
+        _source = source;
+        _evaluator = evaluator;
+        _phase = phase;
+        _filters = filter;
+    }
+
+    @Override
+    public String getText(LotroGame game) {
+        return "Apply strength modifier";
+    }
+
+    @Override
+    protected FullEffectResult playEffectReturningResult(LotroGame game) {
+        for (PhysicalCard physicalCard : Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), _filters)) {
+            final int modifier = _evaluator.evaluateExpression(game.getGameState(), game.getModifiersQuerying(), physicalCard);
+            if (modifier != 0)
+                game.getModifiersEnvironment().addUntilStartOfPhaseModifier(
+                        new StrengthModifier(_source, physicalCard, modifier), _phase);
+        }
+
+        return new FullEffectResult(true);
+    }
+
+    @Override
+    public Type getType() {
+        return null;
+    }
+
+    @Override
+    public boolean isPlayableInFull(LotroGame game) {
+        return true;
+    }
+}
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_104.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_104.java
index 9f2e38bb1..01d48a8b0 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_104.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_104.java
@@ -3,15 +3,12 @@ package com.gempukku.lotro.cards.set1.gondor;
 import com.gempukku.lotro.cards.AbstractOldEvent;
 import com.gempukku.lotro.cards.PlayConditions;
 import com.gempukku.lotro.cards.actions.PlayEventAction;
-import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect;
+import com.gempukku.lotro.cards.effects.SnapshotAndApplyStrengthModifierUntilStartOfPhaseEffect;
 import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
-import com.gempukku.lotro.common.Culture;
-import com.gempukku.lotro.common.Keyword;
-import com.gempukku.lotro.common.Phase;
-import com.gempukku.lotro.common.Side;
+import com.gempukku.lotro.common.*;
 import com.gempukku.lotro.game.PhysicalCard;
 import com.gempukku.lotro.game.state.LotroGame;
-import com.gempukku.lotro.logic.modifiers.StrengthModifier;
+import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator;
 
 /**
  * Set: The Fellowship of the Ring
@@ -38,8 +35,8 @@ public class Card1_104 extends AbstractOldEvent {
         action.appendCost(
                 new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Keyword.RANGER));
         action.appendEffect(
-                new AddUntilStartOfPhaseModifierEffect(
-                        new StrengthModifier(self, Keyword.ROAMING, -3), Phase.REGROUP));
+                new SnapshotAndApplyStrengthModifierUntilStartOfPhaseEffect(
+                        self, new ConstantEvaluator(-3), Phase.REGROUP, CardType.MINION, Keyword.ROAMING));
         return action;
     }