Skip to content

Unify Constructed format selection in the lobby and deck editor - #12521

Merged
Agetian merged 2 commits into
Card-Forge:masterfrom
MostCromulent:lobby-format-rules
Oct 31, 2026
Merged

Agetian merged 2 commits into
Card-Forge:masterfrom
MostCromulent:lobby-format-rules

Conversation

@MostCromulent

@MostCromulent MostCromulent commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor
Screenshot 2026-10-30 200116 open

Summary

The Constructed lobby and the deck editor now have one Format dropdown. It lists legality formats (Standard, Pauper, Modern etc.) together with Commander, Oathbreaker, Brawl, Tiny Leaders, Momir Basic and MoJhoSto. Decks are checked against the selected legality format at match start.

Benefits

  • Before this, the Constructed lobby could only apply a legality format as a deck list filter and had no way to enforce the chosen format.
  • Now choosing a format in the lobby filters each player's deck list to legal decks. With deck conformance on, any deck that is not legal in the selected format is listed in the existing illegal deck warning at match start.
  • In netplay the host sets the format for the match. Guests see the host's choice, their deck lists are filtered to it, and every seat's deck is checked against it at start.
  • Choosing a legality format in the deck editor limits the card catalogue to that format.
  • The categories follow Wizards' terms. The Comprehensive Rules separate constructed play from limited play (100.2a and b), and Wizards' formats page lists Commander alongside Standard, Pauper and Modern. So Play Mode picks Constructed or Limited, and Format picks one format within it. Planechase, Archenemy and Vanguard are casual variants (CR section 9), so they stay as separate stackable options.
  • On mobile, Commander and the other game types move from the Variants list to the new dropdown.

Implementation

  • FormatChoices (new, forge-gui) builds the grouped list for both platforms: Constructed, the format files from getFilterList() grouped by type, the Commander game types, and in the lobby only Momir Basic and MoJhoSto. Commander-subtype format files are skipped, because their game types cover them.
  • GameLobby.getFormatChoice and setFormatChoice map an entry to the applied variants plus a format. The format name is stored in GameLobbyData, so it travels with the existing lobby update. startGame adds GameFormat.getDeckConformanceProblem results to the existing legality warning, skipping generated decks and Limited.
  • Desktop DeckManager and CardManager get setRequiredFormat, which applies the existing DeckFormatFilter or CardFormatFilter and keeps it when filters are restored or reset. Mobile DeckManager sets its existing Format filter widget instead.
  • UI: the lobby and deck editor dropdowns use FormatChoices; CDeckEditorUI.selectFormat opens the Constructed editor for a legality format; ListHeading (new) rows in desktop and mobile FComboBox draw as group labels and cannot be selected; a disabled desktop FComboBox draws its value in dimmed text colour so netplay guests can read the host's choice; the now-unused lblGameFormat is removed from all language files.

🤖 Generated with Claude Code

One grouped Format dropdown replaces the Game Format list in the
Constructed lobby and the deck editor. It lists the legality formats
(Standard, Pauper and so on) alongside Commander, Oathbreaker, Brawl,
Tiny Leaders, Momir Basic and MoJhoSto, under headings.

A chosen legality format filters the deck lists and the editor's
catalogue. With deck conformance on, the lobby checks every deck
against it at start through the existing play-anyway prompt.

A disabled combo box now draws its value in the normal text colour,
so netplay guests can read the host's choice.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MostCromulent
MostCromulent marked this pull request as ready for review October 30, 2026 10:50
@MostCromulent MostCromulent added the Enhancement New feature or request label Oct 30, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Agetian
Agetian merged commit 49dd5e4 into Card-Forge:master Oct 31, 2026
5 checks passed
@MostCromulent
MostCromulent deleted the lobby-format-rules branch October 31, 2026 07:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancement New feature or request GUI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants