diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PlayEventAction.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PlayEventAction.java index a2b54939a..0582a067d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PlayEventAction.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PlayEventAction.java @@ -114,4 +114,14 @@ public class PlayEventAction extends AbstractCostToEffectAction { return null; } + + @Override + public boolean wasSuccessful() { + return _cardPlayed && _playCardEffect.wasSuccessful() && !_playCardEffect.getPlayEventResult().isEventCancelled(); + } + + @Override + public boolean wasCarriedOut() { + return _cardPlayed && _playCardEffect.wasCarriedOut() && !_playCardEffect.getPlayEventResult().isEventCancelled(); + } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PlayPermanentAction.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PlayPermanentAction.java index ecd2645a9..2629a6d26 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PlayPermanentAction.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PlayPermanentAction.java @@ -103,4 +103,14 @@ public class PlayPermanentAction extends AbstractCostToEffectAction { return null; } + + @Override + public boolean wasSuccessful() { + return _cardPlayed && _playCardEffect.wasSuccessful(); + } + + @Override + public boolean wasCarriedOut() { + return _cardPlayed && _playCardEffect.wasCarriedOut(); + } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/AbstractCostToEffectAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/AbstractCostToEffectAction.java index 106e92cb8..e3926c690 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/AbstractCostToEffectAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/AbstractCostToEffectAction.java @@ -11,6 +11,7 @@ public abstract class AbstractCostToEffectAction implements CostToEffectAction { private LinkedList _processedCosts = new LinkedList(); private LinkedList _effects = new LinkedList(); + private LinkedList _processedEffects = new LinkedList(); private Phase _actionTimeword; private String _performingPlayer; @@ -71,6 +72,24 @@ public abstract class AbstractCostToEffectAction implements CostToEffectAction { } protected final Effect getNextEffect() { - return _effects.poll(); + final Effect effect = _effects.poll(); + if (effect != null) + _processedEffects.add(effect); + return effect; + } + + @Override + public boolean wasSuccessful() { + for (Effect processedCost : _processedCosts) { + if (!processedCost.wasSuccessful()) + return false; + } + + return true; + } + + @Override + public boolean wasCarriedOut() { + return wasSuccessful(); } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SubAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SubAction.java index 790ee9002..e9d6273c8 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SubAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SubAction.java @@ -11,6 +11,7 @@ import java.util.LinkedList; public class SubAction implements Action { private Action _action; private LinkedList _effects = new LinkedList(); + private LinkedList _processedEffects = new LinkedList(); public SubAction(Action action) { _action = action; @@ -57,6 +58,33 @@ public class SubAction implements Action { @Override public Effect nextEffect(LotroGame game) { - return _effects.poll(); + final Effect effect = _effects.poll(); + if (effect != null) + _processedEffects.add(effect); + return effect; + } + + @Override + public boolean wasSuccessful() { + if (!_effects.isEmpty()) + return false; + for (Effect effect : _processedEffects) { + if (!effect.wasSuccessful()) + return false; + } + + return true; + } + + @Override + public boolean wasCarriedOut() { + if (!_effects.isEmpty()) + return false; + for (Effect effect : _processedEffects) { + if (!effect.wasCarriedOut()) + return false; + } + + return true; } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Action.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Action.java index 4fb8b3c71..738bbb3f7 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Action.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Action.java @@ -20,4 +20,8 @@ public interface Action { public String getText(LotroGame game); public Effect nextEffect(LotroGame game); + + public boolean wasSuccessful(); + + public boolean wasCarriedOut(); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/PlayerReconcilesAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/PlayerReconcilesAction.java index 4b51a5304..859ee33af 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/PlayerReconcilesAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/PlayerReconcilesAction.java @@ -99,4 +99,14 @@ public class PlayerReconcilesAction implements Action { return _effectQueue.poll(); } + + @Override + public boolean wasCarriedOut() { + return true; + } + + @Override + public boolean wasSuccessful() { + return true; + } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/ResolveSkirmishAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/ResolveSkirmishAction.java index e2bcf0152..51a53ddea 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/ResolveSkirmishAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/ResolveSkirmishAction.java @@ -116,4 +116,14 @@ public class ResolveSkirmishAction implements Action { else return Collections.emptyList(); } + + @Override + public boolean wasCarriedOut() { + return true; + } + + @Override + public boolean wasSuccessful() { + return true; + } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SimpleEffectAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SimpleEffectAction.java index 5b01767ed..25339d6d8 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SimpleEffectAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SimpleEffectAction.java @@ -54,4 +54,14 @@ public class SimpleEffectAction implements Action { _effect = null; return result; } + + @Override + public boolean wasCarriedOut() { + return true; + } + + @Override + public boolean wasSuccessful() { + return true; + } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SystemAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SystemAction.java index 5f5f07f8b..94b12b40c 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SystemAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SystemAction.java @@ -38,4 +38,14 @@ public abstract class SystemAction implements Action { public String getText(LotroGame game) { throw new UnsupportedOperationException("System action has no text"); } + + @Override + public boolean wasCarriedOut() { + return true; + } + + @Override + public boolean wasSuccessful() { + return true; + } }