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