Skip to content

fix(draft): Lore Seeker adds cube booster from surplus in cube drafts#10292

Open
billyhewlett wants to merge 1 commit intoCard-Forge:masterfrom
billyhewlett:fix/lore-seeker-cube-booster
Open

fix(draft): Lore Seeker adds cube booster from surplus in cube drafts#10292
billyhewlett wants to merge 1 commit intoCard-Forge:masterfrom
billyhewlett:fix/lore-seeker-cube-booster

Conversation

@billyhewlett
Copy link
Copy Markdown
Contributor

Problem

In cube drafts, Lore Seeker's effect ("after you draft this, you may add a
booster pack to the draft") calls addBooster(CardEdition), which opens a
set-selection dialog and injects a booster from an arbitrary retail set.
This breaks the cube draft's card pool contract: players draft a card from
outside the cube.

Background

In a cube draft, the number of cards used equals (players × packs × pack size).
The remainder of the cube's card pool sits unused after booster initialization.
For example, a 540-card cube with 8 players drafting 3 packs of 15 uses
8 × 3 × 15 = 360 cards, leaving 180 surplus. Lore Seeker should draw its
booster from this surplus rather than from a retail set.

Changes

UnOpenedProduct.java
Add getRemainingCards(): returns all cards still in the print sheets after
booster draws. Enables callers to inspect surplus without modifying state.

BoosterDraft.java

  • Retain a reference (cubeProduct) to the cube's UnOpenedProduct during
    setupCustomDraft().
  • After initializeBoosters() distributes all packs, snapshot remaining
    cards into a shuffled cubeSurplus list.
  • Override addBooster() (no-arg) to draw a pack from cubeSurplus.
    Returns null when surplus is exhausted.

IBoosterDraft.java
Add default DraftPack addBooster() returning null as the base case for
non-cube draft implementations.

LimitedPlayer.java
In addSingleBoosterPack(), try draft.addBooster() first. If it returns
a pack (cube surplus available), use it. Fall back to the existing
set-selection dialog only for non-cube drafts or when surplus is exhausted.

Non-cube drafts

Unaffected. addBooster() returns null for all non-BoosterDraft
implementations, and the fallback path runs as before.

Testing

Draft with a cube containing Lore Seeker. Verify:

  1. Drafting Lore Seeker adds a pack drawn from cube cards (not a retail set dialog).
  2. After surplus is exhausted, falls back to the set-selection dialog.
  3. Non-cube drafts with Lore Seeker continue to show the set dialog.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant