From e4fb9b81486d2da34f8038f6524e61acd3ff5584 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Sun, 23 Mar 2025 23:05:14 -0400 Subject: [PATCH] Discard attached cards when moving a card to the bottom of the deck --- .../PutCardsFromPlayOnBottomOfDeck.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/PutCardsFromPlayOnBottomOfDeck.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/PutCardsFromPlayOnBottomOfDeck.java index 8e0451950..2e7087389 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/PutCardsFromPlayOnBottomOfDeck.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/PutCardsFromPlayOnBottomOfDeck.java @@ -16,6 +16,7 @@ import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.actions.CostToEffectAction; import com.gempukku.lotro.logic.effects.ChooseArbitraryCardsEffect; import com.gempukku.lotro.logic.timing.Effect; +import com.gempukku.lotro.logic.timing.results.DiscardCardsFromPlayResult; import org.json.simple.JSONObject; import java.util.*; @@ -52,10 +53,25 @@ public class PutCardsFromPlayOnBottomOfDeck implements EffectAppenderProducer { } GameState gameState = game.getGameState(); - gameState.sendMessage(card.getOwner() + " puts " + GameUtils.getCardLink(card) + " from play on the bottom of deck"); - gameState.removeCardsFromZone(card.getOwner(), Collections.singleton(card)); + Set discardedFromPlayCards = new HashSet<>(); + Set toMoveToDiscardCards = new HashSet<>(); + + DiscardUtils.cardsToChangeZones(game, Collections.singleton(card), discardedFromPlayCards, toMoveToDiscardCards); + + Set removeFromPlay = new HashSet<>(toMoveToDiscardCards); + removeFromPlay.add(card); + + gameState.removeCardsFromZone(card.getOwner(), removeFromPlay); + + for (PhysicalCard attachedCard : toMoveToDiscardCards) + gameState.addCardToZone(game, attachedCard, Zone.DISCARD); + + gameState.sendMessage(card.getOwner() + " puts " + GameUtils.getCardLink(card) + " from play on the bottom of deck"); gameState.putCardOnBottomOfDeck(card); + + for (PhysicalCard discardedCard : discardedFromPlayCards) + game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, null, discardedCard)); } }); }