From eeab1d5353167973a696586cccb4b92f3924a024 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Tue, 8 May 2012 16:46:40 +0000 Subject: [PATCH] Assign Mordor Assassin. --- .../choose/ChooseAndDoAssignmentEffect.java | 14 ++----- .../gempukku/lotro/game/state/GameState.java | 37 +++++++++++++------ 2 files changed, 28 insertions(+), 23 deletions(-) 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 70265527e..d3cf600ba 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 @@ -21,20 +21,12 @@ public class ChooseAndDoAssignmentEffect extends AbstractSubActionEffect { private String _playerId; private Filterable _minionFilter; private Filterable _fpFilter; - private boolean _ignoreUnassigned; - private boolean _allowAllyToSkirmish; public ChooseAndDoAssignmentEffect(Action action, String playerId, Filterable minionFilter, Filterable fpFilter) { - this(action, playerId, minionFilter, fpFilter, false, false); - } - - public ChooseAndDoAssignmentEffect(Action action, String playerId, Filterable minionFilter, Filterable fpFilter, boolean ignoreUnassigned, boolean allowAllyToSkirmish) { _action = action; _playerId = playerId; _minionFilter = minionFilter; _fpFilter = fpFilter; - _ignoreUnassigned = ignoreUnassigned; - _allowAllyToSkirmish = allowAllyToSkirmish; } @Override @@ -57,7 +49,7 @@ public class ChooseAndDoAssignmentEffect extends AbstractSubActionEffect { } private Collection getAssignableMinions(LotroGame game) { - return Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), CardType.MINION, _minionFilter, Filters.assignableToSkirmishAgainst(getDecidingPlayerSide(game), _fpFilter, _ignoreUnassigned, _allowAllyToSkirmish)); + return Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), CardType.MINION, _minionFilter, Filters.assignableToSkirmishAgainst(getDecidingPlayerSide(game), _fpFilter, false, false)); } @Override @@ -78,7 +70,7 @@ public class ChooseAndDoAssignmentEffect extends AbstractSubActionEffect { } private void minionSelected(final LotroGame game, final PhysicalCard minion) { - Collection assignableFpCharacters = Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), Filters.or(CardType.COMPANION, CardType.ALLY), _fpFilter, Filters.assignableToSkirmishAgainst(getDecidingPlayerSide(game), minion, _ignoreUnassigned, _allowAllyToSkirmish)); + Collection assignableFpCharacters = Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), Filters.or(CardType.COMPANION, CardType.ALLY), _fpFilter, Filters.assignableToSkirmishAgainst(getDecidingPlayerSide(game), minion, false, false)); if (assignableFpCharacters.size() == 1) assignmentSelected(game, assignableFpCharacters.iterator().next(), minion); else @@ -94,7 +86,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, _allowAllyToSkirmish)); + new AssignmentEffect(_playerId, fpCharacter, minion, false)); processSubAction(game, subAction); } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java index 6a57a451a..49716e6da 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java @@ -376,18 +376,20 @@ public class GameState { } private void removeFromSkirmish(PhysicalCard card, boolean notify) { - if (_skirmish.getFellowshipCharacter() == card) { - _skirmish.setFellowshipCharacter(null); - _skirmish.addRemovedFromSkirmish(card); - if (notify) - for (GameStateListener listener : getAllGameStateListeners()) - listener.removeFromSkirmish(card); - } - if (_skirmish.getShadowCharacters().remove(card)) { - _skirmish.addRemovedFromSkirmish(card); - if (notify) - for (GameStateListener listener : getAllGameStateListeners()) - listener.removeFromSkirmish(card); + if (_skirmish != null) { + if (_skirmish.getFellowshipCharacter() == card) { + _skirmish.setFellowshipCharacter(null); + _skirmish.addRemovedFromSkirmish(card); + if (notify) + for (GameStateListener listener : getAllGameStateListeners()) + listener.removeFromSkirmish(card); + } + if (_skirmish.getShadowCharacters().remove(card)) { + _skirmish.addRemovedFromSkirmish(card); + if (notify) + for (GameStateListener listener : getAllGameStateListeners()) + listener.removeFromSkirmish(card); + } } } @@ -973,6 +975,17 @@ public class GameState { } public void assignToSkirmishes(PhysicalCard fp, Set minions) { + removeFromSkirmish(fp); + for (PhysicalCard minion : minions) { + removeFromSkirmish(minion); + + for (Assignment assignment : new LinkedList(_assignments)) { + if (assignment.getShadowCharacters().remove(minion)) + if (assignment.getShadowCharacters().size() == 0) + removeAssignment(assignment); + } + } + Assignment assignment = findAssignment(fp); if (assignment != null) assignment.getShadowCharacters().addAll(minions);