fix(draft): conspiracy cards work in custom cube drafts#10372
Open
billyhewlett wants to merge 1 commit intoCard-Forge:masterfrom
Open
fix(draft): conspiracy cards work in custom cube drafts#10372billyhewlett wants to merge 1 commit intoCard-Forge:masterfrom
billyhewlett wants to merge 1 commit intoCard-Forge:masterfrom
Conversation
tool4ever
reviewed
Apr 12, 2026
forge-game/src/main/java/forge/game/extrahands/BackupPlanService.java
Outdated
Show resolved
Hide resolved
07ece6c to
09c571f
Compare
- CustomLimited.parse(): merge DeckSection.Conspiracy into the card pool so cards like Backup Plan appear in packs alongside regular cards. - GauntletMini.startRound(): call assignConspiracies() on each player before starting the match (LoadDraftScreen already did this; Gauntlet mode was the missing path). - FDeckEditor CatalogPage: pass forceCreateIfAbsent=true to getPageForSection() in onCardActivated() and buildMenu() so the Conspiracy tab is created on demand when a conspiracy card is drafted. - BackupPlanService.initializeExtraHands(): guard each extra-hand draw with a library-size check to prevent a turn-0 game loss when a player holds multiple Backup Plans. Use getMaxHandSize() instead of hardcoded 7.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Conspiracy cards (Backup Plan, Double Stroke, Advantageous Proclamation,
etc.) are silently ignored when drafting a custom cube that includes them.
Three separate gaps in the code combine to produce this behaviour:
Cards never enter the draft pool —
CustomLimited.parse()buildsthe card pool from
deckCube.getMain()only, ignoringDeckSection.Conspiracy. Conspiracy cards therefore never appear inany pack.
Effects never trigger —
GauntletMini.startRound()createsRegisteredPlayerobjects but never callsassignConspiracies().The Load Draft screen's single-match path already calls it correctly;
Gauntlet mode (the default for Draft) was the missing path.
Cards can't be moved into the Conspiracy section — In
FDeckEditor,CatalogPage.onCardActivated()andbuildMenu()callgetPageForSection(destination)withoutforceCreateIfAbsent=true.The Conspiracy tab is never created by default, so
destinationPageis
nulland the card silently fails to move intoDeckSection.Conspiracy.assignConspiracies()therefore findsnothing even when fix 2 is applied.
Changes
CustomLimited.java(forge-gui)DeckSection.Conspiracysection is present, merge it into thecard pool alongside
deckCube.getMain().GauntletMini.java(forge-gui)pl.assignConspiracies()for each player instartRound(),mirroring the call already present in
LoadDraftScreen.FDeckEditor.java(forge-gui-mobile)forceCreateIfAbsent=truetogetPageForSection()in bothonCardActivated()(tap) andbuildMenu()(long-press) insideCatalogPage. The Conspiracy tab is now created on demand when theplayer first drafts a conspiracy card.
Testing
Draft a cube containing at least one Backup Plan and one Double Stroke.
Verify:
the deck builder (tap or long-press to move it).