Merge pull request 'master' (#43) from External/mage:master into master
All checks were successful
/ build_release (push) Successful in 14m39s

Reviewed-on: #43
This commit is contained in:
Failure 2025-10-06 17:31:32 -07:00
commit 31839c4eca
120 changed files with 4327 additions and 1367 deletions

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-root</artifactId> <artifactId>mage-root</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-client</artifactId> <artifactId>mage-client</artifactId>
@ -133,7 +133,7 @@
<dependency> <dependency>
<groupId>org.apache.xmlgraphics</groupId> <groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-transcoder</artifactId> <artifactId>batik-transcoder</artifactId>
<version>1.17</version> <version>1.19</version>
</dependency> </dependency>
<!-- svg support END --> <!-- svg support END -->

View file

@ -3523,7 +3523,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
dialog.txtImageFolderPath.setText(path); dialog.txtImageFolderPath.setText(path);
updateCache(KEY_CARD_IMAGES_PATH, path); updateCache(KEY_CARD_IMAGES_PATH, path);
} }
load(prefs, dialog.cbSaveToZipFiles, KEY_CARD_IMAGES_SAVE_TO_ZIP, "true"); load(prefs, dialog.cbSaveToZipFiles, KEY_CARD_IMAGES_SAVE_TO_ZIP, "true", "false");
dialog.cbPreferredImageLanguage.setSelectedItem(MageFrame.getPreferences().get(KEY_CARD_IMAGES_PREF_LANGUAGE, CardLanguage.ENGLISH.getCode())); dialog.cbPreferredImageLanguage.setSelectedItem(MageFrame.getPreferences().get(KEY_CARD_IMAGES_PREF_LANGUAGE, CardLanguage.ENGLISH.getCode()));
// rendering settings // rendering settings
@ -3713,7 +3713,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
} }
public static boolean isSaveImagesToZip() { public static boolean isSaveImagesToZip() {
return PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_SAVE_TO_ZIP, "true").equals("true"); return PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_SAVE_TO_ZIP, "false").equals("true");
} }
private static void load(Preferences prefs, JCheckBox checkBox, String propName, String yesValue) { private static void load(Preferences prefs, JCheckBox checkBox, String propName, String yesValue) {

View file

@ -113,7 +113,8 @@ public class GathererSets implements Iterable<DownloadJob> {
"OTC", "OTP", "BIG", "MH3", "M3C", "ACR", "BLB", "BLC", "DSK", "DSC", "OTC", "OTP", "BIG", "MH3", "M3C", "ACR", "BLB", "BLC", "DSK", "DSC",
"MB2", "FDN", "INR", "J25", "DRC", "DFT", "TDC", "TDM", "FCA", "FIC", "MB2", "FDN", "INR", "J25", "DRC", "DFT", "TDC", "TDM", "FCA", "FIC",
"FIN", "SIS", "SIR", "SLD", "AKR", "MD1", "ANB", "LTC", "BRR", "HA1", "FIN", "SIS", "SIR", "SLD", "AKR", "MD1", "ANB", "LTC", "BRR", "HA1",
"HA2", "HA3", "HA4", "HA5", "ZNC", "EOE", "EOC", "SPE", "TLA", "EOS" "HA2", "HA3", "HA4", "HA5", "ZNC", "EOE", "EOC", "SPE", "TLA", "EOS",
"MAR", "SPM"
// "HHO", "ANA" -- do not exist on gatherer // "HHO", "ANA" -- do not exist on gatherer
}; };

View file

@ -535,7 +535,7 @@ public class ScryfallImageSupportCards {
add("SCD"); // Starter Commander Decks add("SCD"); // Starter Commander Decks
add("PW23"); // Wizards Play Network 2023 add("PW23"); // Wizards Play Network 2023
add("P23"); // Judge Gift Cards 2023 add("P23"); // Judge Gift Cards 2023
add("SLC"); // Secret Lair 30th Anniversary Countdown Kit add("SLC"); // Secret Lair Countdown
add("DMR"); // Dominaria Remastered add("DMR"); // Dominaria Remastered
add("ONE"); // Phyrexia: All Will Be One add("ONE"); // Phyrexia: All Will Be One
add("ONC"); // Phyrexia: All Will Be One Commander add("ONC"); // Phyrexia: All Will Be One Commander
@ -612,8 +612,10 @@ public class ScryfallImageSupportCards {
add("EOS"); // Edge of Eternities: Stellar Sights add("EOS"); // Edge of Eternities: Stellar Sights
add("SPM"); // Marvel's Spider-Man add("SPM"); // Marvel's Spider-Man
add("SPE"); // Marvel's Spider-Man Eternal add("SPE"); // Marvel's Spider-Man Eternal
add("MAR"); // Marvel Universe
add("TLA"); // Avatar: The Last Airbender add("TLA"); // Avatar: The Last Airbender
add("TLE"); // Avatar: The Last Airbender Eternal add("TLE"); // Avatar: The Last Airbender Eternal
add("ECL"); // Lorwyn Eclipsed
// Custom sets using Scryfall images - must provide a direct link for each card in directDownloadLinks // Custom sets using Scryfall images - must provide a direct link for each card in directDownloadLinks
add("CALC"); // Custom Alchemized versions of existing cards add("CALC"); // Custom Alchemized versions of existing cards

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-root</artifactId> <artifactId>mage-root</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-common</artifactId> <artifactId>mage-common</artifactId>

View file

@ -17,8 +17,8 @@ public class MageVersion implements Serializable, Comparable<MageVersion> {
// * launcher gives priority to 1.4.48 instead 1.4.48-any-text, so don't use empty release info // * launcher gives priority to 1.4.48 instead 1.4.48-any-text, so don't use empty release info
public static final int MAGE_VERSION_MAJOR = 1; public static final int MAGE_VERSION_MAJOR = 1;
public static final int MAGE_VERSION_MINOR = 4; public static final int MAGE_VERSION_MINOR = 4;
public static final int MAGE_VERSION_RELEASE = 57; public static final int MAGE_VERSION_RELEASE = 58;
public static final String MAGE_VERSION_RELEASE_INFO = "V2"; // V1, V1a, V1b for releases; V1-beta3, V1-beta4 for betas public static final String MAGE_VERSION_RELEASE_INFO = "V1"; // V1, V1a, V1b for releases; V1-beta3, V1-beta4 for betas
// strict mode // strict mode
// Each update requires a strict version // Each update requires a strict version

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-plugins</artifactId> <artifactId>mage-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-counter-plugin</artifactId> <artifactId>mage-counter-plugin</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-root</artifactId> <artifactId>mage-root</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-plugins</artifactId> <artifactId>mage-plugins</artifactId>

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-root</artifactId> <artifactId>mage-root</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-reports</artifactId> <artifactId>mage-reports</artifactId>

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-root</artifactId> <artifactId>mage-root</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-server-console</artifactId> <artifactId>mage-server-console</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-deck-constructed</artifactId> <artifactId>mage-deck-constructed</artifactId>

View file

@ -27,6 +27,8 @@ public abstract class AbstractCommander extends Constructed {
private static List<CommanderValidator> validators = Arrays.asList( private static List<CommanderValidator> validators = Arrays.asList(
PartnerValidator.instance, PartnerValidator.instance,
PartnerSurvivorsValidator.instance,
PartnerFatherAndSonValidator.instance,
FriendsForeverValidator.instance, FriendsForeverValidator.instance,
PartnerWithValidator.instance, PartnerWithValidator.instance,
ChooseABackgroundValidator.instance, ChooseABackgroundValidator.instance,

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-deck-limited</artifactId> <artifactId>mage-deck-limited</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-brawlduel</artifactId> <artifactId>mage-game-brawlduel</artifactId>

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-brawlfreeforall</artifactId> <artifactId>mage-game-brawlfreeforall</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-canadianhighlanderduel</artifactId> <artifactId>mage-game-canadianhighlanderduel</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-commanderduel</artifactId> <artifactId>mage-game-commanderduel</artifactId>

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-commanderfreeforall</artifactId> <artifactId>mage-game-commanderfreeforall</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-custompillaroftheparunsduel</artifactId> <artifactId>mage-game-custompillaroftheparunsduel</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-freeforall</artifactId> <artifactId>mage-game-freeforall</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-freeformcommanderduel</artifactId> <artifactId>mage-game-freeformcommanderduel</artifactId>

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-freeformcommanderfreeforall</artifactId> <artifactId>mage-game-freeformcommanderfreeforall</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-freeformunlimitedcommander</artifactId> <artifactId>mage-game-freeformunlimitedcommander</artifactId>
@ -23,7 +23,7 @@
<dependency> <dependency>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-game-freeformcommanderfreeforall</artifactId> <artifactId>mage-game-freeformcommanderfreeforall</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
</dependencies> </dependencies>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-momirduel</artifactId> <artifactId>mage-game-momirduel</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-momirfreeforall</artifactId> <artifactId>mage-game-momirfreeforall</artifactId>

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-oathbreakerduel</artifactId> <artifactId>mage-game-oathbreakerduel</artifactId>
@ -22,7 +22,7 @@
<dependency> <dependency>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-game-oathbreakerfreeforall</artifactId> <artifactId>mage-game-oathbreakerfreeforall</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
</dependencies> </dependencies>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-oathbreakerfreeforall</artifactId> <artifactId>mage-game-oathbreakerfreeforall</artifactId>

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-pennydreadfulcommanderfreeforall</artifactId> <artifactId>mage-game-pennydreadfulcommanderfreeforall</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-tinyleadersduel</artifactId> <artifactId>mage-game-tinyleadersduel</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-game-twoplayerduel</artifactId> <artifactId>mage-game-twoplayerduel</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-player-ai-draftbot</artifactId> <artifactId>mage-player-ai-draftbot</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-player-ai-ma</artifactId> <artifactId>mage-player-ai-ma</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-player-ai</artifactId> <artifactId>mage-player-ai</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-player-ai-mcts</artifactId> <artifactId>mage-player-ai-mcts</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-player-human</artifactId> <artifactId>mage-player-human</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-tournament-boosterdraft</artifactId> <artifactId>mage-tournament-boosterdraft</artifactId>

View file

@ -15,411 +15,455 @@ public class PauperCube extends DraftCube {
public PauperCube() { public PauperCube() {
super("The Pauper Cube", "", 2025, 5, 7); super("The Pauper Cube", "", 2025, 5, 7);
cubeCards.add(new CardIdentity("Academy Journeymage", "")); cubeCards.add(new CardIdentity("Abrade", ""));
cubeCards.add(new CardIdentity("Act of Treason", "")); cubeCards.add(new CardIdentity("Abraded Bluffs", ""));
cubeCards.add(new CardIdentity("Adventuring Gear", "")); cubeCards.add(new CardIdentity("Abundant Harvest", ""));
cubeCards.add(new CardIdentity("Aerie Bowmasters", "")); cubeCards.add(new CardIdentity("Accursed Marauder", ""));
cubeCards.add(new CardIdentity("Aerie Ouphes", "")); cubeCards.add(new CardIdentity("Aerie Auxiliary", ""));
cubeCards.add(new CardIdentity("Aether Adept", "")); cubeCards.add(new CardIdentity("Aether Chaser", ""));
cubeCards.add(new CardIdentity("Aether Poisoner", ""));
cubeCards.add(new CardIdentity("Aethersnipe", "")); cubeCards.add(new CardIdentity("Aethersnipe", ""));
cubeCards.add(new CardIdentity("Agony Warp", "")); cubeCards.add(new CardIdentity("Ainok Bond-Kin", ""));
cubeCards.add(new CardIdentity("Ambush Viper", "")); cubeCards.add(new CardIdentity("Alabaster Host Intercessor", ""));
cubeCards.add(new CardIdentity("Angelic Purge", "")); cubeCards.add(new CardIdentity("Ambitious Assault", ""));
cubeCards.add(new CardIdentity("Arachnus Web", "")); cubeCards.add(new CardIdentity("Ancestral Blade", ""));
cubeCards.add(new CardIdentity("Arc Lightning", "")); cubeCards.add(new CardIdentity("Annoyed Altisaur", ""));
cubeCards.add(new CardIdentity("Armillary Sphere", "")); cubeCards.add(new CardIdentity("Arbor Elf", ""));
cubeCards.add(new CardIdentity("Arrest", "")); cubeCards.add(new CardIdentity("Archaeomancer", ""));
cubeCards.add(new CardIdentity("Ash Barrens", "")); cubeCards.add(new CardIdentity("Ardent Elementalist", ""));
cubeCards.add(new CardIdentity("Ardenvale Tactician", ""));
cubeCards.add(new CardIdentity("Armadillo Cloak", ""));
cubeCards.add(new CardIdentity("Arms of Hadar", ""));
cubeCards.add(new CardIdentity("Ashes to Ashes", "")); cubeCards.add(new CardIdentity("Ashes to Ashes", ""));
cubeCards.add(new CardIdentity("Assault Zeppelid", "")); cubeCards.add(new CardIdentity("Azorius Chancery", ""));
cubeCards.add(new CardIdentity("Attended Knight", "")); cubeCards.add(new CardIdentity("Bannerhide Krushok", ""));
cubeCards.add(new CardIdentity("Auger Spree", "")); cubeCards.add(new CardIdentity("Barbed Batterfist", ""));
cubeCards.add(new CardIdentity("Augur of Bolas", "")); cubeCards.add(new CardIdentity("Basilica Screecher", ""));
cubeCards.add(new CardIdentity("Aven Riftwatcher", "")); cubeCards.add(new CardIdentity("Basilisk Gate", ""));
cubeCards.add(new CardIdentity("Aven Surveyor", "")); cubeCards.add(new CardIdentity("Basking Broodscale", ""));
cubeCards.add(new CardIdentity("Azorius Guildgate", ""));
cubeCards.add(new CardIdentity("Baloth Gorger", ""));
cubeCards.add(new CardIdentity("Barbed Lightning", ""));
cubeCards.add(new CardIdentity("Basking Rootwalla", ""));
cubeCards.add(new CardIdentity("Battle Screech", "")); cubeCards.add(new CardIdentity("Battle Screech", ""));
cubeCards.add(new CardIdentity("Beetleback Chief", "")); cubeCards.add(new CardIdentity("Beetleback Chief", ""));
cubeCards.add(new CardIdentity("Beetleform Mage", "")); cubeCards.add(new CardIdentity("Behold the Multiverse", ""));
cubeCards.add(new CardIdentity("Beneath the Sands", ""));
cubeCards.add(new CardIdentity("Blastoderm", "")); cubeCards.add(new CardIdentity("Blastoderm", ""));
cubeCards.add(new CardIdentity("Blazing Torch", "")); cubeCards.add(new CardIdentity("Blessed Hippogriff", ""));
cubeCards.add(new CardIdentity("Blightning", "")); cubeCards.add(new CardIdentity("Blightning", ""));
cubeCards.add(new CardIdentity("Blinding Beam", "")); cubeCards.add(new CardIdentity("Blood Fountain", ""));
cubeCards.add(new CardIdentity("Blink of an Eye", "")); cubeCards.add(new CardIdentity("Bloodwater Entity", ""));
cubeCards.add(new CardIdentity("Bloodfell Caves", "")); cubeCards.add(new CardIdentity("Bloom Hulk", ""));
cubeCards.add(new CardIdentity("Blossoming Sands", "")); cubeCards.add(new CardIdentity("Body Dropper", ""));
cubeCards.add(new CardIdentity("Bonded Construct", "")); cubeCards.add(new CardIdentity("Bogardan Dragonheart", ""));
cubeCards.add(new CardIdentity("Bonds of Faith", "")); cubeCards.add(new CardIdentity("Bonder's Ornament", ""));
cubeCards.add(new CardIdentity("Bone Picker", ""));
cubeCards.add(new CardIdentity("Bonesplitter", "")); cubeCards.add(new CardIdentity("Bonesplitter", ""));
cubeCards.add(new CardIdentity("Boros Guildgate", "")); cubeCards.add(new CardIdentity("Boros Elite", ""));
cubeCards.add(new CardIdentity("Boros Garrison", ""));
cubeCards.add(new CardIdentity("Borrowed Grace", "")); cubeCards.add(new CardIdentity("Borrowed Grace", ""));
cubeCards.add(new CardIdentity("Botanical Plaza", ""));
cubeCards.add(new CardIdentity("Bountiful Landscape", ""));
cubeCards.add(new CardIdentity("Brainstorm", ""));
cubeCards.add(new CardIdentity("Bramble Wurm", ""));
cubeCards.add(new CardIdentity("Branching Bolt", "")); cubeCards.add(new CardIdentity("Branching Bolt", ""));
cubeCards.add(new CardIdentity("Brazen Wolves", "")); cubeCards.add(new CardIdentity("Bristling Backwoods", ""));
cubeCards.add(new CardIdentity("Bubble Snare", ""));
cubeCards.add(new CardIdentity("Burning-Tree Emissary", "")); cubeCards.add(new CardIdentity("Burning-Tree Emissary", ""));
cubeCards.add(new CardIdentity("Burst Lightning", "")); cubeCards.add(new CardIdentity("Burst Lightning", ""));
cubeCards.add(new CardIdentity("Butcher Ghoul", "")); cubeCards.add(new CardIdentity("Bushwhack", ""));
cubeCards.add(new CardIdentity("Cage of Hands", "")); cubeCards.add(new CardIdentity("Candy Grapple", ""));
cubeCards.add(new CardIdentity("Calcite Snapper", "")); cubeCards.add(new CardIdentity("Candy Trail", ""));
cubeCards.add(new CardIdentity("Call of the Conclave", ""));
cubeCards.add(new CardIdentity("Call the Cavalry", ""));
cubeCards.add(new CardIdentity("Capsize", "")); cubeCards.add(new CardIdentity("Capsize", ""));
//cubeCards.add(new CardIdentity("Carnivorous Death-Parrot", "")); cubeCards.add(new CardIdentity("Captured by Lagacs", ""));
cubeCards.add(new CardIdentity("Cartouche of Strength", "")); cubeCards.add(new CardIdentity("Carnophage", ""));
cubeCards.add(new CardIdentity("Carrier Thrall", ""));
cubeCards.add(new CardIdentity("Carrion Feeder", ""));
cubeCards.add(new CardIdentity("Cartouche of Solidarity", ""));
cubeCards.add(new CardIdentity("Cast Down", ""));
cubeCards.add(new CardIdentity("Cathar Commando", ""));
cubeCards.add(new CardIdentity("Cavern Harpy", "")); cubeCards.add(new CardIdentity("Cavern Harpy", ""));
cubeCards.add(new CardIdentity("Centaur Healer", ""));
cubeCards.add(new CardIdentity("Chain Lightning", "")); cubeCards.add(new CardIdentity("Chain Lightning", ""));
cubeCards.add(new CardIdentity("Chainer's Edict", "")); cubeCards.add(new CardIdentity("Chitin Gravestalker", ""));
//cubeCards.add(new CardIdentity("Chivalrous Chevalier", "")); cubeCards.add(new CardIdentity("Cindering Cutthroat", ""));
cubeCards.add(new CardIdentity("Cinder Barrens", "")); cubeCards.add(new CardIdentity("Clawing Torment", ""));
cubeCards.add(new CardIdentity("Citanul Woodreaders", "")); cubeCards.add(new CardIdentity("Clockwork Percussionist", ""));
cubeCards.add(new CardIdentity("Claustrophobia", "")); cubeCards.add(new CardIdentity("Cloudkin Seer", ""));
cubeCards.add(new CardIdentity("Clay Statue", ""));
cubeCards.add(new CardIdentity("Cloaked Siren", ""));
cubeCards.add(new CardIdentity("Clutch of Currents", ""));
cubeCards.add(new CardIdentity("Coalition Honor Guard", "")); cubeCards.add(new CardIdentity("Coalition Honor Guard", ""));
//cubeCards.add(new CardIdentity("Cogwork Librarian", "")); cubeCards.add(new CardIdentity("Coiling Oracle", ""));
cubeCards.add(new CardIdentity("Colossal Might", "")); cubeCards.add(new CardIdentity("Colossal Dreadmask", ""));
//cubeCards.add(new CardIdentity("Common Iguana", "")); cubeCards.add(new CardIdentity("Combat Professor", ""));
cubeCards.add(new CardIdentity("Compulsive Research", "")); cubeCards.add(new CardIdentity("Compulsive Research", ""));
cubeCards.add(new CardIdentity("Compulsory Rest", "")); cubeCards.add(new CardIdentity("Conclave Naturalists", ""));
cubeCards.add(new CardIdentity("Consume Strength", "")); cubeCards.add(new CardIdentity("Condescend", ""));
cubeCards.add(new CardIdentity("Corrupted Zendikon", "")); cubeCards.add(new CardIdentity("Conduit Goblin", ""));
cubeCards.add(new CardIdentity("Conduit Pylons", ""));
cubeCards.add(new CardIdentity("Consider", ""));
cubeCards.add(new CardIdentity("Contagious Vorrac", ""));
cubeCards.add(new CardIdentity("Contaminated Landscape", ""));
cubeCards.add(new CardIdentity("Counterspell", "")); cubeCards.add(new CardIdentity("Counterspell", ""));
cubeCards.add(new CardIdentity("Court Hussar", "")); cubeCards.add(new CardIdentity("Cruel Witness", ""));
cubeCards.add(new CardIdentity("Crippling Fatigue", ""));
cubeCards.add(new CardIdentity("Crypt Rats", "")); cubeCards.add(new CardIdentity("Crypt Rats", ""));
cubeCards.add(new CardIdentity("Crystallization", ""));
cubeCards.add(new CardIdentity("Cunning Strike", ""));
cubeCards.add(new CardIdentity("Curse of Chains", ""));
cubeCards.add(new CardIdentity("Custodi Squire", "")); cubeCards.add(new CardIdentity("Custodi Squire", ""));
cubeCards.add(new CardIdentity("Daring Skyjek", "")); cubeCards.add(new CardIdentity("Dark-Dweller Oracle", ""));
cubeCards.add(new CardIdentity("Dauntless Cathar", "")); cubeCards.add(new CardIdentity("Dauntless Unity", ""));
cubeCards.add(new CardIdentity("Dead Reveler", "")); cubeCards.add(new CardIdentity("Dauthi Horror", ""));
cubeCards.add(new CardIdentity("Dead Weight", "")); cubeCards.add(new CardIdentity("Dauthi Slayer", ""));
cubeCards.add(new CardIdentity("Deadeye Tormentor", ""));
cubeCards.add(new CardIdentity("Death Denied", "")); cubeCards.add(new CardIdentity("Death Denied", ""));
cubeCards.add(new CardIdentity("Deathbloom Thallid", "")); cubeCards.add(new CardIdentity("Deceptive Landscape", ""));
cubeCards.add(new CardIdentity("Deep Analysis", "")); cubeCards.add(new CardIdentity("Deep Analysis", ""));
cubeCards.add(new CardIdentity("Deprive", "")); cubeCards.add(new CardIdentity("Deftblade Elite", ""));
cubeCards.add(new CardIdentity("Depths of Desire", "")); cubeCards.add(new CardIdentity("Deranged Assistant", ""));
cubeCards.add(new CardIdentity("Deputy of Acquittals", "")); cubeCards.add(new CardIdentity("Desecrator Hag", ""));
cubeCards.add(new CardIdentity("Desert", "")); cubeCards.add(new CardIdentity("Desert", ""));
cubeCards.add(new CardIdentity("Devour Flesh", "")); cubeCards.add(new CardIdentity("Dimir Aqueduct", ""));
cubeCards.add(new CardIdentity("Diabolic Edict", "")); cubeCards.add(new CardIdentity("Dimir Guildmage", ""));
cubeCards.add(new CardIdentity("Dimir Guildgate", ""));
cubeCards.add(new CardIdentity("Dinrova Horror", "")); cubeCards.add(new CardIdentity("Dinrova Horror", ""));
cubeCards.add(new CardIdentity("Disfigure", "")); cubeCards.add(new CardIdentity("Disfigure", ""));
cubeCards.add(new CardIdentity("Dismal Backwater", "")); cubeCards.add(new CardIdentity("Dismal Backwater", ""));
cubeCards.add(new CardIdentity("Disowned Ancestor", "")); cubeCards.add(new CardIdentity("Displace", ""));
cubeCards.add(new CardIdentity("Dog Umbra", ""));
cubeCards.add(new CardIdentity("Dog Walker", ""));
cubeCards.add(new CardIdentity("Doom Blade", "")); cubeCards.add(new CardIdentity("Doom Blade", ""));
cubeCards.add(new CardIdentity("Doomed Traveler", "")); cubeCards.add(new CardIdentity("Doomed Traveler", ""));
cubeCards.add(new CardIdentity("Dragon Fodder", "")); cubeCards.add(new CardIdentity("Dread Return", ""));
cubeCards.add(new CardIdentity("Dusk Legion Zealot", "")); cubeCards.add(new CardIdentity("Dreg Mangler", ""));
cubeCards.add(new CardIdentity("Dynacharge", "")); cubeCards.add(new CardIdentity("Eagles of the North", ""));
cubeCards.add(new CardIdentity("Eager Construct", "")); cubeCards.add(new CardIdentity("Ecstatic Awakener", ""));
cubeCards.add(new CardIdentity("Eldrazi Devastator", "")); cubeCards.add(new CardIdentity("Eldrazi Repurposer", ""));
cubeCards.add(new CardIdentity("Eldrazi Skyspawner", "")); cubeCards.add(new CardIdentity("Eldrazi Skyspawner", ""));
cubeCards.add(new CardIdentity("Elephant Ambush", ""));
cubeCards.add(new CardIdentity("Elephant Guide", ""));
cubeCards.add(new CardIdentity("Elite Vanguard", "")); cubeCards.add(new CardIdentity("Elite Vanguard", ""));
cubeCards.add(new CardIdentity("Emperor Crocodile", "")); cubeCards.add(new CardIdentity("Elvish Mystic", ""));
cubeCards.add(new CardIdentity("Epic Confrontation", "")); cubeCards.add(new CardIdentity("Ephemerate", ""));
cubeCards.add(new CardIdentity("Errant Ephemeron", "")); cubeCards.add(new CardIdentity("Eroded Canyon", ""));
cubeCards.add(new CardIdentity("Evincar's Justice", "")); cubeCards.add(new CardIdentity("Escape Tunnel", ""));
cubeCards.add(new CardIdentity("Evolving Wilds", "")); cubeCards.add(new CardIdentity("Evolution Witness", ""));
//cubeCards.add(new CardIdentity("Extremely Slow Zombie", "")); cubeCards.add(new CardIdentity("Exclude", ""));
cubeCards.add(new CardIdentity("Experiment One", ""));
cubeCards.add(new CardIdentity("Faceless Butcher", "")); cubeCards.add(new CardIdentity("Faceless Butcher", ""));
cubeCards.add(new CardIdentity("Faerie Guidemother", ""));
cubeCards.add(new CardIdentity("Faerie Seer", ""));
cubeCards.add(new CardIdentity("Faith's Fetters", "")); cubeCards.add(new CardIdentity("Faith's Fetters", ""));
cubeCards.add(new CardIdentity("Faithful Watchdog", ""));
cubeCards.add(new CardIdentity("Falkenrath Noble", "")); cubeCards.add(new CardIdentity("Falkenrath Noble", ""));
cubeCards.add(new CardIdentity("Fanatical Firebrand", "")); cubeCards.add(new CardIdentity("Fanatical Firebrand", ""));
cubeCards.add(new CardIdentity("Feeling of Dread", "")); cubeCards.add(new CardIdentity("Farseek", ""));
cubeCards.add(new CardIdentity("Fervent Cathar", "")); cubeCards.add(new CardIdentity("Feed the Swarm", ""));
cubeCards.add(new CardIdentity("Feign Death", ""));
cubeCards.add(new CardIdentity("Fertile Ground", ""));
cubeCards.add(new CardIdentity("Filigree Familiar", ""));
cubeCards.add(new CardIdentity("Fireball", ""));
cubeCards.add(new CardIdentity("Fireblade Artist", ""));
cubeCards.add(new CardIdentity("Fireblast", ""));
cubeCards.add(new CardIdentity("Firebolt", "")); cubeCards.add(new CardIdentity("Firebolt", ""));
cubeCards.add(new CardIdentity("Firebrand Archer", ""));
cubeCards.add(new CardIdentity("Fireslinger", "")); cubeCards.add(new CardIdentity("Fireslinger", ""));
cubeCards.add(new CardIdentity("First-Sphere Gargantua", ""));
cubeCards.add(new CardIdentity("Flame Slash", ""));
cubeCards.add(new CardIdentity("Flayer Husk", "")); cubeCards.add(new CardIdentity("Flayer Husk", ""));
cubeCards.add(new CardIdentity("Flurry of Horns", "")); cubeCards.add(new CardIdentity("Forbidden Friendship", ""));
cubeCards.add(new CardIdentity("Forked Bolt", "")); cubeCards.add(new CardIdentity("Foreboding Landscape", ""));
cubeCards.add(new CardIdentity("Forsaken Sanctuary", ""));
cubeCards.add(new CardIdentity("Fortify", ""));
cubeCards.add(new CardIdentity("Foul Orchard", ""));
cubeCards.add(new CardIdentity("Frenzied Goblin", "")); cubeCards.add(new CardIdentity("Frenzied Goblin", ""));
cubeCards.add(new CardIdentity("Frilled Deathspitter", "")); cubeCards.add(new CardIdentity("Frost Trickster", ""));
cubeCards.add(new CardIdentity("Frilled Oculus", "")); cubeCards.add(new CardIdentity("Galvanic Discharge", ""));
cubeCards.add(new CardIdentity("Frostburn Weird", "")); cubeCards.add(new CardIdentity("Generous Ent", ""));
cubeCards.add(new CardIdentity("Fungal Infection", "")); cubeCards.add(new CardIdentity("Geyser Drake", ""));
cubeCards.add(new CardIdentity("GO TO JAIL", "")); cubeCards.add(new CardIdentity("Ghostly Flicker", ""));
cubeCards.add(new CardIdentity("Gathan Raiders", ""));
cubeCards.add(new CardIdentity("Gather the Townsfolk", ""));
cubeCards.add(new CardIdentity("Ghirapur Gearcrafter", ""));
cubeCards.add(new CardIdentity("Giant Growth", "")); cubeCards.add(new CardIdentity("Giant Growth", ""));
cubeCards.add(new CardIdentity("Gideon's Lawkeeper", "")); cubeCards.add(new CardIdentity("Gideon's Lawkeeper", ""));
cubeCards.add(new CardIdentity("Glint-Sleeve Artisan", "")); cubeCards.add(new CardIdentity("Gift of Fangs", ""));
cubeCards.add(new CardIdentity("Gnawing Zombie", "")); cubeCards.add(new CardIdentity("Gift of Orzhova", ""));
cubeCards.add(new CardIdentity("Goblin Freerunner", "")); cubeCards.add(new CardIdentity("Gingerbrute", ""));
cubeCards.add(new CardIdentity("Goblin Heelcutter", "")); cubeCards.add(new CardIdentity("Gitaxian Probe", ""));
cubeCards.add(new CardIdentity("Goblin Trailblazer", "")); cubeCards.add(new CardIdentity("Gixian Infiltrator", ""));
cubeCards.add(new CardIdentity("Glimmerlight", ""));
cubeCards.add(new CardIdentity("Gnarlid Colony", ""));
cubeCards.add(new CardIdentity("Gnawing Crescendo", ""));
cubeCards.add(new CardIdentity("Go for the Throat", ""));
cubeCards.add(new CardIdentity("Goblin Anarchomancer", ""));
cubeCards.add(new CardIdentity("Goblin Bushwhacker", ""));
cubeCards.add(new CardIdentity("Goblin Electromancer", ""));
cubeCards.add(new CardIdentity("Goblin Motivator", ""));
cubeCards.add(new CardIdentity("Goblin Surprise", ""));
cubeCards.add(new CardIdentity("Gods Willing", "")); cubeCards.add(new CardIdentity("Gods Willing", ""));
cubeCards.add(new CardIdentity("Goldmeadow Harrier", "")); cubeCards.add(new CardIdentity("Goldmeadow Harrier", ""));
cubeCards.add(new CardIdentity("Golgari Guildgate", "")); cubeCards.add(new CardIdentity("Golgari Rot Farm", ""));
cubeCards.add(new CardIdentity("Grapple with the Past", ""));
cubeCards.add(new CardIdentity("Grasping Scoundrel", ""));
cubeCards.add(new CardIdentity("Gravedigger", "")); cubeCards.add(new CardIdentity("Gravedigger", ""));
cubeCards.add(new CardIdentity("Gray Merchant of Asphodel", "")); cubeCards.add(new CardIdentity("Gray Merchant of Asphodel", ""));
cubeCards.add(new CardIdentity("Grim Contest", "")); cubeCards.add(new CardIdentity("Greater Tanuki", ""));
cubeCards.add(new CardIdentity("Grisly Salvage", "")); cubeCards.add(new CardIdentity("Greatsword of Tyr", ""));
cubeCards.add(new CardIdentity("Grixis Slavedriver", "")); cubeCards.add(new CardIdentity("Grim Bauble", ""));
cubeCards.add(new CardIdentity("Gruul Guildgate", "")); cubeCards.add(new CardIdentity("Grim Initiate", ""));
cubeCards.add(new CardIdentity("Gryff Vanguard", "")); cubeCards.add(new CardIdentity("Growth Spiral", ""));
cubeCards.add(new CardIdentity("Guardian Automaton", "")); cubeCards.add(new CardIdentity("Gruul Turf", ""));
cubeCards.add(new CardIdentity("Guardian Idol", "")); cubeCards.add(new CardIdentity("Guardian Idol", ""));
cubeCards.add(new CardIdentity("Guardian of the Guildpact", "")); cubeCards.add(new CardIdentity("Guardian of the Guildpact", ""));
cubeCards.add(new CardIdentity("Guildsworn Prowler", ""));
cubeCards.add(new CardIdentity("Gurmag Angler", "")); cubeCards.add(new CardIdentity("Gurmag Angler", ""));
cubeCards.add(new CardIdentity("Halimar Wavewatch", "")); cubeCards.add(new CardIdentity("Guttersnipe", ""));
cubeCards.add(new CardIdentity("Harrow", "")); cubeCards.add(new CardIdentity("Hard Evidence", ""));
cubeCards.add(new CardIdentity("Harsh Sustenance", "")); cubeCards.add(new CardIdentity("Harried Spearguard", ""));
cubeCards.add(new CardIdentity("Highland Lake", "")); cubeCards.add(new CardIdentity("Haunted Fengraf", ""));
cubeCards.add(new CardIdentity("Haunted Mire", ""));
cubeCards.add(new CardIdentity("Hazard of the Dunes", ""));
cubeCards.add(new CardIdentity("Heliod's Pilgrim", ""));
cubeCards.add(new CardIdentity("Hickory Woodlot", ""));
cubeCards.add(new CardIdentity("Hidden Grotto", ""));
cubeCards.add(new CardIdentity("Hissing Iguanar", "")); cubeCards.add(new CardIdentity("Hissing Iguanar", ""));
cubeCards.add(new CardIdentity("Hobblefiend", ""));
cubeCards.add(new CardIdentity("Holy Cow", ""));
cubeCards.add(new CardIdentity("Hooting Mandrills", "")); cubeCards.add(new CardIdentity("Hooting Mandrills", ""));
cubeCards.add(new CardIdentity("Hordeling Outburst", "")); cubeCards.add(new CardIdentity("Hordeling Outburst", ""));
cubeCards.add(new CardIdentity("Imperiosaur", "")); cubeCards.add(new CardIdentity("Horrific Assault", ""));
cubeCards.add(new CardIdentity("Inner-Flame Acolyte", "")); cubeCards.add(new CardIdentity("Imperial Oath", ""));
cubeCards.add(new CardIdentity("Insolent Neonate", "")); cubeCards.add(new CardIdentity("Improvised Club", ""));
cubeCards.add(new CardIdentity("Impulse", ""));
cubeCards.add(new CardIdentity("Incinerate", ""));
cubeCards.add(new CardIdentity("Infestation Sage", ""));
cubeCards.add(new CardIdentity("Infuse with Vitality", ""));
cubeCards.add(new CardIdentity("Inspiring Overseer", ""));
cubeCards.add(new CardIdentity("Inspiring Paladin", ""));
cubeCards.add(new CardIdentity("Into the Roil", "")); cubeCards.add(new CardIdentity("Into the Roil", ""));
cubeCards.add(new CardIdentity("Isolation Zone", "")); cubeCards.add(new CardIdentity("Iron Apprentice", ""));
cubeCards.add(new CardIdentity("Ivy Elemental", "")); cubeCards.add(new CardIdentity("Izzet Boilerworks", ""));
cubeCards.add(new CardIdentity("Izzet Chronarch", "")); cubeCards.add(new CardIdentity("Izzet Charm", ""));
cubeCards.add(new CardIdentity("Izzet Guildgate", ""));
cubeCards.add(new CardIdentity("Jackal Pup", "")); cubeCards.add(new CardIdentity("Jackal Pup", ""));
cubeCards.add(new CardIdentity("Jilt", "")); cubeCards.add(new CardIdentity("Jade Avenger", ""));
cubeCards.add(new CardIdentity("Jade Guardian", ""));
cubeCards.add(new CardIdentity("Jagged Barrens", ""));
cubeCards.add(new CardIdentity("Jewel Thief", ""));
cubeCards.add(new CardIdentity("Jhessian Thief", ""));
cubeCards.add(new CardIdentity("Journey to Nowhere", "")); cubeCards.add(new CardIdentity("Journey to Nowhere", ""));
cubeCards.add(new CardIdentity("Jungle Hollow", "")); cubeCards.add(new CardIdentity("Judge's Familiar", ""));
cubeCards.add(new CardIdentity("Jungleborn Pioneer", "")); cubeCards.add(new CardIdentity("Juggernaut", ""));
cubeCards.add(new CardIdentity("Keldon Marauders", ""));
cubeCards.add(new CardIdentity("Keldon Overseer", ""));
cubeCards.add(new CardIdentity("Keldon Raider", ""));
cubeCards.add(new CardIdentity("Kingpin's Pet", "")); cubeCards.add(new CardIdentity("Kingpin's Pet", ""));
cubeCards.add(new CardIdentity("Kitesail Corsair", ""));
cubeCards.add(new CardIdentity("Kor Skyfisher", "")); cubeCards.add(new CardIdentity("Kor Skyfisher", ""));
cubeCards.add(new CardIdentity("Kozilek's Channeler", ""));
cubeCards.add(new CardIdentity("Krenko's Command", ""));
cubeCards.add(new CardIdentity("Krosan Tusker", "")); cubeCards.add(new CardIdentity("Krosan Tusker", ""));
cubeCards.add(new CardIdentity("Lash Out", "")); cubeCards.add(new CardIdentity("Lead the Stampede", ""));
cubeCards.add(new CardIdentity("Last Gasp", "")); cubeCards.add(new CardIdentity("Legion Vanguard", ""));
cubeCards.add(new CardIdentity("Leave in the Dust", ""));
cubeCards.add(new CardIdentity("Leonin Bola", "")); cubeCards.add(new CardIdentity("Leonin Bola", ""));
cubeCards.add(new CardIdentity("Lifecraft Cavalry", ""));
cubeCards.add(new CardIdentity("Lightning Bolt", "")); cubeCards.add(new CardIdentity("Lightning Bolt", ""));
cubeCards.add(new CardIdentity("Liliana's Specter", "")); cubeCards.add(new CardIdentity("Lightning Strike", ""));
cubeCards.add(new CardIdentity("Loyal Pegasus", "")); cubeCards.add(new CardIdentity("Llanowar Elves", ""));
//cubeCards.add(new CardIdentity("Lurking Automaton", "")); cubeCards.add(new CardIdentity("Llanowar Visionary", ""));
cubeCards.add(new CardIdentity("Magma Jet", "")); cubeCards.add(new CardIdentity("Loathsome Curator", ""));
cubeCards.add(new CardIdentity("Makeshift Mauler", "")); cubeCards.add(new CardIdentity("Longstalk Brawl", ""));
cubeCards.add(new CardIdentity("Looter il-Kor", ""));
cubeCards.add(new CardIdentity("Lorehold Campus", ""));
cubeCards.add(new CardIdentity("Lorien Revealed", ""));
cubeCards.add(new CardIdentity("Lose Focus", ""));
cubeCards.add(new CardIdentity("Lyev Skyknight", ""));
cubeCards.add(new CardIdentity("Malevolent Rumble", ""));
cubeCards.add(new CardIdentity("Man-o'-War", "")); cubeCards.add(new CardIdentity("Man-o'-War", ""));
cubeCards.add(new CardIdentity("Mana Leak", "")); cubeCards.add(new CardIdentity("Mana Leak", ""));
cubeCards.add(new CardIdentity("Mardu Hordechief", "")); cubeCards.add(new CardIdentity("Mana Tithe", ""));
cubeCards.add(new CardIdentity("Mandibular Kite", ""));
cubeCards.add(new CardIdentity("Mardu Skullhunter", "")); cubeCards.add(new CardIdentity("Mardu Skullhunter", ""));
cubeCards.add(new CardIdentity("Martyr of Dusk", "")); cubeCards.add(new CardIdentity("Massive Might", ""));
cubeCards.add(new CardIdentity("Maul Splicer", "")); cubeCards.add(new CardIdentity("Mayhem Patrol", ""));
cubeCards.add(new CardIdentity("Maze of Ith", "")); cubeCards.add(new CardIdentity("Merfolk Looter", ""));
cubeCards.add(new CardIdentity("Meandering River", "")); cubeCards.add(new CardIdentity("Militia Bugler", ""));
cubeCards.add(new CardIdentity("Mental Note", ""));
cubeCards.add(new CardIdentity("Midnight Scavengers", ""));
cubeCards.add(new CardIdentity("Mind Stone", "")); cubeCards.add(new CardIdentity("Mind Stone", ""));
cubeCards.add(new CardIdentity("Minotaur Skullcleaver", "")); cubeCards.add(new CardIdentity("Miner's Guidewing", ""));
cubeCards.add(new CardIdentity("Mire Triton", ""));
cubeCards.add(new CardIdentity("Mirrorshell Crab", ""));
cubeCards.add(new CardIdentity("Miscalculation", "")); cubeCards.add(new CardIdentity("Miscalculation", ""));
cubeCards.add(new CardIdentity("Mishra's Factory", ""));
cubeCards.add(new CardIdentity("Mist Raven", "")); cubeCards.add(new CardIdentity("Mist Raven", ""));
cubeCards.add(new CardIdentity("Mistral Charger", "")); cubeCards.add(new CardIdentity("Mistral Singer", ""));
cubeCards.add(new CardIdentity("Mobile Garrison", "")); cubeCards.add(new CardIdentity("Mocking Sprite", ""));
cubeCards.add(new CardIdentity("Mogg Fanatic", ""));
cubeCards.add(new CardIdentity("Mogg Flunkies", ""));
cubeCards.add(new CardIdentity("Mogg War Marshal", "")); cubeCards.add(new CardIdentity("Mogg War Marshal", ""));
cubeCards.add(new CardIdentity("Moldervine Cloak", "")); cubeCards.add(new CardIdentity("Molten Gatekeeper", ""));
cubeCards.add(new CardIdentity("Momentary Blink", "")); cubeCards.add(new CardIdentity("Momentary Blink", ""));
cubeCards.add(new CardIdentity("Morgue Theft", "")); cubeCards.add(new CardIdentity("Monastery Swiftspear", ""));
cubeCards.add(new CardIdentity("Monstrous Emergence", ""));
cubeCards.add(new CardIdentity("Moon-Circuit Hacker", ""));
cubeCards.add(new CardIdentity("Mother Bear", ""));
cubeCards.add(new CardIdentity("Mulldrifter", "")); cubeCards.add(new CardIdentity("Mulldrifter", ""));
cubeCards.add(new CardIdentity("Nameless Inversion", "")); cubeCards.add(new CardIdentity("Murmuring Mystic", ""));
cubeCards.add(new CardIdentity("Narcolepsy", "")); cubeCards.add(new CardIdentity("Mutagenic Growth", ""));
cubeCards.add(new CardIdentity("Nessian Asp", "")); cubeCards.add(new CardIdentity("Mystic Sanctuary", ""));
cubeCards.add(new CardIdentity("Nest Robber", "")); cubeCards.add(new CardIdentity("Nature's Lore", ""));
cubeCards.add(new CardIdentity("Nezumi Cutthroat", "")); cubeCards.add(new CardIdentity("Nest Invader", ""));
cubeCards.add(new CardIdentity("Nested Shambler", ""));
cubeCards.add(new CardIdentity("Nezumi Linkbreaker", ""));
cubeCards.add(new CardIdentity("Night Market", ""));
cubeCards.add(new CardIdentity("Night's Whisper", "")); cubeCards.add(new CardIdentity("Night's Whisper", ""));
cubeCards.add(new CardIdentity("Nightscape Familiar", ""));
cubeCards.add(new CardIdentity("Ninja of the Deep Hours", "")); cubeCards.add(new CardIdentity("Ninja of the Deep Hours", ""));
cubeCards.add(new CardIdentity("Novice Inspector", ""));
cubeCards.add(new CardIdentity("Nyxborn Hydra", ""));
cubeCards.add(new CardIdentity("Oblivion Ring", "")); cubeCards.add(new CardIdentity("Oblivion Ring", ""));
cubeCards.add(new CardIdentity("Oona's Grace", "")); cubeCards.add(new CardIdentity("Okiba-Gang Shinobi", ""));
//cubeCards.add(new CardIdentity("Ordinary Pony", "")); cubeCards.add(new CardIdentity("Oliphaunt", ""));
cubeCards.add(new CardIdentity("Orzhov Guildgate", "")); cubeCards.add(new CardIdentity("Opt", ""));
cubeCards.add(new CardIdentity("Otherworldly Journey", "")); cubeCards.add(new CardIdentity("Orcish Hellraiser", ""));
cubeCards.add(new CardIdentity("Overgrown Armasaur", "")); cubeCards.add(new CardIdentity("Orzhov Basilica", ""));
cubeCards.add(new CardIdentity("Pacifism", "")); cubeCards.add(new CardIdentity("Owlbear", ""));
cubeCards.add(new CardIdentity("Paladin of the Bloodstained", "")); cubeCards.add(new CardIdentity("Palace Sentinels", ""));
cubeCards.add(new CardIdentity("Peema Outrider", "")); cubeCards.add(new CardIdentity("Pegasus Guardian", ""));
cubeCards.add(new CardIdentity("Penumbra Spider", "")); cubeCards.add(new CardIdentity("Peregrine Drake", ""));
cubeCards.add(new CardIdentity("Perilous Landscape", ""));
cubeCards.add(new CardIdentity("Perilous Myr", "")); cubeCards.add(new CardIdentity("Perilous Myr", ""));
cubeCards.add(new CardIdentity("Pestermite", "")); cubeCards.add(new CardIdentity("Pestermite", ""));
cubeCards.add(new CardIdentity("Pestilence", "")); cubeCards.add(new CardIdentity("Pestilence", ""));
cubeCards.add(new CardIdentity("Petrify", ""));
cubeCards.add(new CardIdentity("Phantom Interference", ""));
cubeCards.add(new CardIdentity("Phantom Nomad", ""));
cubeCards.add(new CardIdentity("Phantom Tiger", ""));
cubeCards.add(new CardIdentity("Phyrexian Rager", "")); cubeCards.add(new CardIdentity("Phyrexian Rager", ""));
cubeCards.add(new CardIdentity("Pillory of the Sleepless", "")); cubeCards.add(new CardIdentity("Pillory of the Sleepless", ""));
cubeCards.add(new CardIdentity("Pit Fight", "")); cubeCards.add(new CardIdentity("Plagued Rusalka", ""));
cubeCards.add(new CardIdentity("Pit Keeper", "")); cubeCards.add(new CardIdentity("Planar Disruption", ""));
cubeCards.add(new CardIdentity("Plated Geopede", "")); cubeCards.add(new CardIdentity("Ponder", ""));
cubeCards.add(new CardIdentity("Porcelain Legionnaire", "")); cubeCards.add(new CardIdentity("Porcelain Legionnaire", ""));
cubeCards.add(new CardIdentity("Pounce", "")); cubeCards.add(new CardIdentity("Preening Champion", ""));
cubeCards.add(new CardIdentity("Predatory Nightstalker", ""));
cubeCards.add(new CardIdentity("Preordain", "")); cubeCards.add(new CardIdentity("Preordain", ""));
cubeCards.add(new CardIdentity("Prey Upon", "")); cubeCards.add(new CardIdentity("Prismari Campus", ""));
cubeCards.add(new CardIdentity("Prismatic Strands", "")); cubeCards.add(new CardIdentity("Prismatic Strands", ""));
cubeCards.add(new CardIdentity("Pristine Talisman", "")); cubeCards.add(new CardIdentity("Pristine Talisman", ""));
cubeCards.add(new CardIdentity("Prophetic Prism", "")); cubeCards.add(new CardIdentity("Prophetic Prism", ""));
cubeCards.add(new CardIdentity("Pulse of Murasa", "")); cubeCards.add(new CardIdentity("Pulse of Murasa", ""));
cubeCards.add(new CardIdentity("Pursue Glory", "")); cubeCards.add(new CardIdentity("Putrid Goblin", ""));
cubeCards.add(new CardIdentity("Putrid Leech", "")); cubeCards.add(new CardIdentity("Putrid Leech", ""));
cubeCards.add(new CardIdentity("Pyrotechnics", "")); cubeCards.add(new CardIdentity("Quandrix Campus", ""));
cubeCards.add(new CardIdentity("Qasali Pridemage", "")); cubeCards.add(new CardIdentity("Quandrix Pledgemage", ""));
cubeCards.add(new CardIdentity("Quick Study", ""));
cubeCards.add(new CardIdentity("Quicksand", ""));
cubeCards.add(new CardIdentity("Racers' Ring", ""));
cubeCards.add(new CardIdentity("Radiant Grove", ""));
cubeCards.add(new CardIdentity("Raffine's Informant", ""));
cubeCards.add(new CardIdentity("Raid Bombardment", ""));
cubeCards.add(new CardIdentity("Raise the Alarm", "")); cubeCards.add(new CardIdentity("Raise the Alarm", ""));
cubeCards.add(new CardIdentity("Rakdos Guildgate", "")); cubeCards.add(new CardIdentity("Rakdos Carnarium", ""));
cubeCards.add(new CardIdentity("Rally at the Hornburg", ""));
cubeCards.add(new CardIdentity("Rally the Peasants", "")); cubeCards.add(new CardIdentity("Rally the Peasants", ""));
cubeCards.add(new CardIdentity("Rampant Growth", "")); cubeCards.add(new CardIdentity("Ram Through", ""));
cubeCards.add(new CardIdentity("Rancor", "")); cubeCards.add(new CardIdentity("Rancor", ""));
cubeCards.add(new CardIdentity("Ranger's Guile", "")); cubeCards.add(new CardIdentity("Ransack the Lab", ""));
cubeCards.add(new CardIdentity("Ray of Command", ""));
cubeCards.add(new CardIdentity("Razorfin Hunter", ""));
cubeCards.add(new CardIdentity("Reckless Charge", "")); cubeCards.add(new CardIdentity("Reckless Charge", ""));
cubeCards.add(new CardIdentity("Recoil", "")); cubeCards.add(new CardIdentity("Reckless Impulse", ""));
//cubeCards.add(new CardIdentity("Regicide", "")); cubeCards.add(new CardIdentity("Red Herring", ""));
cubeCards.add(new CardIdentity("Remove Soul", "")); cubeCards.add(new CardIdentity("Remove Soul", ""));
cubeCards.add(new CardIdentity("Rend Flesh", ""));
cubeCards.add(new CardIdentity("Rendclaw Trow", ""));
cubeCards.add(new CardIdentity("Renegade Freighter", "")); cubeCards.add(new CardIdentity("Renegade Freighter", ""));
cubeCards.add(new CardIdentity("Repeal", ""));
cubeCards.add(new CardIdentity("Retrofitted Transmogrant", ""));
cubeCards.add(new CardIdentity("Rhox Veteran", ""));
cubeCards.add(new CardIdentity("Rift Bolt", "")); cubeCards.add(new CardIdentity("Rift Bolt", ""));
cubeCards.add(new CardIdentity("Rishadan Airship", "")); cubeCards.add(new CardIdentity("Rimrock Knight", ""));
cubeCards.add(new CardIdentity("Rugged Highlands", "")); cubeCards.add(new CardIdentity("Rolling Thunder", ""));
cubeCards.add(new CardIdentity("Runed Servitor", "")); cubeCards.add(new CardIdentity("Safehold Elite", ""));
cubeCards.add(new CardIdentity("Rushing River", ""));
cubeCards.add(new CardIdentity("Ruthless Ripper", ""));
cubeCards.add(new CardIdentity("Sailor of Means", ""));
cubeCards.add(new CardIdentity("Sakura-Tribe Elder", "")); cubeCards.add(new CardIdentity("Sakura-Tribe Elder", ""));
cubeCards.add(new CardIdentity("Sandsteppe Outcast", "")); cubeCards.add(new CardIdentity("Sandsteppe Outcast", ""));
cubeCards.add(new CardIdentity("Sangrite Backlash", "")); cubeCards.add(new CardIdentity("Sarulf's Packmate", ""));
cubeCards.add(new CardIdentity("Saproling Migration", ""));
cubeCards.add(new CardIdentity("Sarkhan's Rage", ""));
cubeCards.add(new CardIdentity("Savage Punch", ""));
cubeCards.add(new CardIdentity("Savannah Lions", "")); cubeCards.add(new CardIdentity("Savannah Lions", ""));
cubeCards.add(new CardIdentity("Scatter the Seeds", "")); cubeCards.add(new CardIdentity("Scholar of Combustion", ""));
cubeCards.add(new CardIdentity("Scion Summoner", "")); cubeCards.add(new CardIdentity("Scorched Rusalka", ""));
cubeCards.add(new CardIdentity("Scion of the Wild", ""));
cubeCards.add(new CardIdentity("Scoured Barrens", "")); cubeCards.add(new CardIdentity("Scoured Barrens", ""));
cubeCards.add(new CardIdentity("Scourge Devil", "")); cubeCards.add(new CardIdentity("Scrapwork Mutt", ""));
cubeCards.add(new CardIdentity("Screeching Skaab", "")); cubeCards.add(new CardIdentity("Scurrilous Sentry", ""));
cubeCards.add(new CardIdentity("Scuzzback Marauders", "")); cubeCards.add(new CardIdentity("Search Party Captain", ""));
cubeCards.add(new CardIdentity("Search for Tomorrow", "")); cubeCards.add(new CardIdentity("Searing Spear", ""));
cubeCards.add(new CardIdentity("Searing Blaze", ""));
cubeCards.add(new CardIdentity("Seeker of Insight", ""));
cubeCards.add(new CardIdentity("Seeker of the Way", "")); cubeCards.add(new CardIdentity("Seeker of the Way", ""));
cubeCards.add(new CardIdentity("Selesnya Guildgate", "")); cubeCards.add(new CardIdentity("Seething Landscape", ""));
//cubeCards.add(new CardIdentity("Selfie Preservation", "")); cubeCards.add(new CardIdentity("Selesnya Sanctuary", ""));
cubeCards.add(new CardIdentity("Separatist Voidmage", ""));
cubeCards.add(new CardIdentity("Seraph of Dawn", ""));
cubeCards.add(new CardIdentity("Sergeant-at-Arms", ""));
cubeCards.add(new CardIdentity("Serrated Arrows", "")); cubeCards.add(new CardIdentity("Serrated Arrows", ""));
cubeCards.add(new CardIdentity("Shaper Parasite", "")); cubeCards.add(new CardIdentity("Serum Visionary", ""));
cubeCards.add(new CardIdentity("Sheer Drop", "")); cubeCards.add(new CardIdentity("Serum Visions", ""));
cubeCards.add(new CardIdentity("Shelter", "")); cubeCards.add(new CardIdentity("Settle Beyond Reality", ""));
cubeCards.add(new CardIdentity("Shimmering Glasskite", "")); cubeCards.add(new CardIdentity("Shardless Outlander", ""));
cubeCards.add(new CardIdentity("Sigil Blessing", "")); cubeCards.add(new CardIdentity("Shattered Landscape", ""));
cubeCards.add(new CardIdentity("Silent Departure", "")); cubeCards.add(new CardIdentity("Sheltering Landscape", ""));
cubeCards.add(new CardIdentity("Simic Guildgate", "")); cubeCards.add(new CardIdentity("Shipwreck Dowser", ""));
cubeCards.add(new CardIdentity("Skirk Marauder", "")); cubeCards.add(new CardIdentity("Silver Drake", ""));
cubeCards.add(new CardIdentity("Skyknight Legionnaire", "")); cubeCards.add(new CardIdentity("Silverback Shaman", ""));
cubeCards.add(new CardIdentity("Slash Panther", "")); cubeCards.add(new CardIdentity("Silverquill Campus", ""));
cubeCards.add(new CardIdentity("Snakeform", "")); cubeCards.add(new CardIdentity("Simic Growth Chamber", ""));
cubeCards.add(new CardIdentity("Skewer the Critics", ""));
cubeCards.add(new CardIdentity("Skybridge Towers", ""));
cubeCards.add(new CardIdentity("Snakeskin Veil", ""));
cubeCards.add(new CardIdentity("Snap", "")); cubeCards.add(new CardIdentity("Snap", ""));
cubeCards.add(new CardIdentity("Snapping Voidcraw", ""));
cubeCards.add(new CardIdentity("Soltari Trooper", ""));
cubeCards.add(new CardIdentity("Soul Manipulation", "")); cubeCards.add(new CardIdentity("Soul Manipulation", ""));
cubeCards.add(new CardIdentity("Soul of the Rapids", "")); cubeCards.add(new CardIdentity("Spelleater Wolverine", ""));
cubeCards.add(new CardIdentity("Soulstinger", "")); cubeCards.add(new CardIdentity("Sprout Swarm", ""));
cubeCards.add(new CardIdentity("Sparring Construct", ""));
cubeCards.add(new CardIdentity("Sphere of the Suns", ""));
cubeCards.add(new CardIdentity("Spike Jester", ""));
//cubeCards.add(new CardIdentity("Squirrel Dealer", ""));
cubeCards.add(new CardIdentity("Staggershock", ""));
cubeCards.add(new CardIdentity("Star Compass", ""));
cubeCards.add(new CardIdentity("Stitched Drake", ""));
cubeCards.add(new CardIdentity("Stone Quarry", ""));
cubeCards.add(new CardIdentity("Storm Fleet Pyromancer", ""));
cubeCards.add(new CardIdentity("Stormfront Pegasus", "")); cubeCards.add(new CardIdentity("Stormfront Pegasus", ""));
cubeCards.add(new CardIdentity("Stormscape Apprentice", ""));
cubeCards.add(new CardIdentity("Strip Mine", ""));
cubeCards.add(new CardIdentity("Striped Riverwinder", "")); cubeCards.add(new CardIdentity("Striped Riverwinder", ""));
cubeCards.add(new CardIdentity("Stronghold Confessor", "")); cubeCards.add(new CardIdentity("Sulfurous Blast", ""));
cubeCards.add(new CardIdentity("Submerged Boneyard", "")); cubeCards.add(new CardIdentity("Sunlance", ""));
cubeCards.add(new CardIdentity("Sultai Scavenger", "")); cubeCards.add(new CardIdentity("Suture Priest", ""));
cubeCards.add(new CardIdentity("Suppression Bonds", "")); cubeCards.add(new CardIdentity("Sword Coast Serpent", ""));
cubeCards.add(new CardIdentity("Swiftwater Cliffs", "")); cubeCards.add(new CardIdentity("Syndic of Tithes", ""));
cubeCards.add(new CardIdentity("Sylvan Might", "")); cubeCards.add(new CardIdentity("Tamiyo's Safekeeping", ""));
cubeCards.add(new CardIdentity("Sylvok Lifestaff", "")); cubeCards.add(new CardIdentity("Tangled Islet", ""));
cubeCards.add(new CardIdentity("Temporal Isolation", "")); cubeCards.add(new CardIdentity("Teetering Peaks", ""));
cubeCards.add(new CardIdentity("Tenement Crasher", "")); cubeCards.add(new CardIdentity("Tempest Angler", ""));
cubeCards.add(new CardIdentity("Terminate", "")); cubeCards.add(new CardIdentity("Tenth District Legionnaire", ""));
cubeCards.add(new CardIdentity("Terramorphic Expanse", ""));
cubeCards.add(new CardIdentity("Thorn of the Black Rose", "")); cubeCards.add(new CardIdentity("Thorn of the Black Rose", ""));
cubeCards.add(new CardIdentity("Thornweald Archer", "")); cubeCards.add(new CardIdentity("Thraben Charm", ""));
cubeCards.add(new CardIdentity("Thornwood Falls", ""));
cubeCards.add(new CardIdentity("Thought Scour", ""));
cubeCards.add(new CardIdentity("Thraben Inspector", "")); cubeCards.add(new CardIdentity("Thraben Inspector", ""));
cubeCards.add(new CardIdentity("Thrill-Kill Assassin", "")); cubeCards.add(new CardIdentity("Thriving Grubs", ""));
cubeCards.add(new CardIdentity("Thundering Giant", "")); cubeCards.add(new CardIdentity("Thriving Skyclaw", ""));
cubeCards.add(new CardIdentity("Thunderous Wrath", ""));
cubeCards.add(new CardIdentity("Timber Gorge", ""));
cubeCards.add(new CardIdentity("Time to Feed", ""));
cubeCards.add(new CardIdentity("Tithe Drinker", "")); cubeCards.add(new CardIdentity("Tithe Drinker", ""));
cubeCards.add(new CardIdentity("Totem-Guide Hartebeest", "")); cubeCards.add(new CardIdentity("Tithing Blade", ""));
cubeCards.add(new CardIdentity("Tocasia's Dig Site", ""));
cubeCards.add(new CardIdentity("Tolarian Terror", ""));
cubeCards.add(new CardIdentity("Topan Freeblade", ""));
cubeCards.add(new CardIdentity("Tortured Existence", ""));
cubeCards.add(new CardIdentity("Tragic Slip", "")); cubeCards.add(new CardIdentity("Tragic Slip", ""));
cubeCards.add(new CardIdentity("Tramway Station", ""));
cubeCards.add(new CardIdentity("Tranquil Cove", "")); cubeCards.add(new CardIdentity("Tranquil Cove", ""));
cubeCards.add(new CardIdentity("Tranquil Expanse", "")); cubeCards.add(new CardIdentity("Tranquil Landscape", ""));
cubeCards.add(new CardIdentity("Travel Preparations", "")); cubeCards.add(new CardIdentity("Trapped in the Screen", ""));
cubeCards.add(new CardIdentity("Treasure Cruise", "")); cubeCards.add(new CardIdentity("Treasure Cruise", ""));
cubeCards.add(new CardIdentity("Treetop Snarespinner", ""));
cubeCards.add(new CardIdentity("Triplicate Spirits", "")); cubeCards.add(new CardIdentity("Triplicate Spirits", ""));
cubeCards.add(new CardIdentity("Typhoid Rats", "")); cubeCards.add(new CardIdentity("Troll of Khazad-dum", ""));
cubeCards.add(new CardIdentity("Trumpeting Herd", ""));
cubeCards.add(new CardIdentity("Tuskeri Firewalker", ""));
cubeCards.add(new CardIdentity("Tuskguard Captain", ""));
cubeCards.add(new CardIdentity("Twisted Landscape", ""));
cubeCards.add(new CardIdentity("Ulamog's Crusher", "")); cubeCards.add(new CardIdentity("Ulamog's Crusher", ""));
cubeCards.add(new CardIdentity("Ulvenwald Captive", "")); cubeCards.add(new CardIdentity("Unable to Scream", ""));
cubeCards.add(new CardIdentity("Unbounded Potential", ""));
cubeCards.add(new CardIdentity("Underworld Rage-Hound", ""));
cubeCards.add(new CardIdentity("Undying Malice", ""));
cubeCards.add(new CardIdentity("Unearth", "")); cubeCards.add(new CardIdentity("Unearth", ""));
cubeCards.add(new CardIdentity("Unmake", "")); cubeCards.add(new CardIdentity("Unwilling Ingredient", ""));
cubeCards.add(new CardIdentity("Vampire Interloper", "")); cubeCards.add(new CardIdentity("Urban Daggertooth", ""));
cubeCards.add(new CardIdentity("Utopia Sprawl", ""));
cubeCards.add(new CardIdentity("Vampire Lacerator", ""));
cubeCards.add(new CardIdentity("Vampire Sovereign", ""));
cubeCards.add(new CardIdentity("Vault Skirge", "")); cubeCards.add(new CardIdentity("Vault Skirge", ""));
cubeCards.add(new CardIdentity("Viashino Firstblade", "")); cubeCards.add(new CardIdentity("Vendetta", ""));
cubeCards.add(new CardIdentity("Village Rites", ""));
cubeCards.add(new CardIdentity("Vines of Vastwood", "")); cubeCards.add(new CardIdentity("Vines of Vastwood", ""));
cubeCards.add(new CardIdentity("Voldaren Duelist", "")); cubeCards.add(new CardIdentity("Vizier of Tumbling Sands", ""));
cubeCards.add(new CardIdentity("Volatile Wanderglyph", ""));
cubeCards.add(new CardIdentity("Voracious Varmint", ""));
cubeCards.add(new CardIdentity("Voracious Vermin", ""));
cubeCards.add(new CardIdentity("Vulshok Morningstar", "")); cubeCards.add(new CardIdentity("Vulshok Morningstar", ""));
cubeCards.add(new CardIdentity("Vulshok Sorcerer", ""));
cubeCards.add(new CardIdentity("Vulturous Aven", ""));
cubeCards.add(new CardIdentity("Wakedancer", ""));
cubeCards.add(new CardIdentity("Walker of the Grove", ""));
cubeCards.add(new CardIdentity("Wall of Roots", "")); cubeCards.add(new CardIdentity("Wall of Roots", ""));
cubeCards.add(new CardIdentity("War Flare", ""));
cubeCards.add(new CardIdentity("Warden of Evos Isle", "")); cubeCards.add(new CardIdentity("Warden of Evos Isle", ""));
cubeCards.add(new CardIdentity("Warped Landscape", "")); cubeCards.add(new CardIdentity("Wary Thespian", ""));
cubeCards.add(new CardIdentity("Warren Pilferers", "")); cubeCards.add(new CardIdentity("Waterfront District", ""));
cubeCards.add(new CardIdentity("Wasteland Scorpion", ""));
cubeCards.add(new CardIdentity("Waterknot", ""));
cubeCards.add(new CardIdentity("Wayfarer's Bauble", "")); cubeCards.add(new CardIdentity("Wayfarer's Bauble", ""));
cubeCards.add(new CardIdentity("Weakstone's Subjugation", ""));
cubeCards.add(new CardIdentity("Werebear", "")); cubeCards.add(new CardIdentity("Werebear", ""));
cubeCards.add(new CardIdentity("Whitemane Lion", "")); cubeCards.add(new CardIdentity("Wild Growth", ""));
cubeCards.add(new CardIdentity("Wild Instincts", "")); cubeCards.add(new CardIdentity("Wildfire Elemental", ""));
cubeCards.add(new CardIdentity("Wild Mongrel", "")); cubeCards.add(new CardIdentity("Winding Way", ""));
cubeCards.add(new CardIdentity("Wild Nacatl", "")); cubeCards.add(new CardIdentity("Winter Eladrin", ""));
cubeCards.add(new CardIdentity("Wildsize", "")); cubeCards.add(new CardIdentity("Witch's Cottage", ""));
cubeCards.add(new CardIdentity("Will-Forged Golem", "")); cubeCards.add(new CardIdentity("Wither and Bloom", ""));
cubeCards.add(new CardIdentity("Wind-Scarred Crag", "")); cubeCards.add(new CardIdentity("Witherbloom Campus", ""));
cubeCards.add(new CardIdentity("Winged Coatl", "")); cubeCards.add(new CardIdentity("Witness Protection", ""));
cubeCards.add(new CardIdentity("Wojek Halberdiers", "")); cubeCards.add(new CardIdentity("Witty Roastmaster", ""));
cubeCards.add(new CardIdentity("Woodland Stream", "")); cubeCards.add(new CardIdentity("Wrangle", ""));
cubeCards.add(new CardIdentity("Wrecking Ball", "")); cubeCards.add(new CardIdentity("Wrenn's Resolve", ""));
cubeCards.add(new CardIdentity("Wretched Gryff", "")); cubeCards.add(new CardIdentity("Writhing Chrysalis", ""));
cubeCards.add(new CardIdentity("Yavimaya Elder", "")); cubeCards.add(new CardIdentity("Yavimaya Elder", ""));
cubeCards.add(new CardIdentity("Yavimaya Sapherd", "")); cubeCards.add(new CardIdentity("Yavimaya Steelcrusher", ""));
cubeCards.add(new CardIdentity("Yotian Soldier", "")); cubeCards.add(new CardIdentity("You Hear Something on Watch", ""));
cubeCards.add(new CardIdentity("You Meet in a Tavern", ""));
cubeCards.add(new CardIdentity("Young Blue Dragon", ""));
cubeCards.add(new CardIdentity("Zephyr Winder", ""));
} }
} }

View file

@ -13,8 +13,15 @@ import mage.game.draft.DraftCube;
public class VintageCube extends DraftCube { public class VintageCube extends DraftCube {
public VintageCube() { public VintageCube() {
super("MTGO Vintage Cube", "", 2025, 4, 23); super("MTGO Vintage Cube", "", 2025, 10, 1);
//cubeCards.add(new CardIdentity("Ademi of the Silkchutes", ""));
//cubeCards.add(new CardIdentity("Cren, Undercity Dreamer", ""));
//cubeCards.add(new CardIdentity("Goben, Gene-Splice Savant", ""));
//cubeCards.add(new CardIdentity("Makdee and Itla, Skysnarers", ""));
//cubeCards.add(new CardIdentity("Nia, Skysail Storyteller", ""));
//cubeCards.add(new CardIdentity("Spectral Restitching", ""));
//cubeCards.add(new CardIdentity("Walk-In Closet // Forgotten Cellar", ""));
cubeCards.add(new CardIdentity("Abhorrent Oculus", "")); cubeCards.add(new CardIdentity("Abhorrent Oculus", ""));
cubeCards.add(new CardIdentity("Abrade", "")); cubeCards.add(new CardIdentity("Abrade", ""));
cubeCards.add(new CardIdentity("Adeline, Resplendent Cathar", "")); cubeCards.add(new CardIdentity("Adeline, Resplendent Cathar", ""));
@ -29,15 +36,18 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Arena of Glory", "")); cubeCards.add(new CardIdentity("Arena of Glory", ""));
cubeCards.add(new CardIdentity("Arid Mesa", "")); cubeCards.add(new CardIdentity("Arid Mesa", ""));
cubeCards.add(new CardIdentity("Arwen, Mortal Queen", "")); cubeCards.add(new CardIdentity("Arwen, Mortal Queen", ""));
cubeCards.add(new CardIdentity("Astrologian's Planisphere", ""));
cubeCards.add(new CardIdentity("Atraxa, Grand Unifier", "")); cubeCards.add(new CardIdentity("Atraxa, Grand Unifier", ""));
cubeCards.add(new CardIdentity("Avacyn's Pilgrim", "")); cubeCards.add(new CardIdentity("Avacyn's Pilgrim", ""));
cubeCards.add(new CardIdentity("Badlands", "")); cubeCards.add(new CardIdentity("Badlands", ""));
cubeCards.add(new CardIdentity("Balance", "")); cubeCards.add(new CardIdentity("Balance", ""));
cubeCards.add(new CardIdentity("Baleful Mastery", "")); cubeCards.add(new CardIdentity("Baleful Mastery", ""));
cubeCards.add(new CardIdentity("Baleful Strix", "")); cubeCards.add(new CardIdentity("Baleful Strix", ""));
cubeCards.add(new CardIdentity("Baloth Prime", ""));
cubeCards.add(new CardIdentity("Barrowgoyf", "")); cubeCards.add(new CardIdentity("Barrowgoyf", ""));
cubeCards.add(new CardIdentity("Basalt Monolith", "")); cubeCards.add(new CardIdentity("Basalt Monolith", ""));
cubeCards.add(new CardIdentity("Bayou", "")); cubeCards.add(new CardIdentity("Bayou", ""));
cubeCards.add(new CardIdentity("Berserk", ""));
cubeCards.add(new CardIdentity("Birds of Paradise", "")); cubeCards.add(new CardIdentity("Birds of Paradise", ""));
cubeCards.add(new CardIdentity("Bitter Triumph", "")); cubeCards.add(new CardIdentity("Bitter Triumph", ""));
cubeCards.add(new CardIdentity("Black Lotus", "")); cubeCards.add(new CardIdentity("Black Lotus", ""));
@ -47,15 +57,16 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Blightsteel Colossus", "")); cubeCards.add(new CardIdentity("Blightsteel Colossus", ""));
cubeCards.add(new CardIdentity("Blood Crypt", "")); cubeCards.add(new CardIdentity("Blood Crypt", ""));
cubeCards.add(new CardIdentity("Bloodbraid Challenger", "")); cubeCards.add(new CardIdentity("Bloodbraid Challenger", ""));
cubeCards.add(new CardIdentity("Bloodchief's Thirst", ""));
cubeCards.add(new CardIdentity("Bloodstained Mire", "")); cubeCards.add(new CardIdentity("Bloodstained Mire", ""));
cubeCards.add(new CardIdentity("Bloodtithe Harvester", "")); cubeCards.add(new CardIdentity("Bloodtithe Harvester", ""));
cubeCards.add(new CardIdentity("Blooming Marsh", "")); cubeCards.add(new CardIdentity("Blooming Marsh", ""));
cubeCards.add(new CardIdentity("Bolas's Citadel", "")); cubeCards.add(new CardIdentity("Bolas's Citadel", ""));
cubeCards.add(new CardIdentity("Bone Shards", "")); cubeCards.add(new CardIdentity("Bone Shards", ""));
cubeCards.add(new CardIdentity("Bonecrusher Giant", "")); cubeCards.add(new CardIdentity("Bonecrusher Giant", ""));
cubeCards.add(new CardIdentity("Bonehoard Dracosaur", ""));
cubeCards.add(new CardIdentity("Boseiju, Who Endures", "")); cubeCards.add(new CardIdentity("Boseiju, Who Endures", ""));
cubeCards.add(new CardIdentity("Botanical Sanctum", "")); cubeCards.add(new CardIdentity("Botanical Sanctum", ""));
cubeCards.add(new CardIdentity("Bountiful Landscape", ""));
cubeCards.add(new CardIdentity("Brain Freeze", "")); cubeCards.add(new CardIdentity("Brain Freeze", ""));
cubeCards.add(new CardIdentity("Brainstorm", "")); cubeCards.add(new CardIdentity("Brainstorm", ""));
cubeCards.add(new CardIdentity("Brainsurge", "")); cubeCards.add(new CardIdentity("Brainsurge", ""));
@ -71,6 +82,7 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Carnage Interpreter", "")); cubeCards.add(new CardIdentity("Carnage Interpreter", ""));
cubeCards.add(new CardIdentity("Cathar Commando", "")); cubeCards.add(new CardIdentity("Cathar Commando", ""));
cubeCards.add(new CardIdentity("Caustic Bronco", "")); cubeCards.add(new CardIdentity("Caustic Bronco", ""));
cubeCards.add(new CardIdentity("Cecil, Dark Knight", ""));
cubeCards.add(new CardIdentity("Celestial Colonnade", "")); cubeCards.add(new CardIdentity("Celestial Colonnade", ""));
cubeCards.add(new CardIdentity("Chain Lightning", "")); cubeCards.add(new CardIdentity("Chain Lightning", ""));
cubeCards.add(new CardIdentity("Chain of Smog", "")); cubeCards.add(new CardIdentity("Chain of Smog", ""));
@ -80,25 +92,26 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Chromatic Star", "")); cubeCards.add(new CardIdentity("Chromatic Star", ""));
cubeCards.add(new CardIdentity("Chrome Mox", "")); cubeCards.add(new CardIdentity("Chrome Mox", ""));
cubeCards.add(new CardIdentity("City of Traitors", "")); cubeCards.add(new CardIdentity("City of Traitors", ""));
cubeCards.add(new CardIdentity("Clarion Conqueror", ""));
cubeCards.add(new CardIdentity("Coalition Relic", "")); cubeCards.add(new CardIdentity("Coalition Relic", ""));
cubeCards.add(new CardIdentity("Collective Brutality", "")); cubeCards.add(new CardIdentity("Collective Brutality", ""));
cubeCards.add(new CardIdentity("Commercial District", "")); cubeCards.add(new CardIdentity("Commercial District", ""));
cubeCards.add(new CardIdentity("Concealed Courtyard", "")); cubeCards.add(new CardIdentity("Concealed Courtyard", ""));
cubeCards.add(new CardIdentity("Concealing Curtains", "")); cubeCards.add(new CardIdentity("Concealing Curtains", ""));
cubeCards.add(new CardIdentity("Consider", "")); cubeCards.add(new CardIdentity("Consider", ""));
cubeCards.add(new CardIdentity("Consult the Star Charts", ""));
cubeCards.add(new CardIdentity("Containment Priest", "")); cubeCards.add(new CardIdentity("Containment Priest", ""));
cubeCards.add(new CardIdentity("Copperline Gorge", "")); cubeCards.add(new CardIdentity("Copperline Gorge", ""));
cubeCards.add(new CardIdentity("Cori-Steel Cutter", "")); cubeCards.add(new CardIdentity("Cori-Steel Cutter", ""));
cubeCards.add(new CardIdentity("Corpse Dance", "")); cubeCards.add(new CardIdentity("Corpse Dance", ""));
cubeCards.add(new CardIdentity("Cosmogrand Zenith", ""));
cubeCards.add(new CardIdentity("Council's Judgment", "")); cubeCards.add(new CardIdentity("Council's Judgment", ""));
cubeCards.add(new CardIdentity("Counterspell", "")); cubeCards.add(new CardIdentity("Counterspell", ""));
cubeCards.add(new CardIdentity("Courser of Kruphix", "")); cubeCards.add(new CardIdentity("Courser of Kruphix", ""));
cubeCards.add(new CardIdentity("Coveted Jewel", "")); cubeCards.add(new CardIdentity("Coveted Jewel", ""));
cubeCards.add(new CardIdentity("Crabomination", "")); cubeCards.add(new CardIdentity("Crabomination", ""));
cubeCards.add(new CardIdentity("Craterhoof Behemoth", ""));
cubeCards.add(new CardIdentity("Creeping Tar Pit", "")); cubeCards.add(new CardIdentity("Creeping Tar Pit", ""));
cubeCards.add(new CardIdentity("Crop Rotation", "")); cubeCards.add(new CardIdentity("Crop Rotation", ""));
cubeCards.add(new CardIdentity("Crucible of Worlds", ""));
cubeCards.add(new CardIdentity("Cryptic Command", "")); cubeCards.add(new CardIdentity("Cryptic Command", ""));
cubeCards.add(new CardIdentity("Currency Converter", "")); cubeCards.add(new CardIdentity("Currency Converter", ""));
cubeCards.add(new CardIdentity("Cut Down", "")); cubeCards.add(new CardIdentity("Cut Down", ""));
@ -122,6 +135,8 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Displacer Kitten", "")); cubeCards.add(new CardIdentity("Displacer Kitten", ""));
cubeCards.add(new CardIdentity("Doomsday", "")); cubeCards.add(new CardIdentity("Doomsday", ""));
cubeCards.add(new CardIdentity("Dragon's Rage Channeler", "")); cubeCards.add(new CardIdentity("Dragon's Rage Channeler", ""));
cubeCards.add(new CardIdentity("Dreadhorde Arcanist", ""));
cubeCards.add(new CardIdentity("Duelist of the Mind", ""));
cubeCards.add(new CardIdentity("Duress", "")); cubeCards.add(new CardIdentity("Duress", ""));
cubeCards.add(new CardIdentity("Eagles of the North", "")); cubeCards.add(new CardIdentity("Eagles of the North", ""));
cubeCards.add(new CardIdentity("Echo of Eons", "")); cubeCards.add(new CardIdentity("Echo of Eons", ""));
@ -133,8 +148,8 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Embereth Shieldbreaker", "")); cubeCards.add(new CardIdentity("Embereth Shieldbreaker", ""));
cubeCards.add(new CardIdentity("Emperor of Bones", "")); cubeCards.add(new CardIdentity("Emperor of Bones", ""));
cubeCards.add(new CardIdentity("Emrakul, the Aeons Torn", "")); cubeCards.add(new CardIdentity("Emrakul, the Aeons Torn", ""));
cubeCards.add(new CardIdentity("Emry, Lurker of the Loch", ""));
cubeCards.add(new CardIdentity("Endurance", "")); cubeCards.add(new CardIdentity("Endurance", ""));
cubeCards.add(new CardIdentity("Enduring Curiosity", ""));
cubeCards.add(new CardIdentity("Enduring Innocence", "")); cubeCards.add(new CardIdentity("Enduring Innocence", ""));
cubeCards.add(new CardIdentity("Entomb", "")); cubeCards.add(new CardIdentity("Entomb", ""));
cubeCards.add(new CardIdentity("Ephemerate", "")); cubeCards.add(new CardIdentity("Ephemerate", ""));
@ -159,27 +174,26 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Field of the Dead", "")); cubeCards.add(new CardIdentity("Field of the Dead", ""));
cubeCards.add(new CardIdentity("Fiery Confluence", "")); cubeCards.add(new CardIdentity("Fiery Confluence", ""));
cubeCards.add(new CardIdentity("Figure of Destiny", "")); cubeCards.add(new CardIdentity("Figure of Destiny", ""));
cubeCards.add(new CardIdentity("Fire // Ice", ""));
cubeCards.add(new CardIdentity("Fire Covenant", "")); cubeCards.add(new CardIdentity("Fire Covenant", ""));
cubeCards.add(new CardIdentity("Fireblast", "")); cubeCards.add(new CardIdentity("Fireblast", ""));
cubeCards.add(new CardIdentity("Firebolt", "")); cubeCards.add(new CardIdentity("Firebolt", ""));
cubeCards.add(new CardIdentity("Flame Slash", "")); cubeCards.add(new CardIdentity("Flame Slash", ""));
cubeCards.add(new CardIdentity("Flame of Anor", ""));
cubeCards.add(new CardIdentity("Flash", "")); cubeCards.add(new CardIdentity("Flash", ""));
cubeCards.add(new CardIdentity("Flickerwisp", "")); cubeCards.add(new CardIdentity("Flickerwisp", ""));
cubeCards.add(new CardIdentity("Flooded Strand", "")); cubeCards.add(new CardIdentity("Flooded Strand", ""));
cubeCards.add(new CardIdentity("Floodpits Drowner", ""));
cubeCards.add(new CardIdentity("Force of Negation", "")); cubeCards.add(new CardIdentity("Force of Negation", ""));
cubeCards.add(new CardIdentity("Force of Vigor", ""));
cubeCards.add(new CardIdentity("Force of Will", "")); cubeCards.add(new CardIdentity("Force of Will", ""));
cubeCards.add(new CardIdentity("Forensic Gadgeteer", "")); cubeCards.add(new CardIdentity("Forensic Gadgeteer", ""));
cubeCards.add(new CardIdentity("Forth Eorlingas!", "")); cubeCards.add(new CardIdentity("Forth Eorlingas!", ""));
cubeCards.add(new CardIdentity("Fractured Identity", "")); cubeCards.add(new CardIdentity("Fractured Identity", ""));
cubeCards.add(new CardIdentity("Frantic Search", "")); cubeCards.add(new CardIdentity("Frantic Search", ""));
cubeCards.add(new CardIdentity("Fury", "")); cubeCards.add(new CardIdentity("Fury", ""));
cubeCards.add(new CardIdentity("Fyndhorn Elves", ""));
cubeCards.add(new CardIdentity("Gaea's Cradle", "")); cubeCards.add(new CardIdentity("Gaea's Cradle", ""));
cubeCards.add(new CardIdentity("Galvanic Blast", "")); cubeCards.add(new CardIdentity("Galvanic Blast", ""));
cubeCards.add(new CardIdentity("Galvanic Discharge", "")); cubeCards.add(new CardIdentity("Galvanic Discharge", ""));
cubeCards.add(new CardIdentity("General Ferrous Rokiric", "")); cubeCards.add(new CardIdentity("Gau, Feral Youth", ""));
cubeCards.add(new CardIdentity("Generous Ent", "")); cubeCards.add(new CardIdentity("Generous Ent", ""));
cubeCards.add(new CardIdentity("Generous Plunderer", "")); cubeCards.add(new CardIdentity("Generous Plunderer", ""));
cubeCards.add(new CardIdentity("Get Lost", "")); cubeCards.add(new CardIdentity("Get Lost", ""));
@ -192,9 +206,7 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Goblin Rabblemaster", "")); cubeCards.add(new CardIdentity("Goblin Rabblemaster", ""));
cubeCards.add(new CardIdentity("Godless Shrine", "")); cubeCards.add(new CardIdentity("Godless Shrine", ""));
cubeCards.add(new CardIdentity("Goldspan Dragon", "")); cubeCards.add(new CardIdentity("Goldspan Dragon", ""));
cubeCards.add(new CardIdentity("Golos, Tireless Pilgrim", ""));
cubeCards.add(new CardIdentity("Grave Titan", "")); cubeCards.add(new CardIdentity("Grave Titan", ""));
cubeCards.add(new CardIdentity("Greasewrench Goblin", ""));
cubeCards.add(new CardIdentity("Green Sun's Zenith", "")); cubeCards.add(new CardIdentity("Green Sun's Zenith", ""));
cubeCards.add(new CardIdentity("Grief", "")); cubeCards.add(new CardIdentity("Grief", ""));
cubeCards.add(new CardIdentity("Grim Monolith", "")); cubeCards.add(new CardIdentity("Grim Monolith", ""));
@ -208,14 +220,11 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Haywire Mite", "")); cubeCards.add(new CardIdentity("Haywire Mite", ""));
cubeCards.add(new CardIdentity("Headliner Scarlett", "")); cubeCards.add(new CardIdentity("Headliner Scarlett", ""));
cubeCards.add(new CardIdentity("Hedge Maze", "")); cubeCards.add(new CardIdentity("Hedge Maze", ""));
cubeCards.add(new CardIdentity("Heritage Reclamation", ""));
cubeCards.add(new CardIdentity("Hero of Bladehold", ""));
cubeCards.add(new CardIdentity("Hexdrinker", "")); cubeCards.add(new CardIdentity("Hexdrinker", ""));
cubeCards.add(new CardIdentity("High Tide", ""));
cubeCards.add(new CardIdentity("Horizon Canopy", "")); cubeCards.add(new CardIdentity("Horizon Canopy", ""));
cubeCards.add(new CardIdentity("Huatli, Poet of Unity", ""));
cubeCards.add(new CardIdentity("Hullbreacher", "")); cubeCards.add(new CardIdentity("Hullbreacher", ""));
cubeCards.add(new CardIdentity("Hymn to Tourach", "")); cubeCards.add(new CardIdentity("Hymn to Tourach", ""));
cubeCards.add(new CardIdentity("Icetill Explorer", ""));
cubeCards.add(new CardIdentity("Ignoble Hierarch", "")); cubeCards.add(new CardIdentity("Ignoble Hierarch", ""));
cubeCards.add(new CardIdentity("Imperial Seal", "")); cubeCards.add(new CardIdentity("Imperial Seal", ""));
cubeCards.add(new CardIdentity("Indatha Triome", "")); cubeCards.add(new CardIdentity("Indatha Triome", ""));
@ -223,7 +232,7 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Inquisition of Kozilek", "")); cubeCards.add(new CardIdentity("Inquisition of Kozilek", ""));
cubeCards.add(new CardIdentity("Inspiring Vantage", "")); cubeCards.add(new CardIdentity("Inspiring Vantage", ""));
cubeCards.add(new CardIdentity("Inti, Seneschal of the Sun", "")); cubeCards.add(new CardIdentity("Inti, Seneschal of the Sun", ""));
cubeCards.add(new CardIdentity("Intrepid Adversary", "")); cubeCards.add(new CardIdentity("Invigorate", ""));
cubeCards.add(new CardIdentity("Ivora, Insatiable Heir", "")); cubeCards.add(new CardIdentity("Ivora, Insatiable Heir", ""));
cubeCards.add(new CardIdentity("Jace, Vryn's Prodigy", "")); cubeCards.add(new CardIdentity("Jace, Vryn's Prodigy", ""));
cubeCards.add(new CardIdentity("Jace, Wielder of Mysteries", "")); cubeCards.add(new CardIdentity("Jace, Wielder of Mysteries", ""));
@ -240,14 +249,15 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Kellan, Planar Trailblazer", "")); cubeCards.add(new CardIdentity("Kellan, Planar Trailblazer", ""));
cubeCards.add(new CardIdentity("Ketria Triome", "")); cubeCards.add(new CardIdentity("Ketria Triome", ""));
cubeCards.add(new CardIdentity("Kitesail Freebooter", "")); cubeCards.add(new CardIdentity("Kitesail Freebooter", ""));
cubeCards.add(new CardIdentity("Kitsa, Otterball Elite", ""));
cubeCards.add(new CardIdentity("Knight of the Reliquary", "")); cubeCards.add(new CardIdentity("Knight of the Reliquary", ""));
cubeCards.add(new CardIdentity("Kolaghan's Command", "")); cubeCards.add(new CardIdentity("Kolaghan's Command", ""));
cubeCards.add(new CardIdentity("Laelia, the Blade Reforged", "")); cubeCards.add(new CardIdentity("Laelia, the Blade Reforged", ""));
cubeCards.add(new CardIdentity("Lavaspur Boots", "")); cubeCards.add(new CardIdentity("Lavaspur Boots", ""));
cubeCards.add(new CardIdentity("Ledger Shredder", "")); cubeCards.add(new CardIdentity("Ledger Shredder", ""));
cubeCards.add(new CardIdentity("Legion Extruder", "")); cubeCards.add(new CardIdentity("Legion Extruder", ""));
cubeCards.add(new CardIdentity("Legolas's Quick Reflexes", ""));
cubeCards.add(new CardIdentity("Leovold, Emissary of Trest", "")); cubeCards.add(new CardIdentity("Leovold, Emissary of Trest", ""));
cubeCards.add(new CardIdentity("Lethal Scheme", ""));
cubeCards.add(new CardIdentity("Leyline Binding", "")); cubeCards.add(new CardIdentity("Leyline Binding", ""));
cubeCards.add(new CardIdentity("Library of Alexandria", "")); cubeCards.add(new CardIdentity("Library of Alexandria", ""));
cubeCards.add(new CardIdentity("Life // Death", "")); cubeCards.add(new CardIdentity("Life // Death", ""));
@ -260,6 +270,7 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Llanowar Elves", "")); cubeCards.add(new CardIdentity("Llanowar Elves", ""));
cubeCards.add(new CardIdentity("Loot, the Pathfinder", "")); cubeCards.add(new CardIdentity("Loot, the Pathfinder", ""));
cubeCards.add(new CardIdentity("Loran of the Third Path", "")); cubeCards.add(new CardIdentity("Loran of the Third Path", ""));
cubeCards.add(new CardIdentity("Lorien Revealed", ""));
cubeCards.add(new CardIdentity("Lose Focus", "")); cubeCards.add(new CardIdentity("Lose Focus", ""));
cubeCards.add(new CardIdentity("Lotus Cobra", "")); cubeCards.add(new CardIdentity("Lotus Cobra", ""));
cubeCards.add(new CardIdentity("Lotus Petal", "")); cubeCards.add(new CardIdentity("Lotus Petal", ""));
@ -267,10 +278,10 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Lurrus of the Dream-Den", "")); cubeCards.add(new CardIdentity("Lurrus of the Dream-Den", ""));
cubeCards.add(new CardIdentity("Lush Portico", "")); cubeCards.add(new CardIdentity("Lush Portico", ""));
cubeCards.add(new CardIdentity("Lutri, the Spellchaser", "")); cubeCards.add(new CardIdentity("Lutri, the Spellchaser", ""));
cubeCards.add(new CardIdentity("Lorien Revealed", ""));
cubeCards.add(new CardIdentity("Magda, Brazen Outlaw", "")); cubeCards.add(new CardIdentity("Magda, Brazen Outlaw", ""));
cubeCards.add(new CardIdentity("Malcolm, Alluring Scoundrel", "")); cubeCards.add(new CardIdentity("Malcolm, Alluring Scoundrel", ""));
cubeCards.add(new CardIdentity("Malevolent Rumble", "")); cubeCards.add(new CardIdentity("Malevolent Rumble", ""));
cubeCards.add(new CardIdentity("Mana Confluence", ""));
cubeCards.add(new CardIdentity("Mana Crypt", "")); cubeCards.add(new CardIdentity("Mana Crypt", ""));
cubeCards.add(new CardIdentity("Mana Drain", "")); cubeCards.add(new CardIdentity("Mana Drain", ""));
cubeCards.add(new CardIdentity("Mana Leak", "")); cubeCards.add(new CardIdentity("Mana Leak", ""));
@ -278,12 +289,12 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Mana Vault", "")); cubeCards.add(new CardIdentity("Mana Vault", ""));
cubeCards.add(new CardIdentity("Manamorphose", "")); cubeCards.add(new CardIdentity("Manamorphose", ""));
cubeCards.add(new CardIdentity("Manifold Key", "")); cubeCards.add(new CardIdentity("Manifold Key", ""));
cubeCards.add(new CardIdentity("March of Otherworldly Light", ""));
cubeCards.add(new CardIdentity("Marsh Flats", "")); cubeCards.add(new CardIdentity("Marsh Flats", ""));
cubeCards.add(new CardIdentity("Memory Jar", "")); cubeCards.add(new CardIdentity("Memory Jar", ""));
cubeCards.add(new CardIdentity("Memory Lapse", "")); cubeCards.add(new CardIdentity("Memory Lapse", ""));
cubeCards.add(new CardIdentity("Metamorphosis Fanatic", "")); cubeCards.add(new CardIdentity("Metamorphosis Fanatic", ""));
cubeCards.add(new CardIdentity("Meticulous Archive", "")); cubeCards.add(new CardIdentity("Meticulous Archive", ""));
cubeCards.add(new CardIdentity("Mightform Harmonizer", ""));
cubeCards.add(new CardIdentity("Mind Stone", "")); cubeCards.add(new CardIdentity("Mind Stone", ""));
cubeCards.add(new CardIdentity("Mind Twist", "")); cubeCards.add(new CardIdentity("Mind Twist", ""));
cubeCards.add(new CardIdentity("Mine Collapse", "")); cubeCards.add(new CardIdentity("Mine Collapse", ""));
@ -292,7 +303,7 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Mishra's Bauble", "")); cubeCards.add(new CardIdentity("Mishra's Bauble", ""));
cubeCards.add(new CardIdentity("Mishra's Workshop", "")); cubeCards.add(new CardIdentity("Mishra's Workshop", ""));
cubeCards.add(new CardIdentity("Misty Rainforest", "")); cubeCards.add(new CardIdentity("Misty Rainforest", ""));
cubeCards.add(new CardIdentity("Monastery Mentor", "")); cubeCards.add(new CardIdentity("Monstrous Rage", ""));
cubeCards.add(new CardIdentity("Mother of Runes", "")); cubeCards.add(new CardIdentity("Mother of Runes", ""));
cubeCards.add(new CardIdentity("Mox Diamond", "")); cubeCards.add(new CardIdentity("Mox Diamond", ""));
cubeCards.add(new CardIdentity("Mox Emerald", "")); cubeCards.add(new CardIdentity("Mox Emerald", ""));
@ -301,19 +312,18 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Mox Pearl", "")); cubeCards.add(new CardIdentity("Mox Pearl", ""));
cubeCards.add(new CardIdentity("Mox Ruby", "")); cubeCards.add(new CardIdentity("Mox Ruby", ""));
cubeCards.add(new CardIdentity("Mox Sapphire", "")); cubeCards.add(new CardIdentity("Mox Sapphire", ""));
cubeCards.add(new CardIdentity("Multiversal Passage", ""));
cubeCards.add(new CardIdentity("Mutagenic Growth", ""));
cubeCards.add(new CardIdentity("Myr Battlesphere", "")); cubeCards.add(new CardIdentity("Myr Battlesphere", ""));
cubeCards.add(new CardIdentity("Mystic Confluence", "")); cubeCards.add(new CardIdentity("Mystic Confluence", ""));
cubeCards.add(new CardIdentity("Mystical Tutor", "")); cubeCards.add(new CardIdentity("Mystical Tutor", ""));
cubeCards.add(new CardIdentity("Nadu, Winged Wisdom", "")); cubeCards.add(new CardIdentity("Nadu, Winged Wisdom", ""));
cubeCards.add(new CardIdentity("Narset, Parter of Veils", "")); cubeCards.add(new CardIdentity("Narset, Parter of Veils", ""));
cubeCards.add(new CardIdentity("Natural Order", "")); cubeCards.add(new CardIdentity("Natural Order", ""));
cubeCards.add(new CardIdentity("Nature's Lore", ""));
cubeCards.add(new CardIdentity("Necromancy", "")); cubeCards.add(new CardIdentity("Necromancy", ""));
cubeCards.add(new CardIdentity("Nethergoyf", "")); cubeCards.add(new CardIdentity("Nethergoyf", ""));
cubeCards.add(new CardIdentity("Nettlecyst", "")); cubeCards.add(new CardIdentity("Nettlecyst", ""));
cubeCards.add(new CardIdentity("Nexus of Becoming", ""));
cubeCards.add(new CardIdentity("Night's Whisper", "")); cubeCards.add(new CardIdentity("Night's Whisper", ""));
cubeCards.add(new CardIdentity("Nissa, Ascended Animist", ""));
cubeCards.add(new CardIdentity("Nissa, Who Shakes the World", "")); cubeCards.add(new CardIdentity("Nissa, Who Shakes the World", ""));
cubeCards.add(new CardIdentity("No More Lies", "")); cubeCards.add(new CardIdentity("No More Lies", ""));
cubeCards.add(new CardIdentity("Noble Hierarch", "")); cubeCards.add(new CardIdentity("Noble Hierarch", ""));
@ -328,12 +338,12 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Orcish Lumberjack", "")); cubeCards.add(new CardIdentity("Orcish Lumberjack", ""));
cubeCards.add(new CardIdentity("Otawara, Soaring City", "")); cubeCards.add(new CardIdentity("Otawara, Soaring City", ""));
cubeCards.add(new CardIdentity("Otharri, Suns' Glory", "")); cubeCards.add(new CardIdentity("Otharri, Suns' Glory", ""));
cubeCards.add(new CardIdentity("Ouroboroid", ""));
cubeCards.add(new CardIdentity("Oust", "")); cubeCards.add(new CardIdentity("Oust", ""));
cubeCards.add(new CardIdentity("Overgrown Tomb", "")); cubeCards.add(new CardIdentity("Overgrown Tomb", ""));
cubeCards.add(new CardIdentity("Overlord of the Balemurk", "")); cubeCards.add(new CardIdentity("Overlord of the Balemurk", ""));
cubeCards.add(new CardIdentity("Overlord of the Mistmoors", "")); cubeCards.add(new CardIdentity("Overlord of the Mistmoors", ""));
cubeCards.add(new CardIdentity("Palace Jailer", "")); cubeCards.add(new CardIdentity("Palace Jailer", ""));
cubeCards.add(new CardIdentity("Palantir of Orthanc", ""));
cubeCards.add(new CardIdentity("Paradoxical Outcome", "")); cubeCards.add(new CardIdentity("Paradoxical Outcome", ""));
cubeCards.add(new CardIdentity("Parallax Wave", "")); cubeCards.add(new CardIdentity("Parallax Wave", ""));
cubeCards.add(new CardIdentity("Path to Exile", "")); cubeCards.add(new CardIdentity("Path to Exile", ""));
@ -343,8 +353,8 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Phelia, Exuberant Shepherd", "")); cubeCards.add(new CardIdentity("Phelia, Exuberant Shepherd", ""));
cubeCards.add(new CardIdentity("Phlage, Titan of Fire's Fury", "")); cubeCards.add(new CardIdentity("Phlage, Titan of Fire's Fury", ""));
cubeCards.add(new CardIdentity("Phyrexian Metamorph", "")); cubeCards.add(new CardIdentity("Phyrexian Metamorph", ""));
cubeCards.add(new CardIdentity("Phyrexian Revoker", ""));
cubeCards.add(new CardIdentity("Pillage the Bog", "")); cubeCards.add(new CardIdentity("Pillage the Bog", ""));
cubeCards.add(new CardIdentity("Plagon, Lord of the Beach", ""));
cubeCards.add(new CardIdentity("Plateau", "")); cubeCards.add(new CardIdentity("Plateau", ""));
cubeCards.add(new CardIdentity("Polluted Delta", "")); cubeCards.add(new CardIdentity("Polluted Delta", ""));
cubeCards.add(new CardIdentity("Ponder", "")); cubeCards.add(new CardIdentity("Ponder", ""));
@ -355,17 +365,15 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Primeval Titan", "")); cubeCards.add(new CardIdentity("Primeval Titan", ""));
cubeCards.add(new CardIdentity("Prismatic Ending", "")); cubeCards.add(new CardIdentity("Prismatic Ending", ""));
cubeCards.add(new CardIdentity("Prismatic Vista", "")); cubeCards.add(new CardIdentity("Prismatic Vista", ""));
cubeCards.add(new CardIdentity("Proft's Eidetic Memory", ""));
cubeCards.add(new CardIdentity("Psychic Frog", "")); cubeCards.add(new CardIdentity("Psychic Frog", ""));
cubeCards.add(new CardIdentity("Pyrogoyf", "")); cubeCards.add(new CardIdentity("Pyrogoyf", ""));
cubeCards.add(new CardIdentity("Pyrokinesis", "")); cubeCards.add(new CardIdentity("Pyrokinesis", ""));
cubeCards.add(new CardIdentity("Qarsi Revenant", "")); cubeCards.add(new CardIdentity("Quantum Riddler", ""));
cubeCards.add(new CardIdentity("Questing Beast", "")); cubeCards.add(new CardIdentity("Questing Beast", ""));
cubeCards.add(new CardIdentity("Raffine's Tower", "")); cubeCards.add(new CardIdentity("Raffine's Tower", ""));
cubeCards.add(new CardIdentity("Raffine, Scheming Seer", ""));
cubeCards.add(new CardIdentity("Ragavan, Nimble Pilferer", "")); cubeCards.add(new CardIdentity("Ragavan, Nimble Pilferer", ""));
cubeCards.add(new CardIdentity("Rain of Filth", "")); cubeCards.add(new CardIdentity("Rancor", ""));
cubeCards.add(new CardIdentity("Rampaging Raptor", ""));
cubeCards.add(new CardIdentity("Ramunap Excavator", ""));
cubeCards.add(new CardIdentity("Raucous Theater", "")); cubeCards.add(new CardIdentity("Raucous Theater", ""));
cubeCards.add(new CardIdentity("Raugrin Triome", "")); cubeCards.add(new CardIdentity("Raugrin Triome", ""));
cubeCards.add(new CardIdentity("Razorverge Thicket", "")); cubeCards.add(new CardIdentity("Razorverge Thicket", ""));
@ -374,19 +382,14 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Relic of Sauron", "")); cubeCards.add(new CardIdentity("Relic of Sauron", ""));
cubeCards.add(new CardIdentity("Remand", "")); cubeCards.add(new CardIdentity("Remand", ""));
cubeCards.add(new CardIdentity("Reprieve", "")); cubeCards.add(new CardIdentity("Reprieve", ""));
cubeCards.add(new CardIdentity("Restless Vinestalk", ""));
cubeCards.add(new CardIdentity("Retrofitter Foundry", "")); cubeCards.add(new CardIdentity("Retrofitter Foundry", ""));
cubeCards.add(new CardIdentity("Riverpyre Verge", "")); cubeCards.add(new CardIdentity("Riverpyre Verge", ""));
cubeCards.add(new CardIdentity("Robber of the Rich", "")); cubeCards.add(new CardIdentity("Robber of the Rich", ""));
cubeCards.add(new CardIdentity("Rofellos, Llanowar Emissary", ""));
cubeCards.add(new CardIdentity("Sacred Foundry", "")); cubeCards.add(new CardIdentity("Sacred Foundry", ""));
cubeCards.add(new CardIdentity("Saheeli, Sublime Artificer", "")); cubeCards.add(new CardIdentity("Saheeli, Sublime Artificer", ""));
cubeCards.add(new CardIdentity("Sandstorm Salvager", ""));
cubeCards.add(new CardIdentity("Satya, Aetherflux Genius", ""));
cubeCards.add(new CardIdentity("Savai Triome", "")); cubeCards.add(new CardIdentity("Savai Triome", ""));
cubeCards.add(new CardIdentity("Savannah", "")); cubeCards.add(new CardIdentity("Savannah", ""));
cubeCards.add(new CardIdentity("Scalding Tarn", "")); cubeCards.add(new CardIdentity("Scalding Tarn", ""));
cubeCards.add(new CardIdentity("Scrapwork Mutt", ""));
cubeCards.add(new CardIdentity("Screaming Nemesis", "")); cubeCards.add(new CardIdentity("Screaming Nemesis", ""));
cubeCards.add(new CardIdentity("Scrubland", "")); cubeCards.add(new CardIdentity("Scrubland", ""));
cubeCards.add(new CardIdentity("Scythecat Cub", "")); cubeCards.add(new CardIdentity("Scythecat Cub", ""));
@ -394,14 +397,13 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Seasoned Pyromancer", "")); cubeCards.add(new CardIdentity("Seasoned Pyromancer", ""));
cubeCards.add(new CardIdentity("Securitron Squadron", "")); cubeCards.add(new CardIdentity("Securitron Squadron", ""));
cubeCards.add(new CardIdentity("Sedgemoor Witch", "")); cubeCards.add(new CardIdentity("Sedgemoor Witch", ""));
cubeCards.add(new CardIdentity("Seething Song", ""));
cubeCards.add(new CardIdentity("Sensei's Divining Top", "")); cubeCards.add(new CardIdentity("Sensei's Divining Top", ""));
cubeCards.add(new CardIdentity("Sentinel of the Nameless City", "")); cubeCards.add(new CardIdentity("Sentinel of the Nameless City", ""));
cubeCards.add(new CardIdentity("Serra Paragon", "")); cubeCards.add(new CardIdentity("Serra Paragon", ""));
cubeCards.add(new CardIdentity("Shadowspear", ""));
cubeCards.add(new CardIdentity("Shadowy Backstreet", "")); cubeCards.add(new CardIdentity("Shadowy Backstreet", ""));
cubeCards.add(new CardIdentity("Shallow Grave", "")); cubeCards.add(new CardIdentity("Shallow Grave", ""));
cubeCards.add(new CardIdentity("Shelldock Isle", "")); cubeCards.add(new CardIdentity("Shelldock Isle", ""));
cubeCards.add(new CardIdentity("Sheltering Landscape", ""));
cubeCards.add(new CardIdentity("Sheoldred's Edict", "")); cubeCards.add(new CardIdentity("Sheoldred's Edict", ""));
cubeCards.add(new CardIdentity("Sheoldred, the Apocalypse", "")); cubeCards.add(new CardIdentity("Sheoldred, the Apocalypse", ""));
cubeCards.add(new CardIdentity("Shifting Woodland", "")); cubeCards.add(new CardIdentity("Shifting Woodland", ""));
@ -411,7 +413,7 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Six", "")); cubeCards.add(new CardIdentity("Six", ""));
cubeCards.add(new CardIdentity("Skullclamp", "")); cubeCards.add(new CardIdentity("Skullclamp", ""));
cubeCards.add(new CardIdentity("Skyclave Apparition", "")); cubeCards.add(new CardIdentity("Skyclave Apparition", ""));
cubeCards.add(new CardIdentity("Slimefoot and Squee", "")); cubeCards.add(new CardIdentity("Slickshot Show-Off", ""));
cubeCards.add(new CardIdentity("Smuggler's Copter", "")); cubeCards.add(new CardIdentity("Smuggler's Copter", ""));
cubeCards.add(new CardIdentity("Snapcaster Mage", "")); cubeCards.add(new CardIdentity("Snapcaster Mage", ""));
cubeCards.add(new CardIdentity("Sneak Attack", "")); cubeCards.add(new CardIdentity("Sneak Attack", ""));
@ -426,8 +428,8 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Spellseeker", "")); cubeCards.add(new CardIdentity("Spellseeker", ""));
cubeCards.add(new CardIdentity("Spirebluff Canal", "")); cubeCards.add(new CardIdentity("Spirebluff Canal", ""));
cubeCards.add(new CardIdentity("Springheart Nantuko", "")); cubeCards.add(new CardIdentity("Springheart Nantuko", ""));
cubeCards.add(new CardIdentity("Spyglass Siren", ""));
cubeCards.add(new CardIdentity("Staff of the Storyteller", "")); cubeCards.add(new CardIdentity("Staff of the Storyteller", ""));
cubeCards.add(new CardIdentity("Starting Town", ""));
cubeCards.add(new CardIdentity("Static Prison", "")); cubeCards.add(new CardIdentity("Static Prison", ""));
cubeCards.add(new CardIdentity("Steam Vents", "")); cubeCards.add(new CardIdentity("Steam Vents", ""));
cubeCards.add(new CardIdentity("Stern Scolding", "")); cubeCards.add(new CardIdentity("Stern Scolding", ""));
@ -440,7 +442,7 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Sunbaked Canyon", "")); cubeCards.add(new CardIdentity("Sunbaked Canyon", ""));
cubeCards.add(new CardIdentity("Sunbillow Verge", "")); cubeCards.add(new CardIdentity("Sunbillow Verge", ""));
cubeCards.add(new CardIdentity("Sunfall", "")); cubeCards.add(new CardIdentity("Sunfall", ""));
cubeCards.add(new CardIdentity("Sunken Ruins", "")); cubeCards.add(new CardIdentity("Suplex", ""));
cubeCards.add(new CardIdentity("Sword of the Meek", "")); cubeCards.add(new CardIdentity("Sword of the Meek", ""));
cubeCards.add(new CardIdentity("Swords to Plowshares", "")); cubeCards.add(new CardIdentity("Swords to Plowshares", ""));
cubeCards.add(new CardIdentity("Sylvan Caryatid", "")); cubeCards.add(new CardIdentity("Sylvan Caryatid", ""));
@ -455,7 +457,6 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Tamiyo, Collector of Tales", "")); cubeCards.add(new CardIdentity("Tamiyo, Collector of Tales", ""));
cubeCards.add(new CardIdentity("Tamiyo, Inquisitive Student", "")); cubeCards.add(new CardIdentity("Tamiyo, Inquisitive Student", ""));
cubeCards.add(new CardIdentity("Tarfire", "")); cubeCards.add(new CardIdentity("Tarfire", ""));
cubeCards.add(new CardIdentity("Tarmogoyf", ""));
cubeCards.add(new CardIdentity("Tear Asunder", "")); cubeCards.add(new CardIdentity("Tear Asunder", ""));
cubeCards.add(new CardIdentity("Teferi, Hero of Dominaria", "")); cubeCards.add(new CardIdentity("Teferi, Hero of Dominaria", ""));
cubeCards.add(new CardIdentity("Teferi, Time Raveler", "")); cubeCards.add(new CardIdentity("Teferi, Time Raveler", ""));
@ -463,9 +464,10 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Tendrils of Agony", "")); cubeCards.add(new CardIdentity("Tendrils of Agony", ""));
cubeCards.add(new CardIdentity("Territorial Kavu", "")); cubeCards.add(new CardIdentity("Territorial Kavu", ""));
cubeCards.add(new CardIdentity("Tersa Lightshatter", "")); cubeCards.add(new CardIdentity("Tersa Lightshatter", ""));
cubeCards.add(new CardIdentity("Tezzeret, Cruel Captain", ""));
cubeCards.add(new CardIdentity("Thalia, Guardian of Thraben", "")); cubeCards.add(new CardIdentity("Thalia, Guardian of Thraben", ""));
cubeCards.add(new CardIdentity("Thassa's Oracle", "")); cubeCards.add(new CardIdentity("Thassa's Oracle", ""));
cubeCards.add(new CardIdentity("The Aetherspark", "")); cubeCards.add(new CardIdentity("The Endstone", ""));
cubeCards.add(new CardIdentity("The Mightstone and Weakstone", "")); cubeCards.add(new CardIdentity("The Mightstone and Weakstone", ""));
cubeCards.add(new CardIdentity("The One Ring", "")); cubeCards.add(new CardIdentity("The One Ring", ""));
cubeCards.add(new CardIdentity("The Wandering Emperor", "")); cubeCards.add(new CardIdentity("The Wandering Emperor", ""));
@ -479,7 +481,9 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Thraben Inspector", "")); cubeCards.add(new CardIdentity("Thraben Inspector", ""));
cubeCards.add(new CardIdentity("Through the Breach", "")); cubeCards.add(new CardIdentity("Through the Breach", ""));
cubeCards.add(new CardIdentity("Thundering Falls", "")); cubeCards.add(new CardIdentity("Thundering Falls", ""));
cubeCards.add(new CardIdentity("Thundertrap Trainer", ""));
cubeCards.add(new CardIdentity("Tidehollow Sculler", "")); cubeCards.add(new CardIdentity("Tidehollow Sculler", ""));
cubeCards.add(new CardIdentity("Tifa Lockhart", ""));
cubeCards.add(new CardIdentity("Time Spiral", "")); cubeCards.add(new CardIdentity("Time Spiral", ""));
cubeCards.add(new CardIdentity("Time Walk", "")); cubeCards.add(new CardIdentity("Time Walk", ""));
cubeCards.add(new CardIdentity("Time Warp", "")); cubeCards.add(new CardIdentity("Time Warp", ""));
@ -492,18 +496,14 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Torsten, Founder of Benalia", "")); cubeCards.add(new CardIdentity("Torsten, Founder of Benalia", ""));
cubeCards.add(new CardIdentity("Touch the Spirit Realm", "")); cubeCards.add(new CardIdentity("Touch the Spirit Realm", ""));
cubeCards.add(new CardIdentity("Toxic Deluge", "")); cubeCards.add(new CardIdentity("Toxic Deluge", ""));
cubeCards.add(new CardIdentity("Treachery", "")); cubeCards.add(new CardIdentity("Traveling Chocobo", ""));
cubeCards.add(new CardIdentity("Treasure Cruise", "")); cubeCards.add(new CardIdentity("Treasure Cruise", ""));
cubeCards.add(new CardIdentity("Trinket Mage", "")); cubeCards.add(new CardIdentity("Trinket Mage", ""));
cubeCards.add(new CardIdentity("Triplicate Titan", "")); cubeCards.add(new CardIdentity("Troll of Khazad-dum", ""));
//cubeCards.add(new CardIdentity("Troll of Khazad-dom", ""));
cubeCards.add(new CardIdentity("Tropical Island", "")); cubeCards.add(new CardIdentity("Tropical Island", ""));
cubeCards.add(new CardIdentity("True-Name Nemesis", ""));
cubeCards.add(new CardIdentity("Trumpeting Carnosaur", ""));
cubeCards.add(new CardIdentity("Tundra", "")); cubeCards.add(new CardIdentity("Tundra", ""));
cubeCards.add(new CardIdentity("Turnabout", "")); cubeCards.add(new CardIdentity("Twisted Landscape", ""));
cubeCards.add(new CardIdentity("Ugin, Eye of the Storms", "")); cubeCards.add(new CardIdentity("Ugin, Eye of the Storms", ""));
cubeCards.add(new CardIdentity("Ulamog, the Infinite Gyre", ""));
cubeCards.add(new CardIdentity("Ulvenwald Oddity", "")); cubeCards.add(new CardIdentity("Ulvenwald Oddity", ""));
cubeCards.add(new CardIdentity("Umezawa's Jitte", "")); cubeCards.add(new CardIdentity("Umezawa's Jitte", ""));
cubeCards.add(new CardIdentity("Undercity Sewers", "")); cubeCards.add(new CardIdentity("Undercity Sewers", ""));
@ -513,6 +513,7 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Unearth", "")); cubeCards.add(new CardIdentity("Unearth", ""));
cubeCards.add(new CardIdentity("Unexpectedly Absent", "")); cubeCards.add(new CardIdentity("Unexpectedly Absent", ""));
cubeCards.add(new CardIdentity("Unholy Heat", "")); cubeCards.add(new CardIdentity("Unholy Heat", ""));
cubeCards.add(new CardIdentity("Unruly Krasis", ""));
cubeCards.add(new CardIdentity("Upheaval", "")); cubeCards.add(new CardIdentity("Upheaval", ""));
cubeCards.add(new CardIdentity("Urborg, Tomb of Yawgmoth", "")); cubeCards.add(new CardIdentity("Urborg, Tomb of Yawgmoth", ""));
cubeCards.add(new CardIdentity("Uro, Titan of Nature's Wrath", "")); cubeCards.add(new CardIdentity("Uro, Titan of Nature's Wrath", ""));
@ -526,10 +527,10 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Verdant Catacombs", "")); cubeCards.add(new CardIdentity("Verdant Catacombs", ""));
cubeCards.add(new CardIdentity("Vindicate", "")); cubeCards.add(new CardIdentity("Vindicate", ""));
cubeCards.add(new CardIdentity("Virtue of Loyalty", "")); cubeCards.add(new CardIdentity("Virtue of Loyalty", ""));
cubeCards.add(new CardIdentity("Vivi Ornitier", ""));
cubeCards.add(new CardIdentity("Voice of Victory", "")); cubeCards.add(new CardIdentity("Voice of Victory", ""));
cubeCards.add(new CardIdentity("Volcanic Island", "")); cubeCards.add(new CardIdentity("Volcanic Island", ""));
cubeCards.add(new CardIdentity("Voldaren Epicure", "")); cubeCards.add(new CardIdentity("Voldaren Epicure", ""));
//cubeCards.add(new CardIdentity("Walk-In Closet // Forgotten Cellar", ""));
cubeCards.add(new CardIdentity("Walking Ballista", "")); cubeCards.add(new CardIdentity("Walking Ballista", ""));
cubeCards.add(new CardIdentity("Wasteland", "")); cubeCards.add(new CardIdentity("Wasteland", ""));
cubeCards.add(new CardIdentity("Wastewood Verge", "")); cubeCards.add(new CardIdentity("Wastewood Verge", ""));
@ -544,7 +545,6 @@ public class VintageCube extends DraftCube {
cubeCards.add(new CardIdentity("Witherbloom Apprentice", "")); cubeCards.add(new CardIdentity("Witherbloom Apprentice", ""));
cubeCards.add(new CardIdentity("Wooded Foothills", "")); cubeCards.add(new CardIdentity("Wooded Foothills", ""));
cubeCards.add(new CardIdentity("Woodfall Primus", "")); cubeCards.add(new CardIdentity("Woodfall Primus", ""));
cubeCards.add(new CardIdentity("Worldly Tutor", ""));
cubeCards.add(new CardIdentity("Worldspine Wurm", "")); cubeCards.add(new CardIdentity("Worldspine Wurm", ""));
cubeCards.add(new CardIdentity("Wrath of God", "")); cubeCards.add(new CardIdentity("Wrath of God", ""));
cubeCards.add(new CardIdentity("Wrenn and Six", "")); cubeCards.add(new CardIdentity("Wrenn and Six", ""));

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-tournament-constructed</artifactId> <artifactId>mage-tournament-constructed</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-tournament-sealed</artifactId> <artifactId>mage-tournament-sealed</artifactId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-root</artifactId> <artifactId>mage-root</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-server-plugins</artifactId> <artifactId>mage-server-plugins</artifactId>

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-root</artifactId> <artifactId>mage-root</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-server</artifactId> <artifactId>mage-server</artifactId>
@ -208,7 +208,7 @@
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId> <artifactId>commons-compress</artifactId>
<version>1.27.1</version> <version>1.28.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.shiro</groupId> <groupId>org.apache.shiro</groupId>

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-root</artifactId> <artifactId>mage-root</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-sets</artifactId> <artifactId>mage-sets</artifactId>

View file

@ -0,0 +1,55 @@
package mage.cards.a;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.dynamicvalue.common.ManaSpentToCastCount;
import mage.abilities.effects.common.CastSourceTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.EntersBattlefieldUnderControlOfOpponentOfChoiceEffect;
import mage.abilities.keyword.PartnerSurvivorsAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.game.permanent.token.CordycepsInfectedToken;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class AbbyMercilessSoldier extends CardImpl {
public AbbyMercilessSoldier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{G}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SURVIVOR);
this.power = new MageInt(4);
this.toughness = new MageInt(4);
// When you cast this spell, create a number of 1/1 black Fungus Zombie creature tokens named Cordyceps Infected equal to the amount of mana spent to cast it.
this.addAbility(new CastSourceTriggeredAbility(
new CreateTokenEffect(new CordycepsInfectedToken(), ManaSpentToCastCount.instance)
.setText("create a number of 1/1 black Fungus Zombie creature tokens " +
"named Cordyceps Infected equal to the amount of mana spent to cast it")
));
// Abby enters under the control of an opponent of your choice.
this.addAbility(new EntersBattlefieldAbility(new EntersBattlefieldUnderControlOfOpponentOfChoiceEffect()));
// Partner--Survivors
this.addAbility(PartnerSurvivorsAbility.getInstance());
}
private AbbyMercilessSoldier(final AbbyMercilessSoldier card) {
super(card);
}
@Override
public AbbyMercilessSoldier copy() {
return new AbbyMercilessSoldier(this);
}
}

View file

@ -1,22 +1,17 @@
package mage.cards.a; package mage.cards.a;
import mage.MageInt; import mage.MageInt;
import mage.MageItem;
import mage.MageObject;
import mage.abilities.common.CantBeCounteredSourceAbility; import mage.abilities.common.CantBeCounteredSourceAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.GainAbilityControllerEffect; import mage.abilities.effects.common.continuous.GainAbilityControllerEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.ProtectionFromEachOpponentAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.filter.StaticFilters;
import mage.game.Game;
import java.util.Optional;
import java.util.UUID; import java.util.UUID;
/** /**
@ -40,7 +35,7 @@ public final class AbsoluteVirtue extends CardImpl {
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// You have protection from each of your opponents. // You have protection from each of your opponents.
this.addAbility(new SimpleStaticAbility(new GainAbilityControllerEffect(new AbsoluteVirtueAbility()))); this.addAbility(new SimpleStaticAbility(new GainAbilityControllerEffect(new ProtectionFromEachOpponentAbility())));
} }
private AbsoluteVirtue(final AbsoluteVirtue card) { private AbsoluteVirtue(final AbsoluteVirtue card) {
@ -52,34 +47,3 @@ public final class AbsoluteVirtue extends CardImpl {
return new AbsoluteVirtue(this); return new AbsoluteVirtue(this);
} }
} }
class AbsoluteVirtueAbility extends ProtectionAbility {
public AbsoluteVirtueAbility() {
super(StaticFilters.FILTER_CARD);
}
private AbsoluteVirtueAbility(final AbsoluteVirtueAbility ability) {
super(ability);
}
@Override
public AbsoluteVirtueAbility copy() {
return new AbsoluteVirtueAbility(this);
}
@Override
public String getRule() {
return "protection from each of your opponents";
}
@Override
public boolean canTarget(MageObject source, Game game) {
return Optional
.ofNullable(source)
.map(MageItem::getId)
.map(game::getControllerId)
.map(uuid -> !game.getOpponents(this.getSourceId()).contains(uuid))
.orElse(true);
}
}

View file

@ -0,0 +1,94 @@
package mage.cards.a;
import mage.MageInt;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.AttacksWithCreaturesTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.keyword.DiscoverEffect;
import mage.abilities.keyword.ReachAbility;
import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
import java.util.Objects;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class AloySaviorOfMeridian extends CardImpl {
public AloySaviorOfMeridian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{U}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WARRIOR);
this.power = new MageInt(3);
this.toughness = new MageInt(5);
// Vigilance
this.addAbility(VigilanceAbility.getInstance());
// Reach
this.addAbility(ReachAbility.getInstance());
// In You, All Things Are Possible -- Whenever one or more artifact creatures you control attack, discover X, where X is the greatest power among them.
this.addAbility(new AttacksWithCreaturesTriggeredAbility(
new AloySaviorOfMeridianEffect(), 1, StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE
).setTriggerPhrase("Whenever one or more artifact creatures you control attack, ").withFlavorWord("In You, All Things Are Possible"));
}
private AloySaviorOfMeridian(final AloySaviorOfMeridian card) {
super(card);
}
@Override
public AloySaviorOfMeridian copy() {
return new AloySaviorOfMeridian(this);
}
}
class AloySaviorOfMeridianEffect extends OneShotEffect {
AloySaviorOfMeridianEffect() {
super(Outcome.Benefit);
staticText = "discover X, where X is the greatest power among them";
}
private AloySaviorOfMeridianEffect(final AloySaviorOfMeridianEffect effect) {
super(effect);
}
@Override
public AloySaviorOfMeridianEffect copy() {
return new AloySaviorOfMeridianEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player == null) {
return false;
}
int power = this
.getTargetPointer()
.getTargets(game, source)
.stream()
.map(game::getPermanentOrLKIBattlefield)
.filter(Objects::nonNull)
.map(MageObject::getPower)
.mapToInt(MageInt::getValue)
.max()
.orElse(0);
return DiscoverEffect.doDiscover(player, power, game, source) != null;
}
}

View file

@ -0,0 +1,50 @@
package mage.cards.a;
import mage.MageInt;
import mage.abilities.common.AttacksEachCombatStaticAbility;
import mage.abilities.common.DealsDamageToOpponentTriggeredAbility;
import mage.abilities.effects.common.DamageEachOtherOpponentThatMuchEffect;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class AmarantCoral extends CardImpl {
public AmarantCoral(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{G}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.MONK);
this.power = new MageInt(5);
this.toughness = new MageInt(4);
// Trample
this.addAbility(TrampleAbility.getInstance());
// Amarant Coral attacks each combat if able.
this.addAbility(new AttacksEachCombatStaticAbility());
// No Mercy -- Whenever Amarant Coral deals combat damage to an opponent, it deals that much damage to each other opponent.
this.addAbility(new DealsDamageToOpponentTriggeredAbility(
new DamageEachOtherOpponentThatMuchEffect(), false, true, true
).withFlavorWord("No Mercy"));
}
private AmarantCoral(final AmarantCoral card) {
super(card);
}
@Override
public AmarantCoral copy() {
return new AmarantCoral(this);
}
}

View file

@ -0,0 +1,58 @@
package mage.cards.a;
import mage.abilities.Mode;
import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
import mage.abilities.effects.common.CreateTokenTargetEffect;
import mage.abilities.effects.common.DamageAllControlledTargetEffect;
import mage.abilities.effects.common.DrawCardTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.TreasureToken;
import mage.target.TargetPermanent;
import mage.target.TargetPlayer;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class AshlingsCommand extends CardImpl {
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.ELEMENTAL);
public AshlingsCommand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.KINDRED, CardType.INSTANT}, "{3}{U}{R}");
this.subtype.add(SubType.ELEMENTAL);
// Choose two --
this.getSpellAbility().getModes().setMinModes(2);
this.getSpellAbility().getModes().setMaxModes(2);
// * Create a token that's a copy of target Elemental you control.
this.getSpellAbility().addEffect(new CreateTokenCopyTargetEffect());
this.getSpellAbility().addTarget(new TargetPermanent(filter));
// * Target player draws two cards.
this.getSpellAbility().addMode(new Mode(new DrawCardTargetEffect(2)).addTarget(new TargetPlayer()));
// * Ashling's Command deals 2 damage to each creature target player controls.
this.getSpellAbility().addMode(new Mode(new DamageAllControlledTargetEffect(2)).addTarget(new TargetPlayer()));
// * Target player creates two Treasure tokens.
this.getSpellAbility().addMode(new Mode(new CreateTokenTargetEffect(new TreasureToken(), 2)).addTarget(new TargetPlayer()));
}
private AshlingsCommand(final AshlingsCommand card) {
super(card);
}
@Override
public AshlingsCommand copy() {
return new AshlingsCommand(this);
}
}

View file

@ -0,0 +1,64 @@
package mage.cards.a;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CountersControllerCount;
import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.discard.DiscardControllerEffect;
import mage.abilities.keyword.PartnerFatherAndSonAbility;
import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController;
import mage.counters.CounterType;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class AtreusImpulsiveSon extends CardImpl {
private static final DynamicValue xValue = new CountersControllerCount(CounterType.EXPERIENCE);
public AtreusImpulsiveSon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.GOD);
this.subtype.add(SubType.ARCHER);
this.power = new MageInt(2);
this.toughness = new MageInt(4);
// Reach
this.addAbility(ReachAbility.getInstance());
// {3}, {T}: Draw a card for each experience counter you have, then discard a card. Atreus, Impulsive Son deals 2 damage to each opponent.
Ability ability = new SimpleActivatedAbility(new DrawCardSourceControllerEffect(xValue)
.setText("draw a card for each experience counter you have"), new GenericManaCost(3));
ability.addCost(new TapSourceCost());
ability.addEffect(new DiscardControllerEffect(1).concatBy(", then"));
ability.addEffect(new DamagePlayersEffect(2, TargetController.OPPONENT));
this.addAbility(ability);
// Partner--Father & son
this.addAbility(PartnerFatherAndSonAbility.getInstance());
}
private AtreusImpulsiveSon(final AtreusImpulsiveSon card) {
super(card);
}
@Override
public AtreusImpulsiveSon copy() {
return new AtreusImpulsiveSon(this);
}
}

View file

@ -0,0 +1,51 @@
package mage.cards.b;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
import mage.abilities.keyword.FlashAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.FaerieBlueBlackToken;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class BitterbloomBearer extends CardImpl {
public BitterbloomBearer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}");
this.subtype.add(SubType.FAERIE);
this.subtype.add(SubType.ROGUE);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// Flash
this.addAbility(FlashAbility.getInstance());
// Flying
this.addAbility(FlyingAbility.getInstance());
// At the beginning of your upkeep, you lose 1 life and create a 1/1 blue and black Faerie creature token with flying.
Ability ability = new BeginningOfUpkeepTriggeredAbility(new LoseLifeSourceControllerEffect(1));
ability.addEffect(new CreateTokenEffect(new FaerieBlueBlackToken()).concatBy("and"));
this.addAbility(ability);
}
private BitterbloomBearer(final BitterbloomBearer card) {
super(card);
}
@Override
public BitterbloomBearer copy() {
return new BitterbloomBearer(this);
}
}

View file

@ -0,0 +1,69 @@
package mage.cards.b;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.FlashAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.HexproofAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class BrilliantWings extends CardImpl {
public BrilliantWings(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
this.subtype.add(SubType.AURA);
// Flash
this.addAbility(FlashAbility.getInstance());
// Enchant creature you control
TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_CONTROLLED_CREATURE);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
this.addAbility(new EnchantAbility(auraTarget));
// Enchanted creature has flying and hexproof.
Ability ability = new SimpleStaticAbility(new GainAbilityAttachedEffect(
FlyingAbility.getInstance(), AttachmentType.AURA
));
ability.addEffect(new GainAbilityAttachedEffect(
HexproofAbility.getInstance(), AttachmentType.AURA
).setText("and hexproof"));
this.addAbility(ability);
// Whenever a creature you control enters, you may pay {1}. If you do, attach this Aura to that creature.
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
Zone.BATTLEFIELD,
new DoIfCostPaid(
new AttachEffect(Outcome.BoostCreature, "attach this Aura to that creature"),
new GenericManaCost(1)
), StaticFilters.FILTER_CONTROLLED_CREATURE,
false, SetTargetPointer.PERMANENT
));
}
private BrilliantWings(final BrilliantWings card) {
super(card);
}
@Override
public BrilliantWings copy() {
return new BrilliantWings(this);
}
}

View file

@ -0,0 +1,103 @@
package mage.cards.c;
import mage.abilities.Ability;
import mage.abilities.common.AttacksWithCreaturesTriggeredAbility;
import mage.abilities.common.EntersBattlefieldThisOrAnotherTriggeredAbility;
import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.IndestructibleAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.FoodToken;
import mage.players.Player;
import mage.target.common.TargetAttackingCreature;
import mage.target.common.TargetSacrifice;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class CampsiteCuisine extends CardImpl {
public CampsiteCuisine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
// Whenever this enchantment or a legendary creature you control enters, create a Food token.
this.addAbility(new EntersBattlefieldThisOrAnotherTriggeredAbility(
new CreateTokenEffect(new FoodToken()), StaticFilters.FILTER_CREATURE_LEGENDARY, false, true
).setTriggerPhrase("Whenever this enchantment or a legendary creature you control enters, "));
// Whenever you attack, you may sacrifice X Foods. When you do, up to X target attacking creatures each get +3/+3 and gain trample and indestructible until end of turn.
this.addAbility(new AttacksWithCreaturesTriggeredAbility(new CampsiteCuisineEffect(), 1));
}
private CampsiteCuisine(final CampsiteCuisine card) {
super(card);
}
@Override
public CampsiteCuisine copy() {
return new CampsiteCuisine(this);
}
}
class CampsiteCuisineEffect extends OneShotEffect {
private static final FilterPermanent filter = new FilterPermanent(SubType.FOOD, "Foods");
CampsiteCuisineEffect() {
super(Outcome.Benefit);
staticText = "you may sacrifice X Foods. When you do, up to X target attacking creatures " +
"each get +3/+3 and gain trample and indestructible until end of turn";
}
private CampsiteCuisineEffect(final CampsiteCuisineEffect effect) {
super(effect);
}
@Override
public CampsiteCuisineEffect copy() {
return new CampsiteCuisineEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player == null) {
return false;
}
TargetSacrifice target = new TargetSacrifice(0, Integer.MAX_VALUE, filter);
player.choose(Outcome.Sacrifice, target, source, game);
int count = 0;
for (UUID targetId : target.getTargets()) {
Permanent permanent = game.getPermanent(targetId);
if (permanent != null && permanent.sacrifice(source, game)) {
count++;
}
}
if (count < 1) {
return false;
}
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(new BoostTargetEffect(3, 3)
.setText("up to X target attacking creatures each get +3/+3"), false);
ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance())
.setText("and gain trample"));
ability.addEffect(new GainAbilityTargetEffect(IndestructibleAbility.getInstance())
.setText("and indestructible until end of turn"));
ability.addTarget(new TargetAttackingCreature(0, count));
game.fireReflexiveTriggeredAbility(ability, source);
return true;
}
}

View file

@ -0,0 +1,65 @@
package mage.cards.d;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.TwoOfManaColorSpentCondition;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.effects.common.discard.DiscardCardYouChooseTargetEffect;
import mage.abilities.keyword.EvokeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterNonlandPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.TargetPermanent;
import mage.target.common.TargetOpponent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class Deceit extends CardImpl {
private static final FilterPermanent filter = new FilterNonlandPermanent("other target nonland permanent");
static {
filter.add(AnotherPredicate.instance);
}
public Deceit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U/B}{U/B}");
this.subtype.add(SubType.ELEMENTAL);
this.subtype.add(SubType.INCARNATION);
this.power = new MageInt(5);
this.toughness = new MageInt(5);
// When this creature enters, if {U}{U} was spent to cast it, return up to one other target nonland permanent to its owner's hand.
Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect()).withInterveningIf(TwoOfManaColorSpentCondition.BLUE);
ability.addTarget(new TargetPermanent(0, 1, filter));
this.addAbility(ability);
// When this creature enters, if {B}{B} was spent to cast it, target opponent reveals their hand. You choose a nonland card from it. That player discards that card.
ability = new EntersBattlefieldTriggeredAbility(new DiscardCardYouChooseTargetEffect(StaticFilters.FILTER_CARD_NON_LAND))
.withInterveningIf(TwoOfManaColorSpentCondition.BLACK);
ability.addTarget(new TargetOpponent());
this.addAbility(ability);
// Evoke {U/B}{U/B}
this.addAbility(new EvokeAbility("{U/B}{U/B}"));
}
private Deceit(final Deceit card) {
super(card);
}
@Override
public Deceit copy() {
return new Deceit(this);
}
}

View file

@ -0,0 +1,102 @@
package mage.cards.d;
import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.dynamicvalue.common.GetXValue;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.*;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.permanent.BlockedPredicate;
import mage.game.Game;
import mage.players.Player;
import mage.target.TargetCard;
import mage.target.TargetPermanent;
import mage.target.common.TargetCardInLibrary;
import mage.util.CardUtil;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class DuelistsFlame extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("blocked creature you control");
static {
filter.add(BlockedPredicate.instance);
}
public DuelistsFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{R}{R}");
// Until end of turn, target blocked creature you control gets +X/+0 and gains trample and "Whenever this creature deals combat damage to a player, look at that many cards from the top of your library. Exile up to one nonland card from among them and put the rest on the bottom of your library in a random order. You may cast the exiled card without paying its mana cost."
this.getSpellAbility().addEffect(new BoostTargetEffect(GetXValue.instance, StaticValue.get(0))
.setText("until end of turn, target blocked creature you control gets +X/+0"));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance()).setText("and has trample"));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(
new DealsCombatDamageToAPlayerTriggeredAbility(new DuelistsFlameEffect())
).setText("and \"Whenever this creature deals combat damage to a player, " +
"look at that many cards from the top of your library. Exile up to one nonland card " +
"from among them and put the rest on the bottom of your library in a random order. " +
"You may cast the exiled card without paying its mana cost.\""));
this.getSpellAbility().addTarget(new TargetPermanent(filter));
}
private DuelistsFlame(final DuelistsFlame card) {
super(card);
}
@Override
public DuelistsFlame copy() {
return new DuelistsFlame(this);
}
}
class DuelistsFlameEffect extends OneShotEffect {
DuelistsFlameEffect() {
super(Outcome.Benefit);
staticText = "look at that many cards from the top of your library. " +
"Exile up to one nonland card from among them and put the rest on the bottom of your library " +
"in a random order. You may cast the exiled card without paying its mana cost";
}
private DuelistsFlameEffect(final DuelistsFlameEffect effect) {
super(effect);
}
@Override
public DuelistsFlameEffect copy() {
return new DuelistsFlameEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
int damage = (Integer) getValue("damage");
if (player == null || damage < 1) {
return false;
}
Cards cards = new CardsImpl(player.getLibrary().getTopCards(game, damage));
TargetCard target = new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_NON_LAND);
player.choose(Outcome.PlayForFree, cards, target, source, game);
Card card = game.getCard(target.getFirstTarget());
player.moveCards(card, Zone.EXILED, source, game);
cards.retainZone(Zone.LIBRARY, game);
player.putCardsOnBottomOfLibrary(cards, game, source, false);
if (card != null) {
CardUtil.castSpellWithAttributesForFree(player, source, game, card);
}
return true;
}
}

View file

@ -0,0 +1,71 @@
package mage.cards.e;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledSpellsEffect;
import mage.abilities.keyword.ConvokeAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.abilities.keyword.TransformAbility;
import mage.abilities.triggers.BeginningOfFirstMainTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.common.FilterNonlandCard;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.AbilityPredicate;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class EirduCarrierOfDawn extends CardImpl {
private static final FilterNonlandCard filter = new FilterNonlandCard("creature spells you cast");
static {
filter.add(CardType.CREATURE.getPredicate());
filter.add(Predicates.not(new AbilityPredicate(ConvokeAbility.class)));
}
public EirduCarrierOfDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.ELEMENTAL);
this.subtype.add(SubType.GOD);
this.power = new MageInt(5);
this.toughness = new MageInt(5);
this.secondSideCardClazz = mage.cards.i.IsiluCarrierOfTwilight.class;
// Flying
this.addAbility(FlyingAbility.getInstance());
// Lifelink
this.addAbility(LifelinkAbility.getInstance());
// Creature spells you cast have convoke.
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledSpellsEffect(new ConvokeAbility(), filter)));
// At the beginning of your first main phase, you may pay {B}. If you do, transform Eirdu.
this.addAbility(new TransformAbility());
this.addAbility(new BeginningOfFirstMainTriggeredAbility(
new DoIfCostPaid(new TransformSourceEffect(), new ManaCostsImpl<>("{B}"))
));
}
private EirduCarrierOfDawn(final EirduCarrierOfDawn card) {
super(card);
}
@Override
public EirduCarrierOfDawn copy() {
return new EirduCarrierOfDawn(this);
}
}

View file

@ -0,0 +1,107 @@
package mage.cards.e;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.PartnerSurvivorsAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import mage.game.events.DefenderAttackedEvent;
import mage.game.events.GameEvent;
import mage.game.permanent.token.CordycepsInfectedToken;
import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class EllieBrickMaster extends CardImpl {
public EllieBrickMaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SURVIVOR);
this.power = new MageInt(2);
this.toughness = new MageInt(1);
// Distract the Horde -- Whenever a player attacks one of your opponents, that attacking player creates a tapped 1/1 black Fungus Zombie creature token named Cordyceps Infected that's attacking that opponent.
this.addAbility(new EllieBrickMasterTriggeredAbility());
// Partner--Survivors
this.addAbility(PartnerSurvivorsAbility.getInstance());
}
private EllieBrickMaster(final EllieBrickMaster card) {
super(card);
}
@Override
public EllieBrickMaster copy() {
return new EllieBrickMaster(this);
}
}
class EllieBrickMasterTriggeredAbility extends TriggeredAbilityImpl {
EllieBrickMasterTriggeredAbility() {
super(Zone.BATTLEFIELD, new EllieBrickMasterEffect());
setTriggerPhrase("Whenever a player attacks one of your opponents, ");
withFlavorWord("Distract the Horde");
}
private EllieBrickMasterTriggeredAbility(final EllieBrickMasterTriggeredAbility ability) {
super(ability);
}
@Override
public EllieBrickMasterTriggeredAbility copy() {
return new EllieBrickMasterTriggeredAbility(this);
}
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DEFENDER_ATTACKED;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
DefenderAttackedEvent dEvent = (DefenderAttackedEvent) event;
if (!game.getOpponents(this.getControllerId()).contains(event.getTargetId())) {
return false;
}
this.getEffects().setTargetPointer(new FixedTarget(event.getTargetId()));
return true;
}
}
class EllieBrickMasterEffect extends OneShotEffect {
EllieBrickMasterEffect() {
super(Outcome.Benefit);
staticText = "that attacking player creates a tapped 1/1 black Fungus Zombie creature token " +
"named Cordyceps Infected that's attacking that opponent";
}
private EllieBrickMasterEffect(final EllieBrickMasterEffect effect) {
super(effect);
}
@Override
public EllieBrickMasterEffect copy() {
return new EllieBrickMasterEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
return new CordycepsInfectedToken().putOntoBattlefield(
1, game, source, game.getActivePlayerId(),
true, true, getTargetPointer().getFirst(game, source)
);
}
}

View file

@ -0,0 +1,58 @@
package mage.cards.e;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.keyword.IndestructibleAbility;
import mage.abilities.keyword.PartnerSurvivorsAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.StaticFilters;
import mage.target.TargetPlayer;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class EllieVengefulHunter extends CardImpl {
public EllieVengefulHunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SURVIVOR);
this.power = new MageInt(3);
this.toughness = new MageInt(1);
// Pay 2 life, Sacrifice another creature: Ellie deals 2 damage to target player and gains indestructible until end of turn.
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(2), new PayLifeCost(2));
ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_ANOTHER_CREATURE));
ability.addEffect(new GainAbilitySourceEffect(
IndestructibleAbility.getInstance(), Duration.EndOfTurn
).setText("and gains indestructible until end of turn"));
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
// Partner--Survivors
this.addAbility(PartnerSurvivorsAbility.getInstance());
}
private EllieVengefulHunter(final EllieVengefulHunter card) {
super(card);
}
@Override
public EllieVengefulHunter copy() {
return new EllieVengefulHunter(this);
}
}

View file

@ -0,0 +1,68 @@
package mage.cards.e;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.TwoOfManaColorSpentCondition;
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.keyword.EvokeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.FilterCard;
import mage.filter.common.FilterCreatureCard;
import mage.filter.predicate.mageobject.ManaValuePredicate;
import mage.target.common.TargetCardInYourGraveyard;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class Emptiness extends CardImpl {
private static final FilterCard filter
= new FilterCreatureCard("creature card with mana value 3 or less from your graveyard");
static {
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4));
}
public Emptiness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W/B}{W/B}");
this.subtype.add(SubType.ELEMENTAL);
this.subtype.add(SubType.INCARNATION);
this.power = new MageInt(3);
this.toughness = new MageInt(5);
// When this creature enters, if {W}{W} was spent to cast it, return target creature card with mana value 3 or less from your graveyard to the battlefield.
Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect())
.withInterveningIf(TwoOfManaColorSpentCondition.WHITE);
ability.addTarget(new TargetCardInYourGraveyard(filter));
this.addAbility(ability);
// When this creature enters, if {B}{B} was spent to cast it, put three -1/-1 counters on up to one target creature.
ability = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.M1M1.createInstance(2)))
.withInterveningIf(TwoOfManaColorSpentCondition.BLACK);
ability.addTarget(new TargetCreaturePermanent(0, 1));
this.addAbility(ability);
// Evoke {W/B}{W/B}
this.addAbility(new EvokeAbility("{W/B}{W/B}"));
}
private Emptiness(final Emptiness card) {
super(card);
}
@Override
public Emptiness copy() {
return new Emptiness(this);
}
}

View file

@ -0,0 +1,56 @@
package mage.cards.f;
import mage.abilities.common.CastAsThoughItHadFlashIfConditionAbility;
import mage.abilities.condition.CompoundCondition;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.effects.common.DestroyAllEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.StaticFilters;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetOpponentsCreaturePermanent;
import mage.target.targetpointer.EachTargetPointer;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class FatedClash extends CardImpl {
private static final Condition condition = new CompoundCondition(
new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_ATTACKING_CREATURE, false),
new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_BLOCKING_CREATURES, false)
);
public FatedClash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}");
// You may cast this spell as though it had flash if a creature is attacking and a creature is blocking.
this.addAbility(new CastAsThoughItHadFlashIfConditionAbility(
condition, "you may cast this spell as though it had flash " +
"if a creature is attacking and a creature is blocking"
));
// Target creature you control and target creature an opponent controls each gain indestructible until end of turn. Then destroy all creatures.
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(IndestructibleAbility.getInstance())
.setText("target creature you control and target creature an opponent controls each gain indestructible until end of turn")
.setTargetPointer(new EachTargetPointer()));
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
this.getSpellAbility().addTarget(new TargetOpponentsCreaturePermanent());
this.getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_CREATURES).concatBy("Then"));
}
private FatedClash(final FatedClash card) {
super(card);
}
@Override
public FatedClash copy() {
return new FatedClash(this);
}
}

View file

@ -0,0 +1,127 @@
package mage.cards.f;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.AddCardSubTypeSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.effects.common.continuous.SetBasePowerToughnessSourceEffect;
import mage.abilities.keyword.ProtectionFromEachOpponentAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.game.Game;
import mage.game.permanent.Permanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class FigureOfFable extends CardImpl {
public FigureOfFable(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G/W}");
this.subtype.add(SubType.KITHKIN);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// {G/W}: This creature becomes a Kithkin Scout with base power and toughness 2/3.
Ability ability = new SimpleActivatedAbility(new AddCardSubTypeSourceEffect(
Duration.Custom, SubType.KITHKIN, SubType.SCOUT
).setText("{this} becomes a Kithkin Scout"), new ManaCostsImpl<>("{G/W}"));
ability.addEffect(new SetBasePowerToughnessSourceEffect(
2, 3, Duration.Custom
).setText("with base power and toughness 2/3"));
this.addAbility(ability);
// {1}{G/W}{G/W}: If this creature is a Scout, it becomes a Kithkin Soldier with base power and toughness 4/5.
this.addAbility(new SimpleActivatedAbility(new FigureOfFableScoutEffect(), new ManaCostsImpl<>("{1}{G/W}{G/W}")));
// {3}{G/W}{G/W}{G/W}: If this creature is a Soldier, it becomes a Kithkin Avatar with base power and toughness 7/8 and protection from each of your opponents.
this.addAbility(new SimpleActivatedAbility(new FigureOfFableSoldierEffect(), new ManaCostsImpl<>("{3}{G/W}{G/W}{G/W}")));
}
private FigureOfFable(final FigureOfFable card) {
super(card);
}
@Override
public FigureOfFable copy() {
return new FigureOfFable(this);
}
}
class FigureOfFableScoutEffect extends OneShotEffect {
FigureOfFableScoutEffect() {
super(Outcome.Benefit);
staticText = "if {this} is a Scout, it becomes a Kithkin Soldier with base power and toughness 4/5";
}
private FigureOfFableScoutEffect(final FigureOfFableScoutEffect effect) {
super(effect);
}
@Override
public FigureOfFableScoutEffect copy() {
return new FigureOfFableScoutEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Permanent permanent = source.getSourcePermanentIfItStillExists(game);
if (permanent == null || !permanent.hasSubtype(SubType.SCOUT, game)) {
return false;
}
game.addEffect(new AddCardSubTypeSourceEffect(
Duration.Custom, SubType.KITHKIN, SubType.SOLDIER
), source);
game.addEffect(new SetBasePowerToughnessSourceEffect(
4, 5, Duration.Custom
), source);
return true;
}
}
class FigureOfFableSoldierEffect extends OneShotEffect {
FigureOfFableSoldierEffect() {
super(Outcome.Benefit);
staticText = "if {this} is a Soldier, it becomes a Kithkin Avatar " +
"with base power and toughness 7/8 and protection from each of your opponents";
}
private FigureOfFableSoldierEffect(final FigureOfFableSoldierEffect effect) {
super(effect);
}
@Override
public FigureOfFableSoldierEffect copy() {
return new FigureOfFableSoldierEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Permanent permanent = source.getSourcePermanentIfItStillExists(game);
if (permanent == null || !permanent.hasSubtype(SubType.SOLDIER, game)) {
return false;
}
game.addEffect(new AddCardSubTypeSourceEffect(
Duration.Custom, SubType.KITHKIN, SubType.AVATAR
), source);
game.addEffect(new SetBasePowerToughnessSourceEffect(
7, 8, Duration.Custom
), source);
game.addEffect(new GainAbilitySourceEffect(
new ProtectionFromEachOpponentAbility(), Duration.Custom
), source);
return true;
}
}

View file

@ -0,0 +1,48 @@
package mage.cards.f;
import mage.abilities.common.CastAsThoughItHadFlashIfConditionAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.SourceTargetsPermanentCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
import mage.abilities.keyword.FlashbackAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class FlashPhotography extends CardImpl {
private static final Condition condition = new SourceTargetsPermanentCondition(StaticFilters.FILTER_CONTROLLED_PERMANENT);
public FlashPhotography(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}{U}");
// You may cast this spell as though it had flash if it targets a permanent you control.
this.addAbility(new CastAsThoughItHadFlashIfConditionAbility(
condition, "you may cast this spell as though it had flash if it targets a permanent you control"
));
// Create a token that's a copy of target permanent.
this.getSpellAbility().addEffect(new CreateTokenCopyTargetEffect());
this.getSpellAbility().addTarget(new TargetPermanent());
// Flashback {4}{U}{U}
this.addAbility(new FlashbackAbility(this, new ManaCostsImpl<>("{4}{U}{U}")));
}
private FlashPhotography(final FlashPhotography card) {
super(card);
}
@Override
public FlashPhotography copy() {
return new FlashPhotography(this);
}
}

View file

@ -0,0 +1,66 @@
package mage.cards.f;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.DiscardCardCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.TargetPermanent;
import mage.target.common.TargetCardInLibrary;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class FormidableSpeaker extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another target permanent");
static {
filter.add(AnotherPredicate.instance);
}
public FormidableSpeaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
this.subtype.add(SubType.ELF);
this.subtype.add(SubType.DRUID);
this.power = new MageInt(2);
this.toughness = new MageInt(4);
// When this creature enters, you may discard a card. If you do, search your library for a creature card, reveal it, put it into your hand, then shuffle.
this.addAbility(new EntersBattlefieldTriggeredAbility(
new DoIfCostPaid(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(StaticFilters.FILTER_CARD_CREATURE), true
), new DiscardCardCost())
));
// {1}, {T}: Untap another target permanent.
Ability ability = new SimpleActivatedAbility(new UntapTargetEffect(), new GenericManaCost(1));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}
private FormidableSpeaker(final FormidableSpeaker card) {
super(card);
}
@Override
public FormidableSpeaker copy() {
return new FormidableSpeaker(this);
}
}

View file

@ -1,20 +1,14 @@
package mage.cards.g; package mage.cards.g;
import mage.MageInt; import mage.MageInt;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToOpponentTriggeredAbility; import mage.abilities.common.DealsDamageToOpponentTriggeredAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageEachOtherOpponentThatMuchEffect;
import mage.abilities.keyword.MeleeAbility; import mage.abilities.keyword.MeleeAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType; import mage.constants.SubType;
import mage.game.Game;
import mage.players.Player;
import java.util.Objects;
import java.util.UUID; import java.util.UUID;
/** /**
@ -33,7 +27,9 @@ public final class GrenzosRuffians extends CardImpl {
this.addAbility(new MeleeAbility()); this.addAbility(new MeleeAbility());
// Whenever Grenzo's Ruffians deals combat damage to a opponent, it deals that much damage to each other opponent. // Whenever Grenzo's Ruffians deals combat damage to a opponent, it deals that much damage to each other opponent.
this.addAbility(new DealsDamageToOpponentTriggeredAbility(new GrenzosRuffiansEffect(), false, true, true)); this.addAbility(new DealsDamageToOpponentTriggeredAbility(
new DamageEachOtherOpponentThatMuchEffect(), false, true, true
));
} }
private GrenzosRuffians(final GrenzosRuffians card) { private GrenzosRuffians(final GrenzosRuffians card) {
@ -45,40 +41,3 @@ public final class GrenzosRuffians extends CardImpl {
return new GrenzosRuffians(this); return new GrenzosRuffians(this);
} }
} }
class GrenzosRuffiansEffect extends OneShotEffect {
GrenzosRuffiansEffect() {
super(Outcome.Benefit);
this.staticText = "it deals that much damage to each other opponent";
}
private GrenzosRuffiansEffect(final GrenzosRuffiansEffect effect) {
super(effect);
}
@Override
public GrenzosRuffiansEffect copy() {
return new GrenzosRuffiansEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
UUID damagedOpponent = this.getTargetPointer().getFirst(game, source);
int amount = (Integer) getValue("damage");
MageObject object = game.getObject(source);
if (object != null && amount > 0 && damagedOpponent != null) {
for (UUID playerId : game.getOpponents(source.getControllerId())) {
if (!Objects.equals(playerId, damagedOpponent)) {
Player opponent = game.getPlayer(playerId);
if (opponent != null) {
int dealtDamage = opponent.damage(amount, source.getSourceId(), source, game);
game.informPlayers(object.getLogName() + " deals " + dealtDamage + " damage to " + opponent.getLogName());
}
}
}
return true;
}
return false;
}
}

View file

@ -1,19 +1,13 @@
package mage.cards.h; package mage.cards.h;
import mage.MageInt; import mage.MageInt;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToOpponentTriggeredAbility; import mage.abilities.common.DealsDamageToOpponentTriggeredAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageEachOtherOpponentThatMuchEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType; import mage.constants.SubType;
import mage.game.Game;
import mage.players.Player;
import java.util.Objects;
import java.util.UUID; import java.util.UUID;
/** /**
@ -29,7 +23,9 @@ public final class HydraOmnivore extends CardImpl {
this.toughness = new MageInt(8); this.toughness = new MageInt(8);
// Whenever Hydra Omnivore deals combat damage to an opponent, it deals that much damage to each other opponent. // Whenever Hydra Omnivore deals combat damage to an opponent, it deals that much damage to each other opponent.
this.addAbility(new DealsDamageToOpponentTriggeredAbility(new HydraOmnivoreEffect(), false, true, true)); this.addAbility(new DealsDamageToOpponentTriggeredAbility(
new DamageEachOtherOpponentThatMuchEffect(), false, true, true
));
} }
private HydraOmnivore(final HydraOmnivore card) { private HydraOmnivore(final HydraOmnivore card) {
@ -41,40 +37,3 @@ public final class HydraOmnivore extends CardImpl {
return new HydraOmnivore(this); return new HydraOmnivore(this);
} }
} }
class HydraOmnivoreEffect extends OneShotEffect {
HydraOmnivoreEffect() {
super(Outcome.Benefit);
this.staticText = "it deals that much damage to each other opponent";
}
private HydraOmnivoreEffect(final HydraOmnivoreEffect effect) {
super(effect);
}
@Override
public HydraOmnivoreEffect copy() {
return new HydraOmnivoreEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
UUID damagedOpponent = this.getTargetPointer().getFirst(game, source);
int amount = (Integer) getValue("damage");
MageObject object = game.getObject(source);
if (object != null && amount > 0 && damagedOpponent != null) {
for (UUID playerId : game.getOpponents(source.getControllerId())) {
if (!Objects.equals(playerId, damagedOpponent)) {
Player opponent = game.getPlayer(playerId);
if (opponent != null) {
int dealtDamage = opponent.damage(amount, source.getSourceId(), source, game);
game.informPlayers(object.getLogName() + " deals " + dealtDamage + " damage to " + opponent.getLogName());
}
}
}
return true;
}
return false;
}
}

View file

@ -0,0 +1,65 @@
package mage.cards.i;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.abilities.keyword.PersistAbility;
import mage.abilities.triggers.BeginningOfFirstMainTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.StaticFilters;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class IsiluCarrierOfTwilight extends CardImpl {
public IsiluCarrierOfTwilight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.ELEMENTAL);
this.subtype.add(SubType.GOD);
this.power = new MageInt(5);
this.toughness = new MageInt(5);
this.color.setBlack(true);
this.nightCard = true;
// Flying
this.addAbility(FlyingAbility.getInstance());
// Lifelink
this.addAbility(LifelinkAbility.getInstance());
// Each other nontoken creature you control has persist.
this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(
new PersistAbility(), Duration.WhileControlled,
StaticFilters.FILTER_CONTROLLED_CREATURE_NON_TOKEN, true
).setText("each other nontoken creature you control has persist")));
// At the beginning of your first main phase, you may pay {W}. If you do, transform Isilu.
this.addAbility(new BeginningOfFirstMainTriggeredAbility(
new DoIfCostPaid(new TransformSourceEffect(), new ManaCostsImpl<>("{W}"))
));
}
private IsiluCarrierOfTwilight(final IsiluCarrierOfTwilight card) {
super(card);
}
@Override
public IsiluCarrierOfTwilight copy() {
return new IsiluCarrierOfTwilight(this);
}
}

View file

@ -0,0 +1,91 @@
package mage.cards.j;
import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.dynamicvalue.common.SavedDamageValue;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.BloodToken;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class JawsRelentlessPredator extends CardImpl {
public JawsRelentlessPredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.SHARK);
this.power = new MageInt(5);
this.toughness = new MageInt(5);
// Trample
this.addAbility(TrampleAbility.getInstance());
// Haste
this.addAbility(HasteAbility.getInstance());
// Whenever Jaws deals combat damage to a player, create that many Blood tokens.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(
new CreateTokenEffect(new BloodToken(), SavedDamageValue.MANY)
));
// Whenever a noncreature artifact is sacrificed or destroyed, Jaws deals 1 damage to each opponent.
this.addAbility(new JawsRelentlessPredatorTriggeredAbility());
}
private JawsRelentlessPredator(final JawsRelentlessPredator card) {
super(card);
}
@Override
public JawsRelentlessPredator copy() {
return new JawsRelentlessPredator(this);
}
}
class JawsRelentlessPredatorTriggeredAbility extends TriggeredAbilityImpl {
JawsRelentlessPredatorTriggeredAbility() {
super(Zone.BATTLEFIELD, new DamagePlayersEffect(1, TargetController.OPPONENT));
setTriggerPhrase("Whenever a noncreature artifact is sacrificed or destroyed, ");
}
private JawsRelentlessPredatorTriggeredAbility(final JawsRelentlessPredatorTriggeredAbility ability) {
super(ability);
}
@Override
public JawsRelentlessPredatorTriggeredAbility copy() {
return new JawsRelentlessPredatorTriggeredAbility(this);
}
@Override
public boolean checkEventType(GameEvent event, Game game) {
switch (event.getType()) {
case SACRIFICED_PERMANENT:
case DESTROYED_PERMANENT:
return true;
default:
return false;
}
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId());
return permanent != null && !permanent.isCreature(game) && permanent.isArtifact(game);
}
}

View file

@ -0,0 +1,57 @@
package mage.cards.j;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DiesCreatureTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.MenaceAbility;
import mage.abilities.keyword.PartnerSurvivorsAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class JoelResoluteSurvivor extends CardImpl {
public JoelResoluteSurvivor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{G}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SURVIVOR);
this.power = new MageInt(4);
this.toughness = new MageInt(4);
// Menace
this.addAbility(new MenaceAbility());
// Whenever a creature token dies, put a +1/+1 counter on Joel and draw a card. This ability triggers only once each turn.
Ability ability = new DiesCreatureTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()),
false, StaticFilters.FILTER_CREATURE_TOKEN
).setTriggersLimitEachTurn(1);
ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and"));
this.addAbility(ability);
// Partner--Survivors
this.addAbility(PartnerSurvivorsAbility.getInstance());
}
private JoelResoluteSurvivor(final JoelResoluteSurvivor card) {
super(card);
}
@Override
public JoelResoluteSurvivor copy() {
return new JoelResoluteSurvivor(this);
}
}

View file

@ -6,18 +6,18 @@ import mage.abilities.common.DealsDamageToOpponentTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition; import mage.abilities.condition.Condition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.dynamicvalue.common.SavedDamageValue;
import mage.abilities.effects.common.DamageEachOtherOpponentThatMuchEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.counters.Counter; import mage.counters.Counter;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player;
import java.util.Objects; import java.util.Objects;
import java.util.UUID; import java.util.UUID;
@ -37,12 +37,16 @@ public final class KoseiPenitentWarlord extends CardImpl {
this.toughness = new MageInt(5); this.toughness = new MageInt(5);
// As long as Kosei, Penitent Warlord is enchanted, equipped, and has a counter on it, Kosei has "Whenever Kosei, Penitent Warlord deals combat damage to an opponent, you draw that many cards and Kosei deals that much damage to each other opponent." // As long as Kosei, Penitent Warlord is enchanted, equipped, and has a counter on it, Kosei has "Whenever Kosei, Penitent Warlord deals combat damage to an opponent, you draw that many cards and Kosei deals that much damage to each other opponent."
Ability ability = new DealsDamageToOpponentTriggeredAbility(
new DrawCardSourceControllerEffect(SavedDamageValue.MANY),
false, true, true
);
ability.addEffect(new DamageEachOtherOpponentThatMuchEffect()
.setText("and {this} deals that much damage to each other opponent"));
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(new DealsDamageToOpponentTriggeredAbility( new GainAbilitySourceEffect(ability), KoseiPenitentWarlordCondition.instance, "as long as " +
new KoseiPenitentWarlordEffect(), false, true, true "{this} is enchanted, equipped, and has a counter on it, {this} has \"Whenever {this} deals combat " +
)), KoseiPenitentWarlordCondition.instance, "as long as {this} is enchanted, equipped, " + "damage to an opponent, you draw that many cards and {this} deals that much damage to each other opponent.\""
"and has a counter on it, {this} has \"Whenever {this} deals combat damage to an opponent, " +
"you draw that many cards and {this} deals that much damage to each other opponent.\""
))); )));
} }
@ -82,41 +86,3 @@ enum KoseiPenitentWarlordCondition implements Condition {
.anyMatch(permanent -> permanent.hasSubtype(SubType.AURA, game)); .anyMatch(permanent -> permanent.hasSubtype(SubType.AURA, game));
} }
} }
class KoseiPenitentWarlordEffect extends OneShotEffect {
KoseiPenitentWarlordEffect() {
super(Outcome.Benefit);
staticText = "you draw that many cards and {this} deals that much damage to each other opponent";
}
private KoseiPenitentWarlordEffect(final KoseiPenitentWarlordEffect effect) {
super(effect);
}
@Override
public KoseiPenitentWarlordEffect copy() {
return new KoseiPenitentWarlordEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
int damage = (Integer) getValue("damage");
if (controller == null || damage < 1) {
return false;
}
controller.drawCards(damage, source, game);
UUID damagedOpponentId = getTargetPointer().getFirst(game, source);
for (UUID opponentId : game.getOpponents(source.getControllerId())) {
if (opponentId.equals(damagedOpponentId)) {
continue;
}
Player opponent = game.getPlayer(opponentId);
if (opponent != null) {
opponent.damage(damage, source, game);
}
}
return true;
}
}

View file

@ -0,0 +1,95 @@
package mage.cards.k;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.permanent.AttackedThisTurnPredicate;
import mage.game.Game;
import mage.players.Player;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class KratosGodOfWar extends CardImpl {
public KratosGodOfWar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{R}{R}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.GOD);
this.subtype.add(SubType.WARRIOR);
this.power = new MageInt(2);
this.toughness = new MageInt(3);
// Double strike
this.addAbility(DoubleStrikeAbility.getInstance());
// All creatures have haste.
this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(
HasteAbility.getInstance(), Duration.WhileControlled,
StaticFilters.FILTER_PERMANENT_CREATURE
).setText("all creatures have haste")));
// At the beginning of each player's end step, Kratos deals damage to that player equal to the number of creatures that player controls that didn't attack this turn.
this.addAbility(new BeginningOfEndStepTriggeredAbility(
TargetController.EACH_PLAYER, new KratosGodOfWarEffect(), false
));
}
private KratosGodOfWar(final KratosGodOfWar card) {
super(card);
}
@Override
public KratosGodOfWar copy() {
return new KratosGodOfWar(this);
}
}
class KratosGodOfWarEffect extends OneShotEffect {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent();
static {
filter.add(Predicates.not(AttackedThisTurnPredicate.instance));
}
KratosGodOfWarEffect() {
super(Outcome.Benefit);
staticText = "{this} deals damage to that player equal to the number of creatures " +
"that player controls that didn't attack this turn.";
}
private KratosGodOfWarEffect(final KratosGodOfWarEffect effect) {
super(effect);
}
@Override
public KratosGodOfWarEffect copy() {
return new KratosGodOfWarEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(game.getActivePlayerId());
if (player == null) {
return false;
}
int count = game.getBattlefield().count(filter, source.getControllerId(), source, game);
return count > 0 && player.damage(count, source, game) > 0;
}
}

View file

@ -0,0 +1,44 @@
package mage.cards.m;
import mage.abilities.effects.common.ExileReturnBattlefieldNextEndStepTargetEffect;
import mage.abilities.effects.common.ExileSpellEffect;
import mage.abilities.effects.common.PreventDamageToControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class MorningtidesLight extends CardImpl {
public MorningtidesLight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
// Exile any number of target creatures. At the beginning of the next end step, return those cards to the battlefield tapped under their owners' control.
this.getSpellAbility().addEffect(new ExileReturnBattlefieldNextEndStepTargetEffect()
.setText("exile any number of target creatures. At the beginning of the next end step, " +
"return those cards to the battlefield tapped under their owners' control"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, Integer.MAX_VALUE));
// Until your next turn, prevent all damage that would be dealt to you.
this.getSpellAbility().addEffect(new PreventDamageToControllerEffect(Duration.UntilYourNextTurn)
.setText("<br>Until your next turn, prevent all damage that would be dealt to you"));
// Exile Morningtide's Light.
this.getSpellAbility().addEffect(new ExileSpellEffect().concatBy("<br>"));
}
private MorningtidesLight(final MorningtidesLight card) {
super(card);
}
@Override
public MorningtidesLight copy() {
return new MorningtidesLight(this);
}
}

View file

@ -0,0 +1,44 @@
package mage.cards.m;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.keyword.ChangelingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.MutavaultToken;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class MutableExplorer extends CardImpl {
public MutableExplorer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
this.subtype.add(SubType.SHAPESHIFTER);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// Changeling
this.addAbility(new ChangelingAbility());
// When this creature enters, create a tapped Mutavault token.
this.addAbility(new EntersBattlefieldTriggeredAbility(
new CreateTokenEffect(new MutavaultToken(), 1, true)
));
}
private MutableExplorer(final MutableExplorer card) {
super(card);
}
@Override
public MutableExplorer copy() {
return new MutableExplorer(this);
}
}

View file

@ -1,34 +1,34 @@
package mage.cards.m; package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect; import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.abilities.mana.ColorlessManaAbility; import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone; import mage.game.permanent.token.custom.CreatureToken;
import mage.game.permanent.token.TokenImpl;
import java.util.UUID;
/** /**
*
* @author jonubuu * @author jonubuu
*/ */
public final class Mutavault extends CardImpl { public final class Mutavault extends CardImpl {
public Mutavault(UUID ownerId, CardSetInfo setInfo) { public Mutavault(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},""); super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
// {tap}: Add {C}. // {tap}: Add {C}.
this.addAbility(new ColorlessManaAbility()); this.addAbility(new ColorlessManaAbility());
// {1}: Mutavault becomes a 2/2 creature with all creature types until end of turn. It's still a land. // {1}: Mutavault becomes a 2/2 creature with all creature types until end of turn. It's still a land.
this.addAbility(new SimpleActivatedAbility( this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new BecomesCreatureSourceEffect(new MutavaultToken(), CardType.LAND, Duration.EndOfTurn), new CreatureToken(2, 2, "2/2 creature with all creature types")
new ManaCostsImpl<>("{1}"))); .withAllCreatureTypes(true),
CardType.LAND, Duration.EndOfTurn
), new GenericManaCost(1)));
} }
private Mutavault(final Mutavault card) { private Mutavault(final Mutavault card) {
@ -40,21 +40,3 @@ public final class Mutavault extends CardImpl {
return new Mutavault(this); return new Mutavault(this);
} }
} }
class MutavaultToken extends TokenImpl {
public MutavaultToken() {
super("", "2/2 creature with all creature types");
cardType.add(CardType.CREATURE);
subtype.setIsAllCreatureTypes(true);
power = new MageInt(2);
toughness = new MageInt(2);
}
private MutavaultToken(final MutavaultToken token) {
super(token);
}
public MutavaultToken copy() {
return new MutavaultToken(this);
}
}

View file

@ -0,0 +1,49 @@
package mage.cards.s;
import mage.abilities.common.EntersBattlefieldOrAttacksAllTriggeredAbility;
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.PutCards;
import mage.constants.SuperType;
import mage.constants.TargetController;
import mage.filter.FilterCard;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreatureCard;
import mage.filter.predicate.mageobject.CommanderPredicate;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class SearchForDagger extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("a legendary creature card");
private static final FilterPermanent filter2 = new FilterPermanent("you commander");
static {
filter.add(SuperType.LEGENDARY.getPredicate());
filter2.add(TargetController.YOU.getOwnerPredicate());
filter2.add(CommanderPredicate.instance);
}
public SearchForDagger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
// Whenever your commander enters or attacks, look at the top six cards of your library. You may reveal a legendary creature card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
this.addAbility(new EntersBattlefieldOrAttacksAllTriggeredAbility(new LookLibraryAndPickControllerEffect(
6, 1, filter, PutCards.HAND, PutCards.BOTTOM_RANDOM
), filter2));
}
private SearchForDagger(final SearchForDagger card) {
super(card);
}
@Override
public SearchForDagger copy() {
return new SearchForDagger(this);
}
}

View file

@ -0,0 +1,69 @@
package mage.cards.s;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.TransformIntoSourceTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.CantBeBlockedSourceAbility;
import mage.abilities.keyword.ProtectionAbility;
import mage.abilities.triggers.BeginningOfFirstMainTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterCard;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorlessPredicate;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class SyggWanderbrineShield extends CardImpl {
private static final FilterCard filter = new FilterCard("each color");
static {
filter.add(Predicates.not(ColorlessPredicate.instance));
}
public SyggWanderbrineShield(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.MERFOLK);
this.subtype.add(SubType.ROGUE);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
this.color.setWhite(true);
this.nightCard = true;
// Sygg can't be blocked.
this.addAbility(new CantBeBlockedSourceAbility());
// Whenever this creature transforms into Sygg, Wanderbrine Shield, target creature you control gains protection from each color until your next turn.
Ability ability = new TransformIntoSourceTriggeredAbility(new GainAbilityTargetEffect(new ProtectionAbility(filter)));
ability.addTarget(new TargetControlledCreaturePermanent());
this.addAbility(ability);
// At the beginning of your first main phase, you may pay {U}. If you do, transform Sygg.
this.addAbility(new BeginningOfFirstMainTriggeredAbility(
new DoIfCostPaid(new TransformSourceEffect(), new ManaCostsImpl<>("{U}"))
));
}
private SyggWanderbrineShield(final SyggWanderbrineShield card) {
super(card);
}
@Override
public SyggWanderbrineShield copy() {
return new SyggWanderbrineShield(this);
}
}

View file

@ -0,0 +1,67 @@
package mage.cards.s;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerOrPlaneswalkerTriggeredAbility;
import mage.abilities.common.TransformsOrEntersTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.CantBeBlockedSourceAbility;
import mage.abilities.keyword.TransformAbility;
import mage.abilities.triggers.BeginningOfFirstMainTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class SyggWanderwineWisdom extends CardImpl {
public SyggWanderwineWisdom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.MERFOLK);
this.subtype.add(SubType.WIZARD);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
this.secondSideCardClazz = mage.cards.s.SyggWanderbrineShield.class;
// Sygg can't be blocked.
this.addAbility(new CantBeBlockedSourceAbility());
// Whenever this creature enters or transforms into Sygg, Wanderwine Wisdom, target creature gains "Whenever this creature deals combat damage to a player or planeswalker, draw a card" until end of turn.
Ability ability = new TransformsOrEntersTriggeredAbility(new GainAbilityTargetEffect(
new DealsCombatDamageToAPlayerOrPlaneswalkerTriggeredAbility(
new DrawCardSourceControllerEffect(1), false
), Duration.EndOfTurn
), false);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
// At the beginning of your first main phase, you may pay {W}. If you do, transform Sygg.
this.addAbility(new TransformAbility());
this.addAbility(new BeginningOfFirstMainTriggeredAbility(
new DoIfCostPaid(new TransformSourceEffect(), new ManaCostsImpl<>("{W}"))
));
}
private SyggWanderwineWisdom(final SyggWanderwineWisdom card) {
super(card);
}
@Override
public SyggWanderwineWisdom copy() {
return new SyggWanderwineWisdom(this);
}
}

View file

@ -0,0 +1,68 @@
package mage.cards.t;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.condition.common.FullPartyCondition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.hint.common.PartyCountHint;
import mage.abilities.keyword.DeathtouchAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController;
import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class TheDestinedBlackMage extends CardImpl {
public TheDestinedBlackMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WIZARD);
this.power = new MageInt(3);
this.toughness = new MageInt(2);
// Deathtouch
this.addAbility(DeathtouchAbility.getInstance());
// {B}, {T}: Another target creature you control gains deathtouch until end of turn.
Ability ability = new SimpleActivatedAbility(
new GainAbilityTargetEffect(DeathtouchAbility.getInstance()), new ManaCostsImpl<>("{B}")
);
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE_YOU_CONTROL));
this.addAbility(ability);
// Whenever you cast a noncreature spell, The Destined Black Mage deals 1 damage to each opponent. If you have a full party, it deals 3 damage to each opponent instead.
this.addAbility(new SpellCastControllerTriggeredAbility(new ConditionalOneShotEffect(
new DamagePlayersEffect(3, TargetController.OPPONENT),
new DamagePlayersEffect(1, TargetController.OPPONENT),
FullPartyCondition.instance, "{this} deals 1 damage to each opponent. " +
"If you have a full party, it deals 3 damage to each opponent instead"
), StaticFilters.FILTER_SPELL_A_NON_CREATURE, false).addHint(PartyCountHint.instance));
}
private TheDestinedBlackMage(final TheDestinedBlackMage card) {
super(card);
}
@Override
public TheDestinedBlackMage copy() {
return new TheDestinedBlackMage(this);
}
}

View file

@ -0,0 +1,102 @@
package mage.cards.t;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.BatchTriggeredAbility;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.FullPartyCondition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.DrawDiscardControllerEffect;
import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect;
import mage.abilities.keyword.CantBeBlockedSourceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.events.DamagedPlayerEvent;
import mage.game.events.GameEvent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class TheDestinedThief extends CardImpl {
public TheDestinedThief(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.ROGUE);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// The Destined Thief can't be blocked.
this.addAbility(new CantBeBlockedSourceAbility());
// {U}, {T}: Another target creature you control can't be blocked this turn.
Ability ability = new SimpleActivatedAbility(new CantBeBlockedTargetEffect(), new ManaCostsImpl<>("{U}"));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE_YOU_CONTROL));
this.addAbility(ability);
// Whenever one or more creatures you control deal combat damage to one or more players, draw a card, then discard a card. If you have a full party, instead draw three cards.
this.addAbility(new TheDestinedThiefTriggeredAbility());
}
private TheDestinedThief(final TheDestinedThief card) {
super(card);
}
@Override
public TheDestinedThief copy() {
return new TheDestinedThief(this);
}
}
class TheDestinedThiefTriggeredAbility extends TriggeredAbilityImpl implements BatchTriggeredAbility<DamagedPlayerEvent> {
TheDestinedThiefTriggeredAbility() {
super(Zone.BATTLEFIELD, new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(3),
new DrawDiscardControllerEffect(1, 1),
FullPartyCondition.instance, "draw a card, then discard a card. " +
"If you have a full party, instead draw three cards"
), true);
setTriggerPhrase("Whenever one or more creatures you control deal combat damage to one or more players, ");
}
private TheDestinedThiefTriggeredAbility(final TheDestinedThiefTriggeredAbility ability) {
super(ability);
}
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PLAYERS;
}
@Override
public boolean checkEvent(DamagedPlayerEvent event, Game game) {
return event.isCombatDamage() && isControlledBy(game.getControllerId(event.getSourceId()));
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
return true;
}
@Override
public TheDestinedThiefTriggeredAbility copy() {
return new TheDestinedThiefTriggeredAbility(this);
}
}

View file

@ -0,0 +1,80 @@
package mage.cards.t;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.FullPartyCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.AddContinuousEffectToGame;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect;
import mage.abilities.hint.common.PartyCountHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.MenaceAbility;
import mage.abilities.keyword.VigilanceAbility;
import mage.abilities.triggers.BeginningOfCombatTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterCard;
import mage.filter.predicate.Predicates;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class TheDestinedWarrior extends CardImpl {
private static final FilterCard filter = new FilterCard("Cleric, Rogue, Warrior, and Wizard spells");
static {
filter.add(Predicates.or(
SubType.CLERIC.getPredicate(),
SubType.ROGUE.getPredicate(),
SubType.WARRIOR.getPredicate(),
SubType.WIZARD.getPredicate()
));
}
public TheDestinedWarrior(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{U}{B}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WARRIOR);
this.power = new MageInt(3);
this.toughness = new MageInt(3);
// First strike
this.addAbility(FirstStrikeAbility.getInstance());
// Vigilance
this.addAbility(VigilanceAbility.getInstance());
// Menace
this.addAbility(new MenaceAbility());
// Cleric, Rogue, Warrior, and Wizard spells you cast cost {1} less to cast.
this.addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect(filter, 1)));
// At the beginning of combat on your turn, creatures you control get +1/+0 until end of turn. If you have a full party, creatures you control get +3/+0 until end of turn instead.
this.addAbility(new BeginningOfCombatTriggeredAbility(new ConditionalOneShotEffect(
new AddContinuousEffectToGame(new BoostControlledEffect(3, 0, Duration.EndOfTurn)),
new AddContinuousEffectToGame(new BoostControlledEffect(1, 0, Duration.EndOfTurn)),
FullPartyCondition.instance, "creatures you control get +1/+0 until end of turn. " +
"If you have a full party, creatures you control get +3/+0 until end of turn instead"
)).addHint(PartyCountHint.instance));
}
private TheDestinedWarrior(final TheDestinedWarrior card) {
super(card);
}
@Override
public TheDestinedWarrior copy() {
return new TheDestinedWarrior(this);
}
}

View file

@ -0,0 +1,71 @@
package mage.cards.t;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.GainLifeControllerTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.FullPartyCondition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.common.PartyCountHint;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class TheDestinedWhiteMage extends CardImpl {
public TheDestinedWhiteMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.CLERIC);
this.power = new MageInt(2);
this.toughness = new MageInt(3);
// Lifelink
this.addAbility(LifelinkAbility.getInstance());
// {W}, {T}: Another target creature you control gains lifelink until end of turn.
Ability ability = new SimpleActivatedAbility(
new GainAbilityTargetEffect(LifelinkAbility.getInstance()), new ManaCostsImpl<>("{W}")
);
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE_YOU_CONTROL));
this.addAbility(ability);
// Whenever you gain life, put a +1/+1 counter on target creature you control. If you have a full party, put three +1/+1 counters on that creature instead.
ability = new GainLifeControllerTriggeredAbility(new ConditionalOneShotEffect(
new AddCountersTargetEffect(CounterType.P1P1.createInstance(3)),
new AddCountersTargetEffect(CounterType.P1P1.createInstance(1)),
FullPartyCondition.instance, "put a +1/+1 counter on target creature you control. " +
"If you have a full party, put three +1/+1 counters on that creature instead"
));
ability.addTarget(new TargetControlledCreaturePermanent());
this.addAbility(ability.addHint(PartyCountHint.instance));
}
private TheDestinedWhiteMage(final TheDestinedWhiteMage card) {
super(card);
}
@Override
public TheDestinedWhiteMage copy() {
return new TheDestinedWhiteMage(this);
}
}

View file

@ -52,7 +52,7 @@ public final class ValgavothTerrorEater extends CardImpl {
this.addAbility(LifelinkAbility.getInstance()); this.addAbility(LifelinkAbility.getInstance());
// Ward--Sacrifice three nonland permanents. // Ward--Sacrifice three nonland permanents.
this.addAbility(new WardAbility(new SacrificeTargetCost(3, StaticFilters.FILTER_PERMANENTS_NON_LAND))); this.addAbility(new WardAbility(new SacrificeTargetCost(3, StaticFilters.FILTER_PERMANENTS_NON_LAND), false));
// If a card you didn't control would be put into an opponent's graveyard from anywhere, exile it instead. // If a card you didn't control would be put into an opponent's graveyard from anywhere, exile it instead.
this.addAbility(new SimpleStaticAbility(new ValgavothTerrorEaterReplacementEffect())); this.addAbility(new SimpleStaticAbility(new ValgavothTerrorEaterReplacementEffect()));

View file

@ -5,13 +5,14 @@ import mage.MageObject;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToOpponentTriggeredAbility; import mage.abilities.common.DealsDamageToOpponentTriggeredAbility;
import mage.abilities.common.OneOrMoreCombatDamagePlayerTriggeredAbility; import mage.abilities.common.OneOrMoreCombatDamagePlayerTriggeredAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.condition.Condition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.DamageEachOtherOpponentThatMuchEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.counters.CounterType; import mage.counters.CounterType;
@ -42,9 +43,10 @@ public final class VincentVengefulAtoner extends CardImpl {
)); ));
// Chaos -- Whenever Vincent deals combat damage to an opponent, it deals that much damage to each other opponent if Vincent's power is 7 or greater. // Chaos -- Whenever Vincent deals combat damage to an opponent, it deals that much damage to each other opponent if Vincent's power is 7 or greater.
this.addAbility(new DealsDamageToOpponentTriggeredAbility( this.addAbility(new DealsDamageToOpponentTriggeredAbility(new ConditionalOneShotEffect(
new VincentVengefulAtonerEffect(), false, true, true new DamageEachOtherOpponentThatMuchEffect(), VincentVengefulAtonerCondition.instance,
).withFlavorWord("Chaos")); "it deals that much damage to each other opponent if {this}'s power is 7 or greater"
), false, true, true).withFlavorWord("Chaos"));
} }
private VincentVengefulAtoner(final VincentVengefulAtoner card) { private VincentVengefulAtoner(final VincentVengefulAtoner card) {
@ -57,42 +59,16 @@ public final class VincentVengefulAtoner extends CardImpl {
} }
} }
class VincentVengefulAtonerEffect extends OneShotEffect { enum VincentVengefulAtonerCondition implements Condition {
instance;
VincentVengefulAtonerEffect() {
super(Outcome.Benefit);
staticText = "it deals that much damage to each other opponent if {this}'s power is 7 or greater";
}
private VincentVengefulAtonerEffect(final VincentVengefulAtonerEffect effect) {
super(effect);
}
@Override
public VincentVengefulAtonerEffect copy() {
return new VincentVengefulAtonerEffect(this);
}
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
if (Optional return Optional
.ofNullable(source.getSourcePermanentOrLKI(game)) .ofNullable(source.getSourcePermanentOrLKI(game))
.map(MageObject::getPower) .map(MageObject::getPower)
.map(MageInt::getValue) .map(MageInt::getValue)
.orElse(0) < 7) { .filter(x -> x >= 7)
return false; .isPresent();
}
int amount = (Integer) getValue("damage");
if (amount < 1) {
return false;
}
UUID targetId = getTargetPointer().getFirst(game, source);
for (UUID opponentId : game.getOpponents(source.getControllerId())) {
Optional.ofNullable(opponentId)
.filter(uuid -> !uuid.equals(targetId))
.map(game::getPlayer)
.map(player -> player.damage(amount, source, game));
}
return true;
} }
} }

View file

@ -0,0 +1,58 @@
package mage.cards.w;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.TrainingAbility;
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.permanent.AttackedThisTurnPredicate;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class WarriorsResolve extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent(
"you control a creature with a +1/+1 counter on it that attacked this turn"
);
static {
filter.add(CounterType.P1P1.getPredicate());
filter.add(AttackedThisTurnPredicate.instance);
}
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter);
public WarriorsResolve(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
// Creatures you control have training.
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
new TrainingAbility(), Duration.WhileControlled, StaticFilters.FILTER_PERMANENT_CREATURES
)));
// At the beginning of your end step, if you control a creature with a +1/+1 counter on it that attacked this turn, draw a card.
this.addAbility(new BeginningOfEndStepTriggeredAbility(new DrawCardSourceControllerEffect(1)).withInterveningIf(condition));
}
private WarriorsResolve(final WarriorsResolve card) {
super(card);
}
@Override
public WarriorsResolve copy() {
return new WarriorsResolve(this);
}
}

View file

@ -25,6 +25,7 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("A Realm Reborn", 196, Rarity.RARE, mage.cards.a.ARealmReborn.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("A Realm Reborn", 196, Rarity.RARE, mage.cards.a.ARealmReborn.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("A Realm Reborn", 344, Rarity.RARE, mage.cards.a.ARealmReborn.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("A Realm Reborn", 344, Rarity.RARE, mage.cards.a.ARealmReborn.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("A Realm Reborn", 566, Rarity.RARE, mage.cards.a.ARealmReborn.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Absolute Virtue", 212, Rarity.MYTHIC, mage.cards.a.AbsoluteVirtue.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Absolute Virtue", 212, Rarity.MYTHIC, mage.cards.a.AbsoluteVirtue.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Absolute Virtue", 476, Rarity.MYTHIC, mage.cards.a.AbsoluteVirtue.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Absolute Virtue", 476, Rarity.MYTHIC, mage.cards.a.AbsoluteVirtue.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Adelbert Steiner", 3, Rarity.UNCOMMON, mage.cards.a.AdelbertSteiner.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Adelbert Steiner", 3, Rarity.UNCOMMON, mage.cards.a.AdelbertSteiner.class, NON_FULL_USE_VARIOUS));
@ -107,6 +108,7 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Chaos, the Endless", 486, Rarity.UNCOMMON, mage.cards.c.ChaosTheEndless.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Chaos, the Endless", 486, Rarity.UNCOMMON, mage.cards.c.ChaosTheEndless.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Choco, Seeker of Paradise", 215, Rarity.RARE, mage.cards.c.ChocoSeekerOfParadise.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Choco, Seeker of Paradise", 215, Rarity.RARE, mage.cards.c.ChocoSeekerOfParadise.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Choco, Seeker of Paradise", 479, Rarity.RARE, mage.cards.c.ChocoSeekerOfParadise.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Choco, Seeker of Paradise", 479, Rarity.RARE, mage.cards.c.ChocoSeekerOfParadise.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Choco, Seeker of Paradise", 569, Rarity.RARE, mage.cards.c.ChocoSeekerOfParadise.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Choco-Comet", 132, Rarity.UNCOMMON, mage.cards.c.ChocoComet.class)); cards.add(new SetCardInfo("Choco-Comet", 132, Rarity.UNCOMMON, mage.cards.c.ChocoComet.class));
cards.add(new SetCardInfo("Chocobo Kick", 178, Rarity.COMMON, mage.cards.c.ChocoboKick.class)); cards.add(new SetCardInfo("Chocobo Kick", 178, Rarity.COMMON, mage.cards.c.ChocoboKick.class));
cards.add(new SetCardInfo("Chocobo Racetrack", 179, Rarity.UNCOMMON, mage.cards.c.ChocoboRacetrack.class)); cards.add(new SetCardInfo("Chocobo Racetrack", 179, Rarity.UNCOMMON, mage.cards.c.ChocoboRacetrack.class));
@ -142,6 +144,7 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Cloud, Midgar Mercenary", 375, Rarity.MYTHIC, mage.cards.c.CloudMidgarMercenary.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Cloud, Midgar Mercenary", 375, Rarity.MYTHIC, mage.cards.c.CloudMidgarMercenary.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cloud, Midgar Mercenary", 427, Rarity.MYTHIC, mage.cards.c.CloudMidgarMercenary.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Cloud, Midgar Mercenary", 427, Rarity.MYTHIC, mage.cards.c.CloudMidgarMercenary.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cloud, Midgar Mercenary", 520, Rarity.MYTHIC, mage.cards.c.CloudMidgarMercenary.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Cloud, Midgar Mercenary", 520, Rarity.MYTHIC, mage.cards.c.CloudMidgarMercenary.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cloud, Midgar Mercenary", 564, Rarity.MYTHIC, mage.cards.c.CloudMidgarMercenary.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cloud, Planet's Champion", 482, Rarity.MYTHIC, mage.cards.c.CloudPlanetsChampion.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Cloud, Planet's Champion", 482, Rarity.MYTHIC, mage.cards.c.CloudPlanetsChampion.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cloud, Planet's Champion", 552, Rarity.MYTHIC, mage.cards.c.CloudPlanetsChampion.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Cloud, Planet's Champion", 552, Rarity.MYTHIC, mage.cards.c.CloudPlanetsChampion.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cloudbound Moogle", 11, Rarity.COMMON, mage.cards.c.CloudboundMoogle.class)); cards.add(new SetCardInfo("Cloudbound Moogle", 11, Rarity.COMMON, mage.cards.c.CloudboundMoogle.class));
@ -503,6 +506,7 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Stiltzkin, Moogle Merchant", 327, Rarity.RARE, mage.cards.s.StiltzkinMoogleMerchant.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Stiltzkin, Moogle Merchant", 327, Rarity.RARE, mage.cards.s.StiltzkinMoogleMerchant.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Stiltzkin, Moogle Merchant", 34, Rarity.RARE, mage.cards.s.StiltzkinMoogleMerchant.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Stiltzkin, Moogle Merchant", 34, Rarity.RARE, mage.cards.s.StiltzkinMoogleMerchant.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Stiltzkin, Moogle Merchant", 433, Rarity.RARE, mage.cards.s.StiltzkinMoogleMerchant.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Stiltzkin, Moogle Merchant", 433, Rarity.RARE, mage.cards.s.StiltzkinMoogleMerchant.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Stiltzkin, Moogle Merchant", 565, Rarity.RARE, mage.cards.s.StiltzkinMoogleMerchant.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Stolen Uniform", 332, Rarity.UNCOMMON, mage.cards.s.StolenUniform.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Stolen Uniform", 332, Rarity.UNCOMMON, mage.cards.s.StolenUniform.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Stolen Uniform", 75, Rarity.UNCOMMON, mage.cards.s.StolenUniform.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Stolen Uniform", 75, Rarity.UNCOMMON, mage.cards.s.StolenUniform.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Stuck in Summoner's Sanctum", 76, Rarity.COMMON, mage.cards.s.StuckInSummonersSanctum.class)); cards.add(new SetCardInfo("Stuck in Summoner's Sanctum", 76, Rarity.COMMON, mage.cards.s.StuckInSummonersSanctum.class));
@ -588,6 +592,7 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Tifa Lockhart", 391, Rarity.RARE, mage.cards.t.TifaLockhart.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Tifa Lockhart", 391, Rarity.RARE, mage.cards.t.TifaLockhart.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Tifa Lockhart", 473, Rarity.RARE, mage.cards.t.TifaLockhart.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Tifa Lockhart", 473, Rarity.RARE, mage.cards.t.TifaLockhart.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Tifa Lockhart", 536, Rarity.RARE, mage.cards.t.TifaLockhart.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Tifa Lockhart", 536, Rarity.RARE, mage.cards.t.TifaLockhart.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Tifa Lockhart", 567, Rarity.RARE, mage.cards.t.TifaLockhart.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Tifa's Limit Break", 207, Rarity.UNCOMMON, mage.cards.t.TifasLimitBreak.class)); cards.add(new SetCardInfo("Tifa's Limit Break", 207, Rarity.UNCOMMON, mage.cards.t.TifasLimitBreak.class));
cards.add(new SetCardInfo("Tonberry", 122, Rarity.UNCOMMON, mage.cards.t.Tonberry.class)); cards.add(new SetCardInfo("Tonberry", 122, Rarity.UNCOMMON, mage.cards.t.Tonberry.class));
cards.add(new SetCardInfo("Torgal, A Fine Hound", 208, Rarity.UNCOMMON, mage.cards.t.TorgalAFineHound.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Torgal, A Fine Hound", 208, Rarity.UNCOMMON, mage.cards.t.TorgalAFineHound.class, NON_FULL_USE_VARIOUS));
@ -607,6 +612,7 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Traveling Chocobo", 210, Rarity.MYTHIC, mage.cards.t.TravelingChocobo.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Traveling Chocobo", 210, Rarity.MYTHIC, mage.cards.t.TravelingChocobo.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Traveling Chocobo", 406, Rarity.MYTHIC, mage.cards.t.TravelingChocobo.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Traveling Chocobo", 406, Rarity.MYTHIC, mage.cards.t.TravelingChocobo.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Traveling Chocobo", 551, Rarity.MYTHIC, mage.cards.t.TravelingChocobo.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Traveling Chocobo", 551, Rarity.MYTHIC, mage.cards.t.TravelingChocobo.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Traveling Chocobo", 568, Rarity.MYTHIC, mage.cards.t.TravelingChocobo.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Treno, Dark City", 290, Rarity.COMMON, mage.cards.t.TrenoDarkCity.class)); cards.add(new SetCardInfo("Treno, Dark City", 290, Rarity.COMMON, mage.cards.t.TrenoDarkCity.class));
cards.add(new SetCardInfo("Triple Triad", 166, Rarity.RARE, mage.cards.t.TripleTriad.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Triple Triad", 166, Rarity.RARE, mage.cards.t.TripleTriad.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Triple Triad", 340, Rarity.RARE, mage.cards.t.TripleTriad.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Triple Triad", 340, Rarity.RARE, mage.cards.t.TripleTriad.class, NON_FULL_USE_VARIOUS));
@ -648,6 +654,7 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Vivi Ornitier", 248, Rarity.MYTHIC, mage.cards.v.ViviOrnitier.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Vivi Ornitier", 248, Rarity.MYTHIC, mage.cards.v.ViviOrnitier.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Vivi Ornitier", 321, Rarity.MYTHIC, mage.cards.v.ViviOrnitier.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Vivi Ornitier", 321, Rarity.MYTHIC, mage.cards.v.ViviOrnitier.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Vivi Ornitier", 514, Rarity.MYTHIC, mage.cards.v.ViviOrnitier.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Vivi Ornitier", 514, Rarity.MYTHIC, mage.cards.v.ViviOrnitier.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Vivi Ornitier", 570, Rarity.MYTHIC, mage.cards.v.ViviOrnitier.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Warrior's Sword", 169, Rarity.COMMON, mage.cards.w.WarriorsSword.class)); cards.add(new SetCardInfo("Warrior's Sword", 169, Rarity.COMMON, mage.cards.w.WarriorsSword.class));
cards.add(new SetCardInfo("Wastes", 309, Rarity.COMMON, mage.cards.w.Wastes.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Wastes", 309, Rarity.COMMON, mage.cards.w.Wastes.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Weapons Vendor", 40, Rarity.COMMON, mage.cards.w.WeaponsVendor.class)); cards.add(new SetCardInfo("Weapons Vendor", 40, Rarity.COMMON, mage.cards.w.WeaponsVendor.class));
@ -669,6 +676,7 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Yuna, Hope of Spira", 404, Rarity.MYTHIC, mage.cards.y.YunaHopeOfSpira.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Yuna, Hope of Spira", 404, Rarity.MYTHIC, mage.cards.y.YunaHopeOfSpira.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Yuna, Hope of Spira", 517, Rarity.MYTHIC, mage.cards.y.YunaHopeOfSpira.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Yuna, Hope of Spira", 517, Rarity.MYTHIC, mage.cards.y.YunaHopeOfSpira.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Yuna, Hope of Spira", 549, Rarity.MYTHIC, mage.cards.y.YunaHopeOfSpira.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Yuna, Hope of Spira", 549, Rarity.MYTHIC, mage.cards.y.YunaHopeOfSpira.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Yuna, Hope of Spira", 571, Rarity.MYTHIC, mage.cards.y.YunaHopeOfSpira.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Zack Fair", 435, Rarity.UNCOMMON, mage.cards.z.ZackFair.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Zack Fair", 435, Rarity.UNCOMMON, mage.cards.z.ZackFair.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Zack Fair", 45, Rarity.UNCOMMON, mage.cards.z.ZackFair.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Zack Fair", 45, Rarity.UNCOMMON, mage.cards.z.ZackFair.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Zack Fair", 580, Rarity.UNCOMMON, mage.cards.z.ZackFair.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Zack Fair", 580, Rarity.UNCOMMON, mage.cards.z.ZackFair.class, NON_FULL_USE_VARIOUS));

View file

@ -17,15 +17,17 @@ public final class FinalFantasyCommander extends ExpansionSet {
private FinalFantasyCommander() { private FinalFantasyCommander() {
super("Final Fantasy Commander", "FIC", ExpansionSet.buildDate(2025, 6, 13), SetType.SUPPLEMENTAL); super("Final Fantasy Commander", "FIC", ExpansionSet.buildDate(2025, 6, 13), SetType.SUPPLEMENTAL);
this.hasBasicLands = false; this.hasBasicLands = true;
cards.add(new SetCardInfo("Aerith, Last Ancient", 163, Rarity.RARE, mage.cards.a.AerithLastAncient.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Aerith, Last Ancient", 163, Rarity.RARE, mage.cards.a.AerithLastAncient.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Aerith, Last Ancient", 471, Rarity.RARE, mage.cards.a.AerithLastAncient.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Aerith, Last Ancient", 76, Rarity.RARE, mage.cards.a.AerithLastAncient.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Aerith, Last Ancient", 76, Rarity.RARE, mage.cards.a.AerithLastAncient.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Alisaie Leveilleur", 129, Rarity.RARE, mage.cards.a.AlisaieLeveilleur.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Alisaie Leveilleur", 129, Rarity.RARE, mage.cards.a.AlisaieLeveilleur.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Alisaie Leveilleur", 9, Rarity.RARE, mage.cards.a.AlisaieLeveilleur.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Alisaie Leveilleur", 9, Rarity.RARE, mage.cards.a.AlisaieLeveilleur.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Alphinaud Leveilleur", 140, Rarity.RARE, mage.cards.a.AlphinaudLeveilleur.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Alphinaud Leveilleur", 140, Rarity.RARE, mage.cards.a.AlphinaudLeveilleur.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Alphinaud Leveilleur", 33, Rarity.RARE, mage.cards.a.AlphinaudLeveilleur.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Alphinaud Leveilleur", 33, Rarity.RARE, mage.cards.a.AlphinaudLeveilleur.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Altered Ego", 317, Rarity.RARE, mage.cards.a.AlteredEgo.class)); cards.add(new SetCardInfo("Altered Ego", 317, Rarity.RARE, mage.cards.a.AlteredEgo.class));
cards.add(new SetCardInfo("Amarant Coral", 457, Rarity.RARE, mage.cards.a.AmarantCoral.class));
cards.add(new SetCardInfo("An Offer You Can't Refuse", 267, Rarity.UNCOMMON, mage.cards.a.AnOfferYouCantRefuse.class)); cards.add(new SetCardInfo("An Offer You Can't Refuse", 267, Rarity.UNCOMMON, mage.cards.a.AnOfferYouCantRefuse.class));
cards.add(new SetCardInfo("Angel of the Ruins", 229, Rarity.UNCOMMON, mage.cards.a.AngelOfTheRuins.class)); cards.add(new SetCardInfo("Angel of the Ruins", 229, Rarity.UNCOMMON, mage.cards.a.AngelOfTheRuins.class));
cards.add(new SetCardInfo("Anger", 289, Rarity.UNCOMMON, mage.cards.a.Anger.class)); cards.add(new SetCardInfo("Anger", 289, Rarity.UNCOMMON, mage.cards.a.Anger.class));
@ -49,9 +51,10 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Avalanche of Sector 7", 53, Rarity.RARE, mage.cards.a.AvalancheOfSector7.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Avalanche of Sector 7", 53, Rarity.RARE, mage.cards.a.AvalancheOfSector7.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Baleful Strix", 318, Rarity.RARE, mage.cards.b.BalefulStrix.class)); cards.add(new SetCardInfo("Baleful Strix", 318, Rarity.RARE, mage.cards.b.BalefulStrix.class));
cards.add(new SetCardInfo("Bane of Progress", 299, Rarity.RARE, mage.cards.b.BaneOfProgress.class)); cards.add(new SetCardInfo("Bane of Progress", 299, Rarity.RARE, mage.cards.b.BaneOfProgress.class));
cards.add(new SetCardInfo("Banon, the Returners' Leader", 78, Rarity.RARE, mage.cards.b.BanonTheReturnersLeader.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Banon, the Returners' Leader", 165, Rarity.RARE, mage.cards.b.BanonTheReturnersLeader.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Banon, the Returners' Leader", 165, Rarity.RARE, mage.cards.b.BanonTheReturnersLeader.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Banon, the Returners' Leader", 78, Rarity.RARE, mage.cards.b.BanonTheReturnersLeader.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Barret, Avalanche Leader", 166, Rarity.RARE, mage.cards.b.BarretAvalancheLeader.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Barret, Avalanche Leader", 166, Rarity.RARE, mage.cards.b.BarretAvalancheLeader.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Barret, Avalanche Leader", 472, Rarity.RARE, mage.cards.b.BarretAvalancheLeader.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Barret, Avalanche Leader", 79, Rarity.RARE, mage.cards.b.BarretAvalancheLeader.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Barret, Avalanche Leader", 79, Rarity.RARE, mage.cards.b.BarretAvalancheLeader.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Bastion Protector", 233, Rarity.RARE, mage.cards.b.BastionProtector.class)); cards.add(new SetCardInfo("Bastion Protector", 233, Rarity.RARE, mage.cards.b.BastionProtector.class));
cards.add(new SetCardInfo("Bastion of Remembrance", 274, Rarity.UNCOMMON, mage.cards.b.BastionOfRemembrance.class)); cards.add(new SetCardInfo("Bastion of Remembrance", 274, Rarity.UNCOMMON, mage.cards.b.BastionOfRemembrance.class));
@ -59,18 +62,21 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Bedevil", 319, Rarity.RARE, mage.cards.b.Bedevil.class)); cards.add(new SetCardInfo("Bedevil", 319, Rarity.RARE, mage.cards.b.Bedevil.class));
cards.add(new SetCardInfo("Behemoth Sledge", 320, Rarity.UNCOMMON, mage.cards.b.BehemothSledge.class)); cards.add(new SetCardInfo("Behemoth Sledge", 320, Rarity.UNCOMMON, mage.cards.b.BehemothSledge.class));
cards.add(new SetCardInfo("Big Score", 290, Rarity.COMMON, mage.cards.b.BigScore.class)); cards.add(new SetCardInfo("Big Score", 290, Rarity.COMMON, mage.cards.b.BigScore.class));
cards.add(new SetCardInfo("Blitzball Stadium", 34, Rarity.RARE, mage.cards.b.BlitzballStadium.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Birds of Paradise", 483, Rarity.RARE, mage.cards.b.BirdsOfParadise.class));
cards.add(new SetCardInfo("Blitzball Stadium", 111, Rarity.RARE, mage.cards.b.BlitzballStadium.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Blitzball Stadium", 111, Rarity.RARE, mage.cards.b.BlitzballStadium.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Blitzball Stadium", 34, Rarity.RARE, mage.cards.b.BlitzballStadium.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Blue Mage's Cane", 112, Rarity.RARE, mage.cards.b.BlueMagesCane.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Blue Mage's Cane", 112, Rarity.RARE, mage.cards.b.BlueMagesCane.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Blue Mage's Cane", 35, Rarity.RARE, mage.cards.b.BlueMagesCane.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Blue Mage's Cane", 35, Rarity.RARE, mage.cards.b.BlueMagesCane.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Bonders' Enclave", 376, Rarity.RARE, mage.cards.b.BondersEnclave.class)); cards.add(new SetCardInfo("Bonders' Enclave", 376, Rarity.RARE, mage.cards.b.BondersEnclave.class));
cards.add(new SetCardInfo("Bred for the Hunt", 321, Rarity.UNCOMMON, mage.cards.b.BredForTheHunt.class)); cards.add(new SetCardInfo("Bred for the Hunt", 321, Rarity.UNCOMMON, mage.cards.b.BredForTheHunt.class));
cards.add(new SetCardInfo("Brilliant Wings", 454, Rarity.RARE, mage.cards.b.BrilliantWings.class));
cards.add(new SetCardInfo("Bronze Guardian", 234, Rarity.RARE, mage.cards.b.BronzeGuardian.class)); cards.add(new SetCardInfo("Bronze Guardian", 234, Rarity.RARE, mage.cards.b.BronzeGuardian.class));
cards.add(new SetCardInfo("Brushland", 377, Rarity.RARE, mage.cards.b.Brushland.class)); cards.add(new SetCardInfo("Brushland", 377, Rarity.RARE, mage.cards.b.Brushland.class));
cards.add(new SetCardInfo("Bugenhagen, Wise Elder", 159, Rarity.RARE, mage.cards.b.BugenhagenWiseElder.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Bugenhagen, Wise Elder", 159, Rarity.RARE, mage.cards.b.BugenhagenWiseElder.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Bugenhagen, Wise Elder", 66, Rarity.RARE, mage.cards.b.BugenhagenWiseElder.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Bugenhagen, Wise Elder", 66, Rarity.RARE, mage.cards.b.BugenhagenWiseElder.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cait Sith, Fortune Teller", 151, Rarity.RARE, mage.cards.c.CaitSithFortuneTeller.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Cait Sith, Fortune Teller", 151, Rarity.RARE, mage.cards.c.CaitSithFortuneTeller.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cait Sith, Fortune Teller", 54, Rarity.RARE, mage.cards.c.CaitSithFortuneTeller.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Cait Sith, Fortune Teller", 54, Rarity.RARE, mage.cards.c.CaitSithFortuneTeller.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Campsite Cuisine", 464, Rarity.RARE, mage.cards.c.CampsiteCuisine.class));
cards.add(new SetCardInfo("Canopy Vista", 378, Rarity.RARE, mage.cards.c.CanopyVista.class)); cards.add(new SetCardInfo("Canopy Vista", 378, Rarity.RARE, mage.cards.c.CanopyVista.class));
cards.add(new SetCardInfo("Celes, Rune Knight", 1, Rarity.MYTHIC, mage.cards.c.CelesRuneKnight.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Celes, Rune Knight", 1, Rarity.MYTHIC, mage.cards.c.CelesRuneKnight.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Celes, Rune Knight", 167, Rarity.MYTHIC, mage.cards.c.CelesRuneKnight.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Celes, Rune Knight", 167, Rarity.MYTHIC, mage.cards.c.CelesRuneKnight.class, NON_FULL_USE_VARIOUS));
@ -98,8 +104,8 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Cloud, Ex-SOLDIER", 202, Rarity.MYTHIC, mage.cards.c.CloudExSOLDIER.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Cloud, Ex-SOLDIER", 202, Rarity.MYTHIC, mage.cards.c.CloudExSOLDIER.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cloud, Ex-SOLDIER", 210, Rarity.MYTHIC, mage.cards.c.CloudExSOLDIER.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Cloud, Ex-SOLDIER", 210, Rarity.MYTHIC, mage.cards.c.CloudExSOLDIER.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cloud, Ex-SOLDIER", 221, Rarity.MYTHIC, mage.cards.c.CloudExSOLDIER.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Cloud, Ex-SOLDIER", 221, Rarity.MYTHIC, mage.cards.c.CloudExSOLDIER.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Coin of Fate", 15, Rarity.RARE, mage.cards.c.CoinOfFate.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Coin of Fate", 104, Rarity.RARE, mage.cards.c.CoinOfFate.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Coin of Fate", 104, Rarity.RARE, mage.cards.c.CoinOfFate.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Coin of Fate", 15, Rarity.RARE, mage.cards.c.CoinOfFate.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Collective Effort", 237, Rarity.RARE, mage.cards.c.CollectiveEffort.class)); cards.add(new SetCardInfo("Collective Effort", 237, Rarity.RARE, mage.cards.c.CollectiveEffort.class));
cards.add(new SetCardInfo("Colossus Hammer", 338, Rarity.UNCOMMON, mage.cards.c.ColossusHammer.class)); cards.add(new SetCardInfo("Colossus Hammer", 338, Rarity.UNCOMMON, mage.cards.c.ColossusHammer.class));
cards.add(new SetCardInfo("Combustible Gearhulk", 292, Rarity.MYTHIC, mage.cards.c.CombustibleGearhulk.class)); cards.add(new SetCardInfo("Combustible Gearhulk", 292, Rarity.MYTHIC, mage.cards.c.CombustibleGearhulk.class));
@ -132,17 +138,20 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Dispatch", 241, Rarity.UNCOMMON, mage.cards.d.Dispatch.class)); cards.add(new SetCardInfo("Dispatch", 241, Rarity.UNCOMMON, mage.cards.d.Dispatch.class));
cards.add(new SetCardInfo("Dragonskull Summit", 387, Rarity.RARE, mage.cards.d.DragonskullSummit.class)); cards.add(new SetCardInfo("Dragonskull Summit", 387, Rarity.RARE, mage.cards.d.DragonskullSummit.class));
cards.add(new SetCardInfo("Drowned Catacomb", 388, Rarity.RARE, mage.cards.d.DrownedCatacomb.class)); cards.add(new SetCardInfo("Drowned Catacomb", 388, Rarity.RARE, mage.cards.d.DrownedCatacomb.class));
cards.add(new SetCardInfo("Duelist's Flame", 452, Rarity.RARE, mage.cards.d.DuelistsFlame.class));
cards.add(new SetCardInfo("Duskshell Crawler", 301, Rarity.COMMON, mage.cards.d.DuskshellCrawler.class)); cards.add(new SetCardInfo("Duskshell Crawler", 301, Rarity.COMMON, mage.cards.d.DuskshellCrawler.class));
cards.add(new SetCardInfo("Edgar, Master Machinist", 169, Rarity.RARE, mage.cards.e.EdgarMasterMachinist.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Edgar, Master Machinist", 169, Rarity.RARE, mage.cards.e.EdgarMasterMachinist.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Edgar, Master Machinist", 80, Rarity.RARE, mage.cards.e.EdgarMasterMachinist.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Edgar, Master Machinist", 80, Rarity.RARE, mage.cards.e.EdgarMasterMachinist.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Elena, Turk Recruit", 133, Rarity.RARE, mage.cards.e.ElenaTurkRecruit.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Elena, Turk Recruit", 133, Rarity.RARE, mage.cards.e.ElenaTurkRecruit.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Elena, Turk Recruit", 18, Rarity.RARE, mage.cards.e.ElenaTurkRecruit.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Elena, Turk Recruit", 18, Rarity.RARE, mage.cards.e.ElenaTurkRecruit.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Emet-Selch of the Third Seat", 170, Rarity.RARE, mage.cards.e.EmetSelchOfTheThirdSeat.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Emet-Selch of the Third Seat", 170, Rarity.RARE, mage.cards.e.EmetSelchOfTheThirdSeat.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Emet-Selch of the Third Seat", 473, Rarity.RARE, mage.cards.e.EmetSelchOfTheThirdSeat.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Emet-Selch of the Third Seat", 81, Rarity.RARE, mage.cards.e.EmetSelchOfTheThirdSeat.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Emet-Selch of the Third Seat", 81, Rarity.RARE, mage.cards.e.EmetSelchOfTheThirdSeat.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Endless Detour", 324, Rarity.RARE, mage.cards.e.EndlessDetour.class)); cards.add(new SetCardInfo("Endless Detour", 324, Rarity.RARE, mage.cards.e.EndlessDetour.class));
cards.add(new SetCardInfo("Espers to Magicite", 114, Rarity.RARE, mage.cards.e.EspersToMagicite.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Espers to Magicite", 114, Rarity.RARE, mage.cards.e.EspersToMagicite.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Espers to Magicite", 43, Rarity.RARE, mage.cards.e.EspersToMagicite.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Espers to Magicite", 43, Rarity.RARE, mage.cards.e.EspersToMagicite.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Estinien Varlineau", 171, Rarity.RARE, mage.cards.e.EstinienVarlineau.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Estinien Varlineau", 171, Rarity.RARE, mage.cards.e.EstinienVarlineau.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Estinien Varlineau", 474, Rarity.RARE, mage.cards.e.EstinienVarlineau.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Estinien Varlineau", 82, Rarity.RARE, mage.cards.e.EstinienVarlineau.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Estinien Varlineau", 82, Rarity.RARE, mage.cards.e.EstinienVarlineau.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Everflowing Chalice", 343, Rarity.UNCOMMON, mage.cards.e.EverflowingChalice.class)); cards.add(new SetCardInfo("Everflowing Chalice", 343, Rarity.UNCOMMON, mage.cards.e.EverflowingChalice.class));
cards.add(new SetCardInfo("Evolving Wilds", 389, Rarity.COMMON, mage.cards.e.EvolvingWilds.class)); cards.add(new SetCardInfo("Evolving Wilds", 389, Rarity.COMMON, mage.cards.e.EvolvingWilds.class));
@ -155,14 +164,17 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Fandaniel, Telophoroi Ascian", 46, Rarity.RARE, mage.cards.f.FandanielTelophoroiAscian.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Fandaniel, Telophoroi Ascian", 46, Rarity.RARE, mage.cards.f.FandanielTelophoroiAscian.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Farewell", 242, Rarity.RARE, mage.cards.f.Farewell.class)); cards.add(new SetCardInfo("Farewell", 242, Rarity.RARE, mage.cards.f.Farewell.class));
cards.add(new SetCardInfo("Farseek", 302, Rarity.COMMON, mage.cards.f.Farseek.class)); cards.add(new SetCardInfo("Farseek", 302, Rarity.COMMON, mage.cards.f.Farseek.class));
cards.add(new SetCardInfo("Fated Clash", 449, Rarity.RARE, mage.cards.f.FatedClash.class));
cards.add(new SetCardInfo("Fathom Mage", 325, Rarity.RARE, mage.cards.f.FathomMage.class)); cards.add(new SetCardInfo("Fathom Mage", 325, Rarity.RARE, mage.cards.f.FathomMage.class));
cards.add(new SetCardInfo("Fetid Heath", 391, Rarity.RARE, mage.cards.f.FetidHeath.class)); cards.add(new SetCardInfo("Fetid Heath", 391, Rarity.RARE, mage.cards.f.FetidHeath.class));
cards.add(new SetCardInfo("Fight Rigging", 303, Rarity.RARE, mage.cards.f.FightRigging.class)); cards.add(new SetCardInfo("Fight Rigging", 303, Rarity.RARE, mage.cards.f.FightRigging.class));
cards.add(new SetCardInfo("Final Judgment", 243, Rarity.MYTHIC, mage.cards.f.FinalJudgment.class)); cards.add(new SetCardInfo("Final Judgment", 243, Rarity.MYTHIC, mage.cards.f.FinalJudgment.class));
cards.add(new SetCardInfo("Fire-Lit Thicket", 392, Rarity.RARE, mage.cards.f.FireLitThicket.class)); cards.add(new SetCardInfo("Fire-Lit Thicket", 392, Rarity.RARE, mage.cards.f.FireLitThicket.class));
cards.add(new SetCardInfo("Flash Photography", 463, Rarity.RARE, mage.cards.f.FlashPhotography.class));
cards.add(new SetCardInfo("Flayer of the Hatebound", 293, Rarity.RARE, mage.cards.f.FlayerOfTheHatebound.class)); cards.add(new SetCardInfo("Flayer of the Hatebound", 293, Rarity.RARE, mage.cards.f.FlayerOfTheHatebound.class));
cards.add(new SetCardInfo("Flooded Grove", 393, Rarity.RARE, mage.cards.f.FloodedGrove.class)); cards.add(new SetCardInfo("Flooded Grove", 393, Rarity.RARE, mage.cards.f.FloodedGrove.class));
cards.add(new SetCardInfo("Foreboding Ruins", 394, Rarity.RARE, mage.cards.f.ForebodingRuins.class)); cards.add(new SetCardInfo("Foreboding Ruins", 394, Rarity.RARE, mage.cards.f.ForebodingRuins.class));
cards.add(new SetCardInfo("Forest", 482, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Forge of Heroes", 395, Rarity.COMMON, mage.cards.f.ForgeOfHeroes.class)); cards.add(new SetCardInfo("Forge of Heroes", 395, Rarity.COMMON, mage.cards.f.ForgeOfHeroes.class));
cards.add(new SetCardInfo("Forgotten Ancient", 304, Rarity.RARE, mage.cards.f.ForgottenAncient.class)); cards.add(new SetCardInfo("Forgotten Ancient", 304, Rarity.RARE, mage.cards.f.ForgottenAncient.class));
cards.add(new SetCardInfo("Fortified Village", 396, Rarity.RARE, mage.cards.f.FortifiedVillage.class)); cards.add(new SetCardInfo("Fortified Village", 396, Rarity.RARE, mage.cards.f.FortifiedVillage.class));
@ -215,6 +227,7 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Interceptor, Shadow's Hound", 147, Rarity.RARE, mage.cards.i.InterceptorShadowsHound.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Interceptor, Shadow's Hound", 147, Rarity.RARE, mage.cards.i.InterceptorShadowsHound.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Interceptor, Shadow's Hound", 47, Rarity.RARE, mage.cards.i.InterceptorShadowsHound.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Interceptor, Shadow's Hound", 47, Rarity.RARE, mage.cards.i.InterceptorShadowsHound.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Into the Story", 266, Rarity.UNCOMMON, mage.cards.i.IntoTheStory.class)); cards.add(new SetCardInfo("Into the Story", 266, Rarity.UNCOMMON, mage.cards.i.IntoTheStory.class));
cards.add(new SetCardInfo("Island", 479, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Isolated Chapel", 405, Rarity.RARE, mage.cards.i.IsolatedChapel.class)); cards.add(new SetCardInfo("Isolated Chapel", 405, Rarity.RARE, mage.cards.i.IsolatedChapel.class));
cards.add(new SetCardInfo("Jungle Shrine", 406, Rarity.UNCOMMON, mage.cards.j.JungleShrine.class)); cards.add(new SetCardInfo("Jungle Shrine", 406, Rarity.UNCOMMON, mage.cards.j.JungleShrine.class));
cards.add(new SetCardInfo("Kefka, Dancing Mad", 174, Rarity.RARE, mage.cards.k.KefkaDancingMad.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Kefka, Dancing Mad", 174, Rarity.RARE, mage.cards.k.KefkaDancingMad.class, NON_FULL_USE_VARIOUS));
@ -231,11 +244,13 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Lightning Greaves", 349, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class)); cards.add(new SetCardInfo("Lightning Greaves", 349, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class));
cards.add(new SetCardInfo("Lingering Souls", 245, Rarity.UNCOMMON, mage.cards.l.LingeringSouls.class)); cards.add(new SetCardInfo("Lingering Souls", 245, Rarity.UNCOMMON, mage.cards.l.LingeringSouls.class));
cards.add(new SetCardInfo("Locke, Treasure Hunter", 177, Rarity.RARE, mage.cards.l.LockeTreasureHunter.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Locke, Treasure Hunter", 177, Rarity.RARE, mage.cards.l.LockeTreasureHunter.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Locke, Treasure Hunter", 475, Rarity.RARE, mage.cards.l.LockeTreasureHunter.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Locke, Treasure Hunter", 87, Rarity.RARE, mage.cards.l.LockeTreasureHunter.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Locke, Treasure Hunter", 87, Rarity.RARE, mage.cards.l.LockeTreasureHunter.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lord Jyscal Guado", 137, Rarity.RARE, mage.cards.l.LordJyscalGuado.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Lord Jyscal Guado", 137, Rarity.RARE, mage.cards.l.LordJyscalGuado.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lord Jyscal Guado", 23, Rarity.RARE, mage.cards.l.LordJyscalGuado.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Lord Jyscal Guado", 23, Rarity.RARE, mage.cards.l.LordJyscalGuado.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lulu, Stern Guardian", 143, Rarity.RARE, mage.cards.l.LuluSternGuardian.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Lulu, Stern Guardian", 143, Rarity.RARE, mage.cards.l.LuluSternGuardian.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lulu, Stern Guardian", 38, Rarity.RARE, mage.cards.l.LuluSternGuardian.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Lulu, Stern Guardian", 38, Rarity.RARE, mage.cards.l.LuluSternGuardian.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lulu, Stern Guardian", 467, Rarity.RARE, mage.cards.l.LuluSternGuardian.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Luminous Broodmoth", 246, Rarity.MYTHIC, mage.cards.l.LuminousBroodmoth.class)); cards.add(new SetCardInfo("Luminous Broodmoth", 246, Rarity.MYTHIC, mage.cards.l.LuminousBroodmoth.class));
cards.add(new SetCardInfo("Lyse Hext", 178, Rarity.RARE, mage.cards.l.LyseHext.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Lyse Hext", 178, Rarity.RARE, mage.cards.l.LyseHext.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lyse Hext", 88, Rarity.RARE, mage.cards.l.LyseHext.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Lyse Hext", 88, Rarity.RARE, mage.cards.l.LyseHext.class, NON_FULL_USE_VARIOUS));
@ -246,10 +261,12 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Millikin", 352, Rarity.UNCOMMON, mage.cards.m.Millikin.class)); cards.add(new SetCardInfo("Millikin", 352, Rarity.UNCOMMON, mage.cards.m.Millikin.class));
cards.add(new SetCardInfo("Mind Stone", 353, Rarity.UNCOMMON, mage.cards.m.MindStone.class)); cards.add(new SetCardInfo("Mind Stone", 353, Rarity.UNCOMMON, mage.cards.m.MindStone.class));
cards.add(new SetCardInfo("Mog, Moogle Warrior", 179, Rarity.RARE, mage.cards.m.MogMoogleWarrior.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Mog, Moogle Warrior", 179, Rarity.RARE, mage.cards.m.MogMoogleWarrior.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Mog, Moogle Warrior", 476, Rarity.RARE, mage.cards.m.MogMoogleWarrior.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Mog, Moogle Warrior", 89, Rarity.RARE, mage.cards.m.MogMoogleWarrior.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Mog, Moogle Warrior", 89, Rarity.RARE, mage.cards.m.MogMoogleWarrior.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Morbid Opportunist", 278, Rarity.UNCOMMON, mage.cards.m.MorbidOpportunist.class)); cards.add(new SetCardInfo("Morbid Opportunist", 278, Rarity.UNCOMMON, mage.cards.m.MorbidOpportunist.class));
cards.add(new SetCardInfo("Mortify", 327, Rarity.UNCOMMON, mage.cards.m.Mortify.class)); cards.add(new SetCardInfo("Mortify", 327, Rarity.UNCOMMON, mage.cards.m.Mortify.class));
cards.add(new SetCardInfo("Mossfire Valley", 407, Rarity.RARE, mage.cards.m.MossfireValley.class)); cards.add(new SetCardInfo("Mossfire Valley", 407, Rarity.RARE, mage.cards.m.MossfireValley.class));
cards.add(new SetCardInfo("Mountain", 481, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Murderous Rider", 279, Rarity.RARE, mage.cards.m.MurderousRider.class)); cards.add(new SetCardInfo("Murderous Rider", 279, Rarity.RARE, mage.cards.m.MurderousRider.class));
cards.add(new SetCardInfo("Nature's Lore", 311, Rarity.COMMON, mage.cards.n.NaturesLore.class)); cards.add(new SetCardInfo("Nature's Lore", 311, Rarity.COMMON, mage.cards.n.NaturesLore.class));
cards.add(new SetCardInfo("Nesting Grounds", 408, Rarity.UNCOMMON, mage.cards.n.NestingGrounds.class)); cards.add(new SetCardInfo("Nesting Grounds", 408, Rarity.UNCOMMON, mage.cards.n.NestingGrounds.class));
@ -267,6 +284,7 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Path of Discovery", 312, Rarity.RARE, mage.cards.p.PathOfDiscovery.class)); cards.add(new SetCardInfo("Path of Discovery", 312, Rarity.RARE, mage.cards.p.PathOfDiscovery.class));
cards.add(new SetCardInfo("Path to Exile", 248, Rarity.UNCOMMON, mage.cards.p.PathToExile.class)); cards.add(new SetCardInfo("Path to Exile", 248, Rarity.UNCOMMON, mage.cards.p.PathToExile.class));
cards.add(new SetCardInfo("Pitiless Plunderer", 281, Rarity.UNCOMMON, mage.cards.p.PitilessPlunderer.class)); cards.add(new SetCardInfo("Pitiless Plunderer", 281, Rarity.UNCOMMON, mage.cards.p.PitilessPlunderer.class));
cards.add(new SetCardInfo("Plains", 478, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Port Town", 412, Rarity.RARE, mage.cards.p.PortTown.class)); cards.add(new SetCardInfo("Port Town", 412, Rarity.RARE, mage.cards.p.PortTown.class));
cards.add(new SetCardInfo("Prairie Stream", 413, Rarity.RARE, mage.cards.p.PrairieStream.class)); cards.add(new SetCardInfo("Prairie Stream", 413, Rarity.RARE, mage.cards.p.PrairieStream.class));
cards.add(new SetCardInfo("Priest of Fell Rites", 328, Rarity.RARE, mage.cards.p.PriestOfFellRites.class)); cards.add(new SetCardInfo("Priest of Fell Rites", 328, Rarity.RARE, mage.cards.p.PriestOfFellRites.class));
@ -293,6 +311,7 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Resourceful Defense", 251, Rarity.RARE, mage.cards.r.ResourcefulDefense.class)); cards.add(new SetCardInfo("Resourceful Defense", 251, Rarity.RARE, mage.cards.r.ResourcefulDefense.class));
cards.add(new SetCardInfo("Rikku, Resourceful Guardian", 145, Rarity.RARE, mage.cards.r.RikkuResourcefulGuardian.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Rikku, Resourceful Guardian", 145, Rarity.RARE, mage.cards.r.RikkuResourcefulGuardian.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Rikku, Resourceful Guardian", 41, Rarity.RARE, mage.cards.r.RikkuResourcefulGuardian.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Rikku, Resourceful Guardian", 41, Rarity.RARE, mage.cards.r.RikkuResourcefulGuardian.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Rikku, Resourceful Guardian", 468, Rarity.RARE, mage.cards.r.RikkuResourcefulGuardian.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Rise of the Dark Realms", 283, Rarity.MYTHIC, mage.cards.r.RiseOfTheDarkRealms.class)); cards.add(new SetCardInfo("Rise of the Dark Realms", 283, Rarity.MYTHIC, mage.cards.r.RiseOfTheDarkRealms.class));
cards.add(new SetCardInfo("Rite of Replication", 270, Rarity.RARE, mage.cards.r.RiteOfReplication.class)); cards.add(new SetCardInfo("Rite of Replication", 270, Rarity.RARE, mage.cards.r.RiteOfReplication.class));
cards.add(new SetCardInfo("Rogue's Passage", 415, Rarity.UNCOMMON, mage.cards.r.RoguesPassage.class)); cards.add(new SetCardInfo("Rogue's Passage", 415, Rarity.UNCOMMON, mage.cards.r.RoguesPassage.class));
@ -307,6 +326,7 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Sacred Peaks", 418, Rarity.COMMON, mage.cards.s.SacredPeaks.class)); cards.add(new SetCardInfo("Sacred Peaks", 418, Rarity.COMMON, mage.cards.s.SacredPeaks.class));
cards.add(new SetCardInfo("Scavenger Grounds", 419, Rarity.RARE, mage.cards.s.ScavengerGrounds.class)); cards.add(new SetCardInfo("Scavenger Grounds", 419, Rarity.RARE, mage.cards.s.ScavengerGrounds.class));
cards.add(new SetCardInfo("Scholar of New Horizons", 252, Rarity.RARE, mage.cards.s.ScholarOfNewHorizons.class)); cards.add(new SetCardInfo("Scholar of New Horizons", 252, Rarity.RARE, mage.cards.s.ScholarOfNewHorizons.class));
cards.add(new SetCardInfo("Search for Dagger", 459, Rarity.RARE, mage.cards.s.SearchForDagger.class));
cards.add(new SetCardInfo("Seaside Citadel", 420, Rarity.UNCOMMON, mage.cards.s.SeasideCitadel.class)); cards.add(new SetCardInfo("Seaside Citadel", 420, Rarity.UNCOMMON, mage.cards.s.SeasideCitadel.class));
cards.add(new SetCardInfo("Secret Rendezvous", 217, Rarity.UNCOMMON, mage.cards.s.SecretRendezvous.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Secret Rendezvous", 217, Rarity.UNCOMMON, mage.cards.s.SecretRendezvous.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Secret Rendezvous", 218, Rarity.UNCOMMON, mage.cards.s.SecretRendezvous.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Secret Rendezvous", 218, Rarity.UNCOMMON, mage.cards.s.SecretRendezvous.class, NON_FULL_USE_VARIOUS));
@ -331,6 +351,7 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Skycloud Expanse", 423, Rarity.RARE, mage.cards.s.SkycloudExpanse.class)); cards.add(new SetCardInfo("Skycloud Expanse", 423, Rarity.RARE, mage.cards.s.SkycloudExpanse.class));
cards.add(new SetCardInfo("Slayers' Stronghold", 424, Rarity.RARE, mage.cards.s.SlayersStronghold.class)); cards.add(new SetCardInfo("Slayers' Stronghold", 424, Rarity.RARE, mage.cards.s.SlayersStronghold.class));
cards.add(new SetCardInfo("Smoldering Marsh", 425, Rarity.RARE, mage.cards.s.SmolderingMarsh.class)); cards.add(new SetCardInfo("Smoldering Marsh", 425, Rarity.RARE, mage.cards.s.SmolderingMarsh.class));
cards.add(new SetCardInfo("Snapcaster Mage", 469, Rarity.MYTHIC, mage.cards.s.SnapcasterMage.class));
cards.add(new SetCardInfo("Snort", 120, Rarity.RARE, mage.cards.s.Snort.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Snort", 120, Rarity.RARE, mage.cards.s.Snort.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Snort", 58, Rarity.RARE, mage.cards.s.Snort.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Snort", 58, Rarity.RARE, mage.cards.s.Snort.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Snuff Out", 285, Rarity.COMMON, mage.cards.s.SnuffOut.class)); cards.add(new SetCardInfo("Snuff Out", 285, Rarity.COMMON, mage.cards.s.SnuffOut.class));
@ -374,6 +395,7 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Sunpetal Grove", 432, Rarity.RARE, mage.cards.s.SunpetalGrove.class)); cards.add(new SetCardInfo("Sunpetal Grove", 432, Rarity.RARE, mage.cards.s.SunpetalGrove.class));
cards.add(new SetCardInfo("Sunscorch Regent", 255, Rarity.RARE, mage.cards.s.SunscorchRegent.class)); cards.add(new SetCardInfo("Sunscorch Regent", 255, Rarity.RARE, mage.cards.s.SunscorchRegent.class));
cards.add(new SetCardInfo("Sunscorched Divide", 433, Rarity.RARE, mage.cards.s.SunscorchedDivide.class)); cards.add(new SetCardInfo("Sunscorched Divide", 433, Rarity.RARE, mage.cards.s.SunscorchedDivide.class));
cards.add(new SetCardInfo("Swamp", 480, Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Swiftfoot Boots", 361, Rarity.UNCOMMON, mage.cards.s.SwiftfootBoots.class)); cards.add(new SetCardInfo("Swiftfoot Boots", 361, Rarity.UNCOMMON, mage.cards.s.SwiftfootBoots.class));
cards.add(new SetCardInfo("Sword of the Animist", 362, Rarity.RARE, mage.cards.s.SwordOfTheAnimist.class)); cards.add(new SetCardInfo("Sword of the Animist", 362, Rarity.RARE, mage.cards.s.SwordOfTheAnimist.class));
cards.add(new SetCardInfo("Swords to Plowshares", 256, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class)); cards.add(new SetCardInfo("Swords to Plowshares", 256, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
@ -386,6 +408,7 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Tangled Islet", 434, Rarity.COMMON, mage.cards.t.TangledIslet.class)); cards.add(new SetCardInfo("Tangled Islet", 434, Rarity.COMMON, mage.cards.t.TangledIslet.class));
cards.add(new SetCardInfo("Tataru Taru", 138, Rarity.RARE, mage.cards.t.TataruTaru.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Tataru Taru", 138, Rarity.RARE, mage.cards.t.TataruTaru.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Tataru Taru", 30, Rarity.RARE, mage.cards.t.TataruTaru.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Tataru Taru", 30, Rarity.RARE, mage.cards.t.TataruTaru.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Tataru Taru", 466, Rarity.RARE, mage.cards.t.TataruTaru.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Temple of Enlightenment", 435, Rarity.RARE, mage.cards.t.TempleOfEnlightenment.class)); cards.add(new SetCardInfo("Temple of Enlightenment", 435, Rarity.RARE, mage.cards.t.TempleOfEnlightenment.class));
cards.add(new SetCardInfo("Temple of Mystery", 436, Rarity.RARE, mage.cards.t.TempleOfMystery.class)); cards.add(new SetCardInfo("Temple of Mystery", 436, Rarity.RARE, mage.cards.t.TempleOfMystery.class));
cards.add(new SetCardInfo("Temple of Plenty", 437, Rarity.RARE, mage.cards.t.TempleOfPlenty.class)); cards.add(new SetCardInfo("Temple of Plenty", 437, Rarity.RARE, mage.cards.t.TempleOfPlenty.class));
@ -397,6 +420,10 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Terra, Herald of Hope", 4, Rarity.MYTHIC, mage.cards.t.TerraHeraldOfHope.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Terra, Herald of Hope", 4, Rarity.MYTHIC, mage.cards.t.TerraHeraldOfHope.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Thancred Waters", 139, Rarity.RARE, mage.cards.t.ThancredWaters.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Thancred Waters", 139, Rarity.RARE, mage.cards.t.ThancredWaters.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Thancred Waters", 31, Rarity.RARE, mage.cards.t.ThancredWaters.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Thancred Waters", 31, Rarity.RARE, mage.cards.t.ThancredWaters.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("The Destined Black Mage", 447, Rarity.RARE, mage.cards.t.TheDestinedBlackMage.class));
cards.add(new SetCardInfo("The Destined Thief", 446, Rarity.RARE, mage.cards.t.TheDestinedThief.class));
cards.add(new SetCardInfo("The Destined Warrior", 443, Rarity.RARE, mage.cards.t.TheDestinedWarrior.class));
cards.add(new SetCardInfo("The Destined White Mage", 444, Rarity.RARE, mage.cards.t.TheDestinedWhiteMage.class));
cards.add(new SetCardInfo("The Falcon, Airship Restored", 116, Rarity.RARE, mage.cards.t.TheFalconAirshipRestored.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("The Falcon, Airship Restored", 116, Rarity.RARE, mage.cards.t.TheFalconAirshipRestored.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("The Falcon, Airship Restored", 45, Rarity.RARE, mage.cards.t.TheFalconAirshipRestored.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("The Falcon, Airship Restored", 45, Rarity.RARE, mage.cards.t.TheFalconAirshipRestored.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("The Warring Triad", 193, Rarity.RARE, mage.cards.t.TheWarringTriad.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("The Warring Triad", 193, Rarity.RARE, mage.cards.t.TheWarringTriad.class, NON_FULL_USE_VARIOUS));
@ -441,8 +468,10 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Vineglimmer Snarl", 440, Rarity.RARE, mage.cards.v.VineglimmerSnarl.class)); cards.add(new SetCardInfo("Vineglimmer Snarl", 440, Rarity.RARE, mage.cards.v.VineglimmerSnarl.class));
cards.add(new SetCardInfo("Void Rend", 331, Rarity.RARE, mage.cards.v.VoidRend.class)); cards.add(new SetCardInfo("Void Rend", 331, Rarity.RARE, mage.cards.v.VoidRend.class));
cards.add(new SetCardInfo("Wakka, Devoted Guardian", 190, Rarity.RARE, mage.cards.w.WakkaDevotedGuardian.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Wakka, Devoted Guardian", 190, Rarity.RARE, mage.cards.w.WakkaDevotedGuardian.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Wakka, Devoted Guardian", 477, Rarity.RARE, mage.cards.w.WakkaDevotedGuardian.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Wakka, Devoted Guardian", 97, Rarity.RARE, mage.cards.w.WakkaDevotedGuardian.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Wakka, Devoted Guardian", 97, Rarity.RARE, mage.cards.w.WakkaDevotedGuardian.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Walking Ballista", 371, Rarity.RARE, mage.cards.w.WalkingBallista.class)); cards.add(new SetCardInfo("Walking Ballista", 371, Rarity.RARE, mage.cards.w.WalkingBallista.class));
cards.add(new SetCardInfo("Warrior's Resolve", 465, Rarity.RARE, mage.cards.w.WarriorsResolve.class));
cards.add(new SetCardInfo("Wayfarer's Bauble", 372, Rarity.COMMON, mage.cards.w.WayfarersBauble.class)); cards.add(new SetCardInfo("Wayfarer's Bauble", 372, Rarity.COMMON, mage.cards.w.WayfarersBauble.class));
cards.add(new SetCardInfo("Wooded Ridgeline", 441, Rarity.COMMON, mage.cards.w.WoodedRidgeline.class)); cards.add(new SetCardInfo("Wooded Ridgeline", 441, Rarity.COMMON, mage.cards.w.WoodedRidgeline.class));
cards.add(new SetCardInfo("Wrecking Ball Arm", 100, Rarity.RARE, mage.cards.w.WreckingBallArm.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Wrecking Ball Arm", 100, Rarity.RARE, mage.cards.w.WreckingBallArm.class, NON_FULL_USE_VARIOUS));
@ -453,6 +482,7 @@ public final class FinalFantasyCommander extends ExpansionSet {
cards.add(new SetCardInfo("Y'shtola, Night's Blessed", 226, Rarity.MYTHIC, mage.cards.y.YshtolaNightsBlessed.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Y'shtola, Night's Blessed", 226, Rarity.MYTHIC, mage.cards.y.YshtolaNightsBlessed.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Y'shtola, Night's Blessed", 7, Rarity.MYTHIC, mage.cards.y.YshtolaNightsBlessed.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Y'shtola, Night's Blessed", 7, Rarity.MYTHIC, mage.cards.y.YshtolaNightsBlessed.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Yuffie, Materia Hunter", 158, Rarity.RARE, mage.cards.y.YuffieMateriaHunter.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Yuffie, Materia Hunter", 158, Rarity.RARE, mage.cards.y.YuffieMateriaHunter.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Yuffie, Materia Hunter", 470, Rarity.RARE, mage.cards.y.YuffieMateriaHunter.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Yuffie, Materia Hunter", 65, Rarity.RARE, mage.cards.y.YuffieMateriaHunter.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Yuffie, Materia Hunter", 65, Rarity.RARE, mage.cards.y.YuffieMateriaHunter.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Yuna's Decision", 125, Rarity.RARE, mage.cards.y.YunasDecision.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Yuna's Decision", 125, Rarity.RARE, mage.cards.y.YunasDecision.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Yuna's Decision", 74, Rarity.RARE, mage.cards.y.YunasDecision.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Yuna's Decision", 74, Rarity.RARE, mage.cards.y.YunasDecision.class, NON_FULL_USE_VARIOUS));

View file

@ -0,0 +1,59 @@
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
/**
* @author TheElk801
*/
public final class LorwynEclipsed extends ExpansionSet {
private static final LorwynEclipsed instance = new LorwynEclipsed();
public static LorwynEclipsed getInstance() {
return instance;
}
private LorwynEclipsed() {
super("Lorwyn Eclipsed", "ECL", ExpansionSet.buildDate(2026, 1, 23), SetType.EXPANSION);
this.blockName = "Lorwyn Eclipsed"; // for sorting in GUI
this.hasBasicLands = false; // temporary
cards.add(new SetCardInfo("Ashling's Command", 205, Rarity.RARE, mage.cards.a.AshlingsCommand.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Ashling's Command", 330, Rarity.RARE, mage.cards.a.AshlingsCommand.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Bitterbloom Bearer", 310, Rarity.MYTHIC, mage.cards.b.BitterbloomBearer.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Bitterbloom Bearer", 352, Rarity.MYTHIC, mage.cards.b.BitterbloomBearer.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Bitterbloom Bearer", 88, Rarity.MYTHIC, mage.cards.b.BitterbloomBearer.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Blood Crypt", 262, Rarity.RARE, mage.cards.b.BloodCrypt.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Blood Crypt", 349, Rarity.RARE, mage.cards.b.BloodCrypt.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Deceit", 212, Rarity.MYTHIC, mage.cards.d.Deceit.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Deceit", 293, Rarity.MYTHIC, mage.cards.d.Deceit.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Eirdu, Carrier of Dawn", 13, Rarity.MYTHIC, mage.cards.e.EirduCarrierOfDawn.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Eirdu, Carrier of Dawn", 286, Rarity.MYTHIC, mage.cards.e.EirduCarrierOfDawn.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Emptiness", 222, Rarity.MYTHIC, mage.cards.e.Emptiness.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Emptiness", 294, Rarity.MYTHIC, mage.cards.e.Emptiness.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Figure of Fable", 224, Rarity.RARE, mage.cards.f.FigureOfFable.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Figure of Fable", 372, Rarity.RARE, mage.cards.f.FigureOfFable.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Formidable Speaker", 176, Rarity.RARE, mage.cards.f.FormidableSpeaker.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Formidable Speaker", 366, Rarity.RARE, mage.cards.f.FormidableSpeaker.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Hallowed Fountain", 265, Rarity.RARE, mage.cards.h.HallowedFountain.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Hallowed Fountain", 347, Rarity.RARE, mage.cards.h.HallowedFountain.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Isilu, Carrier of Twilight", 13, Rarity.MYTHIC, mage.cards.i.IsiluCarrierOfTwilight.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Isilu, Carrier of Twilight", 286, Rarity.MYTHIC, mage.cards.i.IsiluCarrierOfTwilight.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Morningtide's Light", 27, Rarity.MYTHIC, mage.cards.m.MorningtidesLight.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Morningtide's Light", 301, Rarity.MYTHIC, mage.cards.m.MorningtidesLight.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Mutable Explorer", 186, Rarity.RARE, mage.cards.m.MutableExplorer.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Mutable Explorer", 327, Rarity.RARE, mage.cards.m.MutableExplorer.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Overgrown Tomb", 266, Rarity.RARE, mage.cards.o.OvergrownTomb.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Overgrown Tomb", 350, Rarity.RARE, mage.cards.o.OvergrownTomb.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Steam Vents", 267, Rarity.RARE, mage.cards.s.SteamVents.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Steam Vents", 348, Rarity.RARE, mage.cards.s.SteamVents.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sygg, Wanderbrine Shield", 288, Rarity.RARE, mage.cards.s.SyggWanderbrineShield.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sygg, Wanderbrine Shield", 76, Rarity.RARE, mage.cards.s.SyggWanderbrineShield.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sygg, Wanderwine Wisdom", 288, Rarity.RARE, mage.cards.s.SyggWanderwineWisdom.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sygg, Wanderwine Wisdom", 76, Rarity.RARE, mage.cards.s.SyggWanderwineWisdom.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Temple Garden", 268, Rarity.RARE, mage.cards.t.TempleGarden.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Temple Garden", 351, Rarity.RARE, mage.cards.t.TempleGarden.class, NON_FULL_USE_VARIOUS));
}
}

View file

@ -0,0 +1,66 @@
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
/**
* https://scryfall.com/sets/mar
*
* @author ReSech
*/
public class MarvelUniverse extends ExpansionSet {
private static final MarvelUniverse instance = new MarvelUniverse();
public static MarvelUniverse getInstance() {
return instance;
}
private MarvelUniverse() {
super("Marvel Universe", "MAR", ExpansionSet.buildDate(2025, 9, 26), SetType.SUPPLEMENTAL);
this.hasBoosters = false;
this.hasBasicLands = false;
cards.add(new SetCardInfo("Alibou, Ancient Witness", 39, Rarity.MYTHIC, mage.cards.a.AlibouAncientWitness.class));
cards.add(new SetCardInfo("Arachnogenesis", 31, Rarity.MYTHIC, mage.cards.a.Arachnogenesis.class));
cards.add(new SetCardInfo("Arasta of the Endless Web", 32, Rarity.MYTHIC, mage.cards.a.ArastaOfTheEndlessWeb.class));
cards.add(new SetCardInfo("Beast Within", 33, Rarity.MYTHIC, mage.cards.b.BeastWithin.class));
cards.add(new SetCardInfo("Clever Impersonator", 8, Rarity.MYTHIC, mage.cards.c.CleverImpersonator.class));
cards.add(new SetCardInfo("Comeuppance", 1, Rarity.MYTHIC, mage.cards.c.Comeuppance.class));
cards.add(new SetCardInfo("Counterspell", 9, Rarity.MYTHIC, mage.cards.c.Counterspell.class));
cards.add(new SetCardInfo("Feed the Swarm", 16, Rarity.MYTHIC, mage.cards.f.FeedTheSwarm.class));
cards.add(new SetCardInfo("Goblin Bombardment", 23, Rarity.MYTHIC, mage.cards.g.GoblinBombardment.class));
cards.add(new SetCardInfo("Heroic Intervention", 34, Rarity.MYTHIC, mage.cards.h.HeroicIntervention.class));
cards.add(new SetCardInfo("Hex", 17, Rarity.MYTHIC, mage.cards.h.Hex.class));
cards.add(new SetCardInfo("Hunter's Insight", 35, Rarity.MYTHIC, mage.cards.h.HuntersInsight.class));
cards.add(new SetCardInfo("Infernal Grasp", 18, Rarity.MYTHIC, mage.cards.i.InfernalGrasp.class));
cards.add(new SetCardInfo("Leyline Binding", 2, Rarity.MYTHIC, mage.cards.l.LeylineBinding.class));
cards.add(new SetCardInfo("Lorthos, the Tidemaker", 10, Rarity.MYTHIC, mage.cards.l.LorthosTheTidemaker.class));
cards.add(new SetCardInfo("Mindbreak Trap", 11, Rarity.MYTHIC, mage.cards.m.MindbreakTrap.class));
cards.add(new SetCardInfo("Mystic Confluence", 12, Rarity.MYTHIC, mage.cards.m.MysticConfluence.class));
cards.add(new SetCardInfo("Najeela, the Blade-Blossom", 24, Rarity.MYTHIC, mage.cards.n.NajeelaTheBladeBlossom.class));
cards.add(new SetCardInfo("Nine Lives", 3, Rarity.MYTHIC, mage.cards.n.NineLives.class));
cards.add(new SetCardInfo("Opposition Agent", 19, Rarity.MYTHIC, mage.cards.o.OppositionAgent.class));
cards.add(new SetCardInfo("Parallel Lives", 36, Rarity.MYTHIC, mage.cards.p.ParallelLives.class));
cards.add(new SetCardInfo("Path to Exile", 4, Rarity.MYTHIC, mage.cards.p.PathToExile.class));
cards.add(new SetCardInfo("Ponder", 13, Rarity.MYTHIC, mage.cards.p.Ponder.class));
cards.add(new SetCardInfo("Reanimate", 20, Rarity.MYTHIC, mage.cards.r.Reanimate.class));
cards.add(new SetCardInfo("Relentless Assault", 25, Rarity.MYTHIC, mage.cards.r.RelentlessAssault.class));
cards.add(new SetCardInfo("Reprieve", 5, Rarity.MYTHIC, mage.cards.r.Reprieve.class));
cards.add(new SetCardInfo("Rest in Peace", 6, Rarity.MYTHIC, mage.cards.r.RestInPeace.class));
cards.add(new SetCardInfo("Rite of Replication", 14, Rarity.MYTHIC, mage.cards.r.RiteOfReplication.class));
cards.add(new SetCardInfo("Savage Beating", 26, Rarity.MYTHIC, mage.cards.s.SavageBeating.class));
cards.add(new SetCardInfo("Saw in Half", 21, Rarity.MYTHIC, mage.cards.s.SawInHalf.class));
cards.add(new SetCardInfo("Shock", 27, Rarity.MYTHIC, mage.cards.s.Shock.class));
cards.add(new SetCardInfo("Silkguard", 37, Rarity.MYTHIC, mage.cards.s.Silkguard.class));
cards.add(new SetCardInfo("Skithiryx, the Blight Dragon", 22, Rarity.MYTHIC, mage.cards.s.SkithiryxTheBlightDragon.class));
cards.add(new SetCardInfo("Tangle", 38, Rarity.MYTHIC, mage.cards.t.Tangle.class));
cards.add(new SetCardInfo("Terminate", 40, Rarity.MYTHIC, mage.cards.t.Terminate.class));
cards.add(new SetCardInfo("Thrill of Possibility", 28, Rarity.MYTHIC, mage.cards.t.ThrillOfPossibility.class));
cards.add(new SetCardInfo("Traumatize", 15, Rarity.MYTHIC, mage.cards.t.Traumatize.class));
cards.add(new SetCardInfo("Unexpected Windfall", 29, Rarity.MYTHIC, mage.cards.u.UnexpectedWindfall.class));
cards.add(new SetCardInfo("Wedding Ring", 7, Rarity.MYTHIC, mage.cards.w.WeddingRing.class));
cards.add(new SetCardInfo("Winds of Change", 30, Rarity.MYTHIC, mage.cards.w.WindsOfChange.class));
}
}

View file

@ -33,6 +33,8 @@ public class MediaAndCollaborationPromos extends ExpansionSet {
cards.add(new SetCardInfo("Cast Down", "2019-1", Rarity.UNCOMMON, mage.cards.c.CastDown.class)); cards.add(new SetCardInfo("Cast Down", "2019-1", Rarity.UNCOMMON, mage.cards.c.CastDown.class));
cards.add(new SetCardInfo("Chandra's Outrage", "2010-3", Rarity.COMMON, mage.cards.c.ChandrasOutrage.class)); cards.add(new SetCardInfo("Chandra's Outrage", "2010-3", Rarity.COMMON, mage.cards.c.ChandrasOutrage.class));
cards.add(new SetCardInfo("Chandra's Spitfire", "2010-4", Rarity.UNCOMMON, mage.cards.c.ChandrasSpitfire.class)); cards.add(new SetCardInfo("Chandra's Spitfire", "2010-4", Rarity.UNCOMMON, mage.cards.c.ChandrasSpitfire.class));
cards.add(new SetCardInfo("Chrome Host Seedshark", "2025-20", Rarity.RARE, mage.cards.c.ChromeHostSeedshark.class));
cards.add(new SetCardInfo("Cloud, Midgar Mercenary", "2025-21", Rarity.MYTHIC, mage.cards.c.CloudMidgarMercenary.class));
cards.add(new SetCardInfo("Cloud, Planet's Champion", "2025-13", Rarity.MYTHIC, mage.cards.c.CloudPlanetsChampion.class)); cards.add(new SetCardInfo("Cloud, Planet's Champion", "2025-13", Rarity.MYTHIC, mage.cards.c.CloudPlanetsChampion.class));
cards.add(new SetCardInfo("Counterspell", "2021-1", Rarity.RARE, mage.cards.c.Counterspell.class)); cards.add(new SetCardInfo("Counterspell", "2021-1", Rarity.RARE, mage.cards.c.Counterspell.class));
cards.add(new SetCardInfo("Crop Rotation", "2020-7", Rarity.RARE, mage.cards.c.CropRotation.class)); cards.add(new SetCardInfo("Crop Rotation", "2020-7", Rarity.RARE, mage.cards.c.CropRotation.class));
@ -58,6 +60,7 @@ public class MediaAndCollaborationPromos extends ExpansionSet {
cards.add(new SetCardInfo("Jace Beleren", "2009-1", Rarity.MYTHIC, mage.cards.j.JaceBeleren.class)); cards.add(new SetCardInfo("Jace Beleren", "2009-1", Rarity.MYTHIC, mage.cards.j.JaceBeleren.class));
cards.add(new SetCardInfo("Jace, Memory Adept", "2024-2", Rarity.MYTHIC, mage.cards.j.JaceMemoryAdept.class)); cards.add(new SetCardInfo("Jace, Memory Adept", "2024-2", Rarity.MYTHIC, mage.cards.j.JaceMemoryAdept.class));
cards.add(new SetCardInfo("Jamuraan Lion", "1996-3", Rarity.COMMON, mage.cards.j.JamuraanLion.class, RETRO_ART)); cards.add(new SetCardInfo("Jamuraan Lion", "1996-3", Rarity.COMMON, mage.cards.j.JamuraanLion.class, RETRO_ART));
cards.add(new SetCardInfo("Kaalia of the Vast", "2025-19", Rarity.MYTHIC, mage.cards.k.KaaliaOfTheVast.class));
cards.add(new SetCardInfo("Kuldotha Phoenix", "2010-5", Rarity.RARE, mage.cards.k.KuldothaPhoenix.class)); cards.add(new SetCardInfo("Kuldotha Phoenix", "2010-5", Rarity.RARE, mage.cards.k.KuldothaPhoenix.class));
cards.add(new SetCardInfo("Lava Coil", "2019-4", Rarity.UNCOMMON, mage.cards.l.LavaCoil.class)); cards.add(new SetCardInfo("Lava Coil", "2019-4", Rarity.UNCOMMON, mage.cards.l.LavaCoil.class));
cards.add(new SetCardInfo("Lightning Hounds", "2000-1", Rarity.COMMON, mage.cards.l.LightningHounds.class, RETRO_ART)); cards.add(new SetCardInfo("Lightning Hounds", "2000-1", Rarity.COMMON, mage.cards.l.LightningHounds.class, RETRO_ART));

View file

@ -60,11 +60,11 @@ public class ProTourCollectorSet extends ExpansionSet {
cards.add(new SetCardInfo("Circle of Protection: Green", "bl14sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Circle of Protection: Green", "bl14sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Circle of Protection: Green", "bl16sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Circle of Protection: Green", "bl16sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Circle of Protection: Red", "bl15sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Circle of Protection: Red", "bl15sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Circle of Protection: Red", "ml15sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Circle of Protection: Red", "shr15sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Circle of Protection: Red", "bl17sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Circle of Protection: Red", "bl17sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Circle of Protection: Red", "et17sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Circle of Protection: Red", "et17sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Circle of Protection: Red", "ml15sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Circle of Protection: Red", "ml17sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Circle of Protection: Red", "ml17sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Circle of Protection: Red", "shr15sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("City of Brass", "et112", Rarity.RARE, mage.cards.c.CityOfBrass.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("City of Brass", "et112", Rarity.RARE, mage.cards.c.CityOfBrass.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("City of Brass", "gb112", Rarity.RARE, mage.cards.c.CityOfBrass.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("City of Brass", "gb112", Rarity.RARE, mage.cards.c.CityOfBrass.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("City of Brass", "ll112sb", Rarity.RARE, mage.cards.c.CityOfBrass.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("City of Brass", "ll112sb", Rarity.RARE, mage.cards.c.CityOfBrass.class, RETRO_ART_USE_VARIOUS));
@ -109,10 +109,10 @@ public class ProTourCollectorSet extends ExpansionSet {
cards.add(new SetCardInfo("Erhnam Djinn", "pp64", Rarity.UNCOMMON, mage.cards.e.ErhnamDjinn.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Erhnam Djinn", "pp64", Rarity.UNCOMMON, mage.cards.e.ErhnamDjinn.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Eron the Relentless", "mj73sb", Rarity.UNCOMMON, mage.cards.e.EronTheRelentless.class, RETRO_ART)); cards.add(new SetCardInfo("Eron the Relentless", "mj73sb", Rarity.UNCOMMON, mage.cards.e.EronTheRelentless.class, RETRO_ART));
cards.add(new SetCardInfo("Essence Filter", "pp233sb", Rarity.COMMON, mage.cards.e.EssenceFilter.class, RETRO_ART)); cards.add(new SetCardInfo("Essence Filter", "pp233sb", Rarity.COMMON, mage.cards.e.EssenceFilter.class, RETRO_ART));
cards.add(new SetCardInfo("Feldon's Cane", "ll50sb", Rarity.UNCOMMON, mage.cards.f.FeldonsCane.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Feldon's Cane", "ll50sb", Rarity.COMMON, mage.cards.f.FeldonsCane.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Feldon's Cane", "mj50", Rarity.UNCOMMON, mage.cards.f.FeldonsCane.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Feldon's Cane", "mj50", Rarity.COMMON, mage.cards.f.FeldonsCane.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Feldon's Cane", "ml50", Rarity.UNCOMMON, mage.cards.f.FeldonsCane.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Feldon's Cane", "ml50", Rarity.COMMON, mage.cards.f.FeldonsCane.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Feldon's Cane", "shr50sb", Rarity.UNCOMMON, mage.cards.f.FeldonsCane.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Feldon's Cane", "shr50sb", Rarity.COMMON, mage.cards.f.FeldonsCane.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Fellwar Stone", "bl319", Rarity.UNCOMMON, mage.cards.f.FellwarStone.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Fellwar Stone", "bl319", Rarity.UNCOMMON, mage.cards.f.FellwarStone.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Fellwar Stone", "et319", Rarity.UNCOMMON, mage.cards.f.FellwarStone.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Fellwar Stone", "et319", Rarity.UNCOMMON, mage.cards.f.FellwarStone.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Fellwar Stone", "mj319", Rarity.UNCOMMON, mage.cards.f.FellwarStone.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Fellwar Stone", "mj319", Rarity.UNCOMMON, mage.cards.f.FellwarStone.class, RETRO_ART_USE_VARIOUS));
@ -122,10 +122,10 @@ public class ProTourCollectorSet extends ExpansionSet {
cards.add(new SetCardInfo("Fireball", "gb192", Rarity.COMMON, mage.cards.f.Fireball.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Fireball", "gb192", Rarity.COMMON, mage.cards.f.Fireball.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Fireball", "mj192", Rarity.COMMON, mage.cards.f.Fireball.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Fireball", "mj192", Rarity.COMMON, mage.cards.f.Fireball.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Forest", "bl376", Rarity.LAND, mage.cards.basiclands.Forest.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Forest", "bl376", Rarity.LAND, mage.cards.basiclands.Forest.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Forest", "pp376", Rarity.LAND, mage.cards.basiclands.Forest.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Forest", "bl377", Rarity.LAND, mage.cards.basiclands.Forest.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Forest", "bl377", Rarity.LAND, mage.cards.basiclands.Forest.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Forest", "pp377", Rarity.LAND, mage.cards.basiclands.Forest.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Forest", "bl378", Rarity.LAND, mage.cards.basiclands.Forest.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Forest", "bl378", Rarity.LAND, mage.cards.basiclands.Forest.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Forest", "pp376", Rarity.LAND, mage.cards.basiclands.Forest.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Forest", "pp377", Rarity.LAND, mage.cards.basiclands.Forest.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Forest", "pp378", Rarity.LAND, mage.cards.basiclands.Forest.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Forest", "pp378", Rarity.LAND, mage.cards.basiclands.Forest.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Fountain of Youth", "mj98sb", Rarity.COMMON, mage.cards.f.FountainOfYouth.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Fountain of Youth", "mj98sb", Rarity.COMMON, mage.cards.f.FountainOfYouth.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Fountain of Youth", "ml98", Rarity.COMMON, mage.cards.f.FountainOfYouth.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Fountain of Youth", "ml98", Rarity.COMMON, mage.cards.f.FountainOfYouth.class, RETRO_ART_USE_VARIOUS));
@ -161,10 +161,10 @@ public class ProTourCollectorSet extends ExpansionSet {
cards.add(new SetCardInfo("Incinerate", "et194", Rarity.COMMON, mage.cards.i.Incinerate.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Incinerate", "et194", Rarity.COMMON, mage.cards.i.Incinerate.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Incinerate", "mj194", Rarity.COMMON, mage.cards.i.Incinerate.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Incinerate", "mj194", Rarity.COMMON, mage.cards.i.Incinerate.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Island", "ml367", Rarity.LAND, mage.cards.basiclands.Island.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Island", "ml367", Rarity.LAND, mage.cards.basiclands.Island.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Island", "shr367", Rarity.LAND, mage.cards.basiclands.Island.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Island", "ml368", Rarity.LAND, mage.cards.basiclands.Island.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Island", "ml368", Rarity.LAND, mage.cards.basiclands.Island.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Island", "shr368", Rarity.LAND, mage.cards.basiclands.Island.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Island", "ml369", Rarity.LAND, mage.cards.basiclands.Island.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Island", "ml369", Rarity.LAND, mage.cards.basiclands.Island.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Island", "shr367", Rarity.LAND, mage.cards.basiclands.Island.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Island", "shr368", Rarity.LAND, mage.cards.basiclands.Island.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Island", "shr369", Rarity.LAND, mage.cards.basiclands.Island.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Island", "shr369", Rarity.LAND, mage.cards.basiclands.Island.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Ivory Tower", "bl328", Rarity.RARE, mage.cards.i.IvoryTower.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Ivory Tower", "bl328", Rarity.RARE, mage.cards.i.IvoryTower.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Ivory Tower", "ll328", Rarity.RARE, mage.cards.i.IvoryTower.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Ivory Tower", "ll328", Rarity.RARE, mage.cards.i.IvoryTower.class, RETRO_ART_USE_VARIOUS));
@ -172,8 +172,8 @@ public class ProTourCollectorSet extends ExpansionSet {
cards.add(new SetCardInfo("Ivory Tower", "ml328", Rarity.RARE, mage.cards.i.IvoryTower.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Ivory Tower", "ml328", Rarity.RARE, mage.cards.i.IvoryTower.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Ivory Tower", "pp328sb", Rarity.RARE, mage.cards.i.IvoryTower.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Ivory Tower", "pp328sb", Rarity.RARE, mage.cards.i.IvoryTower.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Ivory Tower", "shr328", Rarity.RARE, mage.cards.i.IvoryTower.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Ivory Tower", "shr328", Rarity.RARE, mage.cards.i.IvoryTower.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Jalum Tome", "ll54", Rarity.UNCOMMON, mage.cards.j.JalumTome.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Jalum Tome", "ll54", Rarity.RARE, mage.cards.j.JalumTome.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Jalum Tome", "ll54sb", Rarity.UNCOMMON, mage.cards.j.JalumTome.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Jalum Tome", "ll54sb", Rarity.RARE, mage.cards.j.JalumTome.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Jayemdae Tome", "et331", Rarity.RARE, mage.cards.j.JayemdaeTome.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Jayemdae Tome", "et331", Rarity.RARE, mage.cards.j.JayemdaeTome.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Jayemdae Tome", "ml331", Rarity.RARE, mage.cards.j.JayemdaeTome.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Jayemdae Tome", "ml331", Rarity.RARE, mage.cards.j.JayemdaeTome.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Jester's Cap", "mj324", Rarity.RARE, mage.cards.j.JestersCap.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Jester's Cap", "mj324", Rarity.RARE, mage.cards.j.JestersCap.class, RETRO_ART_USE_VARIOUS));
@ -208,10 +208,10 @@ public class ProTourCollectorSet extends ExpansionSet {
cards.add(new SetCardInfo("Mishra's Factory", "pp361", Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Mishra's Factory", "pp361", Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Mishra's Factory", "shr361", Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Mishra's Factory", "shr361", Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Mountain", "et373", Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Mountain", "et373", Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Mountain", "mj373", Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Mountain", "et374", Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Mountain", "et374", Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Mountain", "mj374", Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Mountain", "et375", Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Mountain", "et375", Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Mountain", "mj373", Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Mountain", "mj374", Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Mountain", "mj375", Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Mountain", "mj375", Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Necropotence", "ll154", Rarity.RARE, mage.cards.n.Necropotence.class, RETRO_ART)); cards.add(new SetCardInfo("Necropotence", "ll154", Rarity.RARE, mage.cards.n.Necropotence.class, RETRO_ART));
cards.add(new SetCardInfo("Nevinyrral's Disk", "et338sb", Rarity.RARE, mage.cards.n.NevinyrralsDisk.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Nevinyrral's Disk", "et338sb", Rarity.RARE, mage.cards.n.NevinyrralsDisk.class, RETRO_ART_USE_VARIOUS));
@ -230,22 +230,22 @@ public class ProTourCollectorSet extends ExpansionSet {
cards.add(new SetCardInfo("Order of the Ebon Hand", "ll42c", Rarity.COMMON, mage.cards.o.OrderOfTheEbonHand.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Order of the Ebon Hand", "ll42c", Rarity.COMMON, mage.cards.o.OrderOfTheEbonHand.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Orgg", "et63", Rarity.RARE, mage.cards.o.Orgg.class, RETRO_ART)); cards.add(new SetCardInfo("Orgg", "et63", Rarity.RARE, mage.cards.o.Orgg.class, RETRO_ART));
cards.add(new SetCardInfo("Plains", "bl364", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Plains", "bl364", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "et364", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "mj364", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "ml364", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "pp364", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "shr364", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "bl365", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Plains", "bl365", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "et365", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "mj365", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "ml365", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "pp365", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "shr365", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "bl366", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Plains", "bl366", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "et364", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "et365", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "et366", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Plains", "et366", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "mj364", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "mj365", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "mj366", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Plains", "mj366", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "ml364", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "ml365", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "ml366", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Plains", "ml366", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "pp364", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "pp365", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "pp366", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Plains", "pp366", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "shr364", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "shr365", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", "shr366", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Plains", "shr366", Rarity.LAND, mage.cards.basiclands.Plains.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Power Sink", "shr93", Rarity.COMMON, mage.cards.p.PowerSink.class, RETRO_ART)); cards.add(new SetCardInfo("Power Sink", "shr93", Rarity.COMMON, mage.cards.p.PowerSink.class, RETRO_ART));
cards.add(new SetCardInfo("Pyroblast", "mj213sb", Rarity.COMMON, mage.cards.p.Pyroblast.class, RETRO_ART)); cards.add(new SetCardInfo("Pyroblast", "mj213sb", Rarity.COMMON, mage.cards.p.Pyroblast.class, RETRO_ART));
@ -292,10 +292,10 @@ public class ProTourCollectorSet extends ExpansionSet {
cards.add(new SetCardInfo("Svyelunite Temple", "ml102", Rarity.UNCOMMON, mage.cards.s.SvyeluniteTemple.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Svyelunite Temple", "ml102", Rarity.UNCOMMON, mage.cards.s.SvyeluniteTemple.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Svyelunite Temple", "shr102", Rarity.UNCOMMON, mage.cards.s.SvyeluniteTemple.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Svyelunite Temple", "shr102", Rarity.UNCOMMON, mage.cards.s.SvyeluniteTemple.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Swamp", "gb370", Rarity.LAND, mage.cards.basiclands.Swamp.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Swamp", "gb370", Rarity.LAND, mage.cards.basiclands.Swamp.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Swamp", "ll370", Rarity.LAND, mage.cards.basiclands.Swamp.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Swamp", "gb371", Rarity.LAND, mage.cards.basiclands.Swamp.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Swamp", "gb371", Rarity.LAND, mage.cards.basiclands.Swamp.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Swamp", "ll371", Rarity.LAND, mage.cards.basiclands.Swamp.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Swamp", "gb372", Rarity.LAND, mage.cards.basiclands.Swamp.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Swamp", "gb372", Rarity.LAND, mage.cards.basiclands.Swamp.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Swamp", "ll370", Rarity.LAND, mage.cards.basiclands.Swamp.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Swamp", "ll371", Rarity.LAND, mage.cards.basiclands.Swamp.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Swamp", "ll372", Rarity.LAND, mage.cards.basiclands.Swamp.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Swamp", "ll372", Rarity.LAND, mage.cards.basiclands.Swamp.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Swords to Plowshares", "bl52", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Swords to Plowshares", "bl52", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Swords to Plowshares", "et52", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Swords to Plowshares", "et52", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class, RETRO_ART_USE_VARIOUS));

View file

@ -7,16 +7,16 @@ import mage.constants.SetType;
/** /**
* https://scryfall.com/sets/slc * https://scryfall.com/sets/slc
*/ */
public class SecretLair30thAnniversaryCountdownKit extends ExpansionSet { public class SecretLairCountdown extends ExpansionSet {
private static final SecretLair30thAnniversaryCountdownKit instance = new SecretLair30thAnniversaryCountdownKit(); private static final SecretLairCountdown instance = new SecretLairCountdown();
public static SecretLair30thAnniversaryCountdownKit getInstance() { public static SecretLairCountdown getInstance() {
return instance; return instance;
} }
private SecretLair30thAnniversaryCountdownKit() { private SecretLairCountdown() {
super("Secret Lair 30th Anniversary Countdown Kit", "SLC", ExpansionSet.buildDate(2022, 11, 1), SetType.PROMOTIONAL); super("Secret Lair Countdown", "SLC", ExpansionSet.buildDate(2022, 11, 1), SetType.PROMOTIONAL);
this.hasBasicLands = false; this.hasBasicLands = false;
cards.add(new SetCardInfo("Arclight Phoenix", 2018, Rarity.MYTHIC, mage.cards.a.ArclightPhoenix.class)); cards.add(new SetCardInfo("Arclight Phoenix", 2018, Rarity.MYTHIC, mage.cards.a.ArclightPhoenix.class));

View file

@ -25,6 +25,12 @@ public class SecretLairDrop extends ExpansionSet {
// so it must be split to two different cards (one card for one side, another card for another side), // so it must be split to two different cards (one card for one side, another card for another side),
// also must add second side to directDownloadLinks in scryfall // also must add second side to directDownloadLinks in scryfall
// workaround to fix compilation error: java: code too large
addPart1(); // 1-1000
addPart2(); // 1001+
}
private void addPart1() {
cards.add(new SetCardInfo("Counterspell", "99999SCTLR", Rarity.RARE, mage.cards.c.Counterspell.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Counterspell", "99999SCTLR", Rarity.RARE, mage.cards.c.Counterspell.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Viscera Seer", "99999VS", Rarity.COMMON, mage.cards.v.VisceraSeer.class)); // workaround until "VS" supported as card number cards.add(new SetCardInfo("Viscera Seer", "99999VS", Rarity.COMMON, mage.cards.v.VisceraSeer.class)); // workaround until "VS" supported as card number
cards.add(new SetCardInfo("Snow-Covered Plains", 1, Rarity.LAND, mage.cards.s.SnowCoveredPlains.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Snow-Covered Plains", 1, Rarity.LAND, mage.cards.s.SnowCoveredPlains.class, NON_FULL_USE_VARIOUS));
@ -35,7 +41,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Bloodghast", 6, Rarity.RARE, mage.cards.b.Bloodghast.class)); cards.add(new SetCardInfo("Bloodghast", 6, Rarity.RARE, mage.cards.b.Bloodghast.class));
cards.add(new SetCardInfo("Golgari Thug", 7, Rarity.RARE, mage.cards.g.GolgariThug.class)); cards.add(new SetCardInfo("Golgari Thug", 7, Rarity.RARE, mage.cards.g.GolgariThug.class));
cards.add(new SetCardInfo("Life from the Loam", 8, Rarity.RARE, mage.cards.l.LifeFromTheLoam.class)); cards.add(new SetCardInfo("Life from the Loam", 8, Rarity.RARE, mage.cards.l.LifeFromTheLoam.class));
cards.add(new SetCardInfo("Reaper King", 9, Rarity.MYTHIC, mage.cards.r.ReaperKing.class)); cards.add(new SetCardInfo("Reaper King", 9, Rarity.MYTHIC, mage.cards.r.ReaperKing.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sliver Overlord", 10, Rarity.MYTHIC, mage.cards.s.SliverOverlord.class)); cards.add(new SetCardInfo("Sliver Overlord", 10, Rarity.MYTHIC, mage.cards.s.SliverOverlord.class));
cards.add(new SetCardInfo("The Ur-Dragon", 11, Rarity.MYTHIC, mage.cards.t.TheUrDragon.class)); cards.add(new SetCardInfo("The Ur-Dragon", 11, Rarity.MYTHIC, mage.cards.t.TheUrDragon.class));
cards.add(new SetCardInfo("Bitterblossom", 12, Rarity.MYTHIC, mage.cards.b.Bitterblossom.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Bitterblossom", 12, Rarity.MYTHIC, mage.cards.b.Bitterblossom.class, NON_FULL_USE_VARIOUS));
@ -90,7 +96,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Forest", 67, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Forest", 67, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Heliod, God of the Sun", 68, Rarity.MYTHIC, mage.cards.h.HeliodGodOfTheSun.class)); cards.add(new SetCardInfo("Heliod, God of the Sun", 68, Rarity.MYTHIC, mage.cards.h.HeliodGodOfTheSun.class));
cards.add(new SetCardInfo("Karametra, God of Harvests", 69, Rarity.MYTHIC, mage.cards.k.KarametraGodOfHarvests.class)); cards.add(new SetCardInfo("Karametra, God of Harvests", 69, Rarity.MYTHIC, mage.cards.k.KarametraGodOfHarvests.class));
cards.add(new SetCardInfo("Iroas, God of Victory", 70, Rarity.MYTHIC, mage.cards.i.IroasGodOfVictory.class)); cards.add(new SetCardInfo("Iroas, God of Victory", 70, Rarity.MYTHIC, mage.cards.i.IroasGodOfVictory.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Thassa, God of the Sea", 71, Rarity.MYTHIC, mage.cards.t.ThassaGodOfTheSea.class)); cards.add(new SetCardInfo("Thassa, God of the Sea", 71, Rarity.MYTHIC, mage.cards.t.ThassaGodOfTheSea.class));
cards.add(new SetCardInfo("Ephara, God of the Polis", 72, Rarity.MYTHIC, mage.cards.e.EpharaGodOfThePolis.class)); cards.add(new SetCardInfo("Ephara, God of the Polis", 72, Rarity.MYTHIC, mage.cards.e.EpharaGodOfThePolis.class));
cards.add(new SetCardInfo("Kruphix, God of Horizons", 73, Rarity.MYTHIC, mage.cards.k.KruphixGodOfHorizons.class)); cards.add(new SetCardInfo("Kruphix, God of Horizons", 73, Rarity.MYTHIC, mage.cards.k.KruphixGodOfHorizons.class));
@ -134,14 +140,14 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Opt", 111, Rarity.RARE, mage.cards.o.Opt.class)); cards.add(new SetCardInfo("Opt", 111, Rarity.RARE, mage.cards.o.Opt.class));
cards.add(new SetCardInfo("Fatal Push", 112, Rarity.RARE, mage.cards.f.FatalPush.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Fatal Push", 112, Rarity.RARE, mage.cards.f.FatalPush.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Anger of the Gods", 113, Rarity.RARE, mage.cards.a.AngerOfTheGods.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Anger of the Gods", 113, Rarity.RARE, mage.cards.a.AngerOfTheGods.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Explore", 114, Rarity.RARE, mage.cards.e.Explore.class)); cards.add(new SetCardInfo("Explore", 114, Rarity.RARE, mage.cards.e.Explore.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Glen Elendra Archmage", 115, Rarity.RARE, mage.cards.g.GlenElendraArchmage.class)); cards.add(new SetCardInfo("Glen Elendra Archmage", 115, Rarity.RARE, mage.cards.g.GlenElendraArchmage.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Mistbind Clique", 116, Rarity.RARE, mage.cards.m.MistbindClique.class)); cards.add(new SetCardInfo("Mistbind Clique", 116, Rarity.RARE, mage.cards.m.MistbindClique.class));
cards.add(new SetCardInfo("Spellstutter Sprite", 117, Rarity.RARE, mage.cards.s.SpellstutterSprite.class)); cards.add(new SetCardInfo("Spellstutter Sprite", 117, Rarity.RARE, mage.cards.s.SpellstutterSprite.class));
cards.add(new SetCardInfo("Vendilion Clique", 118, Rarity.MYTHIC, mage.cards.v.VendilionClique.class)); cards.add(new SetCardInfo("Vendilion Clique", 118, Rarity.MYTHIC, mage.cards.v.VendilionClique.class));
cards.add(new SetCardInfo("Swamp", 119, Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Swamp", 119, Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Sower of Temptation", 120, Rarity.RARE, mage.cards.s.SowerOfTemptation.class)); cards.add(new SetCardInfo("Sower of Temptation", 120, Rarity.RARE, mage.cards.s.SowerOfTemptation.class));
cards.add(new SetCardInfo("Damnation", 121, Rarity.RARE, mage.cards.d.Damnation.class)); cards.add(new SetCardInfo("Damnation", 121, Rarity.RARE, mage.cards.d.Damnation.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Enchanted Evening", 122, Rarity.RARE, mage.cards.e.EnchantedEvening.class)); cards.add(new SetCardInfo("Enchanted Evening", 122, Rarity.RARE, mage.cards.e.EnchantedEvening.class));
cards.add(new SetCardInfo("Hallowed Fountain", 123, Rarity.RARE, mage.cards.h.HallowedFountain.class)); cards.add(new SetCardInfo("Hallowed Fountain", 123, Rarity.RARE, mage.cards.h.HallowedFountain.class));
cards.add(new SetCardInfo("Watery Grave", 124, Rarity.RARE, mage.cards.w.WateryGrave.class)); cards.add(new SetCardInfo("Watery Grave", 124, Rarity.RARE, mage.cards.w.WateryGrave.class));
@ -209,7 +215,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Squirrel Wrangler", 198, Rarity.RARE, mage.cards.s.SquirrelWrangler.class)); cards.add(new SetCardInfo("Squirrel Wrangler", 198, Rarity.RARE, mage.cards.s.SquirrelWrangler.class));
cards.add(new SetCardInfo("Swarmyard", 199, Rarity.RARE, mage.cards.s.Swarmyard.class)); cards.add(new SetCardInfo("Swarmyard", 199, Rarity.RARE, mage.cards.s.Swarmyard.class));
cards.add(new SetCardInfo("Arcane Signet", 201, Rarity.RARE, mage.cards.a.ArcaneSignet.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Arcane Signet", 201, Rarity.RARE, mage.cards.a.ArcaneSignet.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Chromatic Lantern", 202, Rarity.RARE, mage.cards.c.ChromaticLantern.class)); cards.add(new SetCardInfo("Chromatic Lantern", 202, Rarity.RARE, mage.cards.c.ChromaticLantern.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Commander's Sphere", 203, Rarity.RARE, mage.cards.c.CommandersSphere.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Commander's Sphere", 203, Rarity.RARE, mage.cards.c.CommandersSphere.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Darksteel Ingot", 204, Rarity.RARE, mage.cards.d.DarksteelIngot.class)); cards.add(new SetCardInfo("Darksteel Ingot", 204, Rarity.RARE, mage.cards.d.DarksteelIngot.class));
cards.add(new SetCardInfo("Gilded Lotus", 205, Rarity.RARE, mage.cards.g.GildedLotus.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Gilded Lotus", 205, Rarity.RARE, mage.cards.g.GildedLotus.class, NON_FULL_USE_VARIOUS));
@ -221,7 +227,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Sheoldred, Whispering One", 211, Rarity.MYTHIC, mage.cards.s.SheoldredWhisperingOne.class)); cards.add(new SetCardInfo("Sheoldred, Whispering One", 211, Rarity.MYTHIC, mage.cards.s.SheoldredWhisperingOne.class));
cards.add(new SetCardInfo("Urabrask the Hidden", 212, Rarity.MYTHIC, mage.cards.u.UrabraskTheHidden.class)); cards.add(new SetCardInfo("Urabrask the Hidden", 212, Rarity.MYTHIC, mage.cards.u.UrabraskTheHidden.class));
cards.add(new SetCardInfo("Vorinclex, Voice of Hunger", 213, Rarity.MYTHIC, mage.cards.v.VorinclexVoiceOfHunger.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Vorinclex, Voice of Hunger", 213, Rarity.MYTHIC, mage.cards.v.VorinclexVoiceOfHunger.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Heliod, Sun-Crowned", 214, Rarity.MYTHIC, mage.cards.h.HeliodSunCrowned.class)); cards.add(new SetCardInfo("Heliod, Sun-Crowned", 214, Rarity.MYTHIC, mage.cards.h.HeliodSunCrowned.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Goblin Rabblemaster", 215, Rarity.RARE, mage.cards.g.GoblinRabblemaster.class)); cards.add(new SetCardInfo("Goblin Rabblemaster", 215, Rarity.RARE, mage.cards.g.GoblinRabblemaster.class));
cards.add(new SetCardInfo("Monastery Swiftspear", 216, Rarity.RARE, mage.cards.m.MonasterySwiftspear.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Monastery Swiftspear", 216, Rarity.RARE, mage.cards.m.MonasterySwiftspear.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Boros Charm", 217, Rarity.RARE, mage.cards.b.BorosCharm.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Boros Charm", 217, Rarity.RARE, mage.cards.b.BorosCharm.class, NON_FULL_USE_VARIOUS));
@ -229,7 +235,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Frost Titan", 220, Rarity.MYTHIC, mage.cards.f.FrostTitan.class)); cards.add(new SetCardInfo("Frost Titan", 220, Rarity.MYTHIC, mage.cards.f.FrostTitan.class));
cards.add(new SetCardInfo("Primeval Titan", 221, Rarity.MYTHIC, mage.cards.p.PrimevalTitan.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Primeval Titan", 221, Rarity.MYTHIC, mage.cards.p.PrimevalTitan.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Uro, Titan of Nature's Wrath", 222, Rarity.MYTHIC, mage.cards.u.UroTitanOfNaturesWrath.class)); cards.add(new SetCardInfo("Uro, Titan of Nature's Wrath", 222, Rarity.MYTHIC, mage.cards.u.UroTitanOfNaturesWrath.class));
cards.add(new SetCardInfo("Grave Titan", 223, Rarity.MYTHIC, mage.cards.g.GraveTitan.class)); cards.add(new SetCardInfo("Grave Titan", 223, Rarity.MYTHIC, mage.cards.g.GraveTitan.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Inferno Titan", 224, Rarity.MYTHIC, mage.cards.i.InfernoTitan.class)); cards.add(new SetCardInfo("Inferno Titan", 224, Rarity.MYTHIC, mage.cards.i.InfernoTitan.class));
cards.add(new SetCardInfo("Kroxa, Titan of Death's Hunger", 225, Rarity.MYTHIC, mage.cards.k.KroxaTitanOfDeathsHunger.class)); cards.add(new SetCardInfo("Kroxa, Titan of Death's Hunger", 225, Rarity.MYTHIC, mage.cards.k.KroxaTitanOfDeathsHunger.class));
cards.add(new SetCardInfo("Path to Exile", 226, Rarity.RARE, mage.cards.p.PathToExile.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Path to Exile", 226, Rarity.RARE, mage.cards.p.PathToExile.class, NON_FULL_USE_VARIOUS));
@ -712,7 +718,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Tireless Tracker", 711, Rarity.RARE, mage.cards.t.TirelessTracker.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Tireless Tracker", 711, Rarity.RARE, mage.cards.t.TirelessTracker.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Swords to Plowshares", 713, Rarity.RARE, mage.cards.s.SwordsToPlowshares.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Swords to Plowshares", 713, Rarity.RARE, mage.cards.s.SwordsToPlowshares.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 714, Rarity.RARE, mage.cards.m.MerfolkOfThePearlTrident.class)); cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 714, Rarity.RARE, mage.cards.m.MerfolkOfThePearlTrident.class));
cards.add(new SetCardInfo("Lord of the Pit", 715, Rarity.RARE, mage.cards.l.LordOfThePit.class)); cards.add(new SetCardInfo("Lord of the Pit", 715, Rarity.RARE, mage.cards.l.LordOfThePit.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Shivan Dragon", 716, Rarity.RARE, mage.cards.s.ShivanDragon.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Shivan Dragon", 716, Rarity.RARE, mage.cards.s.ShivanDragon.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Giant Growth", 717, Rarity.RARE, mage.cards.g.GiantGrowth.class)); cards.add(new SetCardInfo("Giant Growth", 717, Rarity.RARE, mage.cards.g.GiantGrowth.class));
cards.add(new SetCardInfo("Maro", 718, Rarity.RARE, mage.cards.m.Maro.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Maro", 718, Rarity.RARE, mage.cards.m.Maro.class, NON_FULL_USE_VARIOUS));
@ -792,7 +798,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Command Tower", 792, Rarity.RARE, mage.cards.c.CommandTower.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Command Tower", 792, Rarity.RARE, mage.cards.c.CommandTower.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Nine Lives", 793, Rarity.RARE, mage.cards.n.NineLives.class)); cards.add(new SetCardInfo("Nine Lives", 793, Rarity.RARE, mage.cards.n.NineLives.class));
cards.add(new SetCardInfo("Yoshimaru, Ever Faithful", 794, Rarity.MYTHIC, mage.cards.y.YoshimaruEverFaithful.class)); cards.add(new SetCardInfo("Yoshimaru, Ever Faithful", 794, Rarity.MYTHIC, mage.cards.y.YoshimaruEverFaithful.class));
cards.add(new SetCardInfo("Wastes", "795*", Rarity.RARE, mage.cards.w.Wastes.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Wastes", "795*", Rarity.RARE, mage.cards.w.Wastes.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Mana Vault", "796*", Rarity.MYTHIC, mage.cards.m.ManaVault.class)); cards.add(new SetCardInfo("Mana Vault", "796*", Rarity.MYTHIC, mage.cards.m.ManaVault.class));
cards.add(new SetCardInfo("Seraph Sanctuary", 797, Rarity.RARE, mage.cards.s.SeraphSanctuary.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Seraph Sanctuary", 797, Rarity.RARE, mage.cards.s.SeraphSanctuary.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Coveted Jewel", 799, Rarity.RARE, mage.cards.c.CovetedJewel.class)); cards.add(new SetCardInfo("Coveted Jewel", 799, Rarity.RARE, mage.cards.c.CovetedJewel.class));
@ -813,6 +819,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Seven Dwarves", 815, Rarity.RARE, mage.cards.s.SevenDwarves.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Seven Dwarves", 815, Rarity.RARE, mage.cards.s.SevenDwarves.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Seven Dwarves", 816, Rarity.RARE, mage.cards.s.SevenDwarves.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Seven Dwarves", 816, Rarity.RARE, mage.cards.s.SevenDwarves.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Seven Dwarves", 817, Rarity.RARE, mage.cards.s.SevenDwarves.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Seven Dwarves", 817, Rarity.RARE, mage.cards.s.SevenDwarves.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Seven Dwarves", 818, Rarity.RARE, mage.cards.s.SevenDwarves.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Arcane Signet", 820, Rarity.RARE, mage.cards.a.ArcaneSignet.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Arcane Signet", 820, Rarity.RARE, mage.cards.a.ArcaneSignet.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Arcane Signet", "820*", Rarity.RARE, mage.cards.a.ArcaneSignet.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Arcane Signet", "820*", Rarity.RARE, mage.cards.a.ArcaneSignet.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Echo of Eons", 821, Rarity.RARE, mage.cards.e.EchoOfEons.class, RETRO_ART)); cards.add(new SetCardInfo("Echo of Eons", 821, Rarity.RARE, mage.cards.e.EchoOfEons.class, RETRO_ART));
@ -852,7 +859,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Havengul Lich", 859, Rarity.MYTHIC, mage.cards.h.HavengulLich.class, RETRO_ART)); cards.add(new SetCardInfo("Havengul Lich", 859, Rarity.MYTHIC, mage.cards.h.HavengulLich.class, RETRO_ART));
cards.add(new SetCardInfo("Nekusar, the Mindrazer", 860, Rarity.MYTHIC, mage.cards.n.NekusarTheMindrazer.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Nekusar, the Mindrazer", 860, Rarity.MYTHIC, mage.cards.n.NekusarTheMindrazer.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Varina, Lich Queen", 861, Rarity.MYTHIC, mage.cards.v.VarinaLichQueen.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Varina, Lich Queen", 861, Rarity.MYTHIC, mage.cards.v.VarinaLichQueen.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Wilhelt, the Rotcleaver", 862, Rarity.MYTHIC, mage.cards.w.WilheltTheRotcleaver.class, RETRO_ART)); cards.add(new SetCardInfo("Wilhelt, the Rotcleaver", 862, Rarity.MYTHIC, mage.cards.w.WilheltTheRotcleaver.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Masterwork of Ingenuity", 863, Rarity.RARE, mage.cards.m.MasterworkOfIngenuity.class)); cards.add(new SetCardInfo("Masterwork of Ingenuity", 863, Rarity.RARE, mage.cards.m.MasterworkOfIngenuity.class));
cards.add(new SetCardInfo("Sculpting Steel", 864, Rarity.RARE, mage.cards.s.SculptingSteel.class)); cards.add(new SetCardInfo("Sculpting Steel", 864, Rarity.RARE, mage.cards.s.SculptingSteel.class));
cards.add(new SetCardInfo("Unnatural Growth", 865, Rarity.RARE, mage.cards.u.UnnaturalGrowth.class)); cards.add(new SetCardInfo("Unnatural Growth", 865, Rarity.RARE, mage.cards.u.UnnaturalGrowth.class));
@ -877,6 +884,11 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Young Wolf", 885, Rarity.RARE, mage.cards.y.YoungWolf.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Young Wolf", 885, Rarity.RARE, mage.cards.y.YoungWolf.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Solve the Equation", 886, Rarity.RARE, mage.cards.s.SolveTheEquation.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Solve the Equation", 886, Rarity.RARE, mage.cards.s.SolveTheEquation.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Enduring Ideal", 887, Rarity.RARE, mage.cards.e.EnduringIdeal.class)); cards.add(new SetCardInfo("Enduring Ideal", 887, Rarity.RARE, mage.cards.e.EnduringIdeal.class));
cards.add(new SetCardInfo("Plains", 888, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Island", 889, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Swamp", 890, Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Mountain", 891, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Forest", 892, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Changeling Outcast", 894, Rarity.RARE, mage.cards.c.ChangelingOutcast.class)); cards.add(new SetCardInfo("Changeling Outcast", 894, Rarity.RARE, mage.cards.c.ChangelingOutcast.class));
cards.add(new SetCardInfo("Helpful Hunter", 895, Rarity.RARE, mage.cards.h.HelpfulHunter.class)); cards.add(new SetCardInfo("Helpful Hunter", 895, Rarity.RARE, mage.cards.h.HelpfulHunter.class));
cards.add(new SetCardInfo("Spirited Companion", 896, Rarity.RARE, mage.cards.s.SpiritedCompanion.class)); cards.add(new SetCardInfo("Spirited Companion", 896, Rarity.RARE, mage.cards.s.SpiritedCompanion.class));
@ -890,6 +902,9 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Arcane Signet", 908, Rarity.RARE, mage.cards.a.ArcaneSignet.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Arcane Signet", 908, Rarity.RARE, mage.cards.a.ArcaneSignet.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Gilded Lotus", 909, Rarity.RARE, mage.cards.g.GildedLotus.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Gilded Lotus", 909, Rarity.RARE, mage.cards.g.GildedLotus.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sol Ring", 910, Rarity.RARE, mage.cards.s.SolRing.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Sol Ring", 910, Rarity.RARE, mage.cards.s.SolRing.class, NON_FULL_USE_VARIOUS));
}
private void addPart2() {
cards.add(new SetCardInfo("Elspeth, Knight-Errant", 1001, Rarity.MYTHIC, mage.cards.e.ElspethKnightErrant.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Elspeth, Knight-Errant", 1001, Rarity.MYTHIC, mage.cards.e.ElspethKnightErrant.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Patron Wizard", 1002, Rarity.RARE, mage.cards.p.PatronWizard.class)); cards.add(new SetCardInfo("Patron Wizard", 1002, Rarity.RARE, mage.cards.p.PatronWizard.class));
cards.add(new SetCardInfo("Berserk", 1003, Rarity.MYTHIC, mage.cards.b.Berserk.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Berserk", 1003, Rarity.MYTHIC, mage.cards.b.Berserk.class, NON_FULL_USE_VARIOUS));
@ -1026,7 +1041,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Mountain", 1133, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Mountain", 1133, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Forest", 1134, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Forest", 1134, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Abundant Growth", 1135, Rarity.RARE, mage.cards.a.AbundantGrowth.class, FULL_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Abundant Growth", 1135, Rarity.RARE, mage.cards.a.AbundantGrowth.class, FULL_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Mycoloth", 1136, Rarity.RARE, mage.cards.m.Mycoloth.class, FULL_ART)); cards.add(new SetCardInfo("Mycoloth", 1136, Rarity.RARE, mage.cards.m.Mycoloth.class, FULL_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Ghave, Guru of Spores", 1137, Rarity.MYTHIC, mage.cards.g.GhaveGuruOfSpores.class, FULL_ART)); cards.add(new SetCardInfo("Ghave, Guru of Spores", 1137, Rarity.MYTHIC, mage.cards.g.GhaveGuruOfSpores.class, FULL_ART));
cards.add(new SetCardInfo("Slimefoot, the Stowaway", 1138, Rarity.RARE, mage.cards.s.SlimefootTheStowaway.class, FULL_ART)); cards.add(new SetCardInfo("Slimefoot, the Stowaway", 1138, Rarity.RARE, mage.cards.s.SlimefootTheStowaway.class, FULL_ART));
cards.add(new SetCardInfo("Elspeth, Sun's Champion", 1140, Rarity.MYTHIC, mage.cards.e.ElspethSunsChampion.class)); cards.add(new SetCardInfo("Elspeth, Sun's Champion", 1140, Rarity.MYTHIC, mage.cards.e.ElspethSunsChampion.class));
@ -1063,7 +1078,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Kess, Dissident Mage", 1167, Rarity.MYTHIC, mage.cards.k.KessDissidentMage.class)); cards.add(new SetCardInfo("Kess, Dissident Mage", 1167, Rarity.MYTHIC, mage.cards.k.KessDissidentMage.class));
cards.add(new SetCardInfo("Field Marshal", 1168, Rarity.RARE, mage.cards.f.FieldMarshal.class)); cards.add(new SetCardInfo("Field Marshal", 1168, Rarity.RARE, mage.cards.f.FieldMarshal.class));
cards.add(new SetCardInfo("Temporal Manipulation", 1169, Rarity.MYTHIC, mage.cards.t.TemporalManipulation.class)); cards.add(new SetCardInfo("Temporal Manipulation", 1169, Rarity.MYTHIC, mage.cards.t.TemporalManipulation.class));
cards.add(new SetCardInfo("Dark Ritual", 1170, Rarity.RARE, mage.cards.d.DarkRitual.class)); cards.add(new SetCardInfo("Dark Ritual", 1170, Rarity.RARE, mage.cards.d.DarkRitual.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Midnight Reaper", 1171, Rarity.RARE, mage.cards.m.MidnightReaper.class)); cards.add(new SetCardInfo("Midnight Reaper", 1171, Rarity.RARE, mage.cards.m.MidnightReaper.class));
cards.add(new SetCardInfo("Seize the Day", 1172, Rarity.RARE, mage.cards.s.SeizeTheDay.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Seize the Day", 1172, Rarity.RARE, mage.cards.s.SeizeTheDay.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Faeburrow Elder", 1173, Rarity.RARE, mage.cards.f.FaeburrowElder.class)); cards.add(new SetCardInfo("Faeburrow Elder", 1173, Rarity.RARE, mage.cards.f.FaeburrowElder.class));
@ -1344,7 +1359,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Venser, the Sojourner", 1423, Rarity.MYTHIC, mage.cards.v.VenserTheSojourner.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Venser, the Sojourner", 1423, Rarity.MYTHIC, mage.cards.v.VenserTheSojourner.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Venser, the Sojourner", "1423*", Rarity.MYTHIC, mage.cards.v.VenserTheSojourner.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Venser, the Sojourner", "1423*", Rarity.MYTHIC, mage.cards.v.VenserTheSojourner.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Oppression", 1424, Rarity.RARE, mage.cards.o.Oppression.class)); cards.add(new SetCardInfo("Oppression", 1424, Rarity.RARE, mage.cards.o.Oppression.class));
cards.add(new SetCardInfo("Abrade", 1425, Rarity.RARE, mage.cards.a.Abrade.class)); cards.add(new SetCardInfo("Abrade", 1425, Rarity.RARE, mage.cards.a.Abrade.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Mass Hysteria", 1426, Rarity.RARE, mage.cards.m.MassHysteria.class)); cards.add(new SetCardInfo("Mass Hysteria", 1426, Rarity.RARE, mage.cards.m.MassHysteria.class));
cards.add(new SetCardInfo("Terminate", 1427, Rarity.RARE, mage.cards.t.Terminate.class)); cards.add(new SetCardInfo("Terminate", 1427, Rarity.RARE, mage.cards.t.Terminate.class));
cards.add(new SetCardInfo("Thalia, Heretic Cathar", 1428, Rarity.RARE, mage.cards.t.ThaliaHereticCathar.class)); cards.add(new SetCardInfo("Thalia, Heretic Cathar", 1428, Rarity.RARE, mage.cards.t.ThaliaHereticCathar.class));
@ -1519,7 +1534,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Simian Spirit Guide", "1548*", Rarity.RARE, mage.cards.s.SimianSpiritGuide.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Simian Spirit Guide", "1548*", Rarity.RARE, mage.cards.s.SimianSpiritGuide.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Prince of Thralls", 1549, Rarity.MYTHIC, mage.cards.p.PrinceOfThralls.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Prince of Thralls", 1549, Rarity.MYTHIC, mage.cards.p.PrinceOfThralls.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Prince of Thralls", "1549*", Rarity.MYTHIC, mage.cards.p.PrinceOfThralls.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Prince of Thralls", "1549*", Rarity.MYTHIC, mage.cards.p.PrinceOfThralls.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sun Titan", 1550, Rarity.RARE, mage.cards.s.SunTitan.class)); cards.add(new SetCardInfo("Sun Titan", 1550, Rarity.MYTHIC, mage.cards.s.SunTitan.class));
cards.add(new SetCardInfo("Breeches, Eager Pillager", 1551, Rarity.RARE, mage.cards.b.BreechesEagerPillager.class)); cards.add(new SetCardInfo("Breeches, Eager Pillager", 1551, Rarity.RARE, mage.cards.b.BreechesEagerPillager.class));
cards.add(new SetCardInfo("Deflecting Swat", 1552, Rarity.RARE, mage.cards.d.DeflectingSwat.class)); cards.add(new SetCardInfo("Deflecting Swat", 1552, Rarity.RARE, mage.cards.d.DeflectingSwat.class));
cards.add(new SetCardInfo("Llanowar Elves", 1553, Rarity.RARE, mage.cards.l.LlanowarElves.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Llanowar Elves", 1553, Rarity.RARE, mage.cards.l.LlanowarElves.class, NON_FULL_USE_VARIOUS));
@ -1685,7 +1700,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Dismember", 1674, Rarity.RARE, mage.cards.d.Dismember.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Dismember", 1674, Rarity.RARE, mage.cards.d.Dismember.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Birds of Paradise", 1675, Rarity.RARE, mage.cards.b.BirdsOfParadise.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Birds of Paradise", 1675, Rarity.RARE, mage.cards.b.BirdsOfParadise.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Birds of Paradise", "1675b", Rarity.RARE, mage.cards.b.BirdsOfParadise.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Birds of Paradise", "1675b", Rarity.RARE, mage.cards.b.BirdsOfParadise.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Three Visits", 1676, Rarity.RARE, mage.cards.t.ThreeVisits.class)); cards.add(new SetCardInfo("Three Visits", 1676, Rarity.RARE, mage.cards.t.ThreeVisits.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Door to Nothingness", 1678, Rarity.RARE, mage.cards.d.DoorToNothingness.class)); cards.add(new SetCardInfo("Door to Nothingness", 1678, Rarity.RARE, mage.cards.d.DoorToNothingness.class));
cards.add(new SetCardInfo("Ashnod's Altar", 1679, Rarity.RARE, mage.cards.a.AshnodsAltar.class)); cards.add(new SetCardInfo("Ashnod's Altar", 1679, Rarity.RARE, mage.cards.a.AshnodsAltar.class));
cards.add(new SetCardInfo("Dark Depths", 1680, Rarity.MYTHIC, mage.cards.d.DarkDepths.class)); cards.add(new SetCardInfo("Dark Depths", 1680, Rarity.MYTHIC, mage.cards.d.DarkDepths.class));
@ -1720,7 +1735,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Elves of Deep Shadow", 1710, Rarity.RARE, mage.cards.e.ElvesOfDeepShadow.class)); cards.add(new SetCardInfo("Elves of Deep Shadow", 1710, Rarity.RARE, mage.cards.e.ElvesOfDeepShadow.class));
cards.add(new SetCardInfo("Good-Fortune Unicorn", 1711, Rarity.RARE, mage.cards.g.GoodFortuneUnicorn.class)); cards.add(new SetCardInfo("Good-Fortune Unicorn", 1711, Rarity.RARE, mage.cards.g.GoodFortuneUnicorn.class));
cards.add(new SetCardInfo("Coat of Arms", 1712, Rarity.RARE, mage.cards.c.CoatOfArms.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Coat of Arms", 1712, Rarity.RARE, mage.cards.c.CoatOfArms.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Dictate of Erebos", 1713, Rarity.RARE, mage.cards.d.DictateOfErebos.class)); cards.add(new SetCardInfo("Dictate of Erebos", 1713, Rarity.RARE, mage.cards.d.DictateOfErebos.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Fecundity", 1714, Rarity.RARE, mage.cards.f.Fecundity.class)); cards.add(new SetCardInfo("Fecundity", 1714, Rarity.RARE, mage.cards.f.Fecundity.class));
cards.add(new SetCardInfo("Mayhem Devil", 1715, Rarity.RARE, mage.cards.m.MayhemDevil.class)); cards.add(new SetCardInfo("Mayhem Devil", 1715, Rarity.RARE, mage.cards.m.MayhemDevil.class));
cards.add(new SetCardInfo("Moldervine Reclamation", 1716, Rarity.RARE, mage.cards.m.MoldervineReclamation.class)); cards.add(new SetCardInfo("Moldervine Reclamation", 1716, Rarity.RARE, mage.cards.m.MoldervineReclamation.class));
@ -1728,7 +1743,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Back to Basics", 1718, Rarity.RARE, mage.cards.b.BackToBasics.class)); cards.add(new SetCardInfo("Back to Basics", 1718, Rarity.RARE, mage.cards.b.BackToBasics.class));
cards.add(new SetCardInfo("Preordain", 1719, Rarity.RARE, mage.cards.p.Preordain.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Preordain", 1719, Rarity.RARE, mage.cards.p.Preordain.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sphinx of the Second Sun", 1720, Rarity.MYTHIC, mage.cards.s.SphinxOfTheSecondSun.class)); cards.add(new SetCardInfo("Sphinx of the Second Sun", 1720, Rarity.MYTHIC, mage.cards.s.SphinxOfTheSecondSun.class));
cards.add(new SetCardInfo("Teferi's Ageless Insight", 1721, Rarity.RARE, mage.cards.t.TeferisAgelessInsight.class)); cards.add(new SetCardInfo("Teferi's Ageless Insight", 1721, Rarity.RARE, mage.cards.t.TeferisAgelessInsight.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Witch of the Moors", 1722, Rarity.RARE, mage.cards.w.WitchOfTheMoors.class)); cards.add(new SetCardInfo("Witch of the Moors", 1722, Rarity.RARE, mage.cards.w.WitchOfTheMoors.class));
cards.add(new SetCardInfo("Bear Umbra", 1723, Rarity.RARE, mage.cards.b.BearUmbra.class)); cards.add(new SetCardInfo("Bear Umbra", 1723, Rarity.RARE, mage.cards.b.BearUmbra.class));
cards.add(new SetCardInfo("Realmwalker", 1724, Rarity.RARE, mage.cards.r.Realmwalker.class)); cards.add(new SetCardInfo("Realmwalker", 1724, Rarity.RARE, mage.cards.r.Realmwalker.class));
@ -1779,7 +1794,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Unlicensed Hearse", 1772, Rarity.RARE, mage.cards.u.UnlicensedHearse.class)); cards.add(new SetCardInfo("Unlicensed Hearse", 1772, Rarity.RARE, mage.cards.u.UnlicensedHearse.class));
cards.add(new SetCardInfo("The Mimeoplasm", 1773, Rarity.RARE, mage.cards.t.TheMimeoplasm.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("The Mimeoplasm", 1773, Rarity.RARE, mage.cards.t.TheMimeoplasm.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Trickbind", 1774, Rarity.RARE, mage.cards.t.Trickbind.class)); cards.add(new SetCardInfo("Trickbind", 1774, Rarity.RARE, mage.cards.t.Trickbind.class));
cards.add(new SetCardInfo("Windfall", 1775, Rarity.RARE, mage.cards.w.Windfall.class)); cards.add(new SetCardInfo("Windfall", 1775, Rarity.RARE, mage.cards.w.Windfall.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Incarnation Technique", 1776, Rarity.RARE, mage.cards.i.IncarnationTechnique.class)); cards.add(new SetCardInfo("Incarnation Technique", 1776, Rarity.RARE, mage.cards.i.IncarnationTechnique.class));
cards.add(new SetCardInfo("Pernicious Deed", 1777, Rarity.RARE, mage.cards.p.PerniciousDeed.class)); cards.add(new SetCardInfo("Pernicious Deed", 1777, Rarity.RARE, mage.cards.p.PerniciousDeed.class));
cards.add(new SetCardInfo("Fell the Mighty", 1778, Rarity.RARE, mage.cards.f.FellTheMighty.class)); cards.add(new SetCardInfo("Fell the Mighty", 1778, Rarity.RARE, mage.cards.f.FellTheMighty.class));
@ -1847,12 +1862,16 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Liliana's Contract", 1844, Rarity.RARE, mage.cards.l.LilianasContract.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Liliana's Contract", 1844, Rarity.RARE, mage.cards.l.LilianasContract.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Shiny Impetus", 1845, Rarity.UNCOMMON, mage.cards.s.ShinyImpetus.class)); cards.add(new SetCardInfo("Shiny Impetus", 1845, Rarity.UNCOMMON, mage.cards.s.ShinyImpetus.class));
cards.add(new SetCardInfo("Fertile Ground", 1846, Rarity.COMMON, mage.cards.f.FertileGround.class)); cards.add(new SetCardInfo("Fertile Ground", 1846, Rarity.COMMON, mage.cards.f.FertileGround.class));
cards.add(new SetCardInfo("Lignify", 1847, Rarity.COMMON, mage.cards.l.Lignify.class)); cards.add(new SetCardInfo("Lignify", 1847, Rarity.COMMON, mage.cards.l.Lignify.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Mayael's Aria", 1848, Rarity.RARE, mage.cards.m.MayaelsAria.class)); cards.add(new SetCardInfo("Mayael's Aria", 1848, Rarity.RARE, mage.cards.m.MayaelsAria.class));
cards.add(new SetCardInfo("Trace of Abundance", 1849, Rarity.COMMON, mage.cards.t.TraceOfAbundance.class)); cards.add(new SetCardInfo("Trace of Abundance", 1849, Rarity.COMMON, mage.cards.t.TraceOfAbundance.class));
cards.add(new SetCardInfo("Crib Swap", 1850, Rarity.UNCOMMON, mage.cards.c.CribSwap.class)); cards.add(new SetCardInfo("Crib Swap", 1850, Rarity.UNCOMMON, mage.cards.c.CribSwap.class));
cards.add(new SetCardInfo("Homeward Path", 1851, Rarity.RARE, mage.cards.h.HomewardPath.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Homeward Path", 1851, Rarity.RARE, mage.cards.h.HomewardPath.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Go-Shintai of Life's Origin", 1853, Rarity.MYTHIC, mage.cards.g.GoShintaiOfLifesOrigin.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Go-Shintai of Life's Origin", 1853, Rarity.MYTHIC, mage.cards.g.GoShintaiOfLifesOrigin.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Armageddon", 1854, Rarity.MYTHIC, mage.cards.a.Armageddon.class));
cards.add(new SetCardInfo("Northern Paladin", 1855, Rarity.RARE, mage.cards.n.NorthernPaladin.class));
cards.add(new SetCardInfo("Demonic Tutor", 1856, Rarity.MYTHIC, mage.cards.d.DemonicTutor.class));
cards.add(new SetCardInfo("Lord of the Pit", 1857, Rarity.RARE, mage.cards.l.LordOfThePit.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Day of Judgment", 1858, Rarity.RARE, mage.cards.d.DayOfJudgment.class)); cards.add(new SetCardInfo("Day of Judgment", 1858, Rarity.RARE, mage.cards.d.DayOfJudgment.class));
cards.add(new SetCardInfo("Temporal Extortion", 1859, Rarity.RARE, mage.cards.t.TemporalExtortion.class)); cards.add(new SetCardInfo("Temporal Extortion", 1859, Rarity.RARE, mage.cards.t.TemporalExtortion.class));
cards.add(new SetCardInfo("Toxic Deluge", 1860, Rarity.RARE, mage.cards.t.ToxicDeluge.class)); cards.add(new SetCardInfo("Toxic Deluge", 1860, Rarity.RARE, mage.cards.t.ToxicDeluge.class));
@ -1937,6 +1956,16 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Mountain", 1942, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Mountain", 1942, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Forest", 1943, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Forest", 1943, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Morophon, the Boundless", 1944, Rarity.MYTHIC, mage.cards.m.MorophonTheBoundless.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Morophon, the Boundless", 1944, Rarity.MYTHIC, mage.cards.m.MorophonTheBoundless.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", 1945, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Island", 1946, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Swamp", 1947, Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Mountain", 1948, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Forest", 1949, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Plains", 1950, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Island", 1951, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Swamp", 1952, Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Mountain", 1953, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Forest", 1954, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Big Score", 1955, Rarity.RARE, mage.cards.b.BigScore.class)); cards.add(new SetCardInfo("Big Score", 1955, Rarity.RARE, mage.cards.b.BigScore.class));
cards.add(new SetCardInfo("Final Fortune", 1956, Rarity.RARE, mage.cards.f.FinalFortune.class)); cards.add(new SetCardInfo("Final Fortune", 1956, Rarity.RARE, mage.cards.f.FinalFortune.class));
cards.add(new SetCardInfo("Heat Shimmer", 1957, Rarity.RARE, mage.cards.h.HeatShimmer.class)); cards.add(new SetCardInfo("Heat Shimmer", 1957, Rarity.RARE, mage.cards.h.HeatShimmer.class));
@ -1971,11 +2000,26 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Zulaport Cutthroat", 1982, Rarity.RARE, mage.cards.z.ZulaportCutthroat.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Zulaport Cutthroat", 1982, Rarity.RARE, mage.cards.z.ZulaportCutthroat.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Aggravated Assault", 1983, Rarity.RARE, mage.cards.a.AggravatedAssault.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Aggravated Assault", 1983, Rarity.RARE, mage.cards.a.AggravatedAssault.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Desperate Ritual", 1984, Rarity.RARE, mage.cards.d.DesperateRitual.class)); cards.add(new SetCardInfo("Desperate Ritual", 1984, Rarity.RARE, mage.cards.d.DesperateRitual.class));
cards.add(new SetCardInfo("Deadly Dispute", 1985, Rarity.RARE, mage.cards.d.DeadlyDispute.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Go for the Throat", 1986, Rarity.RARE, mage.cards.g.GoForTheThroat.class));
cards.add(new SetCardInfo("Lightning Greaves", 1987, Rarity.RARE, mage.cards.l.LightningGreaves.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sol Ring", 1988, Rarity.RARE, mage.cards.s.SolRing.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Command Tower", 1989, Rarity.RARE, mage.cards.c.CommandTower.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Ephemerate", 1990, Rarity.RARE, mage.cards.e.Ephemerate.class));
cards.add(new SetCardInfo("Three Visits", 1991, Rarity.RARE, mage.cards.t.ThreeVisits.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lightning Greaves", 1992, Rarity.RARE, mage.cards.l.LightningGreaves.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sol Ring", 1993, Rarity.RARE, mage.cards.s.SolRing.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Command Tower", 1994, Rarity.RARE, mage.cards.c.CommandTower.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Fact or Fiction", 1995, Rarity.RARE, mage.cards.f.FactOrFiction.class, FULL_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Fact or Fiction", 1995, Rarity.RARE, mage.cards.f.FactOrFiction.class, FULL_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Frantic Search", 1996, Rarity.RARE, mage.cards.f.FranticSearch.class, FULL_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Frantic Search", 1996, Rarity.RARE, mage.cards.f.FranticSearch.class, FULL_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Scheming Symmetry", 1997, Rarity.RARE, mage.cards.s.SchemingSymmetry.class, FULL_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Scheming Symmetry", 1997, Rarity.RARE, mage.cards.s.SchemingSymmetry.class, FULL_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Blasphemous Act", 1998, Rarity.RARE, mage.cards.b.BlasphemousAct.class, FULL_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Blasphemous Act", 1998, Rarity.RARE, mage.cards.b.BlasphemousAct.class, FULL_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Impact Tremors", 1999, Rarity.RARE, mage.cards.i.ImpactTremors.class, FULL_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Impact Tremors", 1999, Rarity.RARE, mage.cards.i.ImpactTremors.class, FULL_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Damnation", 2000, Rarity.RARE, mage.cards.d.Damnation.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Dark Ritual", 2001, Rarity.RARE, mage.cards.d.DarkRitual.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Peer into the Abyss", 2002, Rarity.RARE, mage.cards.p.PeerIntoTheAbyss.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Surgical Extraction", 2003, Rarity.RARE, mage.cards.s.SurgicalExtraction.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Tendrils of Agony", 2004, Rarity.RARE, mage.cards.t.TendrilsOfAgony.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Agent of Treachery", 2005, Rarity.RARE, mage.cards.a.AgentOfTreachery.class)); cards.add(new SetCardInfo("Agent of Treachery", 2005, Rarity.RARE, mage.cards.a.AgentOfTreachery.class));
cards.add(new SetCardInfo("Priest of Forgotten Gods", 2006, Rarity.RARE, mage.cards.p.PriestOfForgottenGods.class)); cards.add(new SetCardInfo("Priest of Forgotten Gods", 2006, Rarity.RARE, mage.cards.p.PriestOfForgottenGods.class));
cards.add(new SetCardInfo("Treasonous Ogre", 2007, Rarity.RARE, mage.cards.t.TreasonousOgre.class)); cards.add(new SetCardInfo("Treasonous Ogre", 2007, Rarity.RARE, mage.cards.t.TreasonousOgre.class));
@ -1986,6 +2030,11 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Harrow", 2016, Rarity.RARE, mage.cards.h.Harrow.class)); cards.add(new SetCardInfo("Harrow", 2016, Rarity.RARE, mage.cards.h.Harrow.class));
cards.add(new SetCardInfo("World Shaper", 2017, Rarity.RARE, mage.cards.w.WorldShaper.class)); cards.add(new SetCardInfo("World Shaper", 2017, Rarity.RARE, mage.cards.w.WorldShaper.class));
cards.add(new SetCardInfo("Horn of Greed", 2018, Rarity.RARE, mage.cards.h.HornOfGreed.class)); cards.add(new SetCardInfo("Horn of Greed", 2018, Rarity.RARE, mage.cards.h.HornOfGreed.class));
cards.add(new SetCardInfo("Damnation", 2019, Rarity.RARE, mage.cards.d.Damnation.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Dark Ritual", 2020, Rarity.RARE, mage.cards.d.DarkRitual.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Peer into the Abyss", 2021, Rarity.RARE, mage.cards.p.PeerIntoTheAbyss.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Surgical Extraction", 2022, Rarity.RARE, mage.cards.s.SurgicalExtraction.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Tendrils of Agony", 2023, Rarity.RARE, mage.cards.t.TendrilsOfAgony.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Goblin Bombardment", 2024, Rarity.RARE, mage.cards.g.GoblinBombardment.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Goblin Bombardment", 2024, Rarity.RARE, mage.cards.g.GoblinBombardment.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Orcish Lumberjack", 2025, Rarity.RARE, mage.cards.o.OrcishLumberjack.class)); cards.add(new SetCardInfo("Orcish Lumberjack", 2025, Rarity.RARE, mage.cards.o.OrcishLumberjack.class));
cards.add(new SetCardInfo("Constant Mists", 2026, Rarity.RARE, mage.cards.c.ConstantMists.class)); cards.add(new SetCardInfo("Constant Mists", 2026, Rarity.RARE, mage.cards.c.ConstantMists.class));
@ -2060,10 +2109,113 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Sylvan Safekeeper", 2109, Rarity.RARE, mage.cards.s.SylvanSafekeeper.class)); cards.add(new SetCardInfo("Sylvan Safekeeper", 2109, Rarity.RARE, mage.cards.s.SylvanSafekeeper.class));
cards.add(new SetCardInfo("Crucible of Worlds", 2110, Rarity.MYTHIC, mage.cards.c.CrucibleOfWorlds.class)); cards.add(new SetCardInfo("Crucible of Worlds", 2110, Rarity.MYTHIC, mage.cards.c.CrucibleOfWorlds.class));
cards.add(new SetCardInfo("Zuran Orb", 2111, Rarity.RARE, mage.cards.z.ZuranOrb.class)); cards.add(new SetCardInfo("Zuran Orb", 2111, Rarity.RARE, mage.cards.z.ZuranOrb.class));
cards.add(new SetCardInfo("Dandan", 2138, Rarity.RARE, mage.cards.d.Dandan.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Dandan", 2139, Rarity.RARE, mage.cards.d.Dandan.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Accumulated Knowledge", 2140, Rarity.RARE, mage.cards.a.AccumulatedKnowledge.class));
cards.add(new SetCardInfo("Memory Lapse", 2142, Rarity.RARE, mage.cards.m.MemoryLapse.class));
cards.add(new SetCardInfo("Mystic Sanctuary", 2143, Rarity.RARE, mage.cards.m.MysticSanctuary.class));
cards.add(new SetCardInfo("Island", 2144, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Island", 2145, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Island", 2146, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Island", 2147, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Brainstorm", 2148, Rarity.COMMON, mage.cards.b.Brainstorm.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Capture of Jingzhou", 2149, Rarity.MYTHIC, mage.cards.c.CaptureOfJingzhou.class, RETRO_ART));
cards.add(new SetCardInfo("Chart a Course", 2150, Rarity.UNCOMMON, mage.cards.c.ChartACourse.class, RETRO_ART));
cards.add(new SetCardInfo("Control Magic", 2151, Rarity.UNCOMMON, mage.cards.c.ControlMagic.class, RETRO_ART));
cards.add(new SetCardInfo("Day's Undoing", 2153, Rarity.RARE, mage.cards.d.DaysUndoing.class, RETRO_ART));
cards.add(new SetCardInfo("Mental Note", 2154, Rarity.COMMON, mage.cards.m.MentalNote.class, RETRO_ART));
cards.add(new SetCardInfo("Metamorphose", 2155, Rarity.UNCOMMON, mage.cards.m.Metamorphose.class, RETRO_ART));
cards.add(new SetCardInfo("Predict", 2156, Rarity.UNCOMMON, mage.cards.p.Predict.class, RETRO_ART));
cards.add(new SetCardInfo("Telling Time", 2157, Rarity.UNCOMMON, mage.cards.t.TellingTime.class, RETRO_ART));
cards.add(new SetCardInfo("Unsubstantiate", 2158, Rarity.UNCOMMON, mage.cards.u.Unsubstantiate.class, RETRO_ART));
cards.add(new SetCardInfo("Halimar Depths", 2159, Rarity.COMMON, mage.cards.h.HalimarDepths.class, RETRO_ART));
cards.add(new SetCardInfo("Haunted Fengraf", 2160, Rarity.COMMON, mage.cards.h.HauntedFengraf.class, RETRO_ART));
cards.add(new SetCardInfo("Lonely Sandbar", 2161, Rarity.COMMON, mage.cards.l.LonelySandbar.class, RETRO_ART));
cards.add(new SetCardInfo("Remote Isle", 2162, Rarity.COMMON, mage.cards.r.RemoteIsle.class, RETRO_ART));
cards.add(new SetCardInfo("The Surgical Bay", 2163, Rarity.COMMON, mage.cards.t.TheSurgicalBay.class, RETRO_ART));
cards.add(new SetCardInfo("Svyelunite Temple", 2164, Rarity.UNCOMMON, mage.cards.s.SvyeluniteTemple.class, RETRO_ART));
cards.add(new SetCardInfo("Heliod, Sun-Crowned", 2165, Rarity.MYTHIC, mage.cards.h.HeliodSunCrowned.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Steelshaper's Gift", 2166, Rarity.RARE, mage.cards.s.SteelshapersGift.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Swords to Plowshares", 2167, Rarity.RARE, mage.cards.s.SwordsToPlowshares.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Baral, Chief of Compliance", 2168, Rarity.RARE, mage.cards.b.BaralChiefOfCompliance.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Garruk Relentless", 2169, Rarity.MYTHIC, mage.cards.g.GarrukRelentless.class));
cards.add(new SetCardInfo("Garruk, the Veil-Cursed", 2169, Rarity.MYTHIC, mage.cards.g.GarrukTheVeilCursed.class));
cards.add(new SetCardInfo("Reaper King", 2170, Rarity.RARE, mage.cards.r.ReaperKing.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Glen Elendra Archmage", 2171, Rarity.RARE, mage.cards.g.GlenElendraArchmage.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Guardian Project", 2172, Rarity.MYTHIC, mage.cards.g.GuardianProject.class));
cards.add(new SetCardInfo("Roon of the Hidden Realm", 2173, Rarity.RARE, mage.cards.r.RoonOfTheHiddenRealm.class));
cards.add(new SetCardInfo("Soulherder", 2174, Rarity.RARE, mage.cards.s.Soulherder.class));
cards.add(new SetCardInfo("Jaws, Relentless Predator", 2175, Rarity.MYTHIC, mage.cards.j.JawsRelentlessPredator.class));
cards.add(new SetCardInfo("Descent into Avernus", 2176, Rarity.RARE, mage.cards.d.DescentIntoAvernus.class));
cards.add(new SetCardInfo("Reckless Endeavor", 2177, Rarity.RARE, mage.cards.r.RecklessEndeavor.class));
cards.add(new SetCardInfo("Sneak Attack", 2178, Rarity.MYTHIC, mage.cards.s.SneakAttack.class));
cards.add(new SetCardInfo("Abrade", 2179, Rarity.RARE, mage.cards.a.Abrade.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Bruvac the Grandiloquent", 2181, Rarity.MYTHIC, mage.cards.b.BruvacTheGrandiloquent.class));
cards.add(new SetCardInfo("Windfall", 2182, Rarity.RARE, mage.cards.w.Windfall.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Captain N'ghathrod", 2183, Rarity.MYTHIC, mage.cards.c.CaptainNghathrod.class));
cards.add(new SetCardInfo("Nekusar, the Mindrazer", 2184, Rarity.RARE, mage.cards.n.NekusarTheMindrazer.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Iron Maiden", 2185, Rarity.RARE, mage.cards.i.IronMaiden.class));
cards.add(new SetCardInfo("Mindcrank", 2186, Rarity.RARE, mage.cards.m.Mindcrank.class));
cards.add(new SetCardInfo("Lethal Scheme", 2187, Rarity.RARE, mage.cards.l.LethalScheme.class));
cards.add(new SetCardInfo("Grave Titan", 2188, Rarity.MYTHIC, mage.cards.g.GraveTitan.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Animate Dead", 2189, Rarity.RARE, mage.cards.a.AnimateDead.class));
cards.add(new SetCardInfo("Temporal Trespass", 2190, Rarity.MYTHIC, mage.cards.t.TemporalTrespass.class));
cards.add(new SetCardInfo("Unearth", 2191, Rarity.RARE, mage.cards.u.Unearth.class));
cards.add(new SetCardInfo("Lignify", 2192, Rarity.RARE, mage.cards.l.Lignify.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Greensleeves, Maro-Sorcerer", 2193, Rarity.MYTHIC, mage.cards.g.GreensleevesMaroSorcerer.class)); cards.add(new SetCardInfo("Greensleeves, Maro-Sorcerer", 2193, Rarity.MYTHIC, mage.cards.g.GreensleevesMaroSorcerer.class));
cards.add(new SetCardInfo("Polyraptor", 2194, Rarity.MYTHIC, mage.cards.p.Polyraptor.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Polyraptor", 2194, Rarity.MYTHIC, mage.cards.p.Polyraptor.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Academy Manufactor", 2195, Rarity.RARE, mage.cards.a.AcademyManufactor.class)); cards.add(new SetCardInfo("Academy Manufactor", 2195, Rarity.RARE, mage.cards.a.AcademyManufactor.class));
cards.add(new SetCardInfo("Wurmcoil Engine", 2196, Rarity.MYTHIC, mage.cards.w.WurmcoilEngine.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Wurmcoil Engine", 2196, Rarity.MYTHIC, mage.cards.w.WurmcoilEngine.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Ellie, Brick Master", 2197, Rarity.MYTHIC, mage.cards.e.EllieBrickMaster.class));
cards.add(new SetCardInfo("Joel, Resolute Survivor", 2198, Rarity.MYTHIC, mage.cards.j.JoelResoluteSurvivor.class));
cards.add(new SetCardInfo("Cabal Ritual", 2199, Rarity.RARE, mage.cards.c.CabalRitual.class));
cards.add(new SetCardInfo("Haunted One", 2200, Rarity.MYTHIC, mage.cards.h.HauntedOne.class));
cards.add(new SetCardInfo("Abby, Merciless Soldier", 2202, Rarity.MYTHIC, mage.cards.a.AbbyMercilessSoldier.class));
cards.add(new SetCardInfo("Ellie, Vengeful Hunter", 2203, Rarity.MYTHIC, mage.cards.e.EllieVengefulHunter.class));
cards.add(new SetCardInfo("Dictate of Erebos", 2204, Rarity.RARE, mage.cards.d.DictateOfErebos.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Mycoloth", 2205, Rarity.RARE, mage.cards.m.Mycoloth.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kratos, God of War", 2207, Rarity.MYTHIC, mage.cards.k.KratosGodOfWar.class));
cards.add(new SetCardInfo("World at War", 2208, Rarity.RARE, mage.cards.w.WorldAtWar.class));
cards.add(new SetCardInfo("Rite of Flame", 2209, Rarity.RARE, mage.cards.r.RiteOfFlame.class));
cards.add(new SetCardInfo("Sulfuric Vortex", 2210, Rarity.RARE, mage.cards.s.SulfuricVortex.class));
cards.add(new SetCardInfo("Pyrohemia", 2211, Rarity.RARE, mage.cards.p.Pyrohemia.class));
cards.add(new SetCardInfo("Atreus, Impulsive Son", 2212, Rarity.MYTHIC, mage.cards.a.AtreusImpulsiveSon.class));
cards.add(new SetCardInfo("Teferi's Ageless Insight", 2214, Rarity.RARE, mage.cards.t.TeferisAgelessInsight.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Teferi's Ageless Insight", "2214b", Rarity.RARE, mage.cards.t.TeferisAgelessInsight.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Iroas, God of Victory", 2215, Rarity.MYTHIC, mage.cards.i.IroasGodOfVictory.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Midnight Clock", 2217, Rarity.RARE, mage.cards.m.MidnightClock.class));
cards.add(new SetCardInfo("Whip of Erebos", 2218, Rarity.RARE, mage.cards.w.WhipOfErebos.class));
cards.add(new SetCardInfo("Chain Reaction", 2219, Rarity.RARE, mage.cards.c.ChainReaction.class));
cards.add(new SetCardInfo("Passionate Archaeologist", 2220, Rarity.MYTHIC, mage.cards.p.PassionateArchaeologist.class));
cards.add(new SetCardInfo("Aloy, Savior of Meridian", 2221, Rarity.MYTHIC, mage.cards.a.AloySaviorOfMeridian.class));
cards.add(new SetCardInfo("Farseek", 2222, Rarity.RARE, mage.cards.f.Farseek.class));
cards.add(new SetCardInfo("Blightsteel Colossus", 2223, Rarity.MYTHIC, mage.cards.b.BlightsteelColossus.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Tarrian's Soulcleaver", 2224, Rarity.RARE, mage.cards.t.TarriansSoulcleaver.class));
cards.add(new SetCardInfo("Meteor Golem", 2225, Rarity.RARE, mage.cards.m.MeteorGolem.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Path to Exile", 2227, Rarity.RARE, mage.cards.p.PathToExile.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Borne Upon a Wind", 2228, Rarity.RARE, mage.cards.b.BorneUponAWind.class));
cards.add(new SetCardInfo("Ghostly Flicker", 2229, Rarity.RARE, mage.cards.g.GhostlyFlicker.class));
cards.add(new SetCardInfo("Eiganjo Castle", 2230, Rarity.RARE, mage.cards.e.EiganjoCastle.class));
cards.add(new SetCardInfo("Vito, Thorn of the Dusk Rose", 2282, Rarity.RARE, mage.cards.v.VitoThornOfTheDuskRose.class));
cards.add(new SetCardInfo("Satoru Umezawa", 2283, Rarity.RARE, mage.cards.s.SatoruUmezawa.class));
cards.add(new SetCardInfo("Voja, Jaws of the Conclave", 2284, Rarity.MYTHIC, mage.cards.v.VojaJawsOfTheConclave.class));
cards.add(new SetCardInfo("Wilhelt, the Rotcleaver", 2285, Rarity.MYTHIC, mage.cards.w.WilheltTheRotcleaver.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Liberator, Urza's Battlethopter", 2286, Rarity.RARE, mage.cards.l.LiberatorUrzasBattlethopter.class));
cards.add(new SetCardInfo("Distant Melody", 2311, Rarity.RARE, mage.cards.d.DistantMelody.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Explore", 2312, Rarity.RARE, mage.cards.e.Explore.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Inspiring Call", 2313, Rarity.RARE, mage.cards.i.InspiringCall.class));
cards.add(new SetCardInfo("Chromatic Lantern", 2314, Rarity.RARE, mage.cards.c.ChromaticLantern.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sol Ring", 2315, Rarity.RARE, mage.cards.s.SolRing.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sphere of Safety", 2316, Rarity.RARE, mage.cards.s.SphereOfSafety.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Miscast", 2317, Rarity.RARE, mage.cards.m.Miscast.class));
cards.add(new SetCardInfo("Phyrexian Arena", 2318, Rarity.RARE, mage.cards.p.PhyrexianArena.class));
cards.add(new SetCardInfo("Tormenting Voice", 2319, Rarity.RARE, mage.cards.t.TormentingVoice.class));
cards.add(new SetCardInfo("Tamiyo's Safekeeping", 2320, Rarity.RARE, mage.cards.t.TamiyosSafekeeping.class));
cards.add(new SetCardInfo("Hullbreaker Horror", 2321, Rarity.RARE, mage.cards.h.HullbreakerHorror.class));
cards.add(new SetCardInfo("Maddening Cacophony", 2322, Rarity.RARE, mage.cards.m.MaddeningCacophony.class));
cards.add(new SetCardInfo("Serum Visions", 2323, Rarity.RARE, mage.cards.s.SerumVisions.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Umbris, Fear Manifest", 2324, Rarity.MYTHIC, mage.cards.u.UmbrisFearManifest.class));
cards.add(new SetCardInfo("Spellskite", 2325, Rarity.RARE, mage.cards.s.Spellskite.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Feed the Swarm", 7001, Rarity.RARE, mage.cards.f.FeedTheSwarm.class)); cards.add(new SetCardInfo("Feed the Swarm", 7001, Rarity.RARE, mage.cards.f.FeedTheSwarm.class));
cards.add(new SetCardInfo("Forge Anew", 7002, Rarity.RARE, mage.cards.f.ForgeAnew.class)); cards.add(new SetCardInfo("Forge Anew", 7002, Rarity.RARE, mage.cards.f.ForgeAnew.class));
cards.add(new SetCardInfo("Silence", 7003, Rarity.RARE, mage.cards.s.Silence.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Silence", 7003, Rarity.RARE, mage.cards.s.Silence.class, NON_FULL_USE_VARIOUS));
@ -2092,6 +2244,7 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Lotus Petal", 7035, Rarity.MYTHIC, mage.cards.l.LotusPetal.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Lotus Petal", 7035, Rarity.MYTHIC, mage.cards.l.LotusPetal.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lotus Petal", 7036, Rarity.MYTHIC, mage.cards.l.LotusPetal.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Lotus Petal", 7036, Rarity.MYTHIC, mage.cards.l.LotusPetal.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lotus Petal", 7037, Rarity.MYTHIC, mage.cards.l.LotusPetal.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Lotus Petal", 7037, Rarity.MYTHIC, mage.cards.l.LotusPetal.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Vision Charm", 7040, Rarity.RARE, mage.cards.v.VisionCharm.class));
cards.add(new SetCardInfo("Jace, the Mind Sculptor", 8001, Rarity.MYTHIC, mage.cards.j.JaceTheMindSculptor.class)); cards.add(new SetCardInfo("Jace, the Mind Sculptor", 8001, Rarity.MYTHIC, mage.cards.j.JaceTheMindSculptor.class));
cards.add(new SetCardInfo("Doom Blade", 9990, Rarity.RARE, mage.cards.d.DoomBlade.class)); cards.add(new SetCardInfo("Doom Blade", 9990, Rarity.RARE, mage.cards.d.DoomBlade.class));
cards.add(new SetCardInfo("Massacre", 9991, Rarity.RARE, mage.cards.m.Massacre.class)); cards.add(new SetCardInfo("Massacre", 9991, Rarity.RARE, mage.cards.m.Massacre.class));

View file

@ -30,15 +30,18 @@ public class SecretLairShowdown extends ExpansionSet {
cards.add(new SetCardInfo("Expressive Iteration", 13, Rarity.RARE, mage.cards.e.ExpressiveIteration.class)); cards.add(new SetCardInfo("Expressive Iteration", 13, Rarity.RARE, mage.cards.e.ExpressiveIteration.class));
cards.add(new SetCardInfo("Fatal Push", 3, Rarity.RARE, mage.cards.f.FatalPush.class)); cards.add(new SetCardInfo("Fatal Push", 3, Rarity.RARE, mage.cards.f.FatalPush.class));
cards.add(new SetCardInfo("Fauna Shaman", 41, Rarity.RARE, mage.cards.f.FaunaShaman.class)); cards.add(new SetCardInfo("Fauna Shaman", 41, Rarity.RARE, mage.cards.f.FaunaShaman.class));
cards.add(new SetCardInfo("Flowerfoot Swordmaster", 46, Rarity.RARE, mage.cards.f.FlowerfootSwordmaster.class));
cards.add(new SetCardInfo("Force of Despair", 29, Rarity.RARE, mage.cards.f.ForceOfDespair.class, FULL_ART)); cards.add(new SetCardInfo("Force of Despair", 29, Rarity.RARE, mage.cards.f.ForceOfDespair.class, FULL_ART));
cards.add(new SetCardInfo("Garruk Wildspeaker", 42, Rarity.MYTHIC, mage.cards.g.GarrukWildspeaker.class)); cards.add(new SetCardInfo("Garruk Wildspeaker", 42, Rarity.MYTHIC, mage.cards.g.GarrukWildspeaker.class));
cards.add(new SetCardInfo("Goblin Guide", 23, Rarity.RARE, mage.cards.g.GoblinGuide.class)); cards.add(new SetCardInfo("Goblin Guide", 23, Rarity.RARE, mage.cards.g.GoblinGuide.class));
cards.add(new SetCardInfo("Innkeeper's Talent", 45, Rarity.RARE, mage.cards.i.InnkeepersTalent.class, FULL_ART));
cards.add(new SetCardInfo("Island", 32, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Island", 32, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Karn Liberated", 36, Rarity.MYTHIC, mage.cards.k.KarnLiberated.class)); cards.add(new SetCardInfo("Karn Liberated", 36, Rarity.MYTHIC, mage.cards.k.KarnLiberated.class));
cards.add(new SetCardInfo("Laughing Jasper Flint", 44, Rarity.RARE, mage.cards.l.LaughingJasperFlint.class)); cards.add(new SetCardInfo("Laughing Jasper Flint", 44, Rarity.RARE, mage.cards.l.LaughingJasperFlint.class));
cards.add(new SetCardInfo("Lightning Bolt", 21, Rarity.RARE, mage.cards.l.LightningBolt.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Lightning Bolt", 21, Rarity.RARE, mage.cards.l.LightningBolt.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lightning Bolt", 37, Rarity.RARE, mage.cards.l.LightningBolt.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Lightning Bolt", 37, Rarity.RARE, mage.cards.l.LightningBolt.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Living End", 30, Rarity.MYTHIC, mage.cards.l.LivingEnd.class)); cards.add(new SetCardInfo("Living End", 30, Rarity.MYTHIC, mage.cards.l.LivingEnd.class));
cards.add(new SetCardInfo("Manifold Mouse", 47, Rarity.RARE, mage.cards.m.ManifoldMouse.class));
cards.add(new SetCardInfo("Mayhem Devil", 28, Rarity.RARE, mage.cards.m.MayhemDevil.class)); cards.add(new SetCardInfo("Mayhem Devil", 28, Rarity.RARE, mage.cards.m.MayhemDevil.class));
cards.add(new SetCardInfo("Mountain", 34, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Mountain", 34, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Murktide Regent", 17, Rarity.MYTHIC, mage.cards.m.MurktideRegent.class)); cards.add(new SetCardInfo("Murktide Regent", 17, Rarity.MYTHIC, mage.cards.m.MurktideRegent.class));

View file

@ -8,6 +8,8 @@ import mage.constants.SetType;
/** /**
* https://scryfall.com/sets/sum * https://scryfall.com/sets/sum
*
* https://mtg.wiki/page/Revised_Edition#%22Summer_Magic%22/%22Edgar%22
*/ */
public class SummerMagicEdgar extends ExpansionSet { public class SummerMagicEdgar extends ExpansionSet {
@ -19,9 +21,15 @@ public class SummerMagicEdgar extends ExpansionSet {
private SummerMagicEdgar() { private SummerMagicEdgar() {
super("Summer Magic / Edgar", "SUM", ExpansionSet.buildDate(1994, 6, 21), SetType.CORE); super("Summer Magic / Edgar", "SUM", ExpansionSet.buildDate(1994, 6, 21), SetType.CORE);
this.hasBoosters = false; this.hasBoosters = true;
this.hasBasicLands = true; this.hasBasicLands = true;
this.numBoosterLands = 1;
this.numBoosterCommon = 10;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 0;
cards.add(new SetCardInfo("Air Elemental", 47, Rarity.UNCOMMON, mage.cards.a.AirElemental.class, RETRO_ART)); cards.add(new SetCardInfo("Air Elemental", 47, Rarity.UNCOMMON, mage.cards.a.AirElemental.class, RETRO_ART));
cards.add(new SetCardInfo("Aladdin's Lamp", 231, Rarity.RARE, mage.cards.a.AladdinsLamp.class, RETRO_ART)); cards.add(new SetCardInfo("Aladdin's Lamp", 231, Rarity.RARE, mage.cards.a.AladdinsLamp.class, RETRO_ART));
cards.add(new SetCardInfo("Aladdin's Ring", 232, Rarity.RARE, mage.cards.a.AladdinsRing.class, RETRO_ART)); cards.add(new SetCardInfo("Aladdin's Ring", 232, Rarity.RARE, mage.cards.a.AladdinsRing.class, RETRO_ART));

View file

@ -60,7 +60,7 @@ public class WorldChampionshipDecks2004 extends ExpansionSet {
cards.add(new SetCardInfo("Island", "gn335", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Island", "gn335", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Island", "gn336", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Island", "gn336", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Island", "gn337", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Island", "gn337", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Krark-Clan Ironworks", "mb134", Rarity.RARE, mage.cards.k.KrarkClanIronworks.class)); cards.add(new SetCardInfo("Krark-Clan Ironworks", "mb134", Rarity.UNCOMMON, mage.cards.k.KrarkClanIronworks.class));
cards.add(new SetCardInfo("Mana Leak", "gn89", Rarity.COMMON, mage.cards.m.ManaLeak.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Mana Leak", "gn89", Rarity.COMMON, mage.cards.m.ManaLeak.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Mana Leak", "mb89sb", Rarity.COMMON, mage.cards.m.ManaLeak.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Mana Leak", "mb89sb", Rarity.COMMON, mage.cards.m.ManaLeak.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Myr Incubator", "mb212", Rarity.RARE, mage.cards.m.MyrIncubator.class)); cards.add(new SetCardInfo("Myr Incubator", "mb212", Rarity.RARE, mage.cards.m.MyrIncubator.class));

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-root</artifactId> <artifactId>mage-root</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-tests</artifactId> <artifactId>mage-tests</artifactId>

View file

@ -6,12 +6,17 @@ import mage.constants.CardType;
import mage.constants.PhaseStep; import mage.constants.PhaseStep;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.predicate.mageobject.NamePredicate;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.mage.test.player.TestPlayer; import org.mage.test.player.TestPlayer;
import org.mage.test.serverside.base.CardTestPlayerBase; import org.mage.test.serverside.base.CardTestPlayerBase;
import java.util.List;
/** /**
* @author LevelX2 * @author LevelX2
*/ */
@ -82,6 +87,7 @@ public class BestowTest extends CardTestPlayerBase {
assertSubtype("Hopeful Eidolon", SubType.AURA); assertSubtype("Hopeful Eidolon", SubType.AURA);
assertType("Hopeful Eidolon", CardType.ENCHANTMENT, true); assertType("Hopeful Eidolon", CardType.ENCHANTMENT, true);
assertType("Hopeful Eidolon", CardType.CREATURE, false); assertType("Hopeful Eidolon", CardType.CREATURE, false);
assertNotSubtype("Hopeful Eidolon", SubType.SPIRIT);
} }
/** /**
@ -122,59 +128,63 @@ public class BestowTest extends CardTestPlayerBase {
@Test @Test
public void bestowEnchantmentBecomesCreature() { public void bestowEnchantmentBecomesCreature() {
addCard(Zone.BATTLEFIELD, playerA, "Plains", 4); addCard(Zone.BATTLEFIELD, playerA, "Plains", 4);
addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion"); addCard(Zone.BATTLEFIELD, playerA, "Safehold Elite"); // 2/2 creature + Persist to return as a 1/1
addCard(Zone.HAND, playerA, "Hopeful Eidolon"); addCard(Zone.HAND, playerA, "Hopeful Eidolon");
addCard(Zone.BATTLEFIELD, playerB, "Mountain", 1); addCard(Zone.BATTLEFIELD, playerB, "Mountain", 1);
addCard(Zone.HAND, playerB, "Lightning Bolt"); addCard(Zone.HAND, playerB, "Lightning Bolt");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Hopeful Eidolon using bestow", "Silvercoat Lion"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Hopeful Eidolon using bestow", "Safehold Elite");
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Lightning Bolt", "Silvercoat Lion"); castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Lightning Bolt", "Safehold Elite");
setStrictChooseMode(true); setStrictChooseMode(true);
setStopAt(1, PhaseStep.END_TURN); setStopAt(1, PhaseStep.END_TURN);
execute(); execute();
// because Boon Satyr is no creature on the battlefield, evolve may not trigger
assertLife(playerA, 20); assertLife(playerA, 20);
assertLife(playerB, 20); assertLife(playerB, 20);
assertPermanentCount(playerA, "Silvercoat Lion", 0); assertPermanentCount(playerA, "Safehold Elite", 1);
assertPowerToughness(playerA, "Safehold Elite", 1, 1);
assertPermanentCount(playerA, "Hopeful Eidolon", 1); assertPermanentCount(playerA, "Hopeful Eidolon", 1);
assertPowerToughness(playerA, "Hopeful Eidolon", 1, 1); assertPowerToughness(playerA, "Hopeful Eidolon", 1, 1);
assertType("Hopeful Eidolon", CardType.CREATURE, true);
Permanent hopefulEidolon = getPermanent("Hopeful Eidolon", playerA); assertSubtype("Hopeful Eidolon", SubType.SPIRIT);
Assert.assertTrue("Hopeful Eidolon has to be a creature but is not", hopefulEidolon.isCreature(currentGame)); assertType("Hopeful Eidolon", CardType.ENCHANTMENT, true);
Assert.assertTrue("Hopeful Eidolon has to be an enchantment but is not", hopefulEidolon.isEnchantment(currentGame)); assertNotSubtype("Hopeful Eidolon", SubType.AURA);
} }
/** /**
* Test that card cast with bestow will not be tapped, if creatures come * Test that card cast with bestow will not be tapped, if creatures come
* into play tapped * into play tapped. If it is cast with bestow but the target removed, it should be tapped.
*/ */
@Test @Test
public void bestowEnchantmentWillNotBeTapped() { public void bestowEnchantmentWillNotBeTapped() {
addCard(Zone.BATTLEFIELD, playerA, "Forest", 6); addCustomEffect_TargetDestroy(playerA);
addCard(Zone.BATTLEFIELD, playerA, "Forest", 10);
addCard(Zone.BATTLEFIELD, playerA, "Silent Artisan"); addCard(Zone.BATTLEFIELD, playerA, "Silent Artisan");
addCard(Zone.HAND, playerA, "Boon Satyr"); addCard(Zone.HAND, playerA, "Boon Satyr");
addCard(Zone.HAND, playerA, "Leafcrown Dryad");
// Enchantment {1}{W} // Enchantment {1}{W}
// Creatures your opponents control enter the battlefield tapped. // Creatures your opponents control enter the battlefield tapped.
addCard(Zone.BATTLEFIELD, playerB, "Imposing Sovereign"); addCard(Zone.BATTLEFIELD, playerB, "Imposing Sovereign");
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Boon Satyr using bestow", "Silent Artisan"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Boon Satyr using bestow", "Silent Artisan");
checkPT("Boon Satyr attached", 1, PhaseStep.BEGIN_COMBAT, playerA, "Silent Artisan", 7, 7);
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Leafcrown Dryad using bestow", "Silent Artisan");
activateAbility(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "target destroy", "Silent Artisan");
setStrictChooseMode(true); setStrictChooseMode(true);
setStopAt(1, PhaseStep.END_TURN); setStopAt(1, PhaseStep.END_TURN);
execute(); execute();
// because Boon Satyr is no creature on the battlefield, evolve may not trigger // Boon Satyr should not be tapped since it resolved as an aura, Leafcrown Dryad resolved as a creature
assertPermanentCount(playerA, "Silent Artisan", 1);
assertPowerToughness(playerA, "Silent Artisan", 7, 7);
// because cast with bestow, Boon Satyr may not be tapped
assertTapped("Boon Satyr", false); assertTapped("Boon Satyr", false);
assertTapped("Leafcrown Dryad", true);
} }
@ -271,7 +281,6 @@ public class BestowTest extends CardTestPlayerBase {
assertHandCount(playerB, "Disdainful Stroke", 1); assertHandCount(playerB, "Disdainful Stroke", 1);
assertPermanentCount(playerA, "Hypnotic Siren", 1); assertPermanentCount(playerA, "Hypnotic Siren", 1);
// because cast with bestow, Boon Satyr may not be tapped
assertPermanentCount(playerA, "Silvercoat Lion", 1); assertPermanentCount(playerA, "Silvercoat Lion", 1);
assertPowerToughness(playerA, "Silvercoat Lion", 3, 3); assertPowerToughness(playerA, "Silvercoat Lion", 3, 3);
@ -551,4 +560,127 @@ public class BestowTest extends CardTestPlayerBase {
assertType("Nylea's Emissary", CardType.CREATURE, false); assertType("Nylea's Emissary", CardType.CREATURE, false);
assertType("Nylea's Emissary", CardType.ENCHANTMENT, SubType.AURA); assertType("Nylea's Emissary", CardType.ENCHANTMENT, SubType.AURA);
} }
@Test
public void testCastBestowFlashRootwaterShaman() {
addCard(Zone.HAND, playerA, "Nylea's Emissary"); // +3/+3, only an aura if cast with bestow
addCard(Zone.BATTLEFIELD, playerA, "Forest", 6);
addCard(Zone.BATTLEFIELD, playerA, "Rootwater Shaman"); //aura spells with enchant creature have flash
addCard(Zone.BATTLEFIELD, playerA, "Memnite", 1); // 1/1
castSpell(1, PhaseStep.BEGIN_COMBAT, playerA, "Nylea's Emissary using bestow", "Memnite");
setStrictChooseMode(true);
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPermanentCount(playerA, "Nylea's Emissary", 1);
assertPowerToughness(playerA, "Memnite", 4, 4);
assertType("Nylea's Emissary", CardType.CREATURE, false);
assertType("Nylea's Emissary", CardType.ENCHANTMENT, SubType.AURA);
}
/**
* Tests that copied bestow works correctly both on the stack and battlefield, including with the creature removed
*/
@Test
public void bestowCopiesTest() {
addCard(Zone.BATTLEFIELD, playerA, "Tundra", 18);
addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion");
addCard(Zone.BATTLEFIELD, playerA, "Overloaded Mage-Ring", 2);
addCard(Zone.HAND, playerA, "Hopeful Eidolon", 2);
addCard(Zone.HAND, playerA, "Copy Enchantment");
addCard(Zone.HAND, playerA, "Mythos of Illuna");
addCard(Zone.BATTLEFIELD, playerB, "Mountain", 4);
addCard(Zone.HAND, playerB, "Lightning Blast");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Hopeful Eidolon using bestow", "Silvercoat Lion");
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{1}, {T}, Sacrifice", "Hopeful Eidolon");
setChoice(playerA, false);
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Mythos of Illuna", "Hopeful Eidolon"); // Making a token copy of a resolved Bestow aura makes a token creature
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Copy Enchantment"); // Copying a resolved Bestow aura makes a creature
setChoice(playerA, true);
setChoice(playerA, "Hopeful Eidolon");
checkPT("Lion with 2x Hopeful Eidolon attached", 1, PhaseStep.BEGIN_COMBAT, playerA, "Silvercoat Lion", 4, 4);
checkPermanentCount("Four Hopeful Eidolons resolved", 1, PhaseStep.BEGIN_COMBAT, playerA, "Hopeful Eidolon", 4);
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Hopeful Eidolon using bestow", "Silvercoat Lion");
activateAbility(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "{1}, {T}, Sacrifice", "Hopeful Eidolon");
setChoice(playerA, false);
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Lightning Blast", "Silvercoat Lion");
setStrictChooseMode(true);
setStopAt(1, PhaseStep.END_TURN);
execute();
assertPermanentCount(playerA, "Silvercoat Lion", 0);
assertPermanentCount(playerA, "Hopeful Eidolon", 6);
assertTokenCount(playerA, "Hopeful Eidolon", 2);
FilterPermanent filter = new FilterPermanent();
filter.add(new NamePredicate("Hopeful Eidolon"));
List<Permanent> eidolons = currentGame.getBattlefield().getAllActivePermanents(filter, currentGame);
Assert.assertEquals("Six Eidolons found with filter", 6, eidolons.size());
for (Permanent p : eidolons){
Assert.assertTrue("Is Enchantment", p.getCardType(currentGame).contains(CardType.ENCHANTMENT));
Assert.assertFalse("Is not Aura", p.getSubtype(currentGame).contains(SubType.AURA));
Assert.assertTrue("Is Creature", p.getCardType(currentGame).contains(CardType.CREATURE));
Assert.assertTrue("Is Spirit", p.getSubtype(currentGame).contains(SubType.SPIRIT));
Assert.assertEquals("Is 1 power", 1, p.getPower().getValue());
Assert.assertEquals("Is 1 toughness", 1, p.getToughness().getValue());
}
}
@Test
public void testBestowSubtype() {
addCard(Zone.HAND, playerA, "Hopeful Eidolon", 2); // Spirit when cast as creature, not when cast as aura
addCard(Zone.BATTLEFIELD, playerA, "Plains", 5);
addCard(Zone.BATTLEFIELD, playerA, "Waxmane Baku"); // May add a counter on casting a spirit spell
addCard(Zone.BATTLEFIELD, playerA, "Drogskol Cavalry"); // +2 life whenever another spirit enters
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Hopeful Eidolon using bestow", "Waxmane Baku");
checkPermanentCounters("Not a Spirit, no KI counters", 1, PhaseStep.BEGIN_COMBAT, playerA, "Waxmane Baku", CounterType.KI, 0);
checkLife("Not a Spirit, no lifegain", 1, PhaseStep.BEGIN_COMBAT, playerA, 20);
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Hopeful Eidolon");
setChoice(playerA, true);
setStrictChooseMode(true);
setStopAt(1, PhaseStep.END_TURN);
execute();
assertPermanentCount(playerA, "Hopeful Eidolon", 2);
assertPowerToughness(playerA, "Waxmane Baku", 3, 3);
assertCounterCount(playerA, "Waxmane Baku", CounterType.KI, 1);
assertLife(playerA, 22);
}
@Test
public void testBestowSBATiming() {
addCard(Zone.HAND, playerA, "Hopeful Eidolon", 2); // +1/+1
addCard(Zone.HAND, playerA, "Pyroclasm", 2); // 2 damage
addCard(Zone.BATTLEFIELD, playerA, "Plateau", 10);
addCard(Zone.BATTLEFIELD, playerA, "Crusader of Odric");
addCard(Zone.BATTLEFIELD, playerA, "Memnite");
addCard(Zone.BATTLEFIELD, playerA, "Eager Cadet");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Hopeful Eidolon using bestow", "Memnite", true);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Hopeful Eidolon using bestow", "Eager Cadet");
checkPT("Memnite P/T", 1, PhaseStep.BEGIN_COMBAT, playerA, "Memnite", 2, 2);
checkPT("Eager Cadet P/T", 1, PhaseStep.BEGIN_COMBAT, playerA, "Eager Cadet", 2, 2);
checkPT("Crusader P/T", 1, PhaseStep.BEGIN_COMBAT, playerA, "Crusader of Odric", 3, 3);
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Pyroclasm");
setStrictChooseMode(true);
setStopAt(1, PhaseStep.END_TURN);
execute();
assertPermanentCount(playerA, "Hopeful Eidolon", 2);
assertPermanentCount(playerA, "Crusader of Odric", 1);
assertDamageReceived(playerA, "Crusader of Odric", 2);
assertGraveyardCount(playerA, 3);
}
} }

View file

@ -2,6 +2,7 @@ package org.mage.test.cards.abilities.keywords;
import mage.MageObject; import mage.MageObject;
import mage.ObjectColor; import mage.ObjectColor;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
@ -9,6 +10,7 @@ import mage.cards.Card;
import mage.constants.ComparisonType; import mage.constants.ComparisonType;
import mage.constants.PhaseStep; import mage.constants.PhaseStep;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicate;
@ -61,14 +63,22 @@ public class PrototypeTest extends CardTestPlayerBase {
} }
private void makeTester(Predicate<? super MageObject>... predicates) { private void makeTester(Predicate<? super MageObject>... predicates) {
FilterSpell filter = new FilterSpell(); FilterSpell filterA = new FilterSpell();
FilterPermanent filterB = new FilterPermanent();
for (Predicate<? super MageObject> predicate : predicates) { for (Predicate<? super MageObject> predicate : predicates) {
filter.add(predicate); filterA.add(predicate);
filterB.add(predicate);
} }
addCustomCardWithAbility( addCustomCardWithAbility(
"tester", playerA, "tester", playerA,
new SpellCastControllerTriggeredAbility( new SpellCastControllerTriggeredAbility(
new GainLifeEffect(1), filter, false new GainLifeEffect(1), filterA, false
)
);
addCustomCardWithAbility(
"tester", playerB,
new EntersBattlefieldAllTriggeredAbility(
new GainLifeEffect(1), filterB, false
) )
); );
} }
@ -159,6 +169,7 @@ public class PrototypeTest extends CardTestPlayerBase {
execute(); execute();
assertLife(playerA, 20 + 1); assertLife(playerA, 20 + 1);
assertLife(playerB, 20 + 1);
} }
@Test @Test
@ -174,6 +185,7 @@ public class PrototypeTest extends CardTestPlayerBase {
execute(); execute();
assertLife(playerA, 20 + 1); assertLife(playerA, 20 + 1);
assertLife(playerB, 20 + 1);
} }
@Test @Test
@ -192,6 +204,7 @@ public class PrototypeTest extends CardTestPlayerBase {
execute(); execute();
assertLife(playerA, 20 + 1); assertLife(playerA, 20 + 1);
assertLife(playerB, 20 + 1);
} }
@Test @Test
@ -210,6 +223,7 @@ public class PrototypeTest extends CardTestPlayerBase {
execute(); execute();
assertLife(playerA, 20 + 1); assertLife(playerA, 20 + 1);
assertLife(playerB, 20 + 1);
} }
@Test @Test
@ -225,6 +239,7 @@ public class PrototypeTest extends CardTestPlayerBase {
execute(); execute();
assertLife(playerA, 20 + 1); assertLife(playerA, 20 + 1);
assertLife(playerB, 20 + 1);
} }
@Test @Test
@ -240,6 +255,7 @@ public class PrototypeTest extends CardTestPlayerBase {
execute(); execute();
assertLife(playerA, 20 + 1); assertLife(playerA, 20 + 1);
assertLife(playerB, 20 + 1);
} }
@Test @Test

View file

@ -1127,12 +1127,10 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement
int actualCount = 0; int actualCount = 0;
for (Permanent permanent : currentGame.getBattlefield().getAllActivePermanents()) { for (Permanent permanent : currentGame.getBattlefield().getAllActivePermanents()) {
if (permanent instanceof PermanentToken) { if (permanent instanceof PermanentToken
if (permanent.getControllerId().equals(player.getId())) { && permanent.getControllerId().equals(player.getId())
if (isObjectHaveTargetNameOrAlias(player, permanent, tokenName)) { && isObjectHaveTargetNameOrAlias(player, permanent, tokenName)) {
actualCount++; actualCount++;
}
}
} }
} }
Assert.assertEquals("(Battlefield) Tokens counts for " + player.getName() + " are not equal (" + tokenName + ')', count, actualCount); Assert.assertEquals("(Battlefield) Tokens counts for " + player.getName() + " are not equal (" + tokenName + ')', count, actualCount);

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-root</artifactId> <artifactId>mage-root</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage-verify</artifactId> <artifactId>mage-verify</artifactId>

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage-root</artifactId> <artifactId>mage-root</artifactId>
<version>1.4.57</version> <version>1.4.58</version>
</parent> </parent>
<artifactId>mage</artifactId> <artifactId>mage</artifactId>

View file

@ -0,0 +1,53 @@
package mage.abilities.condition.common;
import mage.Mana;
import mage.abilities.Ability;
import mage.abilities.condition.Condition;
import mage.constants.AbilityType;
import mage.constants.ColoredManaSymbol;
import mage.game.Game;
import mage.util.CardUtil;
import mage.watchers.common.ManaSpentToCastWatcher;
/**
* @author TheElk801
*/
public enum TwoOfManaColorSpentCondition implements Condition {
WHITE(ColoredManaSymbol.W),
BLUE(ColoredManaSymbol.U),
BLACK(ColoredManaSymbol.B),
RED(ColoredManaSymbol.R),
GREEN(ColoredManaSymbol.G);
private final ColoredManaSymbol coloredManaSymbol;
TwoOfManaColorSpentCondition(ColoredManaSymbol coloredManaSymbol) {
this.coloredManaSymbol = coloredManaSymbol;
}
@Override
public boolean apply(Game game, Ability source) {
if (source.getAbilityType() == AbilityType.SPELL) {
return source.getManaCostsToPay().getUsedManaToPay().getColor(coloredManaSymbol) >= 2;
}
ManaSpentToCastWatcher watcher = game.getState().getWatcher(ManaSpentToCastWatcher.class);
if (watcher == null) {
return false;
}
Mana payment = watcher.getManaPayment(CardUtil.getSourceStackMomentReference(game, source));
if (payment == null) {
return false;
}
return payment.getColor(coloredManaSymbol) >= 2;
}
@Override
public boolean caresAboutManaColor() {
return true;
}
@Override
public String toString() {
return "{" + coloredManaSymbol + "}{" + coloredManaSymbol + "} was spent to cast it";
}
}

Some files were not shown because too many files have changed in this diff Show more