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 e132b8094..41610ff02 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 @@
+8 Apr. 2013
+- Effects that remove card game text, should no longer cancel printed strength/vitality bonuses.
+
 5 Apr. 2013
 - "Deft In Their Movements" now applies only to sites that were in play at the time it was played.
 - "Into the Wild" now should correctly count the sites in current region.
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractAttachableFPPossession.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractAttachableFPPossession.java
index 56df7247c..a17cb527d 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractAttachableFPPossession.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractAttachableFPPossession.java
@@ -12,6 +12,7 @@ import com.gempukku.lotro.game.state.LotroGame;
 import com.gempukku.lotro.logic.modifiers.Modifier;
 import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
 import com.gempukku.lotro.logic.modifiers.StrengthModifier;
+import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator;
 import com.gempukku.lotro.logic.timing.Action;
 
 import java.util.LinkedList;
@@ -78,9 +79,9 @@ public abstract class AbstractAttachableFPPossession extends AbstractAttachable
     public final List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
         List modifiers = new LinkedList();
         if (_strength != 0)
-            modifiers.add(new StrengthModifier(self, Filters.hasAttached(self), _strength));
+            modifiers.add(new StrengthModifier(self, Filters.hasAttached(self), null, new ConstantEvaluator(_strength), true));
         if (_vitality != 0)
-            modifiers.add(new VitalityModifier(self, Filters.hasAttached(self), _vitality));
+            modifiers.add(new VitalityModifier(self, Filters.hasAttached(self), _vitality, true));
 
         List extraModifiers = getNonBasicStatsModifiers(self);
         if (extraModifiers != null)
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/VitalityModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/VitalityModifier.java
index ee9f5b8ad..eddb6aa79 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/VitalityModifier.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/VitalityModifier.java
@@ -9,14 +9,25 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
 
 public class VitalityModifier extends AbstractModifier {
     private int _modifier;
+    private boolean _nonCardTextModifier;
 
     public VitalityModifier(PhysicalCard source, Filterable affectFilter, int modifier) {
+        this(source, affectFilter, modifier, false);
+    }
+
+    public VitalityModifier(PhysicalCard source, Filterable affectFilter, int modifier, boolean nonCardTextModifier) {
         super(source, "Vitality " + ((modifier < 0) ? modifier : ("+" + modifier)), affectFilter, ModifierEffect.VITALITY_MODIFIER);
         _modifier = modifier;
+        _nonCardTextModifier = nonCardTextModifier;
     }
 
     @Override
     public int getVitalityModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
         return _modifier;
     }
+
+    @Override
+    public boolean isNonCardTextModifier() {
+        return _nonCardTextModifier;
+    }
 }
diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java
index 7893f1bc9..0ee8fcb84 100644
--- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java
@@ -34,6 +34,11 @@ public abstract class AbstractModifier implements Modifier {
         _effect = effect;
     }
 
+    @Override
+    public boolean isNonCardTextModifier() {
+        return false;
+    }
+
     @Override
     public Condition getCondition() {
         return _condition;
diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java
index f2051d422..5ce7c9eca 100644
--- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java
@@ -20,6 +20,8 @@ public interface Modifier {
 
     public ModifierEffect getModifierEffect();
 
+    public boolean isNonCardTextModifier();
+
     public Condition getCondition();
 
     public boolean affectsCard(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard);
diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java
index 52935a19a..a639938cf 100644
--- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java
@@ -137,7 +137,9 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
                         _skipSet.add(modifier);
                         Condition condition = modifier.getCondition();
                         if (condition == null || condition.isFullfilled(gameState, this))
-                            if (modifierEffect == ModifierEffect.TEXT_MODIFIER || modifier.getSource() == null || !hasTextRemoved(gameState, modifier.getSource())) {
+                            if (modifierEffect == ModifierEffect.TEXT_MODIFIER || modifier.getSource() == null ||
+                                    modifier.isNonCardTextModifier() ||
+                                    !hasTextRemoved(gameState, modifier.getSource())) {
                                 if (card == null || modifier.affectsCard(gameState, this, card))
                                     liveModifiers.add(modifier);
                             }
diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/StrengthModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/StrengthModifier.java
index 0ee2be6a1..76a1f58bf 100644
--- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/StrengthModifier.java
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/StrengthModifier.java
@@ -8,6 +8,7 @@ import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
 
 public class StrengthModifier extends AbstractModifier {
     private Evaluator _evaluator;
+    private boolean _nonCardTextModifier;
 
     public StrengthModifier(PhysicalCard source, Filterable affectFilter, int modifier) {
         this(source, affectFilter, null, modifier);
@@ -18,8 +19,13 @@ public class StrengthModifier extends AbstractModifier {
     }
 
     public StrengthModifier(PhysicalCard source, Filterable affectFilter, Condition condition, Evaluator evaluator) {
+        this(source, affectFilter, condition, evaluator, false);
+    }
+
+    public StrengthModifier(PhysicalCard source, Filterable affectFilter, Condition condition, Evaluator evaluator, boolean nonCardTextModifier) {
         super(source, null, affectFilter, condition, ModifierEffect.STRENGTH_MODIFIER);
         _evaluator = evaluator;
+        _nonCardTextModifier = nonCardTextModifier;
     }
 
     @Override
@@ -35,4 +41,9 @@ public class StrengthModifier extends AbstractModifier {
     public int getStrengthModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
         return _evaluator.evaluateExpression(gameState, modifiersQuerying, physicalCard);
     }
+
+    @Override
+    public boolean isNonCardTextModifier() {
+        return _nonCardTextModifier;
+    }
 }