Simplifying some based on phase filters.

This commit is contained in:
marcins78@gmail.com
2012-01-05 12:53:58 +00:00
parent 08b890e8ba
commit 1f3d6f4729
14 changed files with 77 additions and 108 deletions

View File

@@ -1,8 +1,9 @@
package com.gempukku.lotro.cards.modifiers;
import com.gempukku.lotro.cards.modifiers.conditions.AndCondition;
import com.gempukku.lotro.cards.modifiers.conditions.PhaseCondition;
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;
@@ -20,13 +21,8 @@ public class CantTakeMoreThanXWoundsModifier extends AbstractModifier {
}
public CantTakeMoreThanXWoundsModifier(PhysicalCard source, final Phase phase, int count, Condition condition, Filterable... affectFilters) {
super(source, "Can't take more than " + count + " wound(s)", Filters.and(affectFilters,
new Filter() {
@Override
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
return phase == null || gameState.getCurrentPhase() == phase;
}
}), condition, ModifierEffect.WOUND_MODIFIER);
super(source, "Can't take more than " + count + " wound(s)", Filters.and(affectFilters),
new AndCondition(new PhaseCondition(phase), condition), ModifierEffect.WOUND_MODIFIER);
_phase = phase;
_count = count;
}

View File

@@ -0,0 +1,16 @@
package com.gempukku.lotro.cards.modifiers.conditions;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
public class FierceSkirmishCondition extends PhaseCondition {
public FierceSkirmishCondition() {
super(Phase.SKIRMISH);
}
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return super.isFullfilled(gameState, modifiersQuerying) && gameState.isFierceSkirmishes();
}
}

View File

@@ -14,6 +14,6 @@ public class PhaseCondition implements Condition {
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return gameState.getCurrentPhase() == _phase;
return _phase == null || gameState.getCurrentPhase() == _phase;
}
}

View File

@@ -1,14 +1,15 @@
package com.gempukku.lotro.cards.set12.men;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.modifiers.conditions.FierceSkirmishCondition;
import com.gempukku.lotro.cards.modifiers.evaluator.CardMatchesEvaluator;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Race;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.logic.modifiers.Condition;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
/**
@@ -32,12 +33,7 @@ public class Card12_060 extends AbstractMinion {
@Override
public Modifier getAlwaysOnModifier(PhysicalCard self) {
return new StrengthModifier(self, self,
new Condition() {
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return gameState.getCurrentPhase() == Phase.SKIRMISH && gameState.isFierceSkirmishes();
}
},
new FierceSkirmishCondition(),
new CardMatchesEvaluator(7, 10, Filters.inSkirmishAgainst(CardType.COMPANION, Filters.maxResistance(4))));
}
}

View File

@@ -5,16 +5,14 @@ import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.cards.modifiers.CantTakeWoundsModifier;
import com.gempukku.lotro.cards.modifiers.conditions.FierceSkirmishCondition;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Race;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.modifiers.Condition;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import java.util.Collections;
@@ -38,12 +36,7 @@ public class Card12_116 extends AbstractCompanion {
@Override
public Modifier getAlwaysOnModifier(PhysicalCard self) {
return new CantTakeWoundsModifier(self, new Condition() {
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return gameState.getCurrentPhase() == Phase.SKIRMISH && gameState.isFierceSkirmishes();
}
}, self);
return new CantTakeWoundsModifier(self, new FierceSkirmishCondition(), self);
}
@Override

View File

@@ -7,15 +7,15 @@ import com.gempukku.lotro.cards.effects.ExertCharactersEffect;
import com.gempukku.lotro.cards.effects.RemoveTwilightEffect;
import com.gempukku.lotro.cards.effects.SelfDiscardEffect;
import com.gempukku.lotro.cards.modifiers.CantTakeWoundsModifier;
import com.gempukku.lotro.cards.modifiers.conditions.NotCondition;
import com.gempukku.lotro.cards.modifiers.conditions.PhaseCondition;
import com.gempukku.lotro.common.*;
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.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.Effect;
@@ -46,15 +46,7 @@ public class Card2_097 extends AbstractAttachable {
@Override
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new CantTakeWoundsModifier(self,
Filters.and(
Filters.hasAttached(self),
new Filter() {
@Override
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
return gameState.getCurrentPhase() != Phase.ARCHERY;
}
})));
new CantTakeWoundsModifier(self, new NotCondition(new PhaseCondition(Phase.ARCHERY)), Filters.hasAttached(self)));
}
@Override

View File

@@ -7,11 +7,12 @@ import com.gempukku.lotro.cards.effects.PreventCardEffect;
import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.cards.modifiers.CantBeAssignedToSkirmishModifier;
import com.gempukku.lotro.cards.modifiers.CantTakeWoundsModifier;
import com.gempukku.lotro.cards.modifiers.conditions.AndCondition;
import com.gempukku.lotro.cards.modifiers.conditions.PhaseCondition;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Race;
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;
@@ -48,20 +49,14 @@ public class Card3_068 extends AbstractMinion {
List<Modifier> modifiers = new LinkedList<Modifier>();
modifiers.add(
new CantTakeWoundsModifier(self,
new Condition() {
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
}
},
Filters.and(
self,
new Filter() {
new AndCondition(
new PhaseCondition(Phase.ARCHERY),
new Condition() {
@Override
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
return gameState.getCurrentPhase() == Phase.ARCHERY;
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
}
})));
}), self));
modifiers.add(
new CantBeAssignedToSkirmishModifier(self,
new Condition() {

View File

@@ -7,8 +7,9 @@ import com.gempukku.lotro.cards.effects.PreventableEffect;
import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.cards.modifiers.CantBeAssignedToSkirmishModifier;
import com.gempukku.lotro.cards.modifiers.CantTakeWoundsModifier;
import com.gempukku.lotro.cards.modifiers.conditions.AndCondition;
import com.gempukku.lotro.cards.modifiers.conditions.PhaseCondition;
import com.gempukku.lotro.common.*;
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;
@@ -51,20 +52,14 @@ public class Card3_069 extends AbstractMinion {
List<Modifier> modifiers = new LinkedList<Modifier>();
modifiers.add(
new CantTakeWoundsModifier(self,
new Condition() {
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
}
},
Filters.and(
self,
new Filter() {
new AndCondition(
new PhaseCondition(Phase.ARCHERY),
new Condition() {
@Override
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
return gameState.getCurrentPhase() == Phase.ARCHERY;
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
}
})));
}), self));
modifiers.add(
new CantBeAssignedToSkirmishModifier(self,
new Condition() {

View File

@@ -1,12 +1,14 @@
package com.gempukku.lotro.cards.set4.gondor;
import com.gempukku.lotro.cards.AbstractCompanion;
import com.gempukku.lotro.cards.modifiers.conditions.PhaseCondition;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.modifiers.*;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.modifiers.TwilightCostModifier;
import java.util.LinkedList;
import java.util.List;
@@ -36,12 +38,7 @@ public class Card4_116 extends AbstractCompanion {
List<Modifier> modifiers = new LinkedList<Modifier>();
modifiers.add(
new TwilightCostModifier(self, Filters.and(Filters.not(self), Culture.GONDOR, Race.MAN),
new Condition() {
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return gameState.getCurrentPhase() == Phase.PLAY_STARTING_FELLOWSHIP;
}
}, -1));
new PhaseCondition(Phase.PLAY_STARTING_FELLOWSHIP), -1));
modifiers.add(
new StrengthModifier(self, Filters.and(self, Filters.inSkirmishAgainst(Filters.and(CardType.MINION, Keyword.ROAMING))), 2));
return modifiers;

View File

@@ -2,14 +2,13 @@ package com.gempukku.lotro.cards.set4.isengard;
import com.gempukku.lotro.cards.AbstractAttachable;
import com.gempukku.lotro.cards.modifiers.CantTakeWoundsModifier;
import com.gempukku.lotro.cards.modifiers.conditions.NotCondition;
import com.gempukku.lotro.cards.modifiers.conditions.PhaseCondition;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.modifiers.Condition;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import java.util.LinkedList;
@@ -40,13 +39,7 @@ public class Card4_142 extends AbstractAttachable {
modifiers.add(
new StrengthModifier(self, Filters.hasAttached(self), 2));
modifiers.add(
new CantTakeWoundsModifier(self,
new Condition() {
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return gameState.getCurrentPhase() != Phase.SKIRMISH;
}
}, Filters.hasAttached(self)));
new CantTakeWoundsModifier(self, new NotCondition(new PhaseCondition(Phase.SKIRMISH)), Filters.hasAttached(self)));
return modifiers;
}
}

View File

@@ -57,8 +57,6 @@ public class Card4_147 extends AbstractPermanent {
public boolean canPlayAction(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, Action action) {
if (!performingPlayer.equals(gameState.getCurrentPlayerId()))
return true;
if (gameState.getCurrentPhase() != Phase.ARCHERY)
return true;
if (action.getActionTimeword() == Phase.ARCHERY)
return false;

View File

@@ -8,6 +8,8 @@ import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffe
import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDiscardEffect;
import com.gempukku.lotro.cards.modifiers.CantBeAssignedToSkirmishModifier;
import com.gempukku.lotro.cards.modifiers.CantTakeWoundsModifier;
import com.gempukku.lotro.cards.modifiers.conditions.AndCondition;
import com.gempukku.lotro.cards.modifiers.conditions.PhaseCondition;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
@@ -51,12 +53,14 @@ public class Card4_173 extends AbstractMinion {
List<Modifier> modifiers = new LinkedList<Modifier>();
modifiers.add(
new CantTakeWoundsModifier(self,
new Condition() {
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return gameState.getCurrentPhase() == Phase.ARCHERY && !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
}
}, self));
new AndCondition(
new PhaseCondition(Phase.ARCHERY),
new Condition() {
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
}
}), self));
modifiers.add(
new CantBeAssignedToSkirmishModifier(self,
new Condition() {

View File

@@ -6,12 +6,12 @@ import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDiscardEffect;
import com.gempukku.lotro.cards.modifiers.CantBeAssignedToSkirmishModifier;
import com.gempukku.lotro.cards.modifiers.CantTakeWoundsModifier;
import com.gempukku.lotro.cards.modifiers.conditions.AndCondition;
import com.gempukku.lotro.cards.modifiers.conditions.PhaseCondition;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Race;
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.game.state.LotroGame;
@@ -52,20 +52,14 @@ public class Card5_056 extends AbstractMinion {
List<Modifier> modifiers = new LinkedList<Modifier>();
modifiers.add(
new CantTakeWoundsModifier(self,
new Condition() {
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
}
},
Filters.and(
self,
new Filter() {
new AndCondition(
new PhaseCondition(Phase.ARCHERY),
new Condition() {
@Override
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
return gameState.getCurrentPhase() == Phase.ARCHERY;
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
}
})));
}), self));
modifiers.add(
new CantBeAssignedToSkirmishModifier(self,
new Condition() {

View File

@@ -1,6 +1,7 @@
package com.gempukku.lotro.cards.set9.dwarven;
import com.gempukku.lotro.cards.AbstractCompanion;
import com.gempukku.lotro.cards.modifiers.conditions.PhaseCondition;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
@@ -34,11 +35,10 @@ public class Card9_010 extends AbstractCompanion {
@Override
public List<? extends Modifier> getAlwaysOnModifiers(final LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new AbstractModifier(self, null, Filters.and(Culture.DWARVEN, CardType.EVENT, Keyword.SKIRMISH, Filters.stackedOn(Culture.DWARVEN, CardType.CONDITION)), ModifierEffect.EXTRA_ACTION_MODIFIER) {
new AbstractModifier(self, null, Filters.and(Culture.DWARVEN, CardType.EVENT, Keyword.SKIRMISH, Filters.stackedOn(Culture.DWARVEN, CardType.CONDITION)), new PhaseCondition(Phase.SKIRMISH), ModifierEffect.EXTRA_ACTION_MODIFIER) {
@Override
public List<? extends Action> getExtraPhaseActionFromStacked(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card) {
if (card.getBlueprint().checkPlayRequirements(card.getOwner(), game, card, 0, 0, false, false)
&& gameState.getCurrentPhase() == Phase.SKIRMISH)
if (card.getBlueprint().checkPlayRequirements(card.getOwner(), game, card, 0, 0, false, false))
return Collections.singletonList(
card.getBlueprint().getPlayCardAction(card.getOwner(), game, card, 0, false));
return null;