From 36c2c445aa69b27bd9b011e879eeb9a4b04b66eb Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Thu, 8 Sep 2011 17:50:17 +0000 Subject: [PATCH] "The End Comes" --- .../lotro/cards/set1/moria/Card1_169.java | 61 +++++++++++++------ 1 file changed, 42 insertions(+), 19 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_169.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_169.java index 4a4a5b0c2..06bfc36eb 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_169.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_169.java @@ -2,18 +2,20 @@ package com.gempukku.lotro.cards.set1.moria; import com.gempukku.lotro.cards.AbstractEvent; import com.gempukku.lotro.cards.actions.PlayEventAction; -import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; -import com.gempukku.lotro.common.*; +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.Filter; import com.gempukku.lotro.filters.Filters; 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.modifiers.AbstractModifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; +import com.gempukku.lotro.game.state.Skirmish; +import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; -import java.util.List; -import java.util.Map; +import java.util.Collections; /** * Set: The Fellowship of the Ring @@ -35,23 +37,44 @@ public class Card1_169 extends AbstractEvent { } @Override - public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + public PlayEventAction getPlayCardAction(String playerId, final LotroGame game, PhysicalCard self, int twilightModifier) { PlayEventAction action = new PlayEventAction(self); - action.addEffect( - new AddUntilEndOfPhaseModifierEffect( - new AbstractModifier(self, "Ring bearer has to be assigned to a skirmish", Filters.keyword(Keyword.RING_BEARER), new ModifierEffect[]{ModifierEffect.ASSIGNMENT_MODIFIER}) { - @Override - public boolean isValidFreePlayerAssignments(GameState gameState, ModifiersQuerying modifiersQuerying, Map> assignments, boolean result) { - PhysicalCard ringBearer = Filters.findFirstActive(gameState, modifiersQuerying, Filters.keyword(Keyword.RING_BEARER)); - List assignedToRingBearer = assignments.get(ringBearer); - if (assignedToRingBearer == null || assignedToRingBearer.size() == 0) - return false; - return result; - } - }, Phase.ASSIGNMENT)); + final PhysicalCard ringBearer = game.getGameState().getRingBearer(game.getGameState().getCurrentPlayerId()); + + if (!isFPCharacterAssigned(game.getGameState(), ringBearer)) { + action.addEffect( + new ChooseActiveCardEffect(playerId, "Choose minion to assign Ring-Bearer to", Filters.type(CardType.MINION), + new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + return !isShadowCharacterAssigned(gameState, physicalCard); + } + }) { + @Override + protected void cardSelected(PhysicalCard minion) { + game.getGameState().assignToSkirmishes(ringBearer, Collections.singletonList(minion)); + } + }); + } return action; } + private boolean isShadowCharacterAssigned(GameState gameState, PhysicalCard card) { + for (Skirmish skirmish : gameState.getAssignments()) { + if (skirmish.getShadowCharacters().contains(card)) + return true; + } + return false; + } + + private boolean isFPCharacterAssigned(GameState gameState, PhysicalCard card) { + for (Skirmish skirmish : gameState.getAssignments()) { + if (skirmish.getFellowshipCharacter() == card) + return true; + } + return false; + } + @Override public int getTwilightCost() { return 0;