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 4bbe8df4b..31e19c59f 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 @@ -434,19 +434,23 @@ public class Filters { } public static Filter sameCard(final PhysicalCard card) { + final int cardId = card.getCardId(); return new Filter() { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return (physicalCard == card); + return (physicalCard.getCardId() == cardId); } }; } public static Filter in(final Collection cards) { + final Set cardIds = new HashSet(); + for (PhysicalCard card : cards) + cardIds.add(card.getCardId()); return new Filter() { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return cards.contains(physicalCard); + return cardIds.contains(physicalCard.getCardId()); } }; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/PhysicalCardImpl.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/PhysicalCardImpl.java index e1490c7c7..2525b533c 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/PhysicalCardImpl.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/PhysicalCardImpl.java @@ -32,6 +32,10 @@ public class PhysicalCardImpl implements PhysicalCard { _blueprint = blueprint; } + public void setCardId(int cardId) { + _cardId = cardId; + } + @Override public String getBlueprintId() { return _blueprintId; 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 341d6b64a..c183aabf8 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 @@ -352,6 +352,8 @@ public class GameState { } private void addCardToZone(LotroGame game, PhysicalCard card, Zone zone, boolean end) { + assignNewCardId(card); + List zoneCards = getZoneCards(card.getOwner(), card.getBlueprint().getCardType(), zone); if (end) zoneCards.add((PhysicalCardImpl) card); @@ -380,6 +382,13 @@ public class GameState { } } + private void assignNewCardId(PhysicalCard card) { + _allCards.remove(card.getCardId()); + int newCardId = nextCardId(); + ((PhysicalCardImpl) card).setCardId(newCardId); + _allCards.put(newCardId, ((PhysicalCardImpl) card)); + } + private void removeAllTokens(PhysicalCard card) { Map map = _cardTokens.get(card); if (map != null) {