Checking conditions for modifiers once only, not for every card.
This commit is contained in:
@@ -12,7 +12,6 @@ import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
|
||||
|
||||
public class ArcheryTotalModifier extends AbstractModifier {
|
||||
private Side _side;
|
||||
private Condition _condition;
|
||||
private Evaluator _evaluator;
|
||||
|
||||
public ArcheryTotalModifier(PhysicalCard source, Side side, int modifier) {
|
||||
@@ -24,9 +23,8 @@ public class ArcheryTotalModifier extends AbstractModifier {
|
||||
}
|
||||
|
||||
public ArcheryTotalModifier(PhysicalCard source, Side side, Condition condition, Evaluator evaluator) {
|
||||
super(source, null, null, ModifierEffect.ARCHERY_MODIFIER);
|
||||
super(source, null, null, condition, ModifierEffect.ARCHERY_MODIFIER);
|
||||
_side = side;
|
||||
_condition = condition;
|
||||
_evaluator = evaluator;
|
||||
}
|
||||
|
||||
@@ -38,9 +36,6 @@ public class ArcheryTotalModifier extends AbstractModifier {
|
||||
|
||||
@Override
|
||||
public int getArcheryTotalModifier(GameState gameState, ModifiersQuerying modifiersQuerying, Side side) {
|
||||
if (side == _side && ((_condition == null) || (_condition.isFullfilled(gameState, modifiersQuerying))))
|
||||
return _evaluator.evaluateExpression(gameState, modifiersQuerying, null);
|
||||
else
|
||||
return 0;
|
||||
return _evaluator.evaluateExpression(gameState, modifiersQuerying, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,12 +11,10 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class CantDiscardCardsFromHandOrTopOfDeckModifier extends AbstractModifier {
|
||||
private Filterable[] _discardSourceAffected;
|
||||
private Condition _condition;
|
||||
private String _playerId;
|
||||
|
||||
public CantDiscardCardsFromHandOrTopOfDeckModifier(PhysicalCard source, Condition condition, String playerId, Filterable... discardSourceAffected) {
|
||||
super(source, null, null, ModifierEffect.DISCARD_NOT_FROM_PLAY);
|
||||
_condition = condition;
|
||||
super(source, null, null, condition, ModifierEffect.DISCARD_NOT_FROM_PLAY);
|
||||
_playerId = playerId;
|
||||
_discardSourceAffected = discardSourceAffected;
|
||||
}
|
||||
@@ -24,18 +22,16 @@ public class CantDiscardCardsFromHandOrTopOfDeckModifier extends AbstractModifie
|
||||
@Override
|
||||
public boolean canDiscardCardsFromHand(GameState gameState, ModifiersQuerying modifiersQuerying, String playerId, PhysicalCard source) {
|
||||
if (playerId.equals(_playerId))
|
||||
if (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
if (source == null || Filters.and(_discardSourceAffected).accepts(gameState, modifiersQuerying, source))
|
||||
return false;
|
||||
if (source == null || Filters.and(_discardSourceAffected).accepts(gameState, modifiersQuerying, source))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDiscardCardsFromTopOfDeck(GameState gameState, ModifiersQuerying modifiersQuerying, String playerId, PhysicalCard source) {
|
||||
if (playerId.equals(_playerId))
|
||||
if (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
if (source == null || Filters.and(_discardSourceAffected).accepts(gameState, modifiersQuerying, source))
|
||||
return false;
|
||||
if (source == null || Filters.and(_discardSourceAffected).accepts(gameState, modifiersQuerying, source))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
public class CantPlayCardsModifier extends AbstractModifier {
|
||||
private Condition _condition;
|
||||
private Filterable[] _filters;
|
||||
|
||||
public CantPlayCardsModifier(PhysicalCard source, Filterable... filters) {
|
||||
@@ -19,8 +18,7 @@ public class CantPlayCardsModifier extends AbstractModifier {
|
||||
}
|
||||
|
||||
public CantPlayCardsModifier(PhysicalCard source, Condition condition, Filterable... filters) {
|
||||
super(source, null, null, null, ModifierEffect.ACTION_MODIFIER);
|
||||
_condition = condition;
|
||||
super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER);
|
||||
_filters = filters;
|
||||
}
|
||||
|
||||
@@ -29,9 +27,8 @@ public class CantPlayCardsModifier extends AbstractModifier {
|
||||
final PhysicalCard actionSource = action.getActionSource().getPhysicalCard();
|
||||
if (actionSource != null)
|
||||
if (action.getType() == Action.Type.PLAY_CARD)
|
||||
if (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
if (Filters.and(_filters).accepts(gameState, modifiersQuerying, actionSource))
|
||||
return false;
|
||||
if (Filters.and(_filters).accepts(gameState, modifiersQuerying, actionSource))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,19 +10,16 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class CantRemoveBurdensModifier extends AbstractModifier {
|
||||
private Condition _condition;
|
||||
private Filterable[] _sourceFilters;
|
||||
|
||||
public CantRemoveBurdensModifier(PhysicalCard source, Condition condition, Filterable... sourceFilters) {
|
||||
super(source, "Can't remove burdens", null, condition, ModifierEffect.BURDEN_MODIFIER);
|
||||
_condition = condition;
|
||||
_sourceFilters = sourceFilters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canRemoveBurden(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard source) {
|
||||
if ((_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
&& Filters.and(_sourceFilters).accepts(gameState, modifiersQuerying, source))
|
||||
if (Filters.and(_sourceFilters).accepts(gameState, modifiersQuerying, source))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -10,19 +10,16 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class CantRemoveThreatsModifier extends AbstractModifier {
|
||||
private Condition _condition;
|
||||
private Filterable[] _sourceFilters;
|
||||
|
||||
public CantRemoveThreatsModifier(PhysicalCard source, Condition condition, Filterable... sourceFilters) {
|
||||
super(source, "Can't remove threats", null, condition, ModifierEffect.BURDEN_MODIFIER);
|
||||
_condition = condition;
|
||||
_sourceFilters = sourceFilters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canRemoveThreat(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard source) {
|
||||
if ((_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
&& Filters.and(_sourceFilters).accepts(gameState, modifiersQuerying, source))
|
||||
if (Filters.and(_sourceFilters).accepts(gameState, modifiersQuerying, source))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -10,21 +10,17 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class FreePeoplePlayerMayNotAssignCharacterModifier extends AbstractModifier {
|
||||
private Condition _condition;
|
||||
|
||||
public FreePeoplePlayerMayNotAssignCharacterModifier(PhysicalCard source, Filterable affectFilter) {
|
||||
this(source, null, affectFilter);
|
||||
}
|
||||
|
||||
public FreePeoplePlayerMayNotAssignCharacterModifier(PhysicalCard source, Condition condition, Filterable affectFilter) {
|
||||
super(source, "Free people player may not assign character to skirmish", affectFilter, null, ModifierEffect.ASSIGNMENT_MODIFIER);
|
||||
_condition = condition;
|
||||
super(source, "Free people player may not assign character to skirmish", affectFilter, condition, ModifierEffect.ASSIGNMENT_MODIFIER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBeAssignedToSkirmish(GameState gameState, Side sidePlayer, ModifiersQuerying modifiersQuerying, PhysicalCard card) {
|
||||
if (sidePlayer == Side.FREE_PEOPLE
|
||||
&& (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying)))
|
||||
if (sidePlayer == Side.FREE_PEOPLE)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -9,19 +9,15 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class HasInitiativeModifier extends AbstractModifier {
|
||||
private Condition _condition;
|
||||
private Side _side;
|
||||
|
||||
public HasInitiativeModifier(PhysicalCard source, Condition condition, Side side) {
|
||||
super(source, side + " has initiative", null, ModifierEffect.INITIATIVE_MODIFIER);
|
||||
_condition = condition;
|
||||
super(source, side + " has initiative", null, condition, ModifierEffect.INITIATIVE_MODIFIER);
|
||||
_side = side;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Side hasInitiative(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
if (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
return _side;
|
||||
return null;
|
||||
return _side;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@ import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
|
||||
|
||||
public class InitiativeHandSizeModifier extends AbstractModifier {
|
||||
private Condition _condition;
|
||||
private Evaluator _evaluator;
|
||||
|
||||
public InitiativeHandSizeModifier(PhysicalCard source, int modifier) {
|
||||
@@ -22,16 +21,12 @@ public class InitiativeHandSizeModifier extends AbstractModifier {
|
||||
}
|
||||
|
||||
public InitiativeHandSizeModifier(PhysicalCard source, Condition condition, Evaluator evaluator) {
|
||||
super(source, null, null, ModifierEffect.INITIATIVE_MODIFIER);
|
||||
_condition = condition;
|
||||
super(source, null, null, condition, ModifierEffect.INITIATIVE_MODIFIER);
|
||||
_evaluator = evaluator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInitiativeHandSizeModifier(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
if (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
return _evaluator.evaluateExpression(gameState, modifiersQuerying, null);
|
||||
else
|
||||
return 0;
|
||||
return _evaluator.evaluateExpression(gameState, modifiersQuerying, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class MoveLimitModifier extends AbstractModifier {
|
||||
private Condition _condition;
|
||||
private int _moveLimitModifier;
|
||||
|
||||
public MoveLimitModifier(PhysicalCard source, int moveLimitModifier) {
|
||||
@@ -16,15 +15,12 @@ public class MoveLimitModifier extends AbstractModifier {
|
||||
}
|
||||
|
||||
public MoveLimitModifier(PhysicalCard source, Condition condition, int moveLimitModifier) {
|
||||
super(source, "Move limit " + ((moveLimitModifier < 0) ? moveLimitModifier : ("+" + moveLimitModifier)), null, ModifierEffect.MOVE_LIMIT_MODIFIER);
|
||||
_condition = condition;
|
||||
super(source, "Move limit " + ((moveLimitModifier < 0) ? moveLimitModifier : ("+" + moveLimitModifier)), null, condition, ModifierEffect.MOVE_LIMIT_MODIFIER);
|
||||
_moveLimitModifier = moveLimitModifier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMoveLimitModifier(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
if (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
return _moveLimitModifier;
|
||||
return 0;
|
||||
return _moveLimitModifier;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,6 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
public class PlayerCantPlayPhaseEventsOrSpecialAbilitiesModifier extends AbstractModifier {
|
||||
|
||||
private Condition _condition;
|
||||
private String _playerId;
|
||||
private Phase _phase;
|
||||
|
||||
@@ -20,17 +18,15 @@ public class PlayerCantPlayPhaseEventsOrSpecialAbilitiesModifier extends Abstrac
|
||||
}
|
||||
|
||||
public PlayerCantPlayPhaseEventsOrSpecialAbilitiesModifier(PhysicalCard source, Condition condition, String playerId, Phase phase) {
|
||||
super(source, null, null, ModifierEffect.ACTION_MODIFIER);
|
||||
_condition = condition;
|
||||
super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER);
|
||||
_playerId = playerId;
|
||||
_phase = phase;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayAction(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, Action action) {
|
||||
if (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
if (performingPlayer.equals(_playerId) && action.getActionTimeword() == _phase)
|
||||
return false;
|
||||
if (performingPlayer.equals(_playerId) && action.getActionTimeword() == _phase)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,6 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
public class PlayerCantUsePhaseSpecialAbilitiesModifier extends AbstractModifier {
|
||||
|
||||
private Condition _condition;
|
||||
private String _playerId;
|
||||
private Phase _phase;
|
||||
|
||||
@@ -20,17 +18,15 @@ public class PlayerCantUsePhaseSpecialAbilitiesModifier extends AbstractModifier
|
||||
}
|
||||
|
||||
public PlayerCantUsePhaseSpecialAbilitiesModifier(PhysicalCard source, Condition condition, String playerId, Phase phase) {
|
||||
super(source, null, null, ModifierEffect.ACTION_MODIFIER);
|
||||
_condition = condition;
|
||||
super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER);
|
||||
_playerId = playerId;
|
||||
_phase = phase;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayAction(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, Action action) {
|
||||
if (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
if (performingPlayer.equals(_playerId) && action.getActionTimeword() == _phase && action.getType() == Action.Type.SPECIAL_ABILITY)
|
||||
return false;
|
||||
if (performingPlayer.equals(_playerId) && action.getActionTimeword() == _phase && action.getType() == Action.Type.SPECIAL_ABILITY)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
public class PlayersCantPlayPhaseEventsOrSpecialAbilitiesModifier extends AbstractModifier {
|
||||
private Condition _condition;
|
||||
private Phase _phase;
|
||||
|
||||
public PlayersCantPlayPhaseEventsOrSpecialAbilitiesModifier(PhysicalCard source, Phase phase) {
|
||||
@@ -18,16 +17,14 @@ public class PlayersCantPlayPhaseEventsOrSpecialAbilitiesModifier extends Abstra
|
||||
}
|
||||
|
||||
public PlayersCantPlayPhaseEventsOrSpecialAbilitiesModifier(PhysicalCard source, Condition condition, Phase phase) {
|
||||
super(source, null, null, ModifierEffect.ACTION_MODIFIER);
|
||||
_condition = condition;
|
||||
super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER);
|
||||
_phase = phase;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayAction(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, Action action) {
|
||||
if (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
if (action.getActionTimeword() == _phase)
|
||||
return false;
|
||||
if (action.getActionTimeword() == _phase)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,6 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
public class PlayersCantUsePhaseSpecialAbilitiesModifier extends AbstractModifier {
|
||||
|
||||
private Condition _condition;
|
||||
private Phase _phase;
|
||||
|
||||
public PlayersCantUsePhaseSpecialAbilitiesModifier(PhysicalCard source, Phase phase) {
|
||||
@@ -19,16 +17,14 @@ public class PlayersCantUsePhaseSpecialAbilitiesModifier extends AbstractModifie
|
||||
}
|
||||
|
||||
public PlayersCantUsePhaseSpecialAbilitiesModifier(PhysicalCard source, Condition condition, Phase phase) {
|
||||
super(source, null, null, ModifierEffect.ACTION_MODIFIER);
|
||||
_condition = condition;
|
||||
super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER);
|
||||
_phase = phase;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayAction(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, Action action) {
|
||||
if (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
if (action.getActionTimeword() == _phase && action.getType() == Action.Type.SPECIAL_ABILITY)
|
||||
return false;
|
||||
if (action.getActionTimeword() == _phase && action.getType() == Action.Type.SPECIAL_ABILITY)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class ShouldSkipPhaseModifier extends AbstractModifier {
|
||||
private Condition _condition;
|
||||
private Phase _phase;
|
||||
private String _playerId;
|
||||
|
||||
@@ -22,15 +21,14 @@ public class ShouldSkipPhaseModifier extends AbstractModifier {
|
||||
}
|
||||
|
||||
public ShouldSkipPhaseModifier(PhysicalCard source, String playerId, Condition condition, Phase phase) {
|
||||
super(source, "Skip " + phase.toString() + " phase", null, ModifierEffect.ACTION_MODIFIER);
|
||||
super(source, "Skip " + phase.toString() + " phase", null, condition, ModifierEffect.ACTION_MODIFIER);
|
||||
_playerId = playerId;
|
||||
_condition = condition;
|
||||
_phase = phase;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipPhase(GameState gameState, ModifiersQuerying modifiersQuerying, Phase phase, String playerId) {
|
||||
if (phase == _phase && (_playerId == null || _playerId.equals(playerId)) && (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying)))
|
||||
if (phase == _phase && (_playerId == null || _playerId.equals(playerId)))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ import com.gempukku.lotro.game.state.GameState;
|
||||
import com.gempukku.lotro.logic.modifiers.*;
|
||||
|
||||
public class SpecialFlagModifier extends AbstractModifier {
|
||||
private Condition _condition;
|
||||
private ModifierFlag _modifierFlag;
|
||||
|
||||
public SpecialFlagModifier(PhysicalCard source, ModifierFlag modifierFlag) {
|
||||
@@ -13,15 +12,12 @@ public class SpecialFlagModifier extends AbstractModifier {
|
||||
}
|
||||
|
||||
public SpecialFlagModifier(PhysicalCard source, Condition condition, ModifierFlag modifierFlag) {
|
||||
super(source, "Special flag set", null, ModifierEffect.SPECIAL_FLAG_MODIFIER);
|
||||
_condition = condition;
|
||||
super(source, "Special flag set", null, condition, ModifierEffect.SPECIAL_FLAG_MODIFIER);
|
||||
_modifierFlag = modifierFlag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasFlagActive(GameState gameState, ModifiersQuerying modifiersQuerying, ModifierFlag modifierFlag) {
|
||||
if (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
return modifierFlag == _modifierFlag;
|
||||
return false;
|
||||
return modifierFlag == _modifierFlag;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,11 @@ public abstract class AbstractModifier implements Modifier {
|
||||
_effect = effect;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Condition getCondition() {
|
||||
return _condition;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PhysicalCard getSource() {
|
||||
return _physicalCard;
|
||||
@@ -48,7 +53,7 @@ public abstract class AbstractModifier implements Modifier {
|
||||
|
||||
@Override
|
||||
public boolean affectsCard(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
|
||||
return (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying)) && (_affectFilter != null && _affectFilter.accepts(gameState, modifiersQuerying, physicalCard));
|
||||
return (_affectFilter != null && _affectFilter.accepts(gameState, modifiersQuerying, physicalCard));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,6 +21,8 @@ public interface Modifier {
|
||||
|
||||
public ModifierEffect getModifierEffect();
|
||||
|
||||
public Condition getCondition();
|
||||
|
||||
public boolean affectsCard(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard);
|
||||
|
||||
public boolean hasRemovedText(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard);
|
||||
|
||||
@@ -83,16 +83,15 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
if (modifiers == null)
|
||||
return Collections.emptyList();
|
||||
else {
|
||||
if (modifierEffect != ModifierEffect.TEXT_MODIFIER) {
|
||||
LinkedList<Modifier> liveModifiers = new LinkedList<Modifier>();
|
||||
for (Modifier modifier : modifiers) {
|
||||
if (modifier.getSource() == null || !hasTextRemoved(gameState, modifier.getSource()))
|
||||
LinkedList<Modifier> liveModifiers = new LinkedList<Modifier>();
|
||||
for (Modifier modifier : modifiers) {
|
||||
Condition condition = modifier.getCondition();
|
||||
if (condition == null || condition.isFullfilled(gameState, this))
|
||||
if (modifierEffect == ModifierEffect.TEXT_MODIFIER || modifier.getSource() == null || !hasTextRemoved(gameState, modifier.getSource()))
|
||||
liveModifiers.add(modifier);
|
||||
}
|
||||
}
|
||||
|
||||
return liveModifiers;
|
||||
} else
|
||||
return modifiers;
|
||||
return liveModifiers;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,8 +155,10 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
Set<Modifier> result = new HashSet<Modifier>();
|
||||
for (List<Modifier> modifiers : _modifiers.values()) {
|
||||
for (Modifier modifier : modifiers) {
|
||||
if (affectsCardWithSkipSet(gameState, card, modifier))
|
||||
result.add(modifier);
|
||||
Condition condition = modifier.getCondition();
|
||||
if (condition == null || condition.isFullfilled(gameState, this))
|
||||
if (affectsCardWithSkipSet(gameState, card, modifier))
|
||||
result.add(modifier);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user