Repository navigation
Add Canadian Highlander format - #12522
Open
MostCromulent wants to merge 1 commit into
Open
MostCromulent wants to merge 1 commit into
MostCromulent wants to merge 1 commit into
Conversation
…ules Format files can now set Singleton, MinDeckSize, MaxPoints and a Points list, and can take another format's card pool with CardPool. GameFormat's deck check applies the new rules, so every place that checks a deck against a format sees them. Copies and points count by card name, and cards that allow any number of copies keep their exemption. Canadian Highlander takes Vintage's card pool and ban list and uses the points list from canadianhighlander.ca, updated 1 September 2026. The deck editor's statistics show the deck's points total on desktop and mobile. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
Intended for merging after #12521 so you get deck filtering and legality enforcement for free in the lobby and at match start, but really could go in either order. |
This branch has not been deployed
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.
Summary
Adds Canadian Highlander as a Casual format, with its singleton, 100-card and 10-point rules checked wherever Forge checks a deck against a format, and the deck's points total shown in the deck editor.
Implementation
Singleton,MinDeckSize,MaxPoints,Points:Card=N; …andCardPool:<format>. The deck rules are held in an immutableGameFormat.DeckRulesrecord passed through the constructor. Existing formats getDeckRules.NONEand behave as before.CardPooltakes the named format's sets, rarities, additional cards and ban list, adding the format's own bans on top. The reader builds these formats after every file is read, since files load in no fixed order.GameFormat's deck check applies the new rules, soisDeckLegal,getDeckConformanceProblemand the deck table's format column all see them. Copies and points count by card name across the whole deck. With Unify Constructed format selection in the lobby and deck editor #12521, choosing the format in the lobby checks every deck against these rules at match start.DeckStatistics.pointsSummarybuilds the readout, for example "Canadian Highlander points: 7 / 10", for the desktop Statistics panel and the mobile deck stats screen.GameFormatuse en-US localisation keys.Why this is architecturally consistent
GameFormat, so the deck rules go there too.DeckFormat, whose copy limit is fixed per game type. Canadian Highlander is played in the Constructed game type, whoseDeckFormatallows 4 copies, so a format file needs its ownSingletonrule. It reusesDeckFormat's exemptions for basic lands, cards like Relentless Rats and cards with a set limit.CardPool:Vintageremoves a maintenance burden. Copying Vintage's Sets and Banned lines would mean updating Canadian Highlander's file by hand for every new set and every Vintage ban change; referencing Vintage keeps one list to maintain.🤖 Generated with Claude Code