From a84a7ba5a4ec32d740fcec347fa5901d2a731911 Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Thu, 26 Mar 2020 08:58:54 -0700 Subject: [PATCH] Cards that remove cards from game should now correctly get rid of attached and stacked cards. --- .../effects/RemoveCardsFromTheGameEffect.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/RemoveCardsFromTheGameEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/RemoveCardsFromTheGameEffect.java index d0f9c8269..973a95060 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/RemoveCardsFromTheGameEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/RemoveCardsFromTheGameEffect.java @@ -5,6 +5,7 @@ import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.timing.AbstractEffect; +import com.gempukku.lotro.logic.timing.results.DiscardCardsFromPlayResult; import java.util.Collection; import java.util.HashSet; @@ -48,9 +49,21 @@ public class RemoveCardsFromTheGameEffect extends AbstractEffect { if (physicalCard.getZone().isInPlay()) removedCards.add(physicalCard); - game.getGameState().removeCardsFromZone(_playerPerforming, removedCards); + Set discardedCards = new HashSet(); + + Set toMoveFromZoneToDiscard = new HashSet(); + + DiscardUtils.cardsToChangeZones(game, removedCards, discardedCards, toMoveFromZoneToDiscard); + + Set toRemoveFromZone = new HashSet<>(); + toRemoveFromZone.addAll(removedCards); + toRemoveFromZone.addAll(toMoveFromZoneToDiscard); + + game.getGameState().removeCardsFromZone(_playerPerforming, toRemoveFromZone); for (PhysicalCard removedCard : removedCards) game.getGameState().addCardToZone(game, removedCard, Zone.REMOVED); + for (PhysicalCard card : toMoveFromZoneToDiscard) + game.getGameState().addCardToZone(game, card, Zone.DISCARD); game.getGameState().sendMessage(_playerPerforming + " removed " + GameUtils.getAppendedNames(removedCards) + " from the game using " + GameUtils.getCardLink(_source));