Ensure modifiers snapshot single cards if passed to them, to ensure they only apply to this incarnation of the card, and not if it is replayed (changing zones).
This commit is contained in:
@@ -10,11 +10,8 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class AllyMayNotParticipateInArcheryFireAndSkirmishesModifier extends AbstractModifier {
|
||||
private PhysicalCard _source;
|
||||
|
||||
public AllyMayNotParticipateInArcheryFireAndSkirmishesModifier(PhysicalCard source, Condition condition, Filter affectFilter) {
|
||||
super(source, "May not participate in archery fire and skirmishes", affectFilter, condition, ModifierEffect.PRESENCE_MODIFIER);
|
||||
_source = source;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
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;
|
||||
@@ -9,7 +10,7 @@ import com.gempukku.lotro.logic.modifiers.*;
|
||||
|
||||
public class CancelKeywordBonusTargetModifier extends AbstractModifier implements KeywordAffectingModifier {
|
||||
private Keyword _keyword;
|
||||
private Filterable _sourceFilter;
|
||||
private Filter _sourceFilter;
|
||||
|
||||
public CancelKeywordBonusTargetModifier(PhysicalCard source, Keyword keyword, Filterable affectFilter, Filterable sourceFilter) {
|
||||
this(source, keyword, null, affectFilter, sourceFilter);
|
||||
@@ -18,13 +19,13 @@ public class CancelKeywordBonusTargetModifier extends AbstractModifier implement
|
||||
public CancelKeywordBonusTargetModifier(PhysicalCard source, Keyword keyword, Condition condition, Filterable affectFilter, Filterable sourceFilter) {
|
||||
super(source, "Cancel " + keyword.getHumanReadable() + " keyword", affectFilter, condition, ModifierEffect.CANCEL_KEYWORD_BONUS_TARGET_MODIFIER);
|
||||
_keyword = keyword;
|
||||
_sourceFilter = sourceFilter;
|
||||
_sourceFilter = Filters.and(sourceFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean appliesKeywordModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard modifierSource, Keyword keyword) {
|
||||
if (keyword == _keyword
|
||||
&& (_sourceFilter == null || (modifierSource != null && Filters.and(_sourceFilter).accepts(gameState, modifiersQuerying, modifierSource))))
|
||||
&& (_sourceFilter == null || (modifierSource != null && _sourceFilter.accepts(gameState, modifiersQuerying, modifierSource))))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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;
|
||||
@@ -10,21 +11,20 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class CancelStrengthBonusTargetModifier extends AbstractModifier {
|
||||
private Filterable _sourceFilter;
|
||||
private Filter _sourceFilter;
|
||||
|
||||
public CancelStrengthBonusTargetModifier(PhysicalCard source, Filterable affectFilter, Filterable sourceFilter) {
|
||||
super(source, "Has some strength bonuses cancelled", affectFilter, ModifierEffect.STRENGTH_BONUS_TARGET_MODIFIER);
|
||||
_sourceFilter = sourceFilter;
|
||||
this(source, null, affectFilter, sourceFilter);
|
||||
}
|
||||
|
||||
public CancelStrengthBonusTargetModifier(PhysicalCard source, Condition condition, Filterable affectFilter, Filterable sourceFilter) {
|
||||
super(source, "Has some strength bonuses cancelled", affectFilter, condition, ModifierEffect.STRENGTH_BONUS_TARGET_MODIFIER);
|
||||
_sourceFilter = sourceFilter;
|
||||
_sourceFilter = Filters.and(sourceFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean appliesStrengthBonusModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard modifierSource, PhysicalCard modifierTaget) {
|
||||
if (_sourceFilter == null || (modifierSource != null && Filters.and(_sourceFilter).accepts(gameState, modifiersQuerying, modifierSource)))
|
||||
if (_sourceFilter == null || (modifierSource != null && _sourceFilter.accepts(gameState, modifiersQuerying, modifierSource)))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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;
|
||||
@@ -10,16 +11,16 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class CantAddBurdensModifier extends AbstractModifier {
|
||||
private Filterable[] _sourceFilters;
|
||||
private Filter _sourceFilters;
|
||||
|
||||
public CantAddBurdensModifier(PhysicalCard source, Condition condition, Filterable... sourceFilters) {
|
||||
super(source, "Can't add burdens", null, condition, ModifierEffect.BURDEN_MODIFIER);
|
||||
_sourceFilters = sourceFilters;
|
||||
_sourceFilters = Filters.and(sourceFilters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAddBurden(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, PhysicalCard source) {
|
||||
if (Filters.and(_sourceFilters).accepts(gameState, modifiersQuerying, source))
|
||||
if (_sourceFilters.accepts(gameState, modifiersQuerying, source))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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;
|
||||
@@ -14,18 +15,18 @@ import java.util.Set;
|
||||
|
||||
public class CantBeAssignedAgainstModifier extends AbstractModifier {
|
||||
private Side _side;
|
||||
private Filterable _minionFilter;
|
||||
private Filter _minionFilter;
|
||||
|
||||
public CantBeAssignedAgainstModifier(PhysicalCard source, Side side, Filterable characterFilter, Filterable minionFilter) {
|
||||
super(source, "Is affected by assignment restriction", characterFilter, ModifierEffect.ASSIGNMENT_MODIFIER);
|
||||
_side = side;
|
||||
_minionFilter = minionFilter;
|
||||
_minionFilter = Filters.and(minionFilter);
|
||||
}
|
||||
|
||||
public CantBeAssignedAgainstModifier(PhysicalCard source, Side side, Filterable characterFilter, Condition condition, Filterable minionFilter) {
|
||||
super(source, "Is affected by assignment restriction", characterFilter, condition, ModifierEffect.ASSIGNMENT_MODIFIER);
|
||||
_side = side;
|
||||
_minionFilter = minionFilter;
|
||||
_minionFilter = Filters.and(minionFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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;
|
||||
@@ -10,19 +11,19 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class CantDiscardCardsFromHandOrTopOfDeckModifier extends AbstractModifier {
|
||||
private Filterable[] _discardSourceAffected;
|
||||
private Filter _discardSourceAffected;
|
||||
private String _playerId;
|
||||
|
||||
public CantDiscardCardsFromHandOrTopOfDeckModifier(PhysicalCard source, Condition condition, String playerId, Filterable... discardSourceAffected) {
|
||||
super(source, null, null, condition, ModifierEffect.DISCARD_NOT_FROM_PLAY);
|
||||
_playerId = playerId;
|
||||
_discardSourceAffected = discardSourceAffected;
|
||||
_discardSourceAffected = Filters.and(discardSourceAffected);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDiscardCardsFromHand(GameState gameState, ModifiersQuerying modifiersQuerying, String playerId, PhysicalCard source) {
|
||||
if (playerId.equals(_playerId))
|
||||
if (source == null || Filters.and(_discardSourceAffected).accepts(gameState, modifiersQuerying, source))
|
||||
if (source == null || _discardSourceAffected.accepts(gameState, modifiersQuerying, source))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
@@ -30,7 +31,7 @@ public class CantDiscardCardsFromHandOrTopOfDeckModifier extends AbstractModifie
|
||||
@Override
|
||||
public boolean canDiscardCardsFromTopOfDeck(GameState gameState, ModifiersQuerying modifiersQuerying, String playerId, PhysicalCard source) {
|
||||
if (playerId.equals(_playerId))
|
||||
if (source == null || Filters.and(_discardSourceAffected).accepts(gameState, modifiersQuerying, source))
|
||||
if (source == null || _discardSourceAffected.accepts(gameState, modifiersQuerying, source))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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;
|
||||
@@ -10,7 +11,7 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class CantExertWithCardModifier extends AbstractModifier {
|
||||
private Filterable _preventExertWithFilter;
|
||||
private Filter _preventExertWithFilter;
|
||||
|
||||
public CantExertWithCardModifier(PhysicalCard source, Filterable affectFilter, Filterable preventExertWithFilter) {
|
||||
this(source, affectFilter, null, preventExertWithFilter);
|
||||
@@ -18,12 +19,12 @@ public class CantExertWithCardModifier extends AbstractModifier {
|
||||
|
||||
public CantExertWithCardModifier(PhysicalCard source, Filterable affectFilter, Condition condition, Filterable preventExertWithFilter) {
|
||||
super(source, "Affected by exertion preventing effect", affectFilter, condition, ModifierEffect.WOUND_MODIFIER);
|
||||
_preventExertWithFilter = preventExertWithFilter;
|
||||
_preventExertWithFilter = Filters.and(preventExertWithFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBeExerted(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard source, PhysicalCard card) {
|
||||
if (Filters.and(_preventExertWithFilter).accepts(gameState, modifiersQuerying, source))
|
||||
if (_preventExertWithFilter.accepts(gameState, modifiersQuerying, source))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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;
|
||||
@@ -10,16 +11,16 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class CantRemoveBurdensModifier extends AbstractModifier {
|
||||
private Filterable[] _sourceFilters;
|
||||
private Filter _sourceFilters;
|
||||
|
||||
public CantRemoveBurdensModifier(PhysicalCard source, Condition condition, Filterable... sourceFilters) {
|
||||
super(source, "Can't remove burdens", null, condition, ModifierEffect.BURDEN_MODIFIER);
|
||||
_sourceFilters = sourceFilters;
|
||||
_sourceFilters = Filters.and(sourceFilters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canRemoveBurden(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard source) {
|
||||
if (Filters.and(_sourceFilters).accepts(gameState, modifiersQuerying, source))
|
||||
if (_sourceFilters.accepts(gameState, modifiersQuerying, source))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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;
|
||||
@@ -10,16 +11,16 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class CantRemoveThreatsModifier extends AbstractModifier {
|
||||
private Filterable[] _sourceFilters;
|
||||
private Filter _sourceFilters;
|
||||
|
||||
public CantRemoveThreatsModifier(PhysicalCard source, Condition condition, Filterable... sourceFilters) {
|
||||
super(source, "Can't remove threats", null, condition, ModifierEffect.THREAT_MODIFIER);
|
||||
_sourceFilters = sourceFilters;
|
||||
_sourceFilters = Filters.and(sourceFilters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canRemoveThreat(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard source) {
|
||||
if (Filters.and(_sourceFilters).accepts(gameState, modifiersQuerying, source))
|
||||
if (_sourceFilters.accepts(gameState, modifiersQuerying, source))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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;
|
||||
@@ -11,11 +12,11 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import java.util.Set;
|
||||
|
||||
public class CantTakeWoundsFromLosingSkirmishModifier extends AbstractModifier {
|
||||
private Filterable _winnersFilter;
|
||||
private Filter _winnersFilter;
|
||||
|
||||
public CantTakeWoundsFromLosingSkirmishModifier(PhysicalCard source, Filterable affectFilter, Filterable winnersFilter) {
|
||||
super(source, "Can't take wounds", affectFilter, ModifierEffect.WOUND_MODIFIER);
|
||||
_winnersFilter = winnersFilter;
|
||||
_winnersFilter = Filters.and(winnersFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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;
|
||||
@@ -12,7 +13,7 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import java.util.Collection;
|
||||
|
||||
public class CantWoundWithCardModifier extends AbstractModifier {
|
||||
private Filterable _preventWoundWithFilter;
|
||||
private Filter _preventWoundWithFilter;
|
||||
|
||||
public CantWoundWithCardModifier(PhysicalCard source, Filterable affectFilter, Filterable preventWoundWithFilter) {
|
||||
this(source, affectFilter, null, preventWoundWithFilter);
|
||||
@@ -20,13 +21,13 @@ public class CantWoundWithCardModifier extends AbstractModifier {
|
||||
|
||||
public CantWoundWithCardModifier(PhysicalCard source, Filterable affectFilter, Condition condition, Filterable preventWoundWithFilter) {
|
||||
super(source, "Affected by wound preventing effect", affectFilter, condition, ModifierEffect.WOUND_MODIFIER);
|
||||
_preventWoundWithFilter = preventWoundWithFilter;
|
||||
_preventWoundWithFilter = Filters.and(preventWoundWithFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canTakeWounds(GameState gameState, ModifiersQuerying modifiersQuerying, Collection<PhysicalCard> woundSources, PhysicalCard physicalCard, int woundsAlreadyTaken, int woundsToTake) {
|
||||
for (PhysicalCard woundSource : woundSources) {
|
||||
if (Filters.and(_preventWoundWithFilter).accepts(gameState, modifiersQuerying, woundSource))
|
||||
if (_preventWoundWithFilter.accepts(gameState, modifiersQuerying, woundSource))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
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;
|
||||
@@ -14,7 +15,7 @@ import com.gempukku.lotro.logic.timing.Action;
|
||||
public class PlayersCantUseCardPhaseSpecialAbilitiesModifier extends AbstractModifier {
|
||||
|
||||
private Phase _phase;
|
||||
private Filterable[] _sourceFilters;
|
||||
private Filter _sourceFilters;
|
||||
|
||||
public PlayersCantUseCardPhaseSpecialAbilitiesModifier(PhysicalCard source, Phase phase, Filterable... sourceFilters) {
|
||||
this(source, null, phase, sourceFilters);
|
||||
@@ -23,14 +24,14 @@ public class PlayersCantUseCardPhaseSpecialAbilitiesModifier extends AbstractMod
|
||||
public PlayersCantUseCardPhaseSpecialAbilitiesModifier(PhysicalCard source, Condition condition, Phase phase, Filterable... sourceFilters) {
|
||||
super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER);
|
||||
_phase = phase;
|
||||
_sourceFilters = sourceFilters;
|
||||
_sourceFilters = Filters.and(sourceFilters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayAction(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, Action action) {
|
||||
if (action.getType() == Action.Type.SPECIAL_ABILITY
|
||||
&& action.getActionTimeword() == _phase
|
||||
&& Filters.and(_sourceFilters).accepts(gameState, modifiersQuerying, action.getActionSource()))
|
||||
&& _sourceFilters.accepts(gameState, modifiersQuerying, action.getActionSource()))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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;
|
||||
@@ -12,7 +13,7 @@ import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
public class PlayersCantUseCardSpecialAbilitiesModifier extends AbstractModifier {
|
||||
|
||||
private Filterable[] _sourceFilters;
|
||||
private Filter _sourceFilters;
|
||||
|
||||
public PlayersCantUseCardSpecialAbilitiesModifier(PhysicalCard source, Filterable... sourceFilters) {
|
||||
this(source, null, sourceFilters);
|
||||
@@ -20,13 +21,13 @@ public class PlayersCantUseCardSpecialAbilitiesModifier extends AbstractModifier
|
||||
|
||||
public PlayersCantUseCardSpecialAbilitiesModifier(PhysicalCard source, Condition condition, Filterable... sourceFilters) {
|
||||
super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER);
|
||||
_sourceFilters = sourceFilters;
|
||||
_sourceFilters = Filters.and(sourceFilters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayAction(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, Action action) {
|
||||
if (action.getType() == Action.Type.SPECIAL_ABILITY
|
||||
&& Filters.and(_sourceFilters).accepts(gameState, modifiersQuerying, action.getActionSource()))
|
||||
&& _sourceFilters.accepts(gameState, modifiersQuerying, action.getActionSource()))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
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;
|
||||
@@ -12,8 +12,7 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
public class RemoveSpecialAbilitiesModifier extends AbstractModifier {
|
||||
private Phase _phase;
|
||||
private Filterable _affectFilter;
|
||||
private Filter _affectFilter;
|
||||
|
||||
public RemoveSpecialAbilitiesModifier(PhysicalCard source, Filterable affectFilter) {
|
||||
this(source, null, affectFilter);
|
||||
@@ -21,13 +20,13 @@ public class RemoveSpecialAbilitiesModifier extends AbstractModifier {
|
||||
|
||||
public RemoveSpecialAbilitiesModifier(PhysicalCard source, Condition condition, Filterable affectFilter) {
|
||||
super(source, "Removed special abilities", affectFilter, condition, ModifierEffect.ACTION_MODIFIER);
|
||||
_affectFilter = affectFilter;
|
||||
_affectFilter = Filters.and(affectFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayAction(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, Action action) {
|
||||
if (action.getType() == Action.Type.SPECIAL_ABILITY
|
||||
&& action.getActionSource() != null && Filters.and(_affectFilter).accepts(gameState, modifiersQuerying, action.getActionSource()))
|
||||
&& action.getActionSource() != null && _affectFilter.accepts(gameState, modifiersQuerying, action.getActionSource()))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -8,11 +8,9 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class UnhastyCompanionParticipatesInSkirmishedModifier extends AbstractModifier {
|
||||
private PhysicalCard _source;
|
||||
|
||||
public UnhastyCompanionParticipatesInSkirmishedModifier(PhysicalCard source, Filterable affectFilter) {
|
||||
super(source, "Can participate in archery and skirmishes", affectFilter, ModifierEffect.PRESENCE_MODIFIER);
|
||||
_source = source;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
package com.gempukku.lotro.logic.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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;
|
||||
|
||||
public class CantDiscardFromPlayModifier extends AbstractModifier {
|
||||
private Filterable _sourceFilter;
|
||||
private Filter _sourceFilter;
|
||||
|
||||
public CantDiscardFromPlayModifier(PhysicalCard source, String text, Filterable affectFilter, Filterable sourceFilter) {
|
||||
super(source, text, affectFilter, ModifierEffect.DISCARD_FROM_PLAY_MODIFIER);
|
||||
_sourceFilter = sourceFilter;
|
||||
this(source, text, null, affectFilter, sourceFilter);
|
||||
}
|
||||
|
||||
public CantDiscardFromPlayModifier(PhysicalCard source, String text, Condition condition, Filterable affectFilter, Filterable sourceFilter) {
|
||||
super(source, text, affectFilter, condition, ModifierEffect.DISCARD_FROM_PLAY_MODIFIER);
|
||||
_sourceFilter = sourceFilter;
|
||||
_sourceFilter = Filters.and(sourceFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBeDiscardedFromPlay(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, PhysicalCard card, PhysicalCard source) {
|
||||
if (Filters.and(_sourceFilter).accepts(gameState, modifiersQuerying, source))
|
||||
if (_sourceFilter.accepts(gameState, modifiersQuerying, source))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
package com.gempukku.lotro.logic.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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.logic.timing.Action;
|
||||
|
||||
public class CantPlayCardsModifier extends AbstractModifier {
|
||||
private Filterable[] _filters;
|
||||
private Filter _filters;
|
||||
|
||||
public CantPlayCardsModifier(PhysicalCard source, Filterable... filters) {
|
||||
this(source, null, filters);
|
||||
@@ -15,7 +16,7 @@ public class CantPlayCardsModifier extends AbstractModifier {
|
||||
|
||||
public CantPlayCardsModifier(PhysicalCard source, Condition condition, Filterable... filters) {
|
||||
super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER);
|
||||
_filters = filters;
|
||||
_filters = Filters.and(filters);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -23,7 +24,7 @@ public class CantPlayCardsModifier extends AbstractModifier {
|
||||
final PhysicalCard actionSource = action.getActionSource();
|
||||
if (actionSource != null)
|
||||
if (action.getType() == Action.Type.PLAY_CARD)
|
||||
if (Filters.and(_filters).accepts(gameState, modifiersQuerying, actionSource))
|
||||
if (_filters.accepts(gameState, modifiersQuerying, actionSource))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user