From 7c198485b6cab412b58146925af54557f08a7d8b Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Wed, 26 Oct 2011 09:51:26 +0000 Subject: [PATCH] Trying to fix the PreventionEffect, it wasn't complicated enough for what it was supposed to do. --- .../lotro/cards/actions/PreventSubAction.java | 70 ++++++++++++ .../effects/ForEachBurdenYouSpotEffect.java | 5 - .../ForEachTwilightTokenYouSpotEffect.java | 5 - .../cards/effects/PreventableEffect.java | 15 ++- .../lotro/cards/set2/dwarven/Card2_013.java | 10 +- .../lotro/cards/set2/elven/Card2_017.java | 10 +- .../lotro/cards/set2/gandalf/Card2_028.java | 10 +- .../lotro/cards/set2/gondor/Card2_033.java | 10 +- .../lotro/cards/set2/shire/Card2_103.java | 10 +- .../lotro/cards/set3/isengard/Card3_050.java | 10 +- .../lotro/cards/set3/isengard/Card3_069.java | 12 +- .../lotro/cards/set3/moria/Card3_080.java | 13 ++- .../lotro/cards/set3/sauron/Card3_103.java | 13 ++- .../lotro/cards/set3/sauron/Card3_105.java | 14 ++- .../lotro/cards/set3/wraith/Card3_085.java | 10 +- .../lotro/cards/set4/gandalf/Card4_097.java | 17 ++- .../lotro/cards/set4/gondor/Card4_112.java | 10 +- .../lotro/cards/set4/isengard/Card4_143.java | 12 +- .../lotro/cards/set4/isengard/Card4_159.java | 10 +- .../lotro/cards/set4/isengard/Card4_164.java | 12 +- .../lotro/cards/set4/raider/Card4_240.java | 14 ++- .../lotro/cards/set4/raider/Card4_249.java | 10 +- .../lotro/cards/set4/raider/Card4_256.java | 14 ++- .../lotro/cards/set4/raider/Card4_258.java | 12 +- .../lotro/cards/set4/raider/Card4_259.java | 10 +- .../lotro/cards/set4/shire/Card4_300.java | 10 +- .../lotro/cards/set4/shire/Card4_310.java | 10 +- .../lotro/cards/set4/shire/Card4_314.java | 10 +- .../lotro/cards/set5/dunland/Card5_003.java | 10 +- .../lotro/cards/set5/gandalf/Card5_020.java | 13 ++- .../lotro/cards/set5/gollum/Card5_021.java | 10 +- .../lotro/cards/set5/rohan/Card5_089.java | 16 ++- .../lotro/cards/set5/sauron/Card5_100.java | 12 +- .../lotro/cards/set6/dunland/Card6_004.java | 20 +++- .../lotro/cards/set6/raider/Card6_082.java | 12 +- .../lotro/logic/actions/PreventSubAction.java | 108 ------------------ .../ChooseAndWoundCharactersEffect.java | 8 +- .../lotro/logic/timing/AbstractEffect.java | 6 - .../timing/AbstractSuccessfulEffect.java | 5 - .../gempukku/lotro/logic/timing/Effect.java | 6 - 40 files changed, 389 insertions(+), 205 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PreventSubAction.java delete mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/PreventSubAction.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PreventSubAction.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PreventSubAction.java new file mode 100644 index 000000000..6779973b0 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PreventSubAction.java @@ -0,0 +1,70 @@ +package com.gempukku.lotro.cards.actions; + +import com.gempukku.lotro.cards.effects.PreventableEffect; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.SubAction; +import com.gempukku.lotro.logic.decisions.MultipleChoiceAwaitingDecision; +import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; +import com.gempukku.lotro.logic.timing.UnrespondableEffect; + +import java.util.Iterator; + +public class PreventSubAction extends SubAction { + private Effect _effectToExecute; + private Iterator _choicePlayers; + private PreventableEffect.PreventionCost _preventionCost; + + private Effect _playerPreventionCost; + + public PreventSubAction(Action action, Effect effectToExecute, Iterator choicePlayers, PreventableEffect.PreventionCost preventionCost) { + super(action); + _effectToExecute = effectToExecute; + _choicePlayers = choicePlayers; + _preventionCost = preventionCost; + + appendEffect(new DecideIfPossible()); + } + + private class DecideIfPossible extends UnrespondableEffect { + @Override + protected void doPlayEffect(LotroGame game) { + if (_choicePlayers.hasNext()) { + String nextPlayer = _choicePlayers.next(); + _playerPreventionCost = _preventionCost.createPreventionCostForPlayer(PreventSubAction.this, nextPlayer); + if (_playerPreventionCost.isPlayableInFull(game)) { + appendEffect( + new PlayoutDecisionEffect(game.getUserFeedback(), _choicePlayers.next(), + new MultipleChoiceAwaitingDecision(1, "Would you like to - " + _playerPreventionCost.getText(game) + " to prevent - " + _effectToExecute.getText(game), new String[]{"Yes", "No"}) { + @Override + protected void validDecisionMade(int index, String result) { + if (result.equals("Yes")) { + startPrevention(); + } else { + appendEffect(new DecideIfPossible()); + } + } + })); + } else { + appendEffect(new DecideIfPossible()); + } + } else { + appendEffect(_effectToExecute); + } + } + } + + private void startPrevention() { + appendEffect(_playerPreventionCost); + appendEffect(new CheckIfPreventingCostWasSuccessful()); + } + + private class CheckIfPreventingCostWasSuccessful extends UnrespondableEffect { + @Override + protected void doPlayEffect(LotroGame game) { + if (!_playerPreventionCost.wasCarriedOut()) + appendEffect(new DecideIfPossible()); + } + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ForEachBurdenYouSpotEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ForEachBurdenYouSpotEffect.java index 6e2a98f18..0c3452fe0 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ForEachBurdenYouSpotEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ForEachBurdenYouSpotEffect.java @@ -56,9 +56,4 @@ public abstract class ForEachBurdenYouSpotEffect implements Effect { public boolean wasCarriedOut() { return true; } - - @Override - public void reset() { - - } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ForEachTwilightTokenYouSpotEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ForEachTwilightTokenYouSpotEffect.java index 698283f49..d116656f0 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ForEachTwilightTokenYouSpotEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ForEachTwilightTokenYouSpotEffect.java @@ -56,9 +56,4 @@ public abstract class ForEachTwilightTokenYouSpotEffect implements Effect { public boolean wasCarriedOut() { return true; } - - @Override - public void reset() { - - } } \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventableEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventableEffect.java index 038393cde..a238e9c33 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventableEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventableEffect.java @@ -1,8 +1,9 @@ package com.gempukku.lotro.cards.effects; +import com.gempukku.lotro.cards.actions.PreventSubAction; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.CostToEffectAction; -import com.gempukku.lotro.logic.actions.PreventSubAction; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.timing.AbstractEffect; import com.gempukku.lotro.logic.timing.Effect; @@ -15,17 +16,17 @@ public class PreventableEffect extends AbstractEffect { private CostToEffectAction _action; private Effect _effectToExecute; private Iterator _choicePlayers; - private Effect _preventionCost; + private PreventionCost _preventionCost; - public PreventableEffect(CostToEffectAction action, Effect effectToExecute, String[] choicePlayers, Effect preventionCost) { + public PreventableEffect(CostToEffectAction action, Effect effectToExecute, String[] choicePlayers, PreventionCost preventionCost) { this(action, effectToExecute, Arrays.asList(choicePlayers), preventionCost); } - public PreventableEffect(CostToEffectAction action, Effect effectToExecute, String choicePlayer, Effect preventionCost) { + public PreventableEffect(CostToEffectAction action, Effect effectToExecute, String choicePlayer, PreventionCost preventionCost) { this(action, effectToExecute, Collections.singletonList(choicePlayer), preventionCost); } - public PreventableEffect(CostToEffectAction action, Effect effectToExecute, List choicePlayers, Effect preventionCost) { + public PreventableEffect(CostToEffectAction action, Effect effectToExecute, List choicePlayers, PreventionCost preventionCost) { _action = action; _effectToExecute = effectToExecute; _choicePlayers = choicePlayers.iterator(); @@ -52,4 +53,8 @@ public class PreventableEffect extends AbstractEffect { game.getActionsEnvironment().addActionToStack(new PreventSubAction(_action, _effectToExecute, _choicePlayers, _preventionCost)); return new FullEffectResult(null, true, true); } + + public static interface PreventionCost { + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId); + } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_013.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_013.java index 29cbd2750..50feac749 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_013.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_013.java @@ -12,7 +12,9 @@ import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.GameUtils; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.effects.DrawCardEffect; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Arrays; @@ -42,7 +44,13 @@ public class Card2_013 extends AbstractOldEvent { new PreventableEffect(action, new DrawCardEffect(playerId, 3), Arrays.asList(GameUtils.getOpponents(game, playerId)), - new RemoveTwilightEffect(3))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new RemoveTwilightEffect(3); + } + } + )); return action; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/elven/Card2_017.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/elven/Card2_017.java index e7115b389..cf26e57f2 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/elven/Card2_017.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/elven/Card2_017.java @@ -11,6 +11,8 @@ 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.SubAction; +import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.EffectResult; import java.util.Collections; @@ -54,7 +56,13 @@ public class Card2_017 extends AbstractResponseOldEvent { } }, Collections.singletonList(opponentId), - new RemoveTwilightEffect(3))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new RemoveTwilightEffect(3); + } + } + )); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gandalf/Card2_028.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gandalf/Card2_028.java index f1888de10..20a680ec5 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gandalf/Card2_028.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gandalf/Card2_028.java @@ -10,8 +10,10 @@ import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.GameUtils; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; import com.gempukku.lotro.logic.modifiers.KeywordModifier; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Arrays; @@ -55,7 +57,13 @@ public class Card2_028 extends AbstractOldEvent { } }, Arrays.asList(GameUtils.getOpponents(game, playerId)), - new RemoveTwilightEffect(3))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new RemoveTwilightEffect(3); + } + } + )); return action; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gondor/Card2_033.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gondor/Card2_033.java index fa64e27fc..7a7033ba0 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gondor/Card2_033.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gondor/Card2_033.java @@ -9,8 +9,10 @@ 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.SubAction; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect; +import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.EffectResult; import java.util.Collections; @@ -49,7 +51,13 @@ public class Card2_033 extends AbstractResponseOldEvent { new PreventableEffect(action, new DiscardCardsFromPlayEffect(self, orc), Collections.singletonList(orc.getOwner()), - new RemoveTwilightEffect(3))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new RemoveTwilightEffect(3); + } + } + )); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_103.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_103.java index 8d092d445..673724405 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_103.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_103.java @@ -10,8 +10,10 @@ 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.SubAction; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; import com.gempukku.lotro.logic.effects.WoundCharactersEffect; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; @@ -53,7 +55,13 @@ public class Card2_103 extends AbstractOldEvent { new PreventableEffect(action, new WoundCharactersEffect(self, card), Collections.singletonList(card.getOwner()), - new RemoveTwilightEffect(3))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new RemoveTwilightEffect(3); + } + } + )); } }); return action; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_050.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_050.java index 3898dfed3..ea6c8b017 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_050.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_050.java @@ -12,7 +12,9 @@ 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.SubAction; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; @@ -52,7 +54,13 @@ public class Card3_050 extends AbstractOldEvent { new PreventableEffect(action, new ExhaustCharacterEffect(self, action, aragorn), Collections.singletonList(game.getGameState().getCurrentPlayerId()), - new AddBurdenEffect(self, 2))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new AddBurdenEffect(self, 2); + } + } + )); } }); return action; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_069.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_069.java index 0e39ef46b..aadd8929f 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_069.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_069.java @@ -13,6 +13,7 @@ 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.actions.SubAction; import com.gempukku.lotro.logic.effects.AssignmentEffect; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; import com.gempukku.lotro.logic.modifiers.Condition; @@ -20,6 +21,7 @@ import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; import java.util.LinkedList; @@ -88,13 +90,19 @@ public class Card3_069 extends AbstractMinion { action.appendEffect( new ChooseActiveCardEffect(self, playerId, "Choose non Ring-bearer companion", Filters.type(CardType.COMPANION), Filters.not(Filters.keyword(Keyword.RING_BEARER)), Filters.canBeAssignedToSkirmishByEffect(Side.SHADOW)) { @Override - protected void cardSelected(LotroGame game, PhysicalCard companion) { + protected void cardSelected(LotroGame game, final PhysicalCard companion) { action.appendEffect( new PreventableEffect( action, new AssignmentEffect(playerId, companion, minion), Collections.singletonList(game.getGameState().getCurrentPlayerId()), - new ExertCharactersEffect(self, companion))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ExertCharactersEffect(self, companion); + } + } + )); } }); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/moria/Card3_080.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/moria/Card3_080.java index 9966d5f64..04b3fb87d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/moria/Card3_080.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/moria/Card3_080.java @@ -11,7 +11,9 @@ 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.SubAction; import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect; +import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.UnrespondableEffect; import java.util.Collections; @@ -62,10 +64,15 @@ public class Card3_080 extends AbstractOldEvent { new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, Filters.name("Boromir"))); } }, Collections.singletonList(game.getGameState().getCurrentPlayerId()), - new ChooseAndDiscardCardsFromPlayEffect(action, game.getGameState().getCurrentPlayerId(), 2, 2, Filters.side(Side.FREE_PEOPLE), Filters.type(CardType.POSSESSION)) { + new PreventableEffect.PreventionCost() { @Override - public String getText(LotroGame game) { - return "Discard 2 Free People possessions"; + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ChooseAndDiscardCardsFromPlayEffect(subAction, playerId, 2, 2, Filters.side(Side.FREE_PEOPLE), Filters.type(CardType.POSSESSION)) { + @Override + public String getText(LotroGame game) { + return "Discard 2 Free People possessions"; + } + }; } } )); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_103.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_103.java index a90e0141a..35a233c1f 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_103.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_103.java @@ -8,7 +8,9 @@ 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.SubAction; import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect; +import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.UnrespondableEffect; import java.util.Collections; @@ -59,10 +61,15 @@ public class Card3_103 extends AbstractOldEvent { new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, Filters.name("Galadriel"))); } }, Collections.singletonList(game.getGameState().getCurrentPlayerId()), - new ChooseAndDiscardCardsFromPlayEffect(action, game.getGameState().getCurrentPlayerId(), 2, 2, Filters.race(Race.ELF)) { + new PreventableEffect.PreventionCost() { @Override - public String getText(LotroGame game) { - return "Discard 2 Elves from play"; + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ChooseAndDiscardCardsFromPlayEffect(subAction, playerId, 2, 2, Filters.race(Race.ELF)) { + @Override + public String getText(LotroGame game) { + return "Discard 2 Elves from play"; + } + }; } } )); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_105.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_105.java index 67b615b61..85927a909 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_105.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_105.java @@ -11,6 +11,8 @@ 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.SubAction; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; @@ -40,8 +42,8 @@ public class Card3_105 extends AbstractOldEvent { } @Override - public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { - PlayEventAction action = new PlayEventAction(self); + public PlayEventAction getPlayCardAction(String playerId, final LotroGame game, PhysicalCard self, int twilightModifier) { + final PlayEventAction action = new PlayEventAction(self); action.appendEffect( new PreventableEffect(action, new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.name("Bilbo")) { @@ -50,7 +52,13 @@ public class Card3_105 extends AbstractOldEvent { return "Discard Bilbo"; } }, Collections.singletonList(game.getGameState().getCurrentPlayerId()), - new ChooseAndDiscardCardsFromPlayEffect(action, game.getGameState().getCurrentPlayerId(), 2, 2, Filters.side(Side.FREE_PEOPLE), Filters.type(CardType.CONDITION)))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ChooseAndDiscardCardsFromPlayEffect(subAction, playerId, 2, 2, Filters.side(Side.FREE_PEOPLE), Filters.type(CardType.CONDITION)); + } + } + )); return action; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/wraith/Card3_085.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/wraith/Card3_085.java index 2aef6b79c..7232f1727 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/wraith/Card3_085.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/wraith/Card3_085.java @@ -11,7 +11,9 @@ 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.SubAction; import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect; +import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.UnrespondableEffect; import java.util.Collections; @@ -60,7 +62,13 @@ public class Card3_085 extends AbstractOldEvent { new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, Filters.name("Gandalf"))); } }, Collections.singletonList(game.getGameState().getCurrentPlayerId()), - new ChooseAndDiscardCardsFromHandEffect(action, game.getGameState().getCurrentPlayerId(), false, 2, 2, Filters.culture(Culture.GANDALF)))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ChooseAndDiscardCardsFromHandEffect(subAction, playerId, false, 2, 2, Filters.culture(Culture.GANDALF)); + } + } + )); return action; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_097.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_097.java index 01a642482..5f5dfa25b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_097.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_097.java @@ -10,7 +10,9 @@ import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.GameUtils; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Arrays; @@ -36,8 +38,8 @@ public class Card4_097 extends AbstractOldEvent { } @Override - public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { - PlayEventAction action = new PlayEventAction(self); + public PlayEventAction getPlayCardAction(final String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + final PlayEventAction action = new PlayEventAction(self); action.appendEffect( new PreventableEffect(action, new AddUntilEndOfPhaseActionProxyEffect( @@ -48,10 +50,15 @@ public class Card4_097 extends AbstractOldEvent { } }, Arrays.asList(GameUtils.getOpponents(game, playerId)), - new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, Filters.type(CardType.MINION)) { + new PreventableEffect.PreventionCost() { @Override - public String getText(LotroGame game) { - return "Make fellowship player wound a minion"; + public Effect createPreventionCostForPlayer(SubAction subAction, String shadowPlayerId) { + return new ChooseAndWoundCharactersEffect(subAction, playerId, 1, 1, Filters.type(CardType.MINION)) { + @Override + public String getText(LotroGame game) { + return "Make fellowship player wound a minion"; + } + }; } } )); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_112.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_112.java index 7070a4d1a..e3d39a725 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_112.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_112.java @@ -16,7 +16,9 @@ import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; import java.util.List; @@ -50,7 +52,13 @@ public class Card4_112 extends AbstractAttachableFPPossession { new PreventableEffect(action, new CancelSkirmishEffect(Filters.hasAttached(self)), GameUtils.getOpponents(game, playerId), - new RemoveTwilightEffect(1))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new RemoveTwilightEffect(1); + } + } + )); } return null; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_143.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_143.java index fa4ca0d75..cc5d31469 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_143.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_143.java @@ -10,8 +10,10 @@ 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.SubAction; import com.gempukku.lotro.logic.effects.AssignmentEffect; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; +import com.gempukku.lotro.logic.timing.Effect; /** * Set: The Two Towers @@ -49,7 +51,7 @@ public class Card4_143 extends AbstractOldEvent { action.appendEffect( new ChooseActiveCardEffect(self, playerId, "Choose an unbound companion", Filters.unboundCompanion, Filters.canBeAssignedToSkirmishByEffect(Side.SHADOW)) { @Override - protected void cardSelected(LotroGame game, PhysicalCard companion) { + protected void cardSelected(LotroGame game, final PhysicalCard companion) { Race race = companion.getBlueprint().getRace(); AssignmentEffect assignmentEffect = new AssignmentEffect(playerId, companion, minion); if (race == Race.HOBBIT) { @@ -59,7 +61,13 @@ public class Card4_143 extends AbstractOldEvent { action.insertEffect( new PreventableEffect(action, assignmentEffect, game.getGameState().getCurrentPlayerId(), - new ExertCharactersEffect(self, companion))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ExertCharactersEffect(self, companion); + } + } + )); } } }); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_159.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_159.java index 37a9f6f1c..85542d718 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_159.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_159.java @@ -13,10 +13,12 @@ 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; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.effects.AssignmentEffect; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.modifiers.StrengthModifier; import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; import java.util.List; @@ -76,7 +78,13 @@ public class Card4_159 extends AbstractAttachable { new PreventableEffect(action, new AssignmentEffect(playerId, self.getAttachedTo(), minion), game.getGameState().getCurrentPlayerId(), - new ExertCharactersEffect(self, self.getAttachedTo()))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ExertCharactersEffect(self, self.getAttachedTo()); + } + } + )); } }); action.appendCost( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_164.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_164.java index 342f2a2af..9d21c1545 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_164.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_164.java @@ -9,9 +9,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.ActivateCardAction; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.effects.AssignmentEffect; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; import java.util.List; @@ -45,12 +47,18 @@ public class Card4_164 extends AbstractMinion { action.appendEffect( new ChooseActiveCardEffect(self, playerId, "Choose unbound companion", Filters.unboundCompanion, Filters.canBeAssignedToSkirmishByEffect(Side.SHADOW)) { @Override - protected void cardSelected(LotroGame game, PhysicalCard companion) { + protected void cardSelected(LotroGame game, final PhysicalCard companion) { action.insertEffect( new PreventableEffect(action, new AssignmentEffect(playerId, companion, self), game.getGameState().getCurrentPlayerId(), - new ExertCharactersEffect(self, companion))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ExertCharactersEffect(self, companion); + } + } + )); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_240.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_240.java index a834ea68d..b4aff461d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_240.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_240.java @@ -11,6 +11,8 @@ 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.SubAction; +import com.gempukku.lotro.logic.timing.Effect; /** * Set: The Two Towers @@ -33,8 +35,8 @@ public class Card4_240 extends AbstractOldEvent { } @Override - public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { - PlayEventAction action = new PlayEventAction(self); + public PlayEventAction getPlayCardAction(String playerId, final LotroGame game, PhysicalCard self, int twilightModifier) { + final PlayEventAction action = new PlayEventAction(self); action.appendCost( new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.culture(Culture.RAIDER), Filters.race(Race.MAN))); int burdens = Math.max(0, Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.type(CardType.COMPANION)) - 4); @@ -42,7 +44,13 @@ public class Card4_240 extends AbstractOldEvent { new PreventableEffect(action, new AddBurdenEffect(self, burdens), game.getGameState().getCurrentPlayerId(), - new ChooseAndDiscardCardsFromPlayEffect(action, game.getGameState().getCurrentPlayerId(), 2, 2, Filters.type(CardType.COMPANION), Filters.not(Filters.keyword(Keyword.RING_BEARER))))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ChooseAndDiscardCardsFromPlayEffect(subAction, playerId, 2, 2, Filters.type(CardType.COMPANION), Filters.not(Filters.keyword(Keyword.RING_BEARER))); + } + } + )); return action; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_249.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_249.java index 71408a849..7f471c74c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_249.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_249.java @@ -9,9 +9,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.ActivateCardAction; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.effects.AssignmentEffect; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; import java.util.List; @@ -49,7 +51,13 @@ public class Card4_249 extends AbstractMinion { action.insertEffect(new PreventableEffect(action, new AssignmentEffect(playerId, card, self), game.getGameState().getCurrentPlayerId(), - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.unboundCompanion))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ChooseAndDiscardCardsFromPlayEffect(subAction, playerId, 1, 1, Filters.unboundCompanion); + } + } + )); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_256.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_256.java index 0b3c876f4..7c6a23a44 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_256.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_256.java @@ -9,8 +9,10 @@ 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; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.effects.AssignmentEffect; import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; import java.util.List; @@ -43,16 +45,22 @@ public class Card4_256 extends AbstractMinion { } @Override - protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + protected List getExtraPhaseActions(final String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseShadowCardDuringPhase(game.getGameState(), Phase.ASSIGNMENT, self, 0) && PlayConditions.canSpot(game, 7, Filters.type(CardType.COMPANION)) && PlayConditions.canCardAssignToSkirmish(self, game, self)) { - ActivateCardAction action = new ActivateCardAction(self); + final ActivateCardAction action = new ActivateCardAction(self); action.appendEffect( new PreventableEffect(action, new AssignmentEffect(playerId, Filters.findFirstActive(game.getGameState(), game.getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER)), self), game.getGameState().getCurrentPlayerId(), - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.type(CardType.COMPANION), Filters.not(Filters.keyword(Keyword.RING_BEARER))))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String fpPlayerId) { + return new ChooseAndDiscardCardsFromPlayEffect(subAction, playerId, 1, 1, Filters.type(CardType.COMPANION), Filters.not(Filters.keyword(Keyword.RING_BEARER))); + } + } + )); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_258.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_258.java index bc4627844..3f2944646 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_258.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_258.java @@ -9,9 +9,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.ActivateCardAction; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.effects.AddTwilightEffect; import com.gempukku.lotro.logic.effects.AssignmentEffect; import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; import java.util.List; @@ -36,7 +38,7 @@ public class Card4_258 extends AbstractMinion { } @Override - protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + protected List getExtraPhaseActions(String playerId, LotroGame game, final PhysicalCard self) { if (PlayConditions.canUseShadowCardDuringPhase(game.getGameState(), Phase.ASSIGNMENT, self, 0) && PlayConditions.canExert(self, game, Filters.sameCard(self)) && PlayConditions.canSpot(game, 5, Filters.type(CardType.COMPANION))) { @@ -47,7 +49,13 @@ public class Card4_258 extends AbstractMinion { new PreventableEffect(action, new AssignmentEffect(playerId, Filters.findFirstActive(game.getGameState(), game.getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER)), self), game.getGameState().getCurrentPlayerId(), - new AddTwilightEffect(self, 4))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new AddTwilightEffect(self, 4); + } + } + )); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_259.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_259.java index ddec3b182..3c1f7e189 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_259.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/raider/Card4_259.java @@ -11,8 +11,10 @@ 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.SubAction; import com.gempukku.lotro.logic.effects.AssignmentEffect; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; +import com.gempukku.lotro.logic.timing.Effect; /** * Set: The Two Towers @@ -39,7 +41,13 @@ public class Card4_259 extends AbstractOldEvent { new PreventableEffect(action, new AssignmentEffect(playerId, Filters.findFirstActive(game.getGameState(), game.getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER)), card), game.getGameState().getCurrentPlayerId(), - new AddBurdenEffect(self, 1))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new AddBurdenEffect(self, 1); + } + } + )); } }); return action; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_300.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_300.java index 04835a266..84104045a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_300.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_300.java @@ -14,8 +14,10 @@ import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; import java.util.List; @@ -60,7 +62,13 @@ public class Card4_300 extends AbstractAttachable { new PreventableEffect(action, new CancelSkirmishEffect(Filters.hasAttached(self)), GameUtils.getOpponents(game, playerId), - new RemoveTwilightEffect(1))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new RemoveTwilightEffect(1); + } + } + )); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_310.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_310.java index 19c33eba5..54694968f 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_310.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_310.java @@ -10,8 +10,10 @@ import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect; import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; import java.util.List; @@ -44,7 +46,13 @@ public class Card4_310 extends AbstractCompanion { new PreventableEffect(action, new DiscardCardsFromPlayEffect(self, self), GameUtils.getOpponents(game, playerId), - new RemoveTwilightEffect(2))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new RemoveTwilightEffect(2); + } + } + )); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_314.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_314.java index 10b0f60fe..c26509487 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_314.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_314.java @@ -13,8 +13,10 @@ import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect; import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; import java.util.List; @@ -46,7 +48,13 @@ public class Card4_314 extends AbstractCompanion { new PreventableEffect(action, new DiscardCardsFromPlayEffect(self, self), GameUtils.getOpponents(game, playerId), - new RemoveTwilightEffect(2))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new RemoveTwilightEffect(2); + } + } + )); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/dunland/Card5_003.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/dunland/Card5_003.java index 9f84a90d7..28cad078a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/dunland/Card5_003.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/dunland/Card5_003.java @@ -11,7 +11,9 @@ import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.common.Side; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.effects.DrawCardEffect; +import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.UnrespondableEffect; /** @@ -52,7 +54,13 @@ public class Card5_003 extends AbstractEvent { return "Shuffle hand into draw deck and draw 8 cards"; } }, game.getGameState().getCurrentPlayerId(), - new ChooseAndDiscardCardsFromHandEffect(action, game.getGameState().getCurrentPlayerId(), false, 3))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ChooseAndDiscardCardsFromHandEffect(subAction, playerId, false, 3); + } + } + )); return action; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/gandalf/Card5_020.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/gandalf/Card5_020.java index 1b12f4a39..afae81485 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/gandalf/Card5_020.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/gandalf/Card5_020.java @@ -11,6 +11,8 @@ import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.GameUtils; +import com.gempukku.lotro.logic.actions.SubAction; +import com.gempukku.lotro.logic.timing.Effect; /** * Set: Battle of Helm's Deep @@ -46,10 +48,15 @@ public class Card5_020 extends AbstractEvent { return "Discard up to 2 shadow possessions"; } }, GameUtils.getOpponents(game, playerId), - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.MINION) { + new PreventableEffect.PreventionCost() { @Override - public String getText(LotroGame game) { - return "Discard a minion"; + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ChooseAndDiscardCardsFromPlayEffect(subAction, playerId, 1, 1, CardType.MINION) { + @Override + public String getText(LotroGame game) { + return "Discard a minion"; + } + }; } } )); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/gollum/Card5_021.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/gollum/Card5_021.java index c68003ef7..94f6db9c9 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/gollum/Card5_021.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/gollum/Card5_021.java @@ -14,6 +14,8 @@ import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.GameUtils; +import com.gempukku.lotro.logic.actions.SubAction; +import com.gempukku.lotro.logic.timing.Effect; /** * Set: Battle of Helm's Deep @@ -47,7 +49,13 @@ public class Card5_021 extends AbstractEvent { return "Discard a minion"; } }, GameUtils.getOpponents(game, playerId), - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, 2, CardType.MINION))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ChooseAndExertCharactersEffect(subAction, playerId, 1, 1, 2, CardType.MINION); + } + } + )); return action; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/rohan/Card5_089.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/rohan/Card5_089.java index cfe3233f5..d1eb7e263 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/rohan/Card5_089.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/rohan/Card5_089.java @@ -11,8 +11,10 @@ import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect; import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; import java.util.List; @@ -47,12 +49,18 @@ public class Card5_089 extends AbstractAttachableFPPossession { new PreventableEffect(action, new CancelSkirmishEffect(self.getAttachedTo()), GameUtils.getOpponents(game, playerId), - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.MINION, Filters.inSkirmish) { + new PreventableEffect.PreventionCost() { @Override - public String getText(LotroGame game) { - return "Exert minion in skirmish"; + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ChooseAndExertCharactersEffect(subAction, playerId, 1, 1, CardType.MINION, Filters.inSkirmish) { + @Override + public String getText(LotroGame game) { + return "Exert minion in skirmish"; + } + }; } - })); + } + )); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/sauron/Card5_100.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/sauron/Card5_100.java index 96749f426..5b559f738 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/sauron/Card5_100.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/sauron/Card5_100.java @@ -14,9 +14,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.ActivateCardAction; +import com.gempukku.lotro.logic.actions.SubAction; import com.gempukku.lotro.logic.effects.DrawCardEffect; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; import java.util.Collections; import java.util.List; @@ -46,7 +48,7 @@ public class Card5_100 extends AbstractMinion { } @Override - protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + protected List getExtraPhaseActions(String playerId, LotroGame game, final PhysicalCard self) { if (PlayConditions.canUseShadowCardDuringPhase(game.getGameState(), Phase.SHADOW, self, 0) && PlayConditions.canSelfExert(self, 2, game) && PlayConditions.canSpot(game, Culture.SAURON, Race.ORC, Filters.not(self))) { @@ -59,7 +61,13 @@ public class Card5_100 extends AbstractMinion { new PreventableEffect(action, new DrawCardEffect(playerId, 3), game.getGameState().getCurrentPlayerId(), - new AddBurdenEffect(self, 2))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new AddBurdenEffect(self, 2); + } + } + )); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/dunland/Card6_004.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/dunland/Card6_004.java index 30bfa6f73..0b8e0285f 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/dunland/Card6_004.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/dunland/Card6_004.java @@ -11,6 +11,8 @@ 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.actions.SubAction; +import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.EffectResult; import java.util.Collections; @@ -34,20 +36,26 @@ public class Card6_004 extends AbstractMinion { } @Override - public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + public List getOptionalAfterTriggers(String playerId, final LotroGame game, EffectResult effectResult, PhysicalCard self) { if (PlayConditions.played(game, effectResult, self) && PlayConditions.canSpot(game, 2, Culture.DUNLAND, Race.MAN, Filters.not(self))) { - OptionalTriggerAction action = new OptionalTriggerAction(self); + final OptionalTriggerAction action = new OptionalTriggerAction(self); action.appendEffect( new PreventableEffect(action, new TakeControlOfASiteEffect(self, playerId), game.getGameState().getCurrentPlayerId(), - new ChooseAndDiscardCardsFromHandEffect(action, game.getGameState().getCurrentPlayerId(), false, 2) { + new PreventableEffect.PreventionCost() { @Override - public String getText(LotroGame game) { - return "Discard 2 cards from hand"; + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ChooseAndDiscardCardsFromHandEffect(subAction, playerId, false, 2) { + @Override + public String getText(LotroGame game) { + return "Discard 2 cards from hand"; + } + }; } - })); + } + )); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/raider/Card6_082.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/raider/Card6_082.java index e6cc8a13d..413fc8671 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/raider/Card6_082.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/raider/Card6_082.java @@ -9,7 +9,9 @@ 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.SubAction; import com.gempukku.lotro.logic.effects.AddTwilightEffect; +import com.gempukku.lotro.logic.timing.Effect; /** * Set: Ents of Fangorn @@ -32,7 +34,7 @@ public class Card6_082 extends AbstractEvent { } @Override - public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + public PlayEventAction getPlayCardAction(String playerId, LotroGame game, final PhysicalCard self, int twilightModifier) { PlayEventAction action = new PlayEventAction(self); action.appendEffect( new PreventableEffect(action, @@ -43,7 +45,13 @@ public class Card6_082 extends AbstractEvent { } }, game.getGameState().getCurrentPlayerId(), - new AddTwilightEffect(self, 4))); + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new AddTwilightEffect(self, 4); + } + } + )); return action; } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/PreventSubAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/PreventSubAction.java deleted file mode 100644 index 94858d1f5..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/PreventSubAction.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.gempukku.lotro.logic.actions; - -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.decisions.MultipleChoiceAwaitingDecision; -import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect; -import com.gempukku.lotro.logic.timing.Action; -import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.UnrespondableEffect; - -import java.util.Iterator; -import java.util.LinkedList; - -public class PreventSubAction implements Action { - private Action _action; - - private Effect _effectToExecute; - private Iterator _choicePlayers; - private Effect _preventionCost; - - private LinkedList _effectQueue = new LinkedList(); - - public PreventSubAction(Action action, Effect effectToExecute, Iterator choicePlayers, Effect preventionCost) { - _action = action; - _effectToExecute = effectToExecute; - _choicePlayers = choicePlayers; - _preventionCost = preventionCost; - - _effectQueue.add(new DecideIfPossible()); - } - - @Override - public PhysicalCard getActionSource() { - return _action.getActionSource(); - } - - @Override - public PhysicalCard getActionAttachedToCard() { - return _action.getActionAttachedToCard(); - } - - @Override - public Phase getActionTimeword() { - return _action.getActionTimeword(); - } - - @Override - public void setActionTimeword(Phase phase) { - _action.setActionTimeword(phase); - } - - @Override - public String getPerformingPlayer() { - return _action.getPerformingPlayer(); - } - - @Override - public void setPerformingPlayer(String playerId) { - _action.setPerformingPlayer(playerId); - } - - @Override - public String getText(LotroGame game) { - return null; - } - - @Override - public Effect nextEffect(LotroGame game) { - return _effectQueue.poll(); - } - - private class DecideIfPossible extends UnrespondableEffect { - @Override - protected void doPlayEffect(LotroGame game) { - if (_preventionCost.isPlayableInFull(game) && _choicePlayers.hasNext()) { - _effectQueue.add( - new PlayoutDecisionEffect(game.getUserFeedback(), _choicePlayers.next(), - new MultipleChoiceAwaitingDecision(1, "Would you like to - " + _preventionCost.getText(game) + " to prevent - " + _effectToExecute.getText(game), new String[]{"Yes", "No"}) { - @Override - protected void validDecisionMade(int index, String result) { - if (result.equals("Yes")) { - startPrevention(); - } else { - _effectQueue.add(new DecideIfPossible()); - } - } - })); - } else { - _effectQueue.add(_effectToExecute); - } - } - } - - private void startPrevention() { - _preventionCost.reset(); - _effectQueue.add(_preventionCost); - _effectQueue.add(new CheckIfPreventingCostWasSuccessful()); - } - - private class CheckIfPreventingCostWasSuccessful extends UnrespondableEffect { - @Override - protected void doPlayEffect(LotroGame game) { - if (!_preventionCost.wasCarriedOut()) - _effectQueue.add(new DecideIfPossible()); - } - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ChooseAndWoundCharactersEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ChooseAndWoundCharactersEffect.java index 7be376f4f..290dd3d4b 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ChooseAndWoundCharactersEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ChooseAndWoundCharactersEffect.java @@ -5,20 +5,20 @@ 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.CostToEffectAction; import com.gempukku.lotro.logic.actions.SubAction; +import com.gempukku.lotro.logic.timing.Action; import java.util.Collection; public class ChooseAndWoundCharactersEffect extends ChooseActiveCardsEffect { - private CostToEffectAction _action; + private Action _action; private int _count; - public ChooseAndWoundCharactersEffect(CostToEffectAction action, String playerId, int minimum, int maximum, Filterable... filters) { + public ChooseAndWoundCharactersEffect(Action action, String playerId, int minimum, int maximum, Filterable... filters) { this(action, playerId, minimum, maximum, 1, filters); } - public ChooseAndWoundCharactersEffect(CostToEffectAction action, String playerId, int minimum, int maximum, int count, Filterable... filters) { + public ChooseAndWoundCharactersEffect(Action action, String playerId, int minimum, int maximum, int count, Filterable... filters) { super(action.getActionSource(), playerId, "Choose characters to wound", minimum, maximum, filters); _action = action; _count = count; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/AbstractEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/AbstractEffect.java index 59199c5b1..582a3e48c 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/AbstractEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/AbstractEffect.java @@ -37,12 +37,6 @@ public abstract class AbstractEffect implements Effect { return _successful; } - @Override - public void reset() { - _carriedOut = null; - _successful = null; - } - protected final String getAppendedTextNames(Collection cards) { StringBuilder sb = new StringBuilder(); for (PhysicalCard card : cards) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/AbstractSuccessfulEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/AbstractSuccessfulEffect.java index db164bbd2..bb8bfb40c 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/AbstractSuccessfulEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/AbstractSuccessfulEffect.java @@ -43,9 +43,4 @@ public abstract class AbstractSuccessfulEffect implements Effect { else return sb.substring(0, sb.length() - 2); } - - @Override - public void reset() { - - } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Effect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Effect.java index 714cb07e1..7ed27fd2e 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Effect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Effect.java @@ -62,10 +62,4 @@ public interface Effect { * @return */ public boolean wasCarriedOut(); - - /** - * Resets the history and any state this effect might have, to be able to be - * played again (for example multiple players trying to prevent the same effect. - */ - public void reset(); }