diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java index a98705711..fc374b53b 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java @@ -228,7 +228,7 @@ public abstract class AbstractModifier implements Modifier { @Override public boolean isPreventedFromBeingAssignedToSkirmish(GameState gameState, Side sidePlayer, ModifiersQuerying modifiersQuerying, PhysicalCard card) { - return true; + return false; } @Override diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AssignmentAtTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AssignmentAtTest.java index 70bcb7819..77e06aea2 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AssignmentAtTest.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AssignmentAtTest.java @@ -3,17 +3,20 @@ package com.gempukku.lotro.at; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.common.Zone; +import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.PhysicalCardImpl; import com.gempukku.lotro.game.state.Assignment; import com.gempukku.lotro.logic.decisions.AwaitingDecision; import com.gempukku.lotro.logic.decisions.AwaitingDecisionType; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import com.gempukku.lotro.logic.modifiers.KeywordModifier; +import com.gempukku.lotro.logic.vo.LotroDeck; +import static junit.framework.Assert.*; import org.junit.Test; +import java.util.HashMap; import java.util.List; - -import static junit.framework.Assert.*; +import java.util.Map; public class AssignmentAtTest extends AbstractAtTest { @Test @@ -318,4 +321,78 @@ public class AssignmentAtTest extends AbstractAtTest { validateContents(toCardIdArray(gateTroll), (String[]) fierceAssignmentDecision.getDecisionParameters().get("minions")); validateContents(toCardIdArray(merry, pippin, _game.getGameState().getRingBearer(P1)), (String[]) fierceAssignmentDecision.getDecisionParameters().get("freeCharacters")); } + + @Test + public void balrogPreventingToAssign() throws DecisionResultInvalidException { + Map decks = new HashMap(); + final LotroDeck p1Deck = createSimplestDeck(); + p1Deck.setRingBearer("9_14"); + decks.put(P1, p1Deck); + final LotroDeck p2Deck = createSimplestDeck(); + p2Deck.addCard("6_76"); + p2Deck.addCard("2_61"); + decks.put(P2, p2Deck); + + initializeGameWithDecks(decks); + + skipMulligans(); + + _game.getGameState().addTwilight(30); + + // End fellowship phase + playerDecided(P1, ""); + + PhysicalCardImpl theBalrog = new PhysicalCardImpl(102, "6_76", P2, _library.getLotroCardBlueprint("6_76")); + PhysicalCardImpl otherMinion = new PhysicalCardImpl(103, "2_61", P2, _library.getLotroCardBlueprint("2_61")); + + _game.getGameState().addCardToZone(_game, theBalrog, Zone.SHADOW_CHARACTERS); + _game.getGameState().addCardToZone(_game, otherMinion, Zone.SHADOW_CHARACTERS); + + // End shadow phase + playerDecided(P2, ""); + + // End maneuvers phase + playerDecided(P1, ""); + playerDecided(P2, ""); + + // End arhcery phase + playerDecided(P1, ""); + playerDecided(P2, ""); + + // End assignment phase + playerDecided(P1, ""); + playerDecided(P2, ""); + + final List assignmentsBeforeFreePlayer = _game.getGameState().getAssignments(); + assertEquals(0, assignmentsBeforeFreePlayer.size()); + + PhysicalCard galadriel = _game.getGameState().getRingBearer(P1); + + AwaitingDecision fpAssignment = _userFeedback.getAwaitingDecision(P1); + + assertEquals(AwaitingDecisionType.ASSIGN_MINIONS, fpAssignment.getDecisionType()); + validateContents(toCardIdArray(theBalrog, otherMinion), (String[]) fpAssignment.getDecisionParameters().get("minions")); + validateContents(toCardIdArray(galadriel), (String[]) fpAssignment.getDecisionParameters().get("freeCharacters")); + + try { + playerDecided(P1, galadriel.getCardId() + " " + theBalrog.getCardId()); + fail("Can't assign Balrog to Galadriel"); + } catch (DecisionResultInvalidException exp) { + // Expected + } + playerDecided(P1, galadriel.getCardId() + " " + otherMinion.getCardId()); + + AwaitingDecision shadowAssignment = _userFeedback.getAwaitingDecision(P2); + + assertEquals(AwaitingDecisionType.ASSIGN_MINIONS, shadowAssignment.getDecisionType()); + validateContents(toCardIdArray(theBalrog), (String[]) shadowAssignment.getDecisionParameters().get("minions")); + validateContents(toCardIdArray(galadriel), (String[]) shadowAssignment.getDecisionParameters().get("freeCharacters")); + + try { + playerDecided(P2, galadriel.getCardId() + " " + theBalrog.getCardId()); + fail("Can't assign Balrog to Galadriel"); + } catch (DecisionResultInvalidException exp) { + // Expected + } + } }