- Effects that remove card game text, should no longer cancel printed strength/vitality bonuses.

This commit is contained in:
marcins78
2013-04-08 09:21:23 +00:00
parent 0e182faa25
commit 343f9b859f
7 changed files with 38 additions and 3 deletions

View File

@@ -1,4 +1,7 @@
<pre style="font-size:80%">
<b>8 Apr. 2013</b>
- Effects that remove card game text, should no longer cancel printed strength/vitality bonuses.
<b>5 Apr. 2013</b>
- "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.

View File

@@ -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<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
List<Modifier> modifiers = new LinkedList<Modifier>();
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<? extends Modifier> extraModifiers = getNonBasicStatsModifiers(self);
if (extraModifiers != null)

View File

@@ -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;
}
}

View File

@@ -34,6 +34,11 @@ public abstract class AbstractModifier implements Modifier {
_effect = effect;
}
@Override
public boolean isNonCardTextModifier() {
return false;
}
@Override
public Condition getCondition() {
return _condition;

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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;
}
}