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 1be0c2c82..1ac801e8e 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 @@ -178,22 +178,21 @@ public class GameState { Set cardsLeftToSent = new HashSet(_inPlay); Set sentCardsFromPlay = new HashSet(); - int passes = 4; - - while (cardsLeftToSent.size() > 0 && passes > 0) { - Set newCardsLeft = new HashSet(); - for (PhysicalCard physicalCard : cardsLeftToSent) { + int cardsToSendAtLoopStart; + do { + cardsToSendAtLoopStart = cardsLeftToSent.size(); + Iterator cardIterator = cardsLeftToSent.iterator(); + while (cardIterator.hasNext()) { + PhysicalCard physicalCard = cardIterator.next(); PhysicalCard attachedTo = physicalCard.getAttachedTo(); if (attachedTo == null || sentCardsFromPlay.contains(attachedTo)) { listener.cardCreated(physicalCard); sentCardsFromPlay.add(physicalCard); - } else { - newCardsLeft.add(physicalCard); + + cardIterator.remove(); } } - passes--; - cardsLeftToSent = newCardsLeft; - } + } while (cardsToSendAtLoopStart != cardsLeftToSent.size() && cardsLeftToSent.size() > 0); // Finally the stacked ones for (List physicalCards : _stacked.values())