Removed custom handling of some event types
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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>();
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user