diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_170.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_170.java new file mode 100644 index 000000000..a4c196b52 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_170.java @@ -0,0 +1,53 @@ +package com.gempukku.lotro.cards.set4.isengard; + +import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.effects.ChooseAndPlayCardFromDiscardEffect; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.common.Zone; +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.timing.EffectResult; +import com.gempukku.lotro.logic.timing.results.AssignmentResult; + +import java.util.LinkedList; +import java.util.List; + +/** + * Set: The Two Towers + * Side: Shadow + * Culture: Isengard + * Twilight Cost: 1 + * Type: Condition + * Game Text: Plays to your support area. Each time the Free Peoples player assigns an ally to a skirmish, you may play + * an [ISENGARD] minion from your discard pile. That minion's twilight cost is -2. + */ +public class Card4_170 extends AbstractPermanent { + public Card4_170() { + super(Side.SHADOW, 1, CardType.CONDITION, Culture.ISENGARD, Zone.SUPPORT, "Ranks Without Number", true); + } + + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (effectResult.getType() == EffectResult.Type.ASSIGNMENT) { + AssignmentResult assignmentResult = (AssignmentResult) effectResult; + if (assignmentResult.getPlayerId().equals(game.getGameState().getCurrentPlayerId())) { + int count = Filters.filter(assignmentResult.getAssignments().keySet(), game.getGameState(), game.getModifiersQuerying(), Filters.type(CardType.ALLY)).size(); + List optionalTriggers = new LinkedList(); + + for (int i = 0; i < count; i++) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendEffect( + new ChooseAndPlayCardFromDiscardEffect(playerId, game.getGameState().getDiscard(playerId), Filters.and(Filters.type(CardType.MINION), Filters.culture(Culture.ISENGARD)), -2)); + optionalTriggers.add(action); + } + + return optionalTriggers; + } + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/AssignmentEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/AssignmentEffect.java index 27a5e4d6c..01e6131c4 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/AssignmentEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/AssignmentEffect.java @@ -56,6 +56,6 @@ public class AssignmentEffect extends AbstractEffect { List minions = physicalCardListEntry.getValue(); game.getGameState().assignToSkirmishes(fpChar, minions); } - return new FullEffectResult(new EffectResult[]{new AssignmentResult(_assignments)}, true, true); + return new FullEffectResult(new EffectResult[]{new AssignmentResult(_playerId, _assignments)}, true, true); } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/AssignmentResult.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/AssignmentResult.java index 704dd9e8e..0bf8d2f6d 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/AssignmentResult.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/AssignmentResult.java @@ -8,13 +8,19 @@ import java.util.List; import java.util.Map; public class AssignmentResult extends EffectResult { + private String _playerId; private Map> _assignments; - public AssignmentResult(Map> assignments) { + public AssignmentResult(String playerId, Map> assignments) { super(EffectResult.Type.ASSIGNMENT); + _playerId = playerId; _assignments = assignments; } + public String getPlayerId() { + return _playerId; + } + public Map> getAssignments() { return Collections.unmodifiableMap(_assignments); }