Add commander brackets support in deck editor and new game dialog
Some days ago wizards presented commander brackets system (reddit summary) to rank player's decks.
The main idea: analyse decks same way as legality checks does -- so users can see commander brackets level of their deck. If it will works fine then such filter/requirements can be added to game table/tourney dialogs, so users can check/limit opponent's decks without deck discloses (current users can limit decks by edh levels/points but it's a hidden and non-intuitive feature).
Brackets system must be implemented same as edh power levels -- each deck must be analysed to search and calc cards with specific abilities/effects. Old edh implementation uses text search only (see AbstractCommander->getEdhPowerLevel). But new implementation can use abilities search, not text only.
It's not fully automated feature, but can find out 95% of all use cases. Moxfield has useful tools to find out and check cards/decks for specific bracket level: https://moxfield.com/commanderbrackets
Features to implement:
- [x] code: add deck analyse feature to find commander bracket level;
- [ ] tests: add some example decks from each level to make sure xmage's bracket system can find correct level;
- [x] gui: add bracket level info in deck editor (as part of legality check - as 5 level buttons, so users can select cards from 4 level as example);
- [ ] gui: add max bracket limit to new table/tourney dialog (can be added to custom options, default is 5);
I would suggest that this should likely replace the Power Level system, especially given the power level's undocumented functionality for banning a color from your table.
The brackets do not seem to be designed with particular algorithmic support in mind - "no intentional early 2-card infinites" for example in Bracket 3 - but https://commanderspellbook.com/ has a database of 39,887 combos and we could see if we can get a listing of 2-card infinite combos from them to ban those from brackets 1 and 2, then there may be some judgment calls necessary on "is this a 2-card infinite that we should ban from bracket 3 because it's Too Easy To Do?"
Current example:
One quick comment: I'd recommend switching it to being brackets 1-2, bracket 3, and brackets 4-5 as the split; this makes the estimation more accurate because brackets 1/2 and 4/5 don't have mechanical distinctions, just philosophy differences; where 2 -> 3 is two-card infinites and 1-3 game changers and 3->4 is 4+ game changers and 'anything goes'.
I plan to add all 1, 2, 3, 4-5 buttons in validate panels if GUI allow (there are some limits in buttons sizes/order).
I used > 3 cards condition to support diff in 1->2 brackets:
- Extra turn cards should only appear in low quantities
Same > 3 cards condition for game changes in 3->4 brackets
Now it show all bracket levels, popup hint contains detail stats and restrictions per each level: