mirror of
https://github.com/magefree/mage.git
synced 2025-12-22 19:41:59 -08:00
deck: added boosters for Commander Masters (CMM) (related to #13160):
This commit is contained in:
parent
832fcbea7e
commit
9d8f87b139
6 changed files with 55 additions and 7 deletions
|
|
@ -15,8 +15,11 @@ public final class CommanderMasters extends ExpansionSet {
|
||||||
private CommanderMasters() {
|
private CommanderMasters() {
|
||||||
super("Commander Masters", "CMM", ExpansionSet.buildDate(2023, 8, 4), SetType.SUPPLEMENTAL);
|
super("Commander Masters", "CMM", ExpansionSet.buildDate(2023, 8, 4), SetType.SUPPLEMENTAL);
|
||||||
this.blockName = "Commander Masters";
|
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("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));
|
cards.add(new SetCardInfo("Abstruse Archaic", 712, Rarity.RARE, mage.cards.a.AbstruseArchaic.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
@ -84,9 +87,9 @@ public final class CommanderMasters extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Balefire Dragon", 697, Rarity.MYTHIC, mage.cards.b.BalefireDragon.class, NON_FULL_USE_VARIOUS));
|
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("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("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 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 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("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("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));
|
cards.add(new SetCardInfo("Blade Sliver", 871, Rarity.UNCOMMON, mage.cards.b.BladeSliver.class));
|
||||||
|
|
@ -834,7 +837,7 @@ public final class CommanderMasters extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Smothering Tithe", 693, Rarity.MYTHIC, mage.cards.s.SmotheringTithe.class, NON_FULL_USE_VARIOUS));
|
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("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", 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("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", 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));
|
cards.add(new SetCardInfo("Song of the Dryads", 572, Rarity.RARE, mage.cards.s.SongOfTheDryads.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
@ -925,8 +928,8 @@ public final class CommanderMasters extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Temple of Malady", 1043, Rarity.RARE, mage.cards.t.TempleOfMalady.class));
|
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 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 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 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", 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("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));
|
cards.add(new SetCardInfo("Temur Battle Rage", 264, Rarity.COMMON, mage.cards.t.TemurBattleRage.class));
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,9 @@ public final class Unfinity extends ExpansionSet {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Unfinity() {
|
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.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("\"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));
|
cards.add(new SetCardInfo("Atomwheel Acrobats", 130, Rarity.COMMON, mage.cards.a.AtomwheelAcrobats.class));
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ public final class Unglued extends ExpansionSet {
|
||||||
|
|
||||||
private Unglued() {
|
private Unglued() {
|
||||||
super("Unglued", "UGL", ExpansionSet.buildDate(1998, 8, 11), SetType.JOKE_SET);
|
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("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));
|
cards.add(new SetCardInfo("Checks and Balances", 16, Rarity.UNCOMMON, mage.cards.c.ChecksAndBalances.class));
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ public final class Unhinged extends ExpansionSet {
|
||||||
|
|
||||||
private Unhinged() {
|
private Unhinged() {
|
||||||
super("Unhinged", "UNH", ExpansionSet.buildDate(2004, 11, 20), SetType.JOKE_SET);
|
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("\"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));
|
cards.add(new SetCardInfo("B-I-N-G-O", 92, Rarity.RARE, mage.cards.b.BINGO.class));
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ public final class Unstable extends ExpansionSet {
|
||||||
|
|
||||||
private Unstable() {
|
private Unstable() {
|
||||||
super("Unstable", "UST", ExpansionSet.buildDate(2017, 12, 8), SetType.JOKE_SET);
|
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", "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));
|
cards.add(new SetCardInfo("Amateur Auteur", "3b", Rarity.COMMON, mage.cards.a.AmateurAuteur.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
|
||||||
|
|
@ -758,6 +758,48 @@ public abstract class ExpansionSet implements Serializable {
|
||||||
this.ratioBoosterMythic = 8; // 12.5% chance of a mythic rare
|
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)
|
* New default booster configuration (after 2024 - MKM)
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue