diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_088.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_088.java index 4496f3e6d..3b71ca56e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_088.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_088.java @@ -9,9 +9,8 @@ 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.OptionalTriggerAction; -import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; +import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect; import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect; -import com.gempukku.lotro.logic.effects.WoundCharactersEffect; import com.gempukku.lotro.logic.timing.Action; import com.gempukku.lotro.logic.timing.EffectResult; @@ -47,16 +46,10 @@ public class Card4_088 extends AbstractPermanent { protected List getExtraPhaseActions(String playerId, final LotroGame game, final PhysicalCard self) { if (PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.SKIRMISH, self)) { final ActivateCardAction action = new ActivateCardAction(self, Keyword.SKIRMISH); - action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose a minion", Filters.type(CardType.MINION), Filters.inSkirmishAgainst(Filters.name("Gandalf"))) { - @Override - protected void cardSelected(PhysicalCard card) { - int tokenCount = game.getGameState().getTokenCount(self, Token.GANDALF); - for (int i = 0; i < tokenCount; i++) - action.insertEffect( - new WoundCharactersEffect(self, card)); - } - }); + int tokenCount = game.getGameState().getTokenCount(self, Token.GANDALF); + if (tokenCount > 0) + action.appendEffect( + new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, tokenCount, Filters.type(CardType.MINION), Filters.inSkirmishAgainst(Filters.name("Gandalf")))); action.appendEffect( new DiscardCardsFromPlayEffect(self, self)); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_093.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_093.java new file mode 100644 index 000000000..de9c0dfe8 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_093.java @@ -0,0 +1,44 @@ +package com.gempukku.lotro.cards.set4.gandalf; + +import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.actions.PlayEventAction; +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.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.effects.ChooseAndHealCharactersEffect; + +/** + * Set: The Two Towers + * Side: Free + * Culture: Gandalf + * Twilight Cost: 3 + * Type: Event + * Game Text: Fellowship: Spot Gandalf to heal an unbound companion twice. + */ +public class Card4_093 extends AbstractEvent { + public Card4_093() { + super(Side.FREE_PEOPLE, Culture.GANDALF, "Have Patience", Phase.FELLOWSHIP); + } + + @Override + public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + return super.checkPlayRequirements(playerId, game, self, twilightModifier) + && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.name("Gandalf")); + } + + @Override + public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + PlayEventAction action = new PlayEventAction(self); + action.appendEffect( + new ChooseAndHealCharactersEffect(action, playerId, 1, 1, 2, Filters.unboundCompanion())); + return action; + } + + @Override + public int getTwilightCost() { + return 3; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ChooseAndHealCharactersEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ChooseAndHealCharactersEffect.java index f0bfe01b5..2eebb926b 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ChooseAndHealCharactersEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ChooseAndHealCharactersEffect.java @@ -14,15 +14,21 @@ import java.util.Collection; public class ChooseAndHealCharactersEffect extends ChooseActiveCardsEffect { private Action _action; private String _playerId; + private int _count; public ChooseAndHealCharactersEffect(Action action, String playerId, Filter... filters) { this(action, playerId, 1, 1, filters); } public ChooseAndHealCharactersEffect(Action action, String playerId, int minimum, int maximum, Filter... filters) { + this(action, playerId, minimum, maximum, 1, filters); + } + + public ChooseAndHealCharactersEffect(Action action, String playerId, int minimum, int maximum, int count, Filter... filters) { super(action.getActionSource(), playerId, "Choose character(s) to heal", minimum, maximum, filters); _action = action; _playerId = playerId; + _count = count; } @Override @@ -43,7 +49,8 @@ public class ChooseAndHealCharactersEffect extends ChooseActiveCardsEffect { @Override protected void cardsSelected(LotroGame game, Collection cards) { SubAction subAction = new SubAction(_action.getActionSource(), _action.getType()); - subAction.appendEffect(new HealCharactersEffect(_playerId, Filters.in(cards))); + for (int i = 0; i < _count; i++) + subAction.appendEffect(new HealCharactersEffect(_playerId, Filters.in(cards))); game.getActionsEnvironment().addActionToStack(subAction); } } 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 6f8fedf36..46c77c589 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 @@ -13,10 +13,16 @@ import java.util.Collection; public class ChooseAndWoundCharactersEffect extends ChooseActiveCardsEffect { private CostToEffectAction _action; + private int _count; public ChooseAndWoundCharactersEffect(CostToEffectAction action, String playerId, int minimum, int maximum, Filter... filters) { + this(action, playerId, minimum, maximum, 1, filters); + } + + public ChooseAndWoundCharactersEffect(CostToEffectAction action, String playerId, int minimum, int maximum, int count, Filter... filters) { super(action.getActionSource(), playerId, "Choose characters to wound", minimum, maximum, filters); _action = action; + _count = count; } @Override @@ -32,7 +38,8 @@ public class ChooseAndWoundCharactersEffect extends ChooseActiveCardsEffect { @Override protected void cardsSelected(LotroGame game, Collection cards) { SubAction subAction = new SubAction(_action.getActionSource(), _action.getType()); - subAction.appendEffect(new WoundCharactersEffect(_action.getActionSource(), Filters.in(cards))); + for (int i = 0; i < _count; i++) + subAction.appendEffect(new WoundCharactersEffect(_action.getActionSource(), Filters.in(cards))); game.getActionsEnvironment().addActionToStack(subAction); } }