diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ExertCharactersEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ExertCharactersEffect.java index fe3d0df83..0f05678c5 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ExertCharactersEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ExertCharactersEffect.java @@ -64,9 +64,14 @@ public class ExertCharactersEffect extends AbstractPreventableCardEffect { if (!_placeNoWound.contains(woundedCard)) game.getGameState().addWound(woundedCard); game.getActionsEnvironment().emitEffectResult(new ExertResult(_action, woundedCard)); + forEachExertedByEffect(woundedCard); } } + protected void forEachExertedByEffect(PhysicalCard physicalCard) { + + } + public void placeNoWoundOn(PhysicalCard physicalCard) { _placeNoWound.add(physicalCard); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndExertCharactersEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndExertCharactersEffect.java index 7ff5a32a4..455e4cfce 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndExertCharactersEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndExertCharactersEffect.java @@ -65,12 +65,14 @@ public class ChooseAndExertCharactersEffect extends ChooseActiveCardsEffect { protected final void cardsSelected(LotroGame game, Collection characters) { _resultSubAction = new SubAction(_action); for (int i = 0; i < _times; i++) { - _resultSubAction.appendEffect(new ExertCharactersEffect(_action, _action.getActionSource(), characters.toArray(new PhysicalCard[characters.size()]))); + _resultSubAction.appendEffect(new ExertCharactersEffect(_action, _action.getActionSource(), characters.toArray(new PhysicalCard[characters.size()])) { + @Override + protected void forEachExertedByEffect(PhysicalCard physicalCard) { + ChooseAndExertCharactersEffect.this.forEachCardExertedCallback(physicalCard); + } + }); } game.getActionsEnvironment().addActionToStack(_resultSubAction); - - for (PhysicalCard character : characters) - forEachCardExertedCallback(character); } protected void forEachCardExertedCallback(PhysicalCard character) { diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/elven/Card20_084.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/elven/Card20_084.java new file mode 100644 index 000000000..40546e0c5 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/elven/Card20_084.java @@ -0,0 +1,78 @@ +package com.gempukku.lotro.cards.set20.elven; + +import com.gempukku.lotro.cards.AbstractAlly; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.RevealTopCardsOfDrawDeckEffect; +import com.gempukku.lotro.cards.effects.SelfExertEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.actions.RequiredTriggerAction; +import com.gempukku.lotro.logic.effects.HealCharactersEffect; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * 3 + * •Galadriel, White Lady of Lorien + * Elven Ally • Elf • Lothlorien + * 3 3 + * At the start of each of your turns, heal every Lothlorien ally. + * Skirmish: Exert Galadriel and another Elf to reveal the top card of your draw deck. Make a minion skirmishing + * that Elf strength - X where X is that card's twilight cost. + */ +public class Card20_084 extends AbstractAlly { + public Card20_084() { + super(3, null, 0, 3, 3, Race.ELF, Culture.ELVEN, "Galadriel", "White Lady of Lorien", true); + addKeyword(Keyword.LOTHLORIEN); + } + + @Override + public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.startOfTurn(game, effectResult)) { + RequiredTriggerAction action = new RequiredTriggerAction(self); + action.appendEffect( + new HealCharactersEffect(self, CardType.ALLY, Keyword.LOTHLORIEN)); + return Collections.singletonList(action); + } + return null; + } + + @Override + protected List getExtraInPlayPhaseActions(final String playerId, LotroGame game, final PhysicalCard self) { + if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) + && PlayConditions.canSelfExert(self, game) + && PlayConditions.canExert(self, game, Filters.not(self), Race.ELF)) { + final ActivateCardAction action =new ActivateCardAction(self); + action.appendCost( + new SelfExertEffect(action, self)); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.not(self), Race.ELF) { + @Override + protected void forEachCardExertedCallback(final PhysicalCard character) { + action.appendEffect( + new RevealTopCardsOfDrawDeckEffect(self, playerId, 1) { + @Override + protected void cardsRevealed(List revealedCards) { + for (PhysicalCard revealedCard : revealedCards) { + int twilightCost = revealedCard.getBlueprint().getTwilightCost(); + action.appendEffect( + new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, -twilightCost, CardType.MINION, Filters.inSkirmishAgainst(character))); + } + } + }); + } + }); + return Collections.singletonList(action); + } + return null; + } +}