- "Caras Galadhon" should no longer work badly in case of some assignment actions (Orc Assassin).
This commit is contained in:
@@ -247,26 +247,22 @@ public class Filters {
|
||||
new Filter() {
|
||||
@Override
|
||||
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
|
||||
Map<PhysicalCard, Set<PhysicalCard>> currentAssignments = new HashMap<PhysicalCard, Set<PhysicalCard>>();
|
||||
for (Assignment assignment : gameState.getAssignments())
|
||||
currentAssignments.put(assignment.getFellowshipCharacter(), assignment.getShadowCharacters());
|
||||
|
||||
for (PhysicalCard card : Filters.filterActive(gameState, modifiersQuerying, againstFilter)) {
|
||||
if (card.getBlueprint().getSide() != physicalCard.getBlueprint().getSide()
|
||||
&& Filters.assignableToSkirmish(assignedBySide, ignoreUnassigned, allowAllyToSkirmish).accepts(gameState, modifiersQuerying, card)) {
|
||||
Map<PhysicalCard, Set<PhysicalCard>> afterThatAssignment = new HashMap<PhysicalCard, Set<PhysicalCard>>(currentAssignments);
|
||||
Map<PhysicalCard, Set<PhysicalCard>> thisAssignment = new HashMap<PhysicalCard, Set<PhysicalCard>>();
|
||||
if (card.getBlueprint().getSide() == Side.FREE_PEOPLE) {
|
||||
if (afterThatAssignment.containsKey(card))
|
||||
afterThatAssignment.get(card).add(physicalCard);
|
||||
if (thisAssignment.containsKey(card))
|
||||
thisAssignment.get(card).add(physicalCard);
|
||||
else
|
||||
afterThatAssignment.put(card, Collections.singleton(physicalCard));
|
||||
thisAssignment.put(card, Collections.singleton(physicalCard));
|
||||
} else {
|
||||
if (afterThatAssignment.containsKey(physicalCard))
|
||||
afterThatAssignment.get(physicalCard).add(card);
|
||||
if (thisAssignment.containsKey(physicalCard))
|
||||
thisAssignment.get(physicalCard).add(card);
|
||||
else
|
||||
afterThatAssignment.put(physicalCard, Collections.singleton(card));
|
||||
thisAssignment.put(physicalCard, Collections.singleton(card));
|
||||
}
|
||||
if (modifiersQuerying.isValidAssignments(gameState, assignedBySide, afterThatAssignment))
|
||||
if (modifiersQuerying.isValidAssignments(gameState, assignedBySide, thisAssignment))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,13 +11,14 @@ 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 java.util.Map;
|
||||
|
||||
import static junit.framework.Assert.*;
|
||||
|
||||
public class AssignmentAtTest extends AbstractAtTest {
|
||||
@Test
|
||||
public void orcAssassinAssignNotToAlly() throws DecisionResultInvalidException {
|
||||
@@ -438,4 +439,73 @@ public class AssignmentAtTest extends AbstractAtTest {
|
||||
assertEquals(1, assignmentsAfterFreePlayer.get(0).getShadowCharacters().size());
|
||||
assertTrue(assignmentsAfterFreePlayer.get(0).getShadowCharacters().contains(dunlendingWarrior));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void twoOrcAssassinsAtCarasGaladhon() throws DecisionResultInvalidException {
|
||||
initializeSimplestGame();
|
||||
|
||||
skipMulligans();
|
||||
|
||||
PhysicalCardImpl merry = new PhysicalCardImpl(100, "1_303", P1, _library.getLotroCardBlueprint("1_303"));
|
||||
PhysicalCardImpl carasGaladhon = new PhysicalCardImpl(100, "3_115", P1, _library.getLotroCardBlueprint("3_115"));
|
||||
PhysicalCardImpl orcAssassin1 = new PhysicalCardImpl(101, "1_262", P2, _library.getLotroCardBlueprint("1_262"));
|
||||
PhysicalCardImpl orcAssassin2 = new PhysicalCardImpl(102, "1_262", P2, _library.getLotroCardBlueprint("1_262"));
|
||||
|
||||
_game.getGameState().addCardToZone(_game, merry, Zone.FREE_CHARACTERS);
|
||||
|
||||
carasGaladhon.setSiteNumber(2);
|
||||
_game.getGameState().addCardToZone(_game, carasGaladhon, Zone.ADVENTURE_PATH);
|
||||
|
||||
// End fellowship phase
|
||||
playerDecided(P1, "");
|
||||
|
||||
_game.getGameState().addCardToZone(_game, orcAssassin1, Zone.SHADOW_CHARACTERS);
|
||||
_game.getGameState().addCardToZone(_game, orcAssassin2, 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());
|
||||
validateContents(toCardIdArray(orcAssassin1, orcAssassin2), (String[]) assignmentActions.getDecisionParameters().get("cardId"));
|
||||
|
||||
playerDecided(P2, "0");
|
||||
|
||||
AwaitingDecision fpFirstAssassinDecision = _userFeedback.getAwaitingDecision(P1);
|
||||
assertEquals(AwaitingDecisionType.CARD_SELECTION, fpFirstAssassinDecision.getDecisionType());
|
||||
validateContents(toCardIdArray(merry, _game.getGameState().getRingBearer(P1)), (String[]) fpFirstAssassinDecision.getDecisionParameters().get("cardId"));
|
||||
|
||||
playerDecided(P1, String.valueOf(merry.getCardId()));
|
||||
|
||||
assertEquals(1, _game.getGameState().getAssignments().size());
|
||||
final Assignment firstAssignment = _game.getGameState().getAssignments().get(0);
|
||||
assertEquals(merry, firstAssignment.getFellowshipCharacter());
|
||||
assertEquals(1, firstAssignment.getShadowCharacters().size());
|
||||
assertTrue(firstAssignment.getShadowCharacters().contains(orcAssassin1));
|
||||
|
||||
playerDecided(P1, "");
|
||||
|
||||
assignmentActions = _userFeedback.getAwaitingDecision(P2);
|
||||
assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, assignmentActions.getDecisionType());
|
||||
validateContents(toCardIdArray(orcAssassin1, orcAssassin2), (String[]) assignmentActions.getDecisionParameters().get("cardId"));
|
||||
|
||||
playerDecided(P2, "1");
|
||||
|
||||
assertEquals(2, _game.getGameState().getAssignments().size());
|
||||
final Assignment secondAssignment = _game.getGameState().getAssignments().get(1);
|
||||
assertEquals(_game.getGameState().getRingBearer(P1), secondAssignment.getFellowshipCharacter());
|
||||
assertEquals(1, secondAssignment.getShadowCharacters().size());
|
||||
assertTrue(secondAssignment.getShadowCharacters().contains(orcAssassin2));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<b>30 Apr. 2012</b>
|
||||
- "Pillage of Rohan" should now work correctly.
|
||||
- "Realm of Dwarrowdelf" now has two separate limits (for str and dmg).
|
||||
- "Caras Galadhon" should no longer work badly in case of some assignment actions (Orc Assassin).
|
||||
|
||||
<b>27 Apr. 2012</b>
|
||||
- "Morning Came" now correctly adds +2 Strength to the character if shadow player puts card from hand beneath his/her
|
||||
|
||||
Reference in New Issue
Block a user