- If a minion assigned by normal FP assignments becomes unassigned before Shadow player(s) assigns minions, that minion no longer can be assigned by the Shadow player, as it's not a "leftover unassigned minion".
This commit is contained in:
@@ -6,7 +6,6 @@ import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.timing.processes.GameProcess;
|
||||
import com.gempukku.lotro.logic.timing.processes.turn.assign.FreePeoplePlayerAssignsMinionsGameProcess;
|
||||
import com.gempukku.lotro.logic.timing.processes.turn.assign.ShadowPlayersAssignTheirMinionsGameProcess;
|
||||
import com.gempukku.lotro.logic.timing.processes.turn.general.EndOfPhaseGameProcess;
|
||||
import com.gempukku.lotro.logic.timing.processes.turn.general.PlayersPlayPhaseActionsInOrderGameProcess;
|
||||
import com.gempukku.lotro.logic.timing.processes.turn.general.StartOfPhaseGameProcess;
|
||||
@@ -23,10 +22,9 @@ public class AssignmentGameProcess implements GameProcess {
|
||||
else
|
||||
_followingGameProcess = new StartOfPhaseGameProcess(Phase.ASSIGNMENT,
|
||||
new PlayersPlayPhaseActionsInOrderGameProcess(game.getGameState().getPlayerOrder().getCounterClockwisePlayOrder(game.getGameState().getCurrentPlayerId(), true), 0,
|
||||
new FreePeoplePlayerAssignsMinionsGameProcess(game,
|
||||
new ShadowPlayersAssignTheirMinionsGameProcess(
|
||||
new EndOfPhaseGameProcess(Phase.ASSIGNMENT,
|
||||
new PlayoutSkirmishesGameProcess())))));
|
||||
new FreePeoplePlayerAssignsMinionsGameProcess(
|
||||
new EndOfPhaseGameProcess(Phase.ASSIGNMENT,
|
||||
new PlayoutSkirmishesGameProcess()))));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,13 +17,17 @@ import com.gempukku.lotro.logic.timing.UnrespondableEffect;
|
||||
import com.gempukku.lotro.logic.timing.processes.GameProcess;
|
||||
import com.gempukku.lotro.logic.timing.results.FreePlayerStartsAssigningResult;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class FreePeoplePlayerAssignsMinionsGameProcess implements GameProcess {
|
||||
private GameProcess _followingGameProcess;
|
||||
private Set<PhysicalCard> _leftoverMinions;
|
||||
private GameProcess _followingAssignments;
|
||||
|
||||
public FreePeoplePlayerAssignsMinionsGameProcess(LotroGame game, GameProcess followingGameProcess) {
|
||||
_followingGameProcess = followingGameProcess;
|
||||
public FreePeoplePlayerAssignsMinionsGameProcess(GameProcess followingAssignments) {
|
||||
_followingAssignments = followingAssignments;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -53,7 +57,7 @@ public class FreePeoplePlayerAssignsMinionsGameProcess implements GameProcess {
|
||||
public void decisionMade(String result) throws DecisionResultInvalidException {
|
||||
Map<PhysicalCard, Set<PhysicalCard>> assignments = getAssignmentsBasedOnResponse(result);
|
||||
|
||||
List<PhysicalCard> unassignedMinions = new LinkedList<PhysicalCard>(minions);
|
||||
Set<PhysicalCard> unassignedMinions = new HashSet<PhysicalCard>(minions);
|
||||
// Validate minion count (Defender)
|
||||
for (PhysicalCard freeCard : assignments.keySet()) {
|
||||
Set<PhysicalCard> minionsAssigned = assignments.get(freeCard);
|
||||
@@ -65,6 +69,8 @@ public class FreePeoplePlayerAssignsMinionsGameProcess implements GameProcess {
|
||||
if (!game.getModifiersQuerying().isValidAssignments(game.getGameState(), Side.FREE_PEOPLE, assignments))
|
||||
throw new DecisionResultInvalidException("Assignments are not valid for the effects affecting the cards");
|
||||
|
||||
_leftoverMinions = unassignedMinions;
|
||||
|
||||
action.appendEffect(
|
||||
new AssignmentPhaseEffect(gameState.getCurrentPlayerId(), assignments, "Free People player assignments"));
|
||||
}
|
||||
@@ -86,6 +92,6 @@ public class FreePeoplePlayerAssignsMinionsGameProcess implements GameProcess {
|
||||
|
||||
@Override
|
||||
public GameProcess getNextProcess() {
|
||||
return _followingGameProcess;
|
||||
return new ShadowPlayersAssignTheirMinionsGameProcess(_followingAssignments, _leftoverMinions);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,18 +21,20 @@ import java.util.Set;
|
||||
public class ShadowPlayerAssignsHisMinionsGameProcess implements GameProcess {
|
||||
private PlayOrder _shadowOrder;
|
||||
private String _playerId;
|
||||
private Set<PhysicalCard> _leftoverMinions;
|
||||
private GameProcess _followingGameProcess;
|
||||
|
||||
public ShadowPlayerAssignsHisMinionsGameProcess(PlayOrder shadowOrder, String playerId, GameProcess followingGameProcess) {
|
||||
public ShadowPlayerAssignsHisMinionsGameProcess(PlayOrder shadowOrder, String playerId, Set<PhysicalCard> leftoverMinions, GameProcess followingGameProcess) {
|
||||
_shadowOrder = shadowOrder;
|
||||
_playerId = playerId;
|
||||
_leftoverMinions = leftoverMinions;
|
||||
_followingGameProcess = followingGameProcess;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(final LotroGame game) {
|
||||
GameState gameState = game.getGameState();
|
||||
Filter minionFilter = Filters.and(CardType.MINION, Filters.owner(_playerId));
|
||||
Filter minionFilter = Filters.and(CardType.MINION, Filters.owner(_playerId), Filters.in(_leftoverMinions));
|
||||
|
||||
final Collection<PhysicalCard> minions = Filters.filterActive(gameState, game.getModifiersQuerying(), minionFilter, Filters.assignableToSkirmish(Side.SHADOW, true, false));
|
||||
if (minions.size() > 0) {
|
||||
@@ -66,7 +68,7 @@ public class ShadowPlayerAssignsHisMinionsGameProcess implements GameProcess {
|
||||
public GameProcess getNextProcess() {
|
||||
String nextPlayerId = _shadowOrder.getNextPlayer();
|
||||
if (nextPlayerId != null)
|
||||
return new ShadowPlayerAssignsHisMinionsGameProcess(_shadowOrder, nextPlayerId, _followingGameProcess);
|
||||
return new ShadowPlayerAssignsHisMinionsGameProcess(_shadowOrder, nextPlayerId, _leftoverMinions, _followingGameProcess);
|
||||
else
|
||||
return _followingGameProcess;
|
||||
}
|
||||
|
||||
@@ -1,17 +1,22 @@
|
||||
package com.gempukku.lotro.logic.timing.processes.turn.assign;
|
||||
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.PlayOrder;
|
||||
import com.gempukku.lotro.logic.timing.processes.GameProcess;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class ShadowPlayersAssignTheirMinionsGameProcess implements GameProcess {
|
||||
private GameProcess _followingProcess;
|
||||
private Set<PhysicalCard> _leftoverMinions;
|
||||
private PlayOrder _shadowOrder;
|
||||
private String _firstShadowPlayer;
|
||||
|
||||
public ShadowPlayersAssignTheirMinionsGameProcess(GameProcess followingProcess) {
|
||||
public ShadowPlayersAssignTheirMinionsGameProcess(GameProcess followingProcess, Set<PhysicalCard> leftoverMinions) {
|
||||
_followingProcess = followingProcess;
|
||||
_leftoverMinions = leftoverMinions;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -25,6 +30,6 @@ public class ShadowPlayersAssignTheirMinionsGameProcess implements GameProcess {
|
||||
|
||||
@Override
|
||||
public GameProcess getNextProcess() {
|
||||
return new ShadowPlayerAssignsHisMinionsGameProcess(_shadowOrder, _firstShadowPlayer, _followingProcess);
|
||||
return new ShadowPlayerAssignsHisMinionsGameProcess(_shadowOrder, _firstShadowPlayer, _leftoverMinions, _followingProcess);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
<b>14 Mar. 2012</b>
|
||||
- "White Hand Destroyer" no longer has "Hunter 0" when you control no sites.
|
||||
- "Into the Caves" now can be used only when card is in play.
|
||||
- If a minion assigned by normal FP assignments becomes unassigned before Shadow player(s) assigns minions, that minion
|
||||
no longer can be assigned by the Shadow player, as it's not a "leftover unassigned minion".
|
||||
|
||||
<b>12 Mar. 2012</b>
|
||||
- "Dark Fell About Him" now correctly exerts your Nazgul twice.
|
||||
|
||||
Reference in New Issue
Block a user