Skip to content

Commit

Permalink
deck: added boosters for Commander Masters (CMM) (related to #13160):
Browse files Browse the repository at this point in the history
  • Loading branch information
JayDi85 committed Jan 31, 2025
1 parent 832fcbe commit 9d8f87b
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 7 deletions.
13 changes: 8 additions & 5 deletions Mage.Sets/src/mage/sets/CommanderMasters.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,11 @@ public static CommanderMasters getInstance() {
private CommanderMasters() {
super("Commander Masters", "CMM", ExpansionSet.buildDate(2023, 8, 4), SetType.SUPPLEMENTAL);
this.blockName = "Commander Masters";
this.hasBasicLands = true;
this.hasBoosters = false; //temporary

// possible boosters: set, draft, collector (simplified to use set booster with any cards)
// https://mtg.fandom.com/wiki/Commander_Masters
// https://magic.wizards.com/en/news/feature/collecting-commander-masters
this.enableSetBooster(Integer.MAX_VALUE);

cards.add(new SetCardInfo("Abrade", 203, Rarity.COMMON, mage.cards.a.Abrade.class));
cards.add(new SetCardInfo("Abstruse Archaic", 712, Rarity.RARE, mage.cards.a.AbstruseArchaic.class, NON_FULL_USE_VARIOUS));
Expand Down Expand Up @@ -84,9 +87,9 @@ private CommanderMasters() {
cards.add(new SetCardInfo("Balefire Dragon", 697, Rarity.MYTHIC, mage.cards.b.BalefireDragon.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Bane of Bala Ged", 802, Rarity.UNCOMMON, mage.cards.b.BaneOfBalaGed.class));
cards.add(new SetCardInfo("Bastion of Remembrance", 138, Rarity.UNCOMMON, mage.cards.b.BastionOfRemembrance.class));
cards.add(new SetCardInfo("Battle Screech", 17, Rarity.COMMON, mage.cards.b.BattleScreech.class));
cards.add(new SetCardInfo("Battle at the Helvault", 719, Rarity.RARE, mage.cards.b.BattleAtTheHelvault.class));
cards.add(new SetCardInfo("Battle for Bretagard", 916, Rarity.RARE, mage.cards.b.BattleForBretagard.class));
cards.add(new SetCardInfo("Battle Screech", 17, Rarity.COMMON, mage.cards.b.BattleScreech.class));
cards.add(new SetCardInfo("Beanstalk Giant", 275, Rarity.UNCOMMON, mage.cards.b.BeanstalkGiant.class));
cards.add(new SetCardInfo("Binding the Old Gods", 917, Rarity.UNCOMMON, mage.cards.b.BindingTheOldGods.class));
cards.add(new SetCardInfo("Blade Sliver", 871, Rarity.UNCOMMON, mage.cards.b.BladeSliver.class));
Expand Down Expand Up @@ -834,7 +837,7 @@ private CommanderMasters() {
cards.add(new SetCardInfo("Smothering Tithe", 693, Rarity.MYTHIC, mage.cards.s.SmotheringTithe.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Snakeskin Veil", 323, Rarity.COMMON, mage.cards.s.SnakeskinVeil.class));
cards.add(new SetCardInfo("Sol Ring", 410, Rarity.UNCOMMON, mage.cards.s.SolRing.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sol Ring", 703, Rarity.UNCOMMON, mage.cards.s.SolRing.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sol Ring", 703, Rarity.UNCOMMON, mage.cards.s.SolRing.class, FULL_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Solemn Simulacrum", 973, Rarity.RARE, mage.cards.s.SolemnSimulacrum.class));
cards.add(new SetCardInfo("Song of the Dryads", 324, Rarity.RARE, mage.cards.s.SongOfTheDryads.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Song of the Dryads", 572, Rarity.RARE, mage.cards.s.SongOfTheDryads.class, NON_FULL_USE_VARIOUS));
Expand Down Expand Up @@ -925,8 +928,8 @@ private CommanderMasters() {
cards.add(new SetCardInfo("Temple of Malady", 1043, Rarity.RARE, mage.cards.t.TempleOfMalady.class));
cards.add(new SetCardInfo("Temple of Plenty", 1044, Rarity.RARE, mage.cards.t.TempleOfPlenty.class));
cards.add(new SetCardInfo("Temple of Silence", 1045, Rarity.RARE, mage.cards.t.TempleOfSilence.class));
cards.add(new SetCardInfo("Temple of Triumph", 1047, Rarity.RARE, mage.cards.t.TempleOfTriumph.class));
cards.add(new SetCardInfo("Temple of the False God", 1046, Rarity.UNCOMMON, mage.cards.t.TempleOfTheFalseGod.class));
cards.add(new SetCardInfo("Temple of Triumph", 1047, Rarity.RARE, mage.cards.t.TempleOfTriumph.class));
cards.add(new SetCardInfo("Tempt with Vengeance", 263, Rarity.RARE, mage.cards.t.TemptWithVengeance.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Tempt with Vengeance", 551, Rarity.RARE, mage.cards.t.TemptWithVengeance.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Temur Battle Rage", 264, Rarity.COMMON, mage.cards.t.TemurBattleRage.class));
Expand Down
4 changes: 2 additions & 2 deletions Mage.Sets/src/mage/sets/Unfinity.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ public static Unfinity getInstance() {
}

private Unfinity() {
super("Unfinity", "UNF", ExpansionSet.buildDate(2022, 4, 1), SetType.SUPPLEMENTAL);
super("Unfinity", "UNF", ExpansionSet.buildDate(2022, 4, 1), SetType.JOKE_SET);
this.hasBasicLands = true;
this.hasBoosters = false; // not likely to be able to drafts at any point
this.hasBoosters = false; // un-set, low implemented cards

cards.add(new SetCardInfo("\"Name Sticker\" Goblin", "107m", Rarity.COMMON, mage.cards.n.NameStickerGoblin.class));
cards.add(new SetCardInfo("Atomwheel Acrobats", 130, Rarity.COMMON, mage.cards.a.AtomwheelAcrobats.class));
Expand Down
1 change: 1 addition & 0 deletions Mage.Sets/src/mage/sets/Unglued.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public static Unglued getInstance() {

private Unglued() {
super("Unglued", "UGL", ExpansionSet.buildDate(1998, 8, 11), SetType.JOKE_SET);
this.hasBoosters = false; // un-set, low implemented cards

cards.add(new SetCardInfo("Burning Cinder Fury of Crimson Chaos Fire", 40, Rarity.RARE, mage.cards.b.BurningCinderFuryOfCrimsonChaosFire.class));
cards.add(new SetCardInfo("Checks and Balances", 16, Rarity.UNCOMMON, mage.cards.c.ChecksAndBalances.class));
Expand Down
1 change: 1 addition & 0 deletions Mage.Sets/src/mage/sets/Unhinged.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public static Unhinged getInstance() {

private Unhinged() {
super("Unhinged", "UNH", ExpansionSet.buildDate(2004, 11, 20), SetType.JOKE_SET);
this.hasBoosters = false; // un-set, low implemented cards

cards.add(new SetCardInfo("\"Ach! Hans, Run!\"", 116, Rarity.RARE, mage.cards.a.AchHansRun.class));
cards.add(new SetCardInfo("B-I-N-G-O", 92, Rarity.RARE, mage.cards.b.BINGO.class));
Expand Down
1 change: 1 addition & 0 deletions Mage.Sets/src/mage/sets/Unstable.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public static Unstable getInstance() {

private Unstable() {
super("Unstable", "UST", ExpansionSet.buildDate(2017, 12, 8), SetType.JOKE_SET);
this.hasBoosters = false; // un-set, low implemented cards

cards.add(new SetCardInfo("Amateur Auteur", "3a", Rarity.COMMON, mage.cards.a.AmateurAuteur.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Amateur Auteur", "3b", Rarity.COMMON, mage.cards.a.AmateurAuteur.class, NON_FULL_USE_VARIOUS));
Expand Down
42 changes: 42 additions & 0 deletions Mage/src/main/java/mage/cards/ExpansionSet.java
Original file line number Diff line number Diff line change
Expand Up @@ -758,6 +758,48 @@ public void enableDraftBooster(int maxCardNumberInBooster, int land, int common,
this.ratioBoosterMythic = 8; // 12.5% chance of a mythic rare
}

/**
* Old default booster configuration (after 2020 - ZNR and before 2024 - MKM)
*/
public void enableSetBooster(int maxCardNumberInBooster) {
// https://draftsim.com/draft-booster-vs-set-booster-mtg/
this.hasBoosters = true;
this.maxCardNumberInBooster = maxCardNumberInBooster;

this.hasBasicLands = true;
this.numBoosterLands = 0;
this.numBoosterCommon = 0;
this.numBoosterUncommon = 0;
this.numBoosterRare = 0;

// Set boosters contain 12 cards — fewer cards than a Draft booster — but the distribution is much more complex:
// 1 art card (5% chance of having a gold signature)
this.numBoosterCommon += 1;
// 1 basic land (15% chance of being foil)
this.numBoosterLands += 1;
// 6 commons/uncommons (different combinations possible, the most common is 4 commons and 2 uncommons)
this.numBoosterCommon += 4;
this.numBoosterUncommon += 2;
// 1 unique common/uncommon
this.numBoosterCommon += 1;
// 2 “wild cards” (any rarity from common to mythic)
this.numBoosterUncommon += 1;
this.numBoosterRare += 1;
// 1 rare (13.5% chance of being a mythic)
this.numBoosterRare += 1;
this.ratioBoosterMythic = 8;
// 1 foil card
// - ignore
// 1 marketing card/token (25% chance of being a card from The List)
// - ignore

// total 12:
// 1 land
// 6 common
// 3 uncommon
// 2 rare
}

/**
* New default booster configuration (after 2024 - MKM)
*/
Expand Down

0 comments on commit 9d8f87b

Please sign in to comment.