From ede47232ee99550f85eb0627291e1097b1c6580c Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Tue, 27 Dec 2011 16:22:14 +0000 Subject: [PATCH] Fixing issue with Shadow side assigning minions to companions with an effect. --- .../lotro/logic/timing/RuleUtils.java | 16 ++- .../gempukku/lotro/at/AssignmentAtTest.java | 99 +++++++++++++++++++ .../lotro/at/IndividualCardAtTest.java | 41 -------- 3 files changed, 106 insertions(+), 50 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AssignmentAtTest.java diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleUtils.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleUtils.java index b42eb6665..ab89c2e66 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleUtils.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleUtils.java @@ -105,18 +105,16 @@ public class RuleUtils { } else { return Filters.and( Filters.or( - Filters.and( - CardType.COMPANION, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return modifiersQuerying.isAllowedToParticipateInSkirmishes(gameState, Side.SHADOW, physicalCard); - } - } - ), + CardType.COMPANION, Filters.and( CardType.ALLY, Filters.or( + new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + return skipAllyLocationCheck; + } + }, Filters.and( Filters.allyAtHome, new Filter() { 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 new file mode 100644 index 000000000..319b2038f --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AssignmentAtTest.java @@ -0,0 +1,99 @@ +package com.gempukku.lotro.at; + +import com.gempukku.lotro.common.Zone; +import com.gempukku.lotro.game.PhysicalCardImpl; +import com.gempukku.lotro.logic.decisions.AwaitingDecision; +import com.gempukku.lotro.logic.decisions.AwaitingDecisionType; +import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; +import static junit.framework.Assert.assertEquals; +import org.junit.Test; + +public class AssignmentAtTest extends AbstractAtTest { + @Test + public void orcAssassinAssignNotToAlly() throws DecisionResultInvalidException { + initializeSimplestGame(); + + skipMulligans(); + + PhysicalCardImpl merry = new PhysicalCardImpl(100, "1_303", P1, _library.getLotroCardBlueprint("1_303")); + PhysicalCardImpl hobbitPartyGuest = new PhysicalCardImpl(101, "1_297", P1, _library.getLotroCardBlueprint("1_297")); + PhysicalCardImpl orcAssassin = new PhysicalCardImpl(102, "1_262", P2, _library.getLotroCardBlueprint("1_262")); + + _game.getGameState().addCardToZone(_game, merry, Zone.FREE_CHARACTERS); + _game.getGameState().addCardToZone(_game, hobbitPartyGuest, Zone.SUPPORT); + + // End fellowship phase + playerDecided(P1, ""); + + _game.getGameState().addCardToZone(_game, orcAssassin, Zone.SHADOW_CHARACTERS); + + // End shadow phase + playerDecided(P2, ""); + + // End maneuvers phase + playerDecided(P1, ""); + playerDecided(P2, ""); + + // End arhcery phase + playerDecided(P1, ""); + playerDecided(P2, ""); + + // Assignment phase + playerDecided(P1, ""); + + AwaitingDecision assignmentActions = _userFeedback.getAwaitingDecision(P2); + assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, assignmentActions.getDecisionType()); + playerDecided(P2, "0"); + + AwaitingDecision assignCharacter = _userFeedback.getAwaitingDecision(P1); + assertEquals(AwaitingDecisionType.CARD_SELECTION, assignCharacter.getDecisionType()); + validateContents(new String[]{String.valueOf(merry.getCardId()), String.valueOf(_game.getGameState().getRingBearer(P1).getCardId())}, (String[]) assignCharacter.getDecisionParameters().get("cardId")); + } + + @Test + public void sarumanAssignsToCompainon() throws DecisionResultInvalidException { + initializeSimplestGame(); + + skipMulligans(); + + PhysicalCardImpl merry = new PhysicalCardImpl(100, "1_303", P1, _library.getLotroCardBlueprint("1_303")); + PhysicalCardImpl pippin = new PhysicalCardImpl(101, "1_306", P1, _library.getLotroCardBlueprint("1_306")); + PhysicalCardImpl saruman = new PhysicalCardImpl(102, "3_69", P2, _library.getLotroCardBlueprint("3_69")); + PhysicalCardImpl urukHaiRaidingParty = new PhysicalCardImpl(103, "1_158", P2, _library.getLotroCardBlueprint("1_158")); + + _game.getGameState().addCardToZone(_game, merry, Zone.FREE_CHARACTERS); + _game.getGameState().addCardToZone(_game, pippin, Zone.FREE_CHARACTERS); + + // End fellowship phase + playerDecided(P1, ""); + + _game.getGameState().addCardToZone(_game, saruman, Zone.SHADOW_CHARACTERS); + _game.getGameState().addCardToZone(_game, urukHaiRaidingParty, Zone.SHADOW_CHARACTERS); + + // End shadow phase + playerDecided(P2, ""); + + // End maneuvers phase + playerDecided(P1, ""); + playerDecided(P2, ""); + + // End arhcery phase + playerDecided(P1, ""); + playerDecided(P2, ""); + + // Assignment phase + playerDecided(P1, ""); + + AwaitingDecision assignmentActions = _userFeedback.getAwaitingDecision(P2); + assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, assignmentActions.getDecisionType()); + playerDecided(P2, "0"); + + AwaitingDecision chooseMinion = _userFeedback.getAwaitingDecision(P2); + assertEquals(AwaitingDecisionType.CARD_SELECTION, chooseMinion.getDecisionType()); + playerDecided(P2, String.valueOf(urukHaiRaidingParty.getCardId())); + + AwaitingDecision chooseCompanion = _userFeedback.getAwaitingDecision(P2); + assertEquals(AwaitingDecisionType.CARD_SELECTION, chooseCompanion.getDecisionType()); + validateContents(new String[]{String.valueOf(merry.getCardId()), String.valueOf(pippin.getCardId())}, (String[]) chooseCompanion.getDecisionParameters().get("cardId")); + } +} diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/IndividualCardAtTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/IndividualCardAtTest.java index 7e8d9ced5..10e1a0097 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/IndividualCardAtTest.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/IndividualCardAtTest.java @@ -350,45 +350,4 @@ public class IndividualCardAtTest extends AbstractAtTest { assertEquals(2, _game.getGameState().getWounds(urukHaiRaidingParty)); } - - @Test - public void orcAssassinAssignNotToAlly() throws DecisionResultInvalidException { - initializeSimplestGame(); - - skipMulligans(); - - PhysicalCardImpl merry = new PhysicalCardImpl(100, "1_303", P1, _library.getLotroCardBlueprint("1_303")); - PhysicalCardImpl hobbitPartyGuest = new PhysicalCardImpl(101, "1_297", P1, _library.getLotroCardBlueprint("1_297")); - PhysicalCardImpl orcAssassin = new PhysicalCardImpl(102, "1_262", P2, _library.getLotroCardBlueprint("1_262")); - - _game.getGameState().addCardToZone(_game, merry, Zone.FREE_CHARACTERS); - _game.getGameState().addCardToZone(_game, hobbitPartyGuest, Zone.SUPPORT); - - // End fellowship phase - playerDecided(P1, ""); - - _game.getGameState().addCardToZone(_game, orcAssassin, Zone.SHADOW_CHARACTERS); - - // End shadow phase - playerDecided(P2, ""); - - // End maneuvers phase - playerDecided(P1, ""); - playerDecided(P2, ""); - - // End arhcery phase - playerDecided(P1, ""); - playerDecided(P2, ""); - - // Assignment phase - playerDecided(P1, ""); - - AwaitingDecision assignmentActions = _userFeedback.getAwaitingDecision(P2); - assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, assignmentActions.getDecisionType()); - playerDecided(P2, "0"); - - AwaitingDecision assignCharacter = _userFeedback.getAwaitingDecision(P1); - assertEquals(AwaitingDecisionType.CARD_SELECTION, assignCharacter.getDecisionType()); - validateContents(new String[]{String.valueOf(merry.getCardId()), String.valueOf(_game.getGameState().getRingBearer(P1).getCardId())}, (String[]) assignCharacter.getDecisionParameters().get("cardId")); - } }