diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndAssignCharacterToMinionEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndAssignCharacterToMinionEffect.java index ce5a38723..f5ec826b9 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndAssignCharacterToMinionEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndAssignCharacterToMinionEffect.java @@ -40,7 +40,7 @@ public class ChooseAndAssignCharacterToMinionEffect extends ChooseActiveCardEffe protected void cardSelected(LotroGame game, PhysicalCard card) { SubAction subAction = new SubAction(_action); subAction.appendEffect( - new AssignmentEffect(_playerId, card, _minion)); + new AssignmentEffect(_playerId, card, _minion, _skipAllyLocationCheck)); game.getActionsEnvironment().addActionToStack(subAction); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndDoAssignmentEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndDoAssignmentEffect.java index e10d64a10..70265527e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndDoAssignmentEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndDoAssignmentEffect.java @@ -94,7 +94,7 @@ public class ChooseAndDoAssignmentEffect extends AbstractSubActionEffect { private void assignmentSelected(LotroGame game, PhysicalCard fpCharacter, PhysicalCard minion) { SubAction subAction = new SubAction(_action); subAction.appendEffect( - new AssignmentEffect(_playerId, fpCharacter, minion)); + new AssignmentEffect(_playerId, fpCharacter, minion, _allowAllyToSkirmish)); processSubAction(game, subAction); } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/AssignmentEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/AssignmentEffect.java index ae0dbabcc..42d189868 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/AssignmentEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/AssignmentEffect.java @@ -14,13 +14,19 @@ import java.util.Collections; public class AssignmentEffect extends AbstractEffect { private String _playerId; private boolean _ignoreSingleMinionRestriction; + private boolean _skipAllyLocationCheck; private PhysicalCard _fpChar; private PhysicalCard _minion; public AssignmentEffect(String playerId, PhysicalCard fpChar, PhysicalCard minion) { + this(playerId, fpChar, minion, false); + } + + public AssignmentEffect(String playerId, PhysicalCard fpChar, PhysicalCard minion, boolean skipAllyLocationCheck) { _playerId = playerId; _fpChar = fpChar; _minion = minion; + _skipAllyLocationCheck = skipAllyLocationCheck; } public void setIgnoreSingleMinionRestriction(boolean ignoreSingleMinionRestriction) { @@ -40,7 +46,7 @@ public class AssignmentEffect extends AbstractEffect { @Override public boolean isPlayableInFull(LotroGame game) { Side side = _playerId.equals(game.getGameState().getCurrentPlayerId()) ? Side.FREE_PEOPLE : Side.SHADOW; - return Filters.assignableToSkirmishAgainst(side, _fpChar, _ignoreSingleMinionRestriction, false).accepts(game.getGameState(), game.getModifiersQuerying(), _minion); + return Filters.assignableToSkirmishAgainst(side, _fpChar, _ignoreSingleMinionRestriction, _skipAllyLocationCheck).accepts(game.getGameState(), game.getModifiersQuerying(), _minion); } @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 77e06aea2..fe627cb60 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 @@ -395,4 +395,47 @@ public class AssignmentAtTest extends AbstractAtTest { // Expected } } + + @Test + public void dunlendingWarriorAssignsToAlly() throws DecisionResultInvalidException { + initializeSimplestGame(); + + skipMulligans(); + + PhysicalCardImpl elrond = new PhysicalCardImpl(101, "1_40", P1, _library.getLotroCardBlueprint("1_40")); + PhysicalCardImpl dunlendingWarrior = new PhysicalCardImpl(102, "4_18", P2, _library.getLotroCardBlueprint("4_18")); + + _game.getGameState().addCardToZone(_game, elrond, Zone.SUPPORT); + + // End fellowship phase + playerDecided(P1, ""); + + _game.getGameState().addCardToZone(_game, dunlendingWarrior, 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, ""); + + AwaitingDecision assignmentActions = _userFeedback.getAwaitingDecision(P2); + assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, assignmentActions.getDecisionType()); + validateContents(toCardIdArray(dunlendingWarrior), (String[]) assignmentActions.getDecisionParameters().get("cardId")); + + playerDecided(P2, "0"); + + final List assignmentsAfterFreePlayer = _game.getGameState().getAssignments(); + assertEquals(1, assignmentsAfterFreePlayer.size()); + assertEquals(elrond, assignmentsAfterFreePlayer.get(0).getFellowshipCharacter()); + assertEquals(1, assignmentsAfterFreePlayer.get(0).getShadowCharacters().size()); + assertTrue(assignmentsAfterFreePlayer.get(0).getShadowCharacters().contains(dunlendingWarrior)); + } } diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html index 3865e1e95..2b8ed875d 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html @@ -9,6 +9,7 @@ for cancelling bonus modifiers. - "Orc Strategist" has a proper name now. - Added "Expanded Middle-earth" (set 14) set. - "Sword of Rohan" now properly gives the damage +1 bonus. +- "Dunlending Warrior" now can assign itself to an ally. 15 Jan. 2012 - "Hobbit Farmer" and other allies copying site text should now be able to activate the site phase actions.