From 710f623577e7254cdc27a9ef193faa32c76125be Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Thu, 8 Sep 2011 18:03:10 +0000 Subject: [PATCH] "Frenzy" --- .../lotro/cards/set1/moria/Card1_169.java | 18 +------ .../lotro/cards/set1/moria/Card1_171.java | 50 +++++++++++++++++++ .../com/gempukku/lotro/filters/Filters.java | 15 ++++++ .../gempukku/lotro/game/state/GameState.java | 2 +- 4 files changed, 67 insertions(+), 18 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_171.java 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 06bfc36eb..a76fc8641 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 @@ -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) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_171.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_171.java new file mode 100644 index 000000000..c0177e50f --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_171.java @@ -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; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java index 85a8e2e37..3757271ee 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java @@ -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 diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java index 8df8f6228..b88eff0d4 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java @@ -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(minions))); for (GameStateListener listener : getAllGameStateListeners()) listener.addAssignment(fp, minions);