"The End Comes"

This commit is contained in:
marcins78@gmail.com
2011-09-08 17:50:17 +00:00
parent c1c35d37b9
commit 36c2c445aa

View File

@@ -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<PhysicalCard, List<PhysicalCard>> assignments, boolean result) {
PhysicalCard ringBearer = Filters.findFirstActive(gameState, modifiersQuerying, Filters.keyword(Keyword.RING_BEARER));
List<PhysicalCard> 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;