From e4fb9b81486d2da34f8038f6524e61acd3ff5584 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Sun, 23 Mar 2025 23:05:14 -0400 Subject: [PATCH 1/3] 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)); } }); } From d6a2e57f9a1f5fe63314c066bafe62075102cee6 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Mon, 24 Mar 2025 15:56:36 -0400 Subject: [PATCH 2/3] Fix for Moon-letters --- .../unofficial/hobbit/set33/set33-fp.hjson | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/hobbit/set33/set33-fp.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/hobbit/set33/set33-fp.hjson index 9bddc8135..45505c67a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/hobbit/set33/set33-fp.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/hobbit/set33/set33-fp.hjson @@ -605,22 +605,12 @@ ] effects: [ { - type: If - check: { - type: cantSpot - filter: culture(dwarven),possession - } - true: { - type: exert - select: choose(dwarf,companion) - } + type: exert + select: choose(dwarf,companion) } { - type: If - check: { - type: canSpot - filter: culture(dwarven),possession - } + type: spot + filter: culture(dwarven),possession } ] } From afb83d5ec9d86bd98b3f649250ae9c9cf5fb81ef Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Mon, 24 Mar 2025 16:52:20 -0400 Subject: [PATCH 3/3] Fix for Borders of the Forest Workaround for the effect is no longer required, and also broken. --- .../hobbit/set33/set33-shadow.hjson | 60 +++++-------------- 1 file changed, 16 insertions(+), 44 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/hobbit/set33/set33-shadow.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/hobbit/set33/set33-shadow.hjson index 243ec4d8b..973e7c78c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/hobbit/set33/set33-shadow.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/hobbit/set33/set33-shadow.hjson @@ -379,54 +379,26 @@ } { type: canSpot - filter: culture(gundabad),orc + filter: culture(gundabad),orc,assignableToSkirmishAgainst(name(Bilbo)) } ] - effect: [ - { - type: chooseActiveCards - text: Choose minion to assign to Bilbo - select: choose(culture(gundabad),orc,assignableToSkirmishAgainst(name(Bilbo))) - memorize: chosenMinion + effect: { + type: assignFpCharacterToSkirmish + fpCharacter: choose(name(Bilbo)) + minion: choose(culture(gundabad),orc,assignableToSkirmishAgainst(name(Bilbo))) + memorizeFPCharacter: bilbo + memorizeMinion: chosenMinion + preventText: Would you like to add a burden and assign {chosenMinion} to prevent assigning Bilbo to that minion? + preventCost: { + type: addBurdens } - { - type: optional - player: fp - text: Would you like to add a doubt to assign {chosenMinion} to a companion? - effect: [ - { - type: addBurdens - } - { - type: assignFpCharacterToSkirmish - player: fp - fpCharacter: choose(companion) - minion: choose(memory(chosenMinion)) - } - ] + insteadEffect: { + type: assignFpCharacterToSkirmish + player: free people + fpCharacter: choose(any) + minion: choose(memory(chosenMinion)) } - { - type: preventable - player: fp - text: assignFpCharacterToSkirmish doesn't work here for some reason, so this cost registers as unable to be attempted and the effect assigns the minion if the FP passed on the optional above - cost: [ - { - type: addBurdens - } - { - type: assignFpCharacterToSkirmish - player: shadowPlayer - fpCharacter: choose(companion) - minion: choose(memory(chosenMinion)) - } - ] - effect: { - type: assignFpCharacterToSkirmish - fpCharacter: choose(name(Bilbo)) - minion: choose(memory(chosenMinion)) - } - } - ] + } } ] }