From 27c00050a1f820de59a2f14b7eb2446d1aae6f53 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Thu, 20 Oct 2011 19:44:59 +0000 Subject: [PATCH] "Safe Paths" --- .../cards/actions/AttachPermanentAction.java | 5 ++ .../lotro/cards/actions/PlayEventAction.java | 5 ++ .../cards/actions/PlayPermanentAction.java | 5 ++ .../lotro/cards/set6/gollum/Card6_044.java | 79 +++++++++++++++++++ .../logic/actions/ActivateCardAction.java | 5 ++ .../logic/actions/OptionalTriggerAction.java | 11 +++ .../lotro/logic/actions/PreventSubAction.java | 5 ++ .../logic/actions/RequiredTriggerAction.java | 5 ++ .../lotro/logic/actions/SubAction.java | 5 ++ .../logic/actions/SystemQueueAction.java | 5 ++ .../decisions/ActionSelectionDecision.java | 2 +- .../CardActionSelectionDecision.java | 2 +- .../gempukku/lotro/logic/timing/Action.java | 2 + .../actions/PlayerReconcilesAction.java | 5 ++ .../timing/actions/ResolveSkirmishAction.java | 5 ++ .../timing/actions/SimpleEffectAction.java | 5 ++ .../logic/timing/actions/SystemAction.java | 5 ++ 17 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gollum/Card6_044.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/AttachPermanentAction.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/AttachPermanentAction.java index 600e49922..8ba90eb44 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/AttachPermanentAction.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/AttachPermanentAction.java @@ -87,6 +87,11 @@ public class AttachPermanentAction extends AbstractCostToEffectAction { return _cardToAttach; } + @Override + public PhysicalCard getActionAttachedToCard() { + return _cardToAttach; + } + @Override public String getText(LotroGame game) { return "Attach " + _cardToAttach.getBlueprint().getName(); 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 ca825f197..ea7be6913 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 @@ -67,6 +67,11 @@ public class PlayEventAction extends AbstractCostToEffectAction { return _eventPlayed; } + @Override + public PhysicalCard getActionAttachedToCard() { + return _eventPlayed; + } + @Override public String getText(LotroGame game) { return "Play " + _eventPlayed.getBlueprint().getName(); 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 af8120787..ee8b9c3b0 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 @@ -51,6 +51,11 @@ public class PlayPermanentAction extends AbstractCostToEffectAction { return _permanentPlayed; } + @Override + public PhysicalCard getActionAttachedToCard() { + return _permanentPlayed; + } + @Override public String getText(LotroGame game) { return "Play " + _permanentPlayed.getBlueprint().getName(); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gollum/Card6_044.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gollum/Card6_044.java new file mode 100644 index 000000000..0606993ac --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gollum/Card6_044.java @@ -0,0 +1,79 @@ +package com.gempukku.lotro.cards.set6.gollum; + +import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseActionProxyEffect; +import com.gempukku.lotro.cards.effects.AddUntilEndOfTurnModifierEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndPutCardFromDiscardIntoHandEffect; +import com.gempukku.lotro.cards.modifiers.MoveLimitModifier; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.AbstractActionProxy; +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.effects.WoundCharactersEffect; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Ents of Fangorn + * Side: Free + * Culture: Gollum + * Twilight Cost: 5 + * Type: Event + * Game Text: Regroup: Exert Smeagol 3 times and discard him to wound each minion. The move limit for this turn is +1. + * If the fellowship moves, each Shadow player may take up to 3 Shadow cards into hand from his or her discard pile. + */ +public class Card6_044 extends AbstractEvent { + public Card6_044() { + super(Side.FREE_PEOPLE, 5, Culture.GOLLUM, "Safe Paths", Phase.REGROUP); + } + + @Override + public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + return super.checkPlayRequirements(playerId, game, self, twilightModifier) + && PlayConditions.canExert(self, game, 3, Filters.name("Smeagol")) + && PlayConditions.canBeDiscarded(self, game, Filters.name("Smeagol")); + } + + @Override + public PlayEventAction getPlayCardAction(String playerId, LotroGame game, final PhysicalCard self, int twilightModifier) { + PlayEventAction action = new PlayEventAction(self); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, 3, Filters.name("Smeagol"))); + action.appendCost( + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.name("Smeagol"))); + action.appendEffect( + new WoundCharactersEffect(self, CardType.MINION)); + action.appendEffect( + new AddUntilEndOfTurnModifierEffect( + new MoveLimitModifier(self, 1))); + action.appendEffect( + new AddUntilEndOfPhaseActionProxyEffect( + new AbstractActionProxy() { + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame lotroGame, EffectResult effectResults) { + if (effectResults.getType() == EffectResult.Type.WHEN_FELLOWSHIP_MOVES + && !lotroGame.getGameState().getCurrentPlayerId().equals(playerId)) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.setActionAttachedToCard(lotroGame.getGameState().getCurrentSite()); + action.appendEffect( + new ChooseAndPutCardFromDiscardIntoHandEffect(action, playerId, 0, 3, Side.SHADOW)); + return Collections.singletonList(action); + } + return null; + } + }, Phase.REGROUP)); + return action; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/ActivateCardAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/ActivateCardAction.java index 0f74d3120..8274ae6e9 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/ActivateCardAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/ActivateCardAction.java @@ -24,6 +24,11 @@ public class ActivateCardAction extends AbstractCostToEffectAction { return _physicalCard; } + @Override + public PhysicalCard getActionAttachedToCard() { + return _physicalCard; + } + @Override public String getText(LotroGame game) { return "Use " + _physicalCard.getBlueprint().getName(); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/OptionalTriggerAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/OptionalTriggerAction.java index 88cabf8e1..9eceb3d42 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/OptionalTriggerAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/OptionalTriggerAction.java @@ -8,11 +8,17 @@ import com.gempukku.lotro.logic.timing.Effect; public class OptionalTriggerAction extends AbstractCostToEffectAction { private PhysicalCard _physicalCard; + private PhysicalCard _actionAttachedToCard; private boolean _sentMessage; public OptionalTriggerAction(PhysicalCard physicalCard) { _physicalCard = physicalCard; + _actionAttachedToCard = physicalCard; + } + + public void setActionAttachedToCard(PhysicalCard actionAttachedToCard) { + _actionAttachedToCard = actionAttachedToCard; } @Override @@ -20,6 +26,11 @@ public class OptionalTriggerAction extends AbstractCostToEffectAction { return _physicalCard; } + @Override + public PhysicalCard getActionAttachedToCard() { + return _actionAttachedToCard; + } + @Override public String getText(LotroGame game) { return null; 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 index 60aa9fa45..25463814f 100644 --- 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 @@ -35,6 +35,11 @@ public class PreventSubAction implements Action { return _action.getActionSource(); } + @Override + public PhysicalCard getActionAttachedToCard() { + return _action.getActionAttachedToCard(); + } + @Override public Phase getActionTimeword() { return _action.getActionTimeword(); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/RequiredTriggerAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/RequiredTriggerAction.java index 2f8380545..39c7d65ab 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/RequiredTriggerAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/RequiredTriggerAction.java @@ -20,6 +20,11 @@ public class RequiredTriggerAction extends AbstractCostToEffectAction { return _physicalCard; } + @Override + public PhysicalCard getActionAttachedToCard() { + return _physicalCard; + } + @Override public String getText(LotroGame game) { return null; 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 a0a50252f..92714c2f6 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 @@ -25,6 +25,11 @@ public class SubAction implements Action { return _action.getActionSource(); } + @Override + public PhysicalCard getActionAttachedToCard() { + return _action.getActionAttachedToCard(); + } + @Override public Phase getActionTimeword() { return _action.getActionTimeword(); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SystemQueueAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SystemQueueAction.java index f3969e0c7..4da76e6d9 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SystemQueueAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SystemQueueAction.java @@ -10,6 +10,11 @@ public class SystemQueueAction extends AbstractCostToEffectAction { return null; } + @Override + public PhysicalCard getActionAttachedToCard() { + return null; + } + @Override public String getText(LotroGame game) { return null; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/decisions/ActionSelectionDecision.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/decisions/ActionSelectionDecision.java index 26a5f6980..81d4afea0 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/decisions/ActionSelectionDecision.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/decisions/ActionSelectionDecision.java @@ -30,7 +30,7 @@ public abstract class ActionSelectionDecision extends AbstractAwaitingDecision { private String[] getCardIds(List actions) { String[] result = new String[actions.size()]; for (int i = 0; i < result.length; i++) { - PhysicalCard physicalCard = actions.get(i).getActionSource(); + PhysicalCard physicalCard = actions.get(i).getActionAttachedToCard(); if (physicalCard != null) result[i] = String.valueOf(physicalCard.getBlueprintId()); else diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/decisions/CardActionSelectionDecision.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/decisions/CardActionSelectionDecision.java index 2458c6a8a..0ead0f42e 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/decisions/CardActionSelectionDecision.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/decisions/CardActionSelectionDecision.java @@ -32,7 +32,7 @@ public abstract class CardActionSelectionDecision extends AbstractAwaitingDecisi private String[] getCardIds(List actions) { String[] result = new String[actions.size()]; for (int i = 0; i < result.length; i++) - result[i] = String.valueOf(actions.get(i).getActionSource().getCardId()); + result[i] = String.valueOf(actions.get(i).getActionAttachedToCard().getCardId()); return result; } 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 09cfcc522..ccf94d784 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 @@ -7,6 +7,8 @@ import com.gempukku.lotro.game.state.LotroGame; public interface Action { public PhysicalCard getActionSource(); + public PhysicalCard getActionAttachedToCard(); + public void setActionTimeword(Phase phase); public Phase getActionTimeword(); 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 c5370f75e..a139b130e 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 @@ -42,6 +42,11 @@ public class PlayerReconcilesAction implements Action { return null; } + @Override + public PhysicalCard getActionAttachedToCard() { + return null; + } + @Override public String getText(LotroGame game) { return "Player reconciles"; 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 49fcd2339..c1dc81763 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 @@ -42,6 +42,11 @@ public class ResolveSkirmishAction implements Action { return null; } + @Override + public PhysicalCard getActionAttachedToCard() { + return null; + } + @Override public String getText(LotroGame game) { return "Resolving skirmish"; 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 de9af716a..01e07b8fa 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 @@ -29,6 +29,11 @@ public class SimpleEffectAction implements Action { return null; } + @Override + public PhysicalCard getActionAttachedToCard() { + return null; + } + @Override public String getText(LotroGame game) { return _text; 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 c2fa9a063..daa311cd0 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 @@ -11,6 +11,11 @@ public abstract class SystemAction implements Action { throw new UnsupportedOperationException("System action has no action source"); } + @Override + public PhysicalCard getActionAttachedToCard() { + throw new UnsupportedOperationException("System action has no action source"); + } + @Override public Phase getActionTimeword() { return null;