Removed custom handling of some event types

This commit is contained in:
marcin.sciesinski
2019-10-01 14:04:29 -07:00
parent 6f54085a8d
commit 01de8a6b42
12 changed files with 210 additions and 170 deletions

View File

@@ -1,7 +1,6 @@
package com.gempukku.lotro.cards.set10.shire;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
@@ -10,7 +9,7 @@ import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
import com.gempukku.lotro.logic.modifiers.CantBeOverwhelmedModifier;
import com.gempukku.lotro.logic.modifiers.Condition;
import com.gempukku.lotro.logic.modifiers.condition.CardPlayedInCurrentPhaseCondition;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
@@ -42,12 +41,7 @@ public class Card10_116 extends AbstractPermanent {
action.insertEffect(
new AddUntilEndOfPhaseModifierEffect(
new CantBeOverwhelmedModifier(self, card,
new Condition() {
@Override
public boolean isFullfilled(LotroGame game) {
return Filters.filter(game.getActionsEnvironment().getPlayedCardsInCurrentPhase(), game, Side.SHADOW, CardType.EVENT).size() == 0;
}
})));
new CardPlayedInCurrentPhaseCondition(Side.SHADOW, CardType.EVENT))));
}
});
action.appendEffect(

View File

@@ -1,14 +1,18 @@
package com.gempukku.lotro.cards.set12.dwarven;
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Race;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
import com.gempukku.lotro.logic.modifiers.condition.CardPlayedInCurrentPhaseCondition;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import java.util.Collections;
import java.util.List;
@@ -29,7 +33,7 @@ public class Card12_003 extends AbstractPermanent {
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.winsSkirmish(game, effectResult, Race.DWARF)
&& Filters.filter(game.getActionsEnvironment().getPlayedCardsInCurrentPhase(), game, Filters.owner(playerId), Culture.DWARVEN, CardType.EVENT).size() > 0) {
&& new CardPlayedInCurrentPhaseCondition(Filters.owner(playerId), Culture.DWARVEN, CardType.EVENT).isFullfilled(game)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new DrawCardsEffect(action, playerId, 1));

View File

@@ -7,8 +7,8 @@ import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.cardtype.AbstractAttachable;
import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier;
import com.gempukku.lotro.logic.modifiers.CantAddBurdensModifier;
import com.gempukku.lotro.logic.modifiers.Condition;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.condition.CardPlayedInCurrentTurnCondition;
import com.gempukku.lotro.logic.modifiers.cost.ExertExtraPlayCostModifier;
import com.gempukku.lotro.logic.timing.PlayConditions;
@@ -50,11 +50,6 @@ public class Card20_394 extends AbstractAttachable {
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, final PhysicalCard self) {
return Collections.singletonList(new CantAddBurdensModifier(self,
new Condition() {
@Override
public boolean isFullfilled(LotroGame game) {
return game.getActionsEnvironment().getPlayedCardsInCurrentTurn().contains(self);
}
}, Side.SHADOW));
new CardPlayedInCurrentTurnCondition(self), Side.SHADOW));
}
}

View File

@@ -1,7 +1,5 @@
package com.gempukku.lotro.cards.set3.gondor;
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Side;
@@ -9,8 +7,11 @@ import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.effects.ChooseAndHealCharactersEffect;
import com.gempukku.lotro.logic.modifiers.condition.LostSkirmishThisTurnCondition;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import java.util.Collections;
import java.util.List;
@@ -32,7 +33,7 @@ public class Card3_040 extends AbstractPermanent {
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.endOfTurn(game, effectResult)
&& !game.getActionsEnvironment().hasLostSkirmishThisTurn(game, Filters.or(CardType.COMPANION, CardType.ALLY))) {
&& !(new LostSkirmishThisTurnCondition(Filters.or(CardType.COMPANION, CardType.ALLY)).isFullfilled(game))) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new ChooseAndHealCharactersEffect(action, playerId, Culture.GONDOR, CardType.COMPANION));

View File

@@ -1,15 +1,18 @@
package com.gempukku.lotro.cards.set30.shire;
import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.PossessionClass;
import com.gempukku.lotro.filters.Filter;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession;
import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
import com.gempukku.lotro.logic.modifiers.condition.CardPlayedInCurrentPhaseCondition;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import java.util.Collections;
import java.util.List;
@@ -38,7 +41,7 @@ public class Card30_047 extends AbstractAttachableFPPossession {
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.winsSkirmish(game, effectResult, self.getAttachedTo())
&& Filters.filter(game.getActionsEnvironment().getPlayedCardsInCurrentPhase(), game, Filters.owner(playerId), Culture.DWARVEN, CardType.EVENT).size() > 0) {
&& new CardPlayedInCurrentPhaseCondition(Filters.owner(playerId), Culture.DWARVEN, CardType.EVENT).isFullfilled(game)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.setText("Choose a condition");
action.appendEffect(

View File

@@ -6,6 +6,10 @@ import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.Requirement;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.filters.Filter;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.results.CharacterWonSkirmishResult;
import org.json.simple.JSONObject;
public class DidWinSkirmish implements RequirementProducer {
@@ -19,7 +23,18 @@ public class DidWinSkirmish implements RequirementProducer {
return actionContext -> {
final Filterable filterable = filterableSource.getFilterable(actionContext);
return actionContext.getGame().getActionsEnvironment().hasWonSkirmishThisTurn(actionContext.getGame(), filterable);
final Filter aFilter = Filters.and(filterable);
for (EffectResult effectResult : actionContext.getGame().getActionsEnvironment().getTurnEffectResults()) {
if (effectResult.getType() == EffectResult.Type.CHARACTER_WON_SKIRMISH) {
CharacterWonSkirmishResult winResult = (CharacterWonSkirmishResult) effectResult;
if (aFilter.accepts(actionContext.getGame(), winResult.getWinner()))
return true;
}
}
return false;
};
}
}

View File

@@ -1,8 +1,15 @@
package com.gempukku.lotro.cards.build.field.effect.requirement;
import com.gempukku.lotro.cards.build.*;
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
import com.gempukku.lotro.cards.build.FilterableSource;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.Requirement;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.filters.Filter;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.results.AssignedToSkirmishResult;
import org.json.simple.JSONObject;
public class WasAssignedToSkirmish implements RequirementProducer {
@@ -16,7 +23,18 @@ public class WasAssignedToSkirmish implements RequirementProducer {
return actionContext -> {
final Filterable filterable = filterableSource.getFilterable(actionContext);
return actionContext.getGame().getActionsEnvironment().wasAssignedThisTurn(actionContext.getGame(), filterable);
final Filter aFilter = Filters.and(filterable);
for (EffectResult effectResult : actionContext.getGame().getActionsEnvironment().getTurnEffectResults()) {
if (effectResult.getType() == EffectResult.Type.ASSIGNED_TO_SKIRMISH) {
AssignedToSkirmishResult assignResult = (AssignedToSkirmishResult) effectResult;
if (aFilter.accepts(actionContext.getGame(), assignResult.getAssignedCard()))
return true;
}
}
return false;
};
}
}

View File

@@ -1,51 +1,43 @@
package com.gempukku.lotro.game;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public interface ActionsEnvironment {
public List<Action> getRequiredBeforeTriggers(Effect effect);
public List<Action> getOptionalBeforeTriggers(String playerId, Effect effect);
public List<Action> getOptionalBeforeActions(String playerId, Effect effect);
public List<Action> getRequiredAfterTriggers(Collection<? extends EffectResult> effectResults);
public Map<OptionalTriggerAction, EffectResult> getOptionalAfterTriggers(String playerId, Collection<? extends EffectResult> effectResults);
public List<Action> getOptionalAfterActions(String playerId, Collection<? extends EffectResult> effectResults);
public List<Action> getPhaseActions(String playerId);
public void addUntilStartOfPhaseActionProxy(ActionProxy actionProxy, Phase phase);
public void addUntilEndOfPhaseActionProxy(ActionProxy actionProxy, Phase phase);
public void addUntilEndOfTurnActionProxy(ActionProxy actionProxy);
public void addActionToStack(Action action);
public void emitEffectResult(EffectResult effectResult);
public <T extends Action> T findTopmostActionOfType(Class<T> clazz);
public List<PhysicalCard> getPlayedCardsInCurrentPhase();
public List<PhysicalCard> getPlayedCardsInCurrentTurn();
public boolean hasWonSkirmishThisTurn(LotroGame game, Filterable... filters);
public boolean hasLostSkirmishThisTurn(LotroGame game, Filterable... filters);
public boolean wasAssignedThisTurn(LotroGame game, Filterable... filters);
}
package com.gempukku.lotro.game;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public interface ActionsEnvironment {
public List<Action> getRequiredBeforeTriggers(Effect effect);
public List<Action> getOptionalBeforeTriggers(String playerId, Effect effect);
public List<Action> getOptionalBeforeActions(String playerId, Effect effect);
public List<Action> getRequiredAfterTriggers(Collection<? extends EffectResult> effectResults);
public Map<OptionalTriggerAction, EffectResult> getOptionalAfterTriggers(String playerId, Collection<? extends EffectResult> effectResults);
public List<Action> getOptionalAfterActions(String playerId, Collection<? extends EffectResult> effectResults);
public List<Action> getPhaseActions(String playerId);
public void addUntilStartOfPhaseActionProxy(ActionProxy actionProxy, Phase phase);
public void addUntilEndOfPhaseActionProxy(ActionProxy actionProxy, Phase phase);
public void addUntilEndOfTurnActionProxy(ActionProxy actionProxy);
public void addActionToStack(Action action);
public void emitEffectResult(EffectResult effectResult);
public <T extends Action> T findTopmostActionOfType(Class<T> clazz);
public List<EffectResult> getTurnEffectResults();
public List<EffectResult> getPhaseEffectResults();
}

View File

@@ -1,11 +1,13 @@
package com.gempukku.lotro.game.state.actions;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.common.Zone;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.*;
import com.gempukku.lotro.game.ActionProxy;
import com.gempukku.lotro.game.ActionsEnvironment;
import com.gempukku.lotro.game.CompletePhysicalCardVisitor;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.GameUtils;
import com.gempukku.lotro.logic.PlayUtils;
@@ -16,10 +18,6 @@ import com.gempukku.lotro.logic.timing.ActionStack;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.processes.GatherPlayableActionsFromDiscardVisitor;
import com.gempukku.lotro.logic.timing.results.AssignedToSkirmishResult;
import com.gempukku.lotro.logic.timing.results.CharacterLostSkirmishResult;
import com.gempukku.lotro.logic.timing.results.CharacterWonSkirmishResult;
import com.gempukku.lotro.logic.timing.results.PlayCardResult;
import org.apache.log4j.Logger;
import java.util.*;
@@ -33,65 +31,14 @@ public class DefaultActionsEnvironment implements ActionsEnvironment {
private Map<Phase, List<ActionProxy>> _untilEndOfPhaseActionProxies = new HashMap<Phase, List<ActionProxy>>();
private List<ActionProxy> _untilEndOfTurnActionProxies = new LinkedList<ActionProxy>();
private List<PhysicalCard> _playedCardsInPhase = new LinkedList<PhysicalCard>();
private List<PhysicalCard> _playedCardsInTurn = new LinkedList<PhysicalCard>();
private Set<EffectResult> _effectResults = new HashSet<EffectResult>();
private Set<PhysicalCard> _wonSkirmishesInTurn = new HashSet<PhysicalCard>();
private Set<PhysicalCard> _lostSkirmishesInTurn = new HashSet<PhysicalCard>();
private Set<PhysicalCard> _assignedInTurn = new HashSet<PhysicalCard>();
private List<EffectResult> turnEffectResults = new LinkedList<>();
private List<EffectResult> phaseEffectResults = new LinkedList<>();
public DefaultActionsEnvironment(LotroGame lotroGame, ActionStack actionStack) {
_lotroGame = lotroGame;
_actionStack = actionStack;
addAlwaysOnActionProxy(
new AbstractActionProxy() {
@Override
public List<? extends RequiredTriggerAction> getRequiredAfterTriggers(LotroGame lotroGame, EffectResult effectResults) {
if (effectResults.getType() == EffectResult.Type.PLAY) {
PlayCardResult playResult = (PlayCardResult) effectResults;
_playedCardsInPhase.add(playResult.getPlayedCard());
_playedCardsInTurn.add(playResult.getPlayedCard());
}
return null;
}
});
addAlwaysOnActionProxy(
new AbstractActionProxy() {
@Override
public List<? extends RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult) {
if (effectResult.getType() == EffectResult.Type.CHARACTER_WON_SKIRMISH) {
final CharacterWonSkirmishResult winResult = (CharacterWonSkirmishResult) effectResult;
_wonSkirmishesInTurn.add(winResult.getWinner());
}
return null;
}
});
addAlwaysOnActionProxy(
new AbstractActionProxy() {
@Override
public List<? extends RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult) {
if (effectResult.getType() == EffectResult.Type.CHARACTER_LOST_SKIRMISH) {
final CharacterLostSkirmishResult winResult = (CharacterLostSkirmishResult) effectResult;
_lostSkirmishesInTurn.add(winResult.getLoser());
}
return null;
}
});
addAlwaysOnActionProxy(
new AbstractActionProxy() {
@Override
public List<? extends RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult) {
if (effectResult.getType() == EffectResult.Type.ASSIGNED_TO_SKIRMISH) {
AssignedToSkirmishResult assignResult = (AssignedToSkirmishResult) effectResult;
_assignedInTurn.add(assignResult.getAssignedCard());
}
return null;
}
}
);
}
public List<ActionProxy> getUntilStartOfPhaseActionProxies(Phase phase) {
@@ -101,6 +48,8 @@ public class DefaultActionsEnvironment implements ActionsEnvironment {
@Override
public void emitEffectResult(EffectResult effectResult) {
_effectResults.add(effectResult);
turnEffectResults.add(effectResult);
phaseEffectResults.add(effectResult);
}
public Set<EffectResult> consumeEffectResults() {
@@ -127,16 +76,23 @@ public class DefaultActionsEnvironment implements ActionsEnvironment {
_actionProxies.removeAll(list);
list.clear();
}
_playedCardsInPhase.clear();
phaseEffectResults.clear();
}
public void removeEndOfTurnActionProxies() {
_actionProxies.removeAll(_untilEndOfTurnActionProxies);
_untilEndOfTurnActionProxies.clear();
_wonSkirmishesInTurn.clear();
_lostSkirmishesInTurn.clear();
_assignedInTurn.clear();
_playedCardsInTurn.clear();
turnEffectResults.clear();
}
@Override
public List<EffectResult> getTurnEffectResults() {
return Collections.unmodifiableList(turnEffectResults);
}
@Override
public List<EffectResult> getPhaseEffectResults() {
return Collections.unmodifiableList(phaseEffectResults);
}
@Override
@@ -353,31 +309,6 @@ public class DefaultActionsEnvironment implements ActionsEnvironment {
return _actionStack.findTopmostActionOfType(clazz);
}
@Override
public List<PhysicalCard> getPlayedCardsInCurrentPhase() {
return Collections.unmodifiableList(_playedCardsInPhase);
}
@Override
public List<PhysicalCard> getPlayedCardsInCurrentTurn() {
return Collections.unmodifiableList(_playedCardsInTurn);
}
@Override
public boolean hasWonSkirmishThisTurn(LotroGame game, Filterable... filters) {
return Filters.filter(_wonSkirmishesInTurn, game, filters).size() > 0;
}
@Override
public boolean hasLostSkirmishThisTurn(LotroGame game, Filterable... filters) {
return Filters.filter(_lostSkirmishesInTurn, game, filters).size() > 0;
}
@Override
public boolean wasAssignedThisTurn(LotroGame game, Filterable... filters) {
return Filters.filter(_assignedInTurn, game, filters).size() > 0;
}
private class GatherRequiredAfterTriggers extends CompletePhysicalCardVisitor {
private Collection<? extends EffectResult> _effectResults;
private List<Action> _actions = new LinkedList<Action>();

View File

@@ -0,0 +1,29 @@
package com.gempukku.lotro.logic.modifiers.condition;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.filters.Filter;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.modifiers.Condition;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.results.PlayCardResult;
public class CardPlayedInCurrentPhaseCondition implements Condition {
private final Filter filter;
public CardPlayedInCurrentPhaseCondition(Filterable... filters) {
filter = Filters.and(filters);
}
@Override
public boolean isFullfilled(LotroGame game) {
for (EffectResult effectResult : game.getActionsEnvironment().getPhaseEffectResults()) {
PlayCardResult playResult = (PlayCardResult) effectResult;
if (filter.accepts(game, playResult.getPlayedCard()))
return true;
}
return false;
}
}

View File

@@ -0,0 +1,29 @@
package com.gempukku.lotro.logic.modifiers.condition;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.filters.Filter;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.modifiers.Condition;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.results.PlayCardResult;
public class CardPlayedInCurrentTurnCondition implements Condition {
private final Filter filter;
public CardPlayedInCurrentTurnCondition(Filterable... filters) {
filter = Filters.and(filters);
}
@Override
public boolean isFullfilled(LotroGame game) {
for (EffectResult effectResult : game.getActionsEnvironment().getTurnEffectResults()) {
PlayCardResult playResult = (PlayCardResult) effectResult;
if (filter.accepts(game, playResult.getPlayedCard()))
return true;
}
return false;
}
}

View File

@@ -0,0 +1,29 @@
package com.gempukku.lotro.logic.modifiers.condition;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.filters.Filter;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.modifiers.Condition;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.results.CharacterLostSkirmishResult;
public class LostSkirmishThisTurnCondition implements Condition {
private final Filter filter;
public LostSkirmishThisTurnCondition(Filterable... filters) {
filter = Filters.and(filters);
}
@Override
public boolean isFullfilled(LotroGame game) {
for (EffectResult effectResult : game.getActionsEnvironment().getTurnEffectResults()) {
if (effectResult.getType() == EffectResult.Type.CHARACTER_LOST_SKIRMISH) {
CharacterLostSkirmishResult lostResult = (CharacterLostSkirmishResult) effectResult;
if (filter.accepts(game, lostResult.getLoser()))
return true;
}
}
return false;
}
}