diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/shire/Card1_302.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/shire/Card1_302.java index 126c5a7f3..3a83f35ea 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/shire/Card1_302.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/shire/Card1_302.java @@ -9,7 +9,6 @@ import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.game.state.Skirmish; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; import com.gempukku.lotro.logic.timing.Action; @@ -39,7 +38,7 @@ public class Card1_302 extends AbstractCompanion { protected List getExtraInPlayPhaseActions(String playerId, final LotroGame game, final PhysicalCard self) { if (PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.SKIRMISH, self) && PlayConditions.canExert(self, game.getGameState(), game.getModifiersQuerying(), 2, Filters.sameCard(self)) - && !isAssigned(game, self)) { + && Filters.notAssignedToSkirmish.accepts(game.getGameState(), game.getModifiersQuerying(), self)) { final ActivateCardAction action = new ActivateCardAction(self); action.appendCost( new ExertCharactersEffect(self, self)); @@ -60,14 +59,4 @@ public class Card1_302 extends AbstractCompanion { return null; } - private boolean isAssigned(LotroGame game, PhysicalCard self) { - for (Skirmish skirmish : game.getGameState().getAssignments()) { - if (skirmish.getFellowshipCharacter() == self) - return true; - } - if (game.getGameState().getSkirmish().getFellowshipCharacter() == self) - return true; - - return false; - } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_224.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_224.java index 0727bdd06..ffa3dd6ec 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_224.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_224.java @@ -8,8 +8,8 @@ import com.gempukku.lotro.cards.modifiers.SpecialFlagModifier; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.Assignment; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.game.state.Skirmish; import com.gempukku.lotro.logic.effects.AssignmentEffect; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; import com.gempukku.lotro.logic.modifiers.ModifierFlag; @@ -45,8 +45,8 @@ public class Card1_224 extends AbstractResponseOldEvent { new UnrespondableEffect() { @Override public void doPlayEffect(final LotroGame game) { - List assignments = new LinkedList(game.getGameState().getAssignments()); - for (Skirmish assignment : assignments) + List assignments = new LinkedList(game.getGameState().getAssignments()); + for (Assignment assignment : assignments) game.getGameState().removeAssignment(assignment); if (Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER), Filters.canBeAssignedToSkirmishByEffect(Side.SHADOW)) > 0) { diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/site/Card3_115.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/site/Card3_115.java index bf9450365..f622a8987 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/site/Card3_115.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/site/Card3_115.java @@ -5,9 +5,9 @@ import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Side; import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.Assignment; import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.game.state.Skirmish; import com.gempukku.lotro.logic.modifiers.AbstractModifier; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.modifiers.ModifierEffect; @@ -41,17 +41,17 @@ public class Card3_115 extends AbstractSite { for (Map.Entry> minionsAssignedToCharacter : assignments.entrySet()) { PhysicalCard fp = minionsAssignedToCharacter.getKey(); List minions = minionsAssignedToCharacter.getValue(); - List skirmishes = gameState.getAssignments(); - if (countMinionsCurrentlyAssignedToFPChar(skirmishes, fp) + minions.size() > 1) + List alreadyAssigned = gameState.getAssignments(); + if (countMinionsCurrentlyAssignedToFPChar(alreadyAssigned, fp) + minions.size() > 1) return false; } return result; } - private int countMinionsCurrentlyAssignedToFPChar(List skirmishes, PhysicalCard fp) { - for (Skirmish skirmish : skirmishes) { - if (skirmish.getFellowshipCharacter() == fp) - return skirmish.getShadowCharacters().size(); + private int countMinionsCurrentlyAssignedToFPChar(List assignments, PhysicalCard fp) { + for (Assignment assignment : assignments) { + if (assignment.getFellowshipCharacter() == fp) + return assignment.getShadowCharacters().size(); } return 0; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java index b45fa1c36..38c0f9494 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java @@ -5,6 +5,7 @@ import com.gempukku.lotro.game.CompletePhysicalCardVisitor; import com.gempukku.lotro.game.LotroCardBlueprint; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.PhysicalCardVisitor; +import com.gempukku.lotro.game.state.Assignment; import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.game.state.Skirmish; @@ -95,7 +96,7 @@ public class Filters { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { if (physicalCard.getBlueprint().getSide() == Side.SHADOW) { - for (Skirmish assignment : gameState.getAssignments()) { + for (Assignment assignment : gameState.getAssignments()) { if (assignment.getFellowshipCharacter() == physicalCard || assignment.getShadowCharacters().contains(physicalCard)) return false; @@ -170,7 +171,7 @@ public class Filters { public static final Filter notAssignedToSkirmish = new Filter() { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - for (Skirmish assignment : gameState.getAssignments()) { + for (Assignment assignment : gameState.getAssignments()) { if (assignment.getFellowshipCharacter() == physicalCard || assignment.getShadowCharacters().contains(physicalCard)) return false; @@ -189,11 +190,11 @@ public class Filters { return new Filter() { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - for (Skirmish skirmish : gameState.getAssignments()) { - if (skirmish.getFellowshipCharacter() == physicalCard) - return Filters.filter(skirmish.getShadowCharacters(), gameState, modifiersQuerying, againstFilters).size() > 0; - else if (skirmish.getShadowCharacters().contains(physicalCard) && skirmish.getFellowshipCharacter() != null) - return Filters.and(againstFilters).accepts(gameState, modifiersQuerying, skirmish.getFellowshipCharacter()); + for (Assignment assignment : gameState.getAssignments()) { + if (assignment.getFellowshipCharacter() == physicalCard) + return Filters.filter(assignment.getShadowCharacters(), gameState, modifiersQuerying, againstFilters).size() > 0; + else if (assignment.getShadowCharacters().contains(physicalCard) && assignment.getFellowshipCharacter() != null) + return Filters.and(againstFilters).accepts(gameState, modifiersQuerying, assignment.getFellowshipCharacter()); } return false; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/Assignment.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/Assignment.java new file mode 100644 index 000000000..51f91ffaa --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/Assignment.java @@ -0,0 +1,23 @@ +package com.gempukku.lotro.game.state; + +import com.gempukku.lotro.game.PhysicalCard; + +import java.util.List; + +public class Assignment { + private PhysicalCard _fellowshipCharacter; + private List _shadowCharacters; + + public Assignment(PhysicalCard fellowshipCharacter, List shadowCharacters) { + _fellowshipCharacter = fellowshipCharacter; + _shadowCharacters = shadowCharacters; + } + + public PhysicalCard getFellowshipCharacter() { + return _fellowshipCharacter; + } + + public List getShadowCharacters() { + return _shadowCharacters; + } +} 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 b599daadd..5e91782e4 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 @@ -37,7 +37,7 @@ public class GameState { private Map _ringBearers = new HashMap(); - private List _assignments = new LinkedList(); + private List _assignments = new LinkedList(); private Skirmish _skirmish = null; private Map _gameStateListeners = new HashMap(); @@ -170,7 +170,7 @@ public class GameState { listener.cardCreated(physicalCard); } - for (Skirmish assignment : _assignments) + for (Assignment assignment : _assignments) listener.addAssignment(assignment.getFellowshipCharacter(), assignment.getShadowCharacters()); if (_skirmish != null) @@ -299,7 +299,7 @@ public class GameState { if (zone == Zone.STACKED) ((PhysicalCardImpl) card).stackOn(null); - for (Skirmish assignment : new LinkedList(_assignments)) { + for (Assignment assignment : new LinkedList(_assignments)) { if (assignment.getFellowshipCharacter() == card) removeAssignment(assignment); if (assignment.getShadowCharacters().remove(card)) @@ -688,37 +688,37 @@ public class GameState { } public void assignToSkirmishes(PhysicalCard fp, List minions) { - Skirmish assignment = findAssignment(fp); + Assignment assignment = findAssignment(fp); if (assignment != null) assignment.getShadowCharacters().addAll(minions); else - _assignments.add(new Skirmish(fp, new LinkedList(minions))); + _assignments.add(new Assignment(fp, new LinkedList(minions))); for (GameStateListener listener : getAllGameStateListeners()) listener.addAssignment(fp, minions); } - public void removeAssignment(Skirmish skirmish) { - _assignments.remove(skirmish); + public void removeAssignment(Assignment assignment) { + _assignments.remove(assignment); for (GameStateListener listener : getAllGameStateListeners()) - listener.removeAssignment(skirmish.getFellowshipCharacter()); + listener.removeAssignment(assignment.getFellowshipCharacter()); } - public List getAssignments() { + public List getAssignments() { return _assignments; } - private Skirmish findAssignment(PhysicalCard fp) { - for (Skirmish assignment : _assignments) + private Assignment findAssignment(PhysicalCard fp) { + for (Assignment assignment : _assignments) if (assignment.getFellowshipCharacter() == fp) return assignment; return null; } public void startSkirmish(PhysicalCard fp) { - Skirmish skirmish = findAssignment(fp); - removeAssignment(skirmish); - _skirmish = skirmish; + Assignment assignment = findAssignment(fp); + removeAssignment(assignment); + _skirmish = new Skirmish(assignment.getFellowshipCharacter(), assignment.getShadowCharacters()); for (GameStateListener listener : getAllGameStateListeners()) listener.startSkirmish(_skirmish.getFellowshipCharacter(), _skirmish.getShadowCharacters()); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/skirmish/PlayoutSkirmishesGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/skirmish/PlayoutSkirmishesGameProcess.java index fc8c8f2b0..1e4a02f44 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/skirmish/PlayoutSkirmishesGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/skirmish/PlayoutSkirmishesGameProcess.java @@ -3,9 +3,9 @@ package com.gempukku.lotro.logic.timing.processes.turn.skirmish; import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.Assignment; import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.game.state.Skirmish; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; import com.gempukku.lotro.logic.timing.processes.GameProcess; @@ -32,11 +32,11 @@ public class PlayoutSkirmishesGameProcess implements GameProcess { _nextProcess = _followingGameProcess; } else { final GameState gameState = _game.getGameState(); - List assignments = gameState.getAssignments(); + List assignments = gameState.getAssignments(); if (assignments.size() > 0) { Set fps = new HashSet(); - for (Skirmish assignment : assignments) + for (Assignment assignment : assignments) fps.add(assignment.getFellowshipCharacter()); RequiredTriggerAction chooseNextSkirmishAction = new RequiredTriggerAction(null) {