This commit is contained in:
marcins78@gmail.com
2011-09-08 18:03:10 +00:00
parent 36c2c445aa
commit 710f623577
4 changed files with 67 additions and 18 deletions

View File

@@ -6,14 +6,12 @@ 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.game.state.Skirmish;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import java.util.Collections;
@@ -43,13 +41,7 @@ public class Card1_169 extends AbstractEvent {
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);
}
}) {
new ChooseActiveCardEffect(game.getGameState().getCurrentPlayerId(), "Choose minion to assign Ring-Bearer to", Filters.type(CardType.MINION), Filters.notAssigned()) {
@Override
protected void cardSelected(PhysicalCard minion) {
game.getGameState().assignToSkirmishes(ringBearer, Collections.singletonList(minion));
@@ -59,14 +51,6 @@ public class Card1_169 extends AbstractEvent {
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)

View File

@@ -0,0 +1,50 @@
package com.gempukku.lotro.cards.set1.moria;
import com.gempukku.lotro.cards.AbstractEvent;
import com.gempukku.lotro.cards.actions.PlayEventAction;
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.effects.ChooseActiveCardEffect;
import java.util.Collections;
/**
* Set: The Fellowship of the Ring
* Side: Shadow
* Culture: Moria
* Twilight Cost: 2
* Type: Event
* Game Text: Assignment: Assign an exhausted companion (except the Ring-bearer) to skirmish a [MORIA] Orc.
*/
public class Card1_171 extends AbstractEvent {
public Card1_171() {
super(Side.SHADOW, Culture.MORIA, "Frenzy", Phase.ASSIGNMENT);
}
@Override
public PlayEventAction getPlayCardAction(final String playerId, final LotroGame game, PhysicalCard self, int twilightModifier) {
final PlayEventAction action = new PlayEventAction(self);
action.addEffect(
new ChooseActiveCardEffect(playerId, "Choose exhausted companion", Filters.type(CardType.COMPANION), Filters.not(Filters.canExert()), Filters.notAssigned()) {
@Override
protected void cardSelected(final PhysicalCard companion) {
action.addEffect(
new ChooseActiveCardEffect(playerId, "Choose MORIA Orc", Filters.culture(Culture.MORIA), Filters.keyword(Keyword.ORC), Filters.notAssigned()) {
@Override
protected void cardSelected(PhysicalCard moriaOrc) {
game.getGameState().assignToSkirmishes(companion, Collections.singletonList(moriaOrc));
}
});
}
}
);
return action;
}
@Override
public int getTwilightCost() {
return 2;
}
}

View File

@@ -6,6 +6,7 @@ import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.PhysicalCardVisitor;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.game.state.Skirmish;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import java.util.LinkedList;
@@ -61,6 +62,20 @@ public class Filters {
return visitor.getCounter();
}
public static Filter notAssigned() {
return new Filter() {
@Override
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
for (Skirmish assignment : gameState.getAssignments()) {
if (assignment.getFellowshipCharacter() == physicalCard
|| assignment.getShadowCharacters().contains(physicalCard))
return false;
}
return true;
}
};
}
public static Filter playable(final LotroGame game) {
return new Filter() {
@Override

View File

@@ -592,7 +592,7 @@ public class GameState {
if (assignment != null)
assignment.getShadowCharacters().addAll(minions);
else
_assignments.add(new Skirmish(fp, minions));
_assignments.add(new Skirmish(fp, new LinkedList<PhysicalCard>(minions)));
for (GameStateListener listener : getAllGameStateListeners())
listener.addAssignment(fp, minions);