Fixing issue with Shadow side assigning minions to companions with an effect.

This commit is contained in:
marcins78@gmail.com
2011-12-27 16:22:14 +00:00
parent 2a933f4c2b
commit ede47232ee
3 changed files with 106 additions and 50 deletions

View File

@@ -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() {

View File

@@ -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"));
}
}

View File

@@ -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"));
}
}