forked from External/mage
Merge pull request 'master' (#43) from External/mage:master into master
All checks were successful
/ build_release (push) Successful in 14m39s
All checks were successful
/ build_release (push) Successful in 14m39s
Reviewed-on: #43
This commit is contained in:
commit
31839c4eca
120 changed files with 4327 additions and 1367 deletions
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-root</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-client</artifactId>
|
||||
|
|
@ -133,7 +133,7 @@
|
|||
<dependency>
|
||||
<groupId>org.apache.xmlgraphics</groupId>
|
||||
<artifactId>batik-transcoder</artifactId>
|
||||
<version>1.17</version>
|
||||
<version>1.19</version>
|
||||
</dependency>
|
||||
<!-- svg support END -->
|
||||
|
||||
|
|
|
|||
|
|
@ -3523,7 +3523,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
|
|||
dialog.txtImageFolderPath.setText(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()));
|
||||
|
||||
// rendering settings
|
||||
|
|
@ -3713,7 +3713,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
|
|||
}
|
||||
|
||||
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) {
|
||||
|
|
|
|||
|
|
@ -113,7 +113,8 @@ public class GathererSets implements Iterable<DownloadJob> {
|
|||
"OTC", "OTP", "BIG", "MH3", "M3C", "ACR", "BLB", "BLC", "DSK", "DSC",
|
||||
"MB2", "FDN", "INR", "J25", "DRC", "DFT", "TDC", "TDM", "FCA", "FIC",
|
||||
"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
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -535,7 +535,7 @@ public class ScryfallImageSupportCards {
|
|||
add("SCD"); // Starter Commander Decks
|
||||
add("PW23"); // Wizards Play Network 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("ONE"); // Phyrexia: All Will Be One
|
||||
add("ONC"); // Phyrexia: All Will Be One Commander
|
||||
|
|
@ -612,8 +612,10 @@ public class ScryfallImageSupportCards {
|
|||
add("EOS"); // Edge of Eternities: Stellar Sights
|
||||
add("SPM"); // Marvel's Spider-Man
|
||||
add("SPE"); // Marvel's Spider-Man Eternal
|
||||
add("MAR"); // Marvel Universe
|
||||
add("TLA"); // Avatar: The Last Airbender
|
||||
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
|
||||
add("CALC"); // Custom Alchemized versions of existing cards
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-root</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-common</artifactId>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
public static final int MAGE_VERSION_MAJOR = 1;
|
||||
public static final int MAGE_VERSION_MINOR = 4;
|
||||
public static final int MAGE_VERSION_RELEASE = 57;
|
||||
public static final String MAGE_VERSION_RELEASE_INFO = "V2"; // V1, V1a, V1b for releases; V1-beta3, V1-beta4 for betas
|
||||
public static final int MAGE_VERSION_RELEASE = 58;
|
||||
public static final String MAGE_VERSION_RELEASE_INFO = "V1"; // V1, V1a, V1b for releases; V1-beta3, V1-beta4 for betas
|
||||
|
||||
// strict mode
|
||||
// Each update requires a strict version
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-counter-plugin</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-root</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-plugins</artifactId>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-root</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-reports</artifactId>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-root</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-server-console</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-deck-constructed</artifactId>
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ public abstract class AbstractCommander extends Constructed {
|
|||
|
||||
private static List<CommanderValidator> validators = Arrays.asList(
|
||||
PartnerValidator.instance,
|
||||
PartnerSurvivorsValidator.instance,
|
||||
PartnerFatherAndSonValidator.instance,
|
||||
FriendsForeverValidator.instance,
|
||||
PartnerWithValidator.instance,
|
||||
ChooseABackgroundValidator.instance,
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-deck-limited</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-brawlduel</artifactId>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-brawlfreeforall</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-canadianhighlanderduel</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-commanderduel</artifactId>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-commanderfreeforall</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-custompillaroftheparunsduel</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-freeforall</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-freeformcommanderduel</artifactId>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-freeformcommanderfreeforall</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-freeformunlimitedcommander</artifactId>
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
<dependency>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-game-freeformcommanderfreeforall</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-momirduel</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-momirfreeforall</artifactId>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-oathbreakerduel</artifactId>
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
<dependency>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-game-oathbreakerfreeforall</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-oathbreakerfreeforall</artifactId>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-pennydreadfulcommanderfreeforall</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-tinyleadersduel</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-game-twoplayerduel</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-player-ai-draftbot</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-player-ai-ma</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-player-ai</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-player-ai-mcts</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-player-human</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-tournament-boosterdraft</artifactId>
|
||||
|
|
|
|||
|
|
@ -15,411 +15,455 @@ public class PauperCube extends DraftCube {
|
|||
public PauperCube() {
|
||||
super("The Pauper Cube", "", 2025, 5, 7);
|
||||
|
||||
cubeCards.add(new CardIdentity("Academy Journeymage", ""));
|
||||
cubeCards.add(new CardIdentity("Act of Treason", ""));
|
||||
cubeCards.add(new CardIdentity("Adventuring Gear", ""));
|
||||
cubeCards.add(new CardIdentity("Aerie Bowmasters", ""));
|
||||
cubeCards.add(new CardIdentity("Aerie Ouphes", ""));
|
||||
cubeCards.add(new CardIdentity("Aether Adept", ""));
|
||||
cubeCards.add(new CardIdentity("Abrade", ""));
|
||||
cubeCards.add(new CardIdentity("Abraded Bluffs", ""));
|
||||
cubeCards.add(new CardIdentity("Abundant Harvest", ""));
|
||||
cubeCards.add(new CardIdentity("Accursed Marauder", ""));
|
||||
cubeCards.add(new CardIdentity("Aerie Auxiliary", ""));
|
||||
cubeCards.add(new CardIdentity("Aether Chaser", ""));
|
||||
cubeCards.add(new CardIdentity("Aether Poisoner", ""));
|
||||
cubeCards.add(new CardIdentity("Aethersnipe", ""));
|
||||
cubeCards.add(new CardIdentity("Agony Warp", ""));
|
||||
cubeCards.add(new CardIdentity("Ambush Viper", ""));
|
||||
cubeCards.add(new CardIdentity("Angelic Purge", ""));
|
||||
cubeCards.add(new CardIdentity("Arachnus Web", ""));
|
||||
cubeCards.add(new CardIdentity("Arc Lightning", ""));
|
||||
cubeCards.add(new CardIdentity("Armillary Sphere", ""));
|
||||
cubeCards.add(new CardIdentity("Arrest", ""));
|
||||
cubeCards.add(new CardIdentity("Ash Barrens", ""));
|
||||
cubeCards.add(new CardIdentity("Ainok Bond-Kin", ""));
|
||||
cubeCards.add(new CardIdentity("Alabaster Host Intercessor", ""));
|
||||
cubeCards.add(new CardIdentity("Ambitious Assault", ""));
|
||||
cubeCards.add(new CardIdentity("Ancestral Blade", ""));
|
||||
cubeCards.add(new CardIdentity("Annoyed Altisaur", ""));
|
||||
cubeCards.add(new CardIdentity("Arbor Elf", ""));
|
||||
cubeCards.add(new CardIdentity("Archaeomancer", ""));
|
||||
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("Assault Zeppelid", ""));
|
||||
cubeCards.add(new CardIdentity("Attended Knight", ""));
|
||||
cubeCards.add(new CardIdentity("Auger Spree", ""));
|
||||
cubeCards.add(new CardIdentity("Augur of Bolas", ""));
|
||||
cubeCards.add(new CardIdentity("Aven Riftwatcher", ""));
|
||||
cubeCards.add(new CardIdentity("Aven Surveyor", ""));
|
||||
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("Azorius Chancery", ""));
|
||||
cubeCards.add(new CardIdentity("Bannerhide Krushok", ""));
|
||||
cubeCards.add(new CardIdentity("Barbed Batterfist", ""));
|
||||
cubeCards.add(new CardIdentity("Basilica Screecher", ""));
|
||||
cubeCards.add(new CardIdentity("Basilisk Gate", ""));
|
||||
cubeCards.add(new CardIdentity("Basking Broodscale", ""));
|
||||
cubeCards.add(new CardIdentity("Battle Screech", ""));
|
||||
cubeCards.add(new CardIdentity("Beetleback Chief", ""));
|
||||
cubeCards.add(new CardIdentity("Beetleform Mage", ""));
|
||||
cubeCards.add(new CardIdentity("Beneath the Sands", ""));
|
||||
cubeCards.add(new CardIdentity("Behold the Multiverse", ""));
|
||||
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("Blinding Beam", ""));
|
||||
cubeCards.add(new CardIdentity("Blink of an Eye", ""));
|
||||
cubeCards.add(new CardIdentity("Bloodfell Caves", ""));
|
||||
cubeCards.add(new CardIdentity("Blossoming Sands", ""));
|
||||
cubeCards.add(new CardIdentity("Bonded Construct", ""));
|
||||
cubeCards.add(new CardIdentity("Bonds of Faith", ""));
|
||||
cubeCards.add(new CardIdentity("Blood Fountain", ""));
|
||||
cubeCards.add(new CardIdentity("Bloodwater Entity", ""));
|
||||
cubeCards.add(new CardIdentity("Bloom Hulk", ""));
|
||||
cubeCards.add(new CardIdentity("Body Dropper", ""));
|
||||
cubeCards.add(new CardIdentity("Bogardan Dragonheart", ""));
|
||||
cubeCards.add(new CardIdentity("Bonder's Ornament", ""));
|
||||
cubeCards.add(new CardIdentity("Bone Picker", ""));
|
||||
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("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("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("Burst Lightning", ""));
|
||||
cubeCards.add(new CardIdentity("Butcher Ghoul", ""));
|
||||
cubeCards.add(new CardIdentity("Cage of Hands", ""));
|
||||
cubeCards.add(new CardIdentity("Calcite Snapper", ""));
|
||||
cubeCards.add(new CardIdentity("Call of the Conclave", ""));
|
||||
cubeCards.add(new CardIdentity("Call the Cavalry", ""));
|
||||
cubeCards.add(new CardIdentity("Bushwhack", ""));
|
||||
cubeCards.add(new CardIdentity("Candy Grapple", ""));
|
||||
cubeCards.add(new CardIdentity("Candy Trail", ""));
|
||||
cubeCards.add(new CardIdentity("Capsize", ""));
|
||||
//cubeCards.add(new CardIdentity("Carnivorous Death-Parrot", ""));
|
||||
cubeCards.add(new CardIdentity("Cartouche of Strength", ""));
|
||||
cubeCards.add(new CardIdentity("Captured by Lagacs", ""));
|
||||
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("Centaur Healer", ""));
|
||||
cubeCards.add(new CardIdentity("Chain Lightning", ""));
|
||||
cubeCards.add(new CardIdentity("Chainer's Edict", ""));
|
||||
//cubeCards.add(new CardIdentity("Chivalrous Chevalier", ""));
|
||||
cubeCards.add(new CardIdentity("Cinder Barrens", ""));
|
||||
cubeCards.add(new CardIdentity("Citanul Woodreaders", ""));
|
||||
cubeCards.add(new CardIdentity("Claustrophobia", ""));
|
||||
cubeCards.add(new CardIdentity("Clay Statue", ""));
|
||||
cubeCards.add(new CardIdentity("Cloaked Siren", ""));
|
||||
cubeCards.add(new CardIdentity("Clutch of Currents", ""));
|
||||
cubeCards.add(new CardIdentity("Chitin Gravestalker", ""));
|
||||
cubeCards.add(new CardIdentity("Cindering Cutthroat", ""));
|
||||
cubeCards.add(new CardIdentity("Clawing Torment", ""));
|
||||
cubeCards.add(new CardIdentity("Clockwork Percussionist", ""));
|
||||
cubeCards.add(new CardIdentity("Cloudkin Seer", ""));
|
||||
cubeCards.add(new CardIdentity("Coalition Honor Guard", ""));
|
||||
//cubeCards.add(new CardIdentity("Cogwork Librarian", ""));
|
||||
cubeCards.add(new CardIdentity("Colossal Might", ""));
|
||||
//cubeCards.add(new CardIdentity("Common Iguana", ""));
|
||||
cubeCards.add(new CardIdentity("Coiling Oracle", ""));
|
||||
cubeCards.add(new CardIdentity("Colossal Dreadmask", ""));
|
||||
cubeCards.add(new CardIdentity("Combat Professor", ""));
|
||||
cubeCards.add(new CardIdentity("Compulsive Research", ""));
|
||||
cubeCards.add(new CardIdentity("Compulsory Rest", ""));
|
||||
cubeCards.add(new CardIdentity("Consume Strength", ""));
|
||||
cubeCards.add(new CardIdentity("Corrupted Zendikon", ""));
|
||||
cubeCards.add(new CardIdentity("Conclave Naturalists", ""));
|
||||
cubeCards.add(new CardIdentity("Condescend", ""));
|
||||
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("Court Hussar", ""));
|
||||
cubeCards.add(new CardIdentity("Crippling Fatigue", ""));
|
||||
cubeCards.add(new CardIdentity("Cruel Witness", ""));
|
||||
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("Daring Skyjek", ""));
|
||||
cubeCards.add(new CardIdentity("Dauntless Cathar", ""));
|
||||
cubeCards.add(new CardIdentity("Dead Reveler", ""));
|
||||
cubeCards.add(new CardIdentity("Dead Weight", ""));
|
||||
cubeCards.add(new CardIdentity("Deadeye Tormentor", ""));
|
||||
cubeCards.add(new CardIdentity("Dark-Dweller Oracle", ""));
|
||||
cubeCards.add(new CardIdentity("Dauntless Unity", ""));
|
||||
cubeCards.add(new CardIdentity("Dauthi Horror", ""));
|
||||
cubeCards.add(new CardIdentity("Dauthi Slayer", ""));
|
||||
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("Deprive", ""));
|
||||
cubeCards.add(new CardIdentity("Depths of Desire", ""));
|
||||
cubeCards.add(new CardIdentity("Deputy of Acquittals", ""));
|
||||
cubeCards.add(new CardIdentity("Deftblade Elite", ""));
|
||||
cubeCards.add(new CardIdentity("Deranged Assistant", ""));
|
||||
cubeCards.add(new CardIdentity("Desecrator Hag", ""));
|
||||
cubeCards.add(new CardIdentity("Desert", ""));
|
||||
cubeCards.add(new CardIdentity("Devour Flesh", ""));
|
||||
cubeCards.add(new CardIdentity("Diabolic Edict", ""));
|
||||
cubeCards.add(new CardIdentity("Dimir Guildgate", ""));
|
||||
cubeCards.add(new CardIdentity("Dimir Aqueduct", ""));
|
||||
cubeCards.add(new CardIdentity("Dimir Guildmage", ""));
|
||||
cubeCards.add(new CardIdentity("Dinrova Horror", ""));
|
||||
cubeCards.add(new CardIdentity("Disfigure", ""));
|
||||
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("Doomed Traveler", ""));
|
||||
cubeCards.add(new CardIdentity("Dragon Fodder", ""));
|
||||
cubeCards.add(new CardIdentity("Dusk Legion Zealot", ""));
|
||||
cubeCards.add(new CardIdentity("Dynacharge", ""));
|
||||
cubeCards.add(new CardIdentity("Eager Construct", ""));
|
||||
cubeCards.add(new CardIdentity("Eldrazi Devastator", ""));
|
||||
cubeCards.add(new CardIdentity("Dread Return", ""));
|
||||
cubeCards.add(new CardIdentity("Dreg Mangler", ""));
|
||||
cubeCards.add(new CardIdentity("Eagles of the North", ""));
|
||||
cubeCards.add(new CardIdentity("Ecstatic Awakener", ""));
|
||||
cubeCards.add(new CardIdentity("Eldrazi Repurposer", ""));
|
||||
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("Emperor Crocodile", ""));
|
||||
cubeCards.add(new CardIdentity("Epic Confrontation", ""));
|
||||
cubeCards.add(new CardIdentity("Errant Ephemeron", ""));
|
||||
cubeCards.add(new CardIdentity("Evincar's Justice", ""));
|
||||
cubeCards.add(new CardIdentity("Evolving Wilds", ""));
|
||||
//cubeCards.add(new CardIdentity("Extremely Slow Zombie", ""));
|
||||
cubeCards.add(new CardIdentity("Elvish Mystic", ""));
|
||||
cubeCards.add(new CardIdentity("Ephemerate", ""));
|
||||
cubeCards.add(new CardIdentity("Eroded Canyon", ""));
|
||||
cubeCards.add(new CardIdentity("Escape Tunnel", ""));
|
||||
cubeCards.add(new CardIdentity("Evolution Witness", ""));
|
||||
cubeCards.add(new CardIdentity("Exclude", ""));
|
||||
cubeCards.add(new CardIdentity("Experiment One", ""));
|
||||
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("Faithful Watchdog", ""));
|
||||
cubeCards.add(new CardIdentity("Falkenrath Noble", ""));
|
||||
cubeCards.add(new CardIdentity("Fanatical Firebrand", ""));
|
||||
cubeCards.add(new CardIdentity("Feeling of Dread", ""));
|
||||
cubeCards.add(new CardIdentity("Fervent Cathar", ""));
|
||||
cubeCards.add(new CardIdentity("Farseek", ""));
|
||||
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("Firebrand Archer", ""));
|
||||
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("Flurry of Horns", ""));
|
||||
cubeCards.add(new CardIdentity("Forked Bolt", ""));
|
||||
cubeCards.add(new CardIdentity("Forsaken Sanctuary", ""));
|
||||
cubeCards.add(new CardIdentity("Fortify", ""));
|
||||
cubeCards.add(new CardIdentity("Foul Orchard", ""));
|
||||
cubeCards.add(new CardIdentity("Forbidden Friendship", ""));
|
||||
cubeCards.add(new CardIdentity("Foreboding Landscape", ""));
|
||||
cubeCards.add(new CardIdentity("Frenzied Goblin", ""));
|
||||
cubeCards.add(new CardIdentity("Frilled Deathspitter", ""));
|
||||
cubeCards.add(new CardIdentity("Frilled Oculus", ""));
|
||||
cubeCards.add(new CardIdentity("Frostburn Weird", ""));
|
||||
cubeCards.add(new CardIdentity("Fungal Infection", ""));
|
||||
cubeCards.add(new CardIdentity("GO TO JAIL", ""));
|
||||
cubeCards.add(new CardIdentity("Gathan Raiders", ""));
|
||||
cubeCards.add(new CardIdentity("Gather the Townsfolk", ""));
|
||||
cubeCards.add(new CardIdentity("Ghirapur Gearcrafter", ""));
|
||||
cubeCards.add(new CardIdentity("Frost Trickster", ""));
|
||||
cubeCards.add(new CardIdentity("Galvanic Discharge", ""));
|
||||
cubeCards.add(new CardIdentity("Generous Ent", ""));
|
||||
cubeCards.add(new CardIdentity("Geyser Drake", ""));
|
||||
cubeCards.add(new CardIdentity("Ghostly Flicker", ""));
|
||||
cubeCards.add(new CardIdentity("Giant Growth", ""));
|
||||
cubeCards.add(new CardIdentity("Gideon's Lawkeeper", ""));
|
||||
cubeCards.add(new CardIdentity("Glint-Sleeve Artisan", ""));
|
||||
cubeCards.add(new CardIdentity("Gnawing Zombie", ""));
|
||||
cubeCards.add(new CardIdentity("Goblin Freerunner", ""));
|
||||
cubeCards.add(new CardIdentity("Goblin Heelcutter", ""));
|
||||
cubeCards.add(new CardIdentity("Goblin Trailblazer", ""));
|
||||
cubeCards.add(new CardIdentity("Gift of Fangs", ""));
|
||||
cubeCards.add(new CardIdentity("Gift of Orzhova", ""));
|
||||
cubeCards.add(new CardIdentity("Gingerbrute", ""));
|
||||
cubeCards.add(new CardIdentity("Gitaxian Probe", ""));
|
||||
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("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("Gray Merchant of Asphodel", ""));
|
||||
cubeCards.add(new CardIdentity("Grim Contest", ""));
|
||||
cubeCards.add(new CardIdentity("Grisly Salvage", ""));
|
||||
cubeCards.add(new CardIdentity("Grixis Slavedriver", ""));
|
||||
cubeCards.add(new CardIdentity("Gruul Guildgate", ""));
|
||||
cubeCards.add(new CardIdentity("Gryff Vanguard", ""));
|
||||
cubeCards.add(new CardIdentity("Guardian Automaton", ""));
|
||||
cubeCards.add(new CardIdentity("Greater Tanuki", ""));
|
||||
cubeCards.add(new CardIdentity("Greatsword of Tyr", ""));
|
||||
cubeCards.add(new CardIdentity("Grim Bauble", ""));
|
||||
cubeCards.add(new CardIdentity("Grim Initiate", ""));
|
||||
cubeCards.add(new CardIdentity("Growth Spiral", ""));
|
||||
cubeCards.add(new CardIdentity("Gruul Turf", ""));
|
||||
cubeCards.add(new CardIdentity("Guardian Idol", ""));
|
||||
cubeCards.add(new CardIdentity("Guardian of the Guildpact", ""));
|
||||
cubeCards.add(new CardIdentity("Guildsworn Prowler", ""));
|
||||
cubeCards.add(new CardIdentity("Gurmag Angler", ""));
|
||||
cubeCards.add(new CardIdentity("Halimar Wavewatch", ""));
|
||||
cubeCards.add(new CardIdentity("Harrow", ""));
|
||||
cubeCards.add(new CardIdentity("Harsh Sustenance", ""));
|
||||
cubeCards.add(new CardIdentity("Highland Lake", ""));
|
||||
cubeCards.add(new CardIdentity("Guttersnipe", ""));
|
||||
cubeCards.add(new CardIdentity("Hard Evidence", ""));
|
||||
cubeCards.add(new CardIdentity("Harried Spearguard", ""));
|
||||
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("Hobblefiend", ""));
|
||||
cubeCards.add(new CardIdentity("Holy Cow", ""));
|
||||
cubeCards.add(new CardIdentity("Hooting Mandrills", ""));
|
||||
cubeCards.add(new CardIdentity("Hordeling Outburst", ""));
|
||||
cubeCards.add(new CardIdentity("Imperiosaur", ""));
|
||||
cubeCards.add(new CardIdentity("Inner-Flame Acolyte", ""));
|
||||
cubeCards.add(new CardIdentity("Insolent Neonate", ""));
|
||||
cubeCards.add(new CardIdentity("Horrific Assault", ""));
|
||||
cubeCards.add(new CardIdentity("Imperial Oath", ""));
|
||||
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("Isolation Zone", ""));
|
||||
cubeCards.add(new CardIdentity("Ivy Elemental", ""));
|
||||
cubeCards.add(new CardIdentity("Izzet Chronarch", ""));
|
||||
cubeCards.add(new CardIdentity("Izzet Guildgate", ""));
|
||||
cubeCards.add(new CardIdentity("Iron Apprentice", ""));
|
||||
cubeCards.add(new CardIdentity("Izzet Boilerworks", ""));
|
||||
cubeCards.add(new CardIdentity("Izzet Charm", ""));
|
||||
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("Jungle Hollow", ""));
|
||||
cubeCards.add(new CardIdentity("Jungleborn Pioneer", ""));
|
||||
cubeCards.add(new CardIdentity("Keldon Marauders", ""));
|
||||
cubeCards.add(new CardIdentity("Keldon Overseer", ""));
|
||||
cubeCards.add(new CardIdentity("Keldon Raider", ""));
|
||||
cubeCards.add(new CardIdentity("Judge's Familiar", ""));
|
||||
cubeCards.add(new CardIdentity("Juggernaut", ""));
|
||||
cubeCards.add(new CardIdentity("Kingpin's Pet", ""));
|
||||
cubeCards.add(new CardIdentity("Kitesail Corsair", ""));
|
||||
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("Lash Out", ""));
|
||||
cubeCards.add(new CardIdentity("Last Gasp", ""));
|
||||
cubeCards.add(new CardIdentity("Leave in the Dust", ""));
|
||||
cubeCards.add(new CardIdentity("Lead the Stampede", ""));
|
||||
cubeCards.add(new CardIdentity("Legion Vanguard", ""));
|
||||
cubeCards.add(new CardIdentity("Leonin Bola", ""));
|
||||
cubeCards.add(new CardIdentity("Lifecraft Cavalry", ""));
|
||||
cubeCards.add(new CardIdentity("Lightning Bolt", ""));
|
||||
cubeCards.add(new CardIdentity("Liliana's Specter", ""));
|
||||
cubeCards.add(new CardIdentity("Loyal Pegasus", ""));
|
||||
//cubeCards.add(new CardIdentity("Lurking Automaton", ""));
|
||||
cubeCards.add(new CardIdentity("Magma Jet", ""));
|
||||
cubeCards.add(new CardIdentity("Makeshift Mauler", ""));
|
||||
cubeCards.add(new CardIdentity("Lightning Strike", ""));
|
||||
cubeCards.add(new CardIdentity("Llanowar Elves", ""));
|
||||
cubeCards.add(new CardIdentity("Llanowar Visionary", ""));
|
||||
cubeCards.add(new CardIdentity("Loathsome Curator", ""));
|
||||
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("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("Martyr of Dusk", ""));
|
||||
cubeCards.add(new CardIdentity("Maul Splicer", ""));
|
||||
cubeCards.add(new CardIdentity("Maze of Ith", ""));
|
||||
cubeCards.add(new CardIdentity("Meandering River", ""));
|
||||
cubeCards.add(new CardIdentity("Mental Note", ""));
|
||||
cubeCards.add(new CardIdentity("Midnight Scavengers", ""));
|
||||
cubeCards.add(new CardIdentity("Massive Might", ""));
|
||||
cubeCards.add(new CardIdentity("Mayhem Patrol", ""));
|
||||
cubeCards.add(new CardIdentity("Merfolk Looter", ""));
|
||||
cubeCards.add(new CardIdentity("Militia Bugler", ""));
|
||||
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("Mishra's Factory", ""));
|
||||
cubeCards.add(new CardIdentity("Mist Raven", ""));
|
||||
cubeCards.add(new CardIdentity("Mistral Charger", ""));
|
||||
cubeCards.add(new CardIdentity("Mobile Garrison", ""));
|
||||
cubeCards.add(new CardIdentity("Mogg Fanatic", ""));
|
||||
cubeCards.add(new CardIdentity("Mogg Flunkies", ""));
|
||||
cubeCards.add(new CardIdentity("Mistral Singer", ""));
|
||||
cubeCards.add(new CardIdentity("Mocking Sprite", ""));
|
||||
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("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("Nameless Inversion", ""));
|
||||
cubeCards.add(new CardIdentity("Narcolepsy", ""));
|
||||
cubeCards.add(new CardIdentity("Nessian Asp", ""));
|
||||
cubeCards.add(new CardIdentity("Nest Robber", ""));
|
||||
cubeCards.add(new CardIdentity("Nezumi Cutthroat", ""));
|
||||
cubeCards.add(new CardIdentity("Murmuring Mystic", ""));
|
||||
cubeCards.add(new CardIdentity("Mutagenic Growth", ""));
|
||||
cubeCards.add(new CardIdentity("Mystic Sanctuary", ""));
|
||||
cubeCards.add(new CardIdentity("Nature's Lore", ""));
|
||||
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("Nightscape Familiar", ""));
|
||||
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("Oona's Grace", ""));
|
||||
//cubeCards.add(new CardIdentity("Ordinary Pony", ""));
|
||||
cubeCards.add(new CardIdentity("Orzhov Guildgate", ""));
|
||||
cubeCards.add(new CardIdentity("Otherworldly Journey", ""));
|
||||
cubeCards.add(new CardIdentity("Overgrown Armasaur", ""));
|
||||
cubeCards.add(new CardIdentity("Pacifism", ""));
|
||||
cubeCards.add(new CardIdentity("Paladin of the Bloodstained", ""));
|
||||
cubeCards.add(new CardIdentity("Peema Outrider", ""));
|
||||
cubeCards.add(new CardIdentity("Penumbra Spider", ""));
|
||||
cubeCards.add(new CardIdentity("Okiba-Gang Shinobi", ""));
|
||||
cubeCards.add(new CardIdentity("Oliphaunt", ""));
|
||||
cubeCards.add(new CardIdentity("Opt", ""));
|
||||
cubeCards.add(new CardIdentity("Orcish Hellraiser", ""));
|
||||
cubeCards.add(new CardIdentity("Orzhov Basilica", ""));
|
||||
cubeCards.add(new CardIdentity("Owlbear", ""));
|
||||
cubeCards.add(new CardIdentity("Palace Sentinels", ""));
|
||||
cubeCards.add(new CardIdentity("Pegasus Guardian", ""));
|
||||
cubeCards.add(new CardIdentity("Peregrine Drake", ""));
|
||||
cubeCards.add(new CardIdentity("Perilous Landscape", ""));
|
||||
cubeCards.add(new CardIdentity("Perilous Myr", ""));
|
||||
cubeCards.add(new CardIdentity("Pestermite", ""));
|
||||
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("Pillory of the Sleepless", ""));
|
||||
cubeCards.add(new CardIdentity("Pit Fight", ""));
|
||||
cubeCards.add(new CardIdentity("Pit Keeper", ""));
|
||||
cubeCards.add(new CardIdentity("Plated Geopede", ""));
|
||||
cubeCards.add(new CardIdentity("Plagued Rusalka", ""));
|
||||
cubeCards.add(new CardIdentity("Planar Disruption", ""));
|
||||
cubeCards.add(new CardIdentity("Ponder", ""));
|
||||
cubeCards.add(new CardIdentity("Porcelain Legionnaire", ""));
|
||||
cubeCards.add(new CardIdentity("Pounce", ""));
|
||||
cubeCards.add(new CardIdentity("Predatory Nightstalker", ""));
|
||||
cubeCards.add(new CardIdentity("Preening Champion", ""));
|
||||
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("Pristine Talisman", ""));
|
||||
cubeCards.add(new CardIdentity("Prophetic Prism", ""));
|
||||
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("Pyrotechnics", ""));
|
||||
cubeCards.add(new CardIdentity("Qasali Pridemage", ""));
|
||||
cubeCards.add(new CardIdentity("Quandrix Campus", ""));
|
||||
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("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("Rampant Growth", ""));
|
||||
cubeCards.add(new CardIdentity("Ram Through", ""));
|
||||
cubeCards.add(new CardIdentity("Rancor", ""));
|
||||
cubeCards.add(new CardIdentity("Ranger's Guile", ""));
|
||||
cubeCards.add(new CardIdentity("Ray of Command", ""));
|
||||
cubeCards.add(new CardIdentity("Razorfin Hunter", ""));
|
||||
cubeCards.add(new CardIdentity("Ransack the Lab", ""));
|
||||
cubeCards.add(new CardIdentity("Reckless Charge", ""));
|
||||
cubeCards.add(new CardIdentity("Recoil", ""));
|
||||
//cubeCards.add(new CardIdentity("Regicide", ""));
|
||||
cubeCards.add(new CardIdentity("Reckless Impulse", ""));
|
||||
cubeCards.add(new CardIdentity("Red Herring", ""));
|
||||
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("Repeal", ""));
|
||||
cubeCards.add(new CardIdentity("Retrofitted Transmogrant", ""));
|
||||
cubeCards.add(new CardIdentity("Rhox Veteran", ""));
|
||||
cubeCards.add(new CardIdentity("Rift Bolt", ""));
|
||||
cubeCards.add(new CardIdentity("Rishadan Airship", ""));
|
||||
cubeCards.add(new CardIdentity("Rugged Highlands", ""));
|
||||
cubeCards.add(new CardIdentity("Runed Servitor", ""));
|
||||
cubeCards.add(new CardIdentity("Rushing River", ""));
|
||||
cubeCards.add(new CardIdentity("Ruthless Ripper", ""));
|
||||
cubeCards.add(new CardIdentity("Sailor of Means", ""));
|
||||
cubeCards.add(new CardIdentity("Rimrock Knight", ""));
|
||||
cubeCards.add(new CardIdentity("Rolling Thunder", ""));
|
||||
cubeCards.add(new CardIdentity("Safehold Elite", ""));
|
||||
cubeCards.add(new CardIdentity("Sakura-Tribe Elder", ""));
|
||||
cubeCards.add(new CardIdentity("Sandsteppe Outcast", ""));
|
||||
cubeCards.add(new CardIdentity("Sangrite Backlash", ""));
|
||||
cubeCards.add(new CardIdentity("Saproling Migration", ""));
|
||||
cubeCards.add(new CardIdentity("Sarkhan's Rage", ""));
|
||||
cubeCards.add(new CardIdentity("Savage Punch", ""));
|
||||
cubeCards.add(new CardIdentity("Sarulf's Packmate", ""));
|
||||
cubeCards.add(new CardIdentity("Savannah Lions", ""));
|
||||
cubeCards.add(new CardIdentity("Scatter the Seeds", ""));
|
||||
cubeCards.add(new CardIdentity("Scion Summoner", ""));
|
||||
cubeCards.add(new CardIdentity("Scion of the Wild", ""));
|
||||
cubeCards.add(new CardIdentity("Scholar of Combustion", ""));
|
||||
cubeCards.add(new CardIdentity("Scorched Rusalka", ""));
|
||||
cubeCards.add(new CardIdentity("Scoured Barrens", ""));
|
||||
cubeCards.add(new CardIdentity("Scourge Devil", ""));
|
||||
cubeCards.add(new CardIdentity("Screeching Skaab", ""));
|
||||
cubeCards.add(new CardIdentity("Scuzzback Marauders", ""));
|
||||
cubeCards.add(new CardIdentity("Search for Tomorrow", ""));
|
||||
cubeCards.add(new CardIdentity("Searing Blaze", ""));
|
||||
cubeCards.add(new CardIdentity("Seeker of Insight", ""));
|
||||
cubeCards.add(new CardIdentity("Scrapwork Mutt", ""));
|
||||
cubeCards.add(new CardIdentity("Scurrilous Sentry", ""));
|
||||
cubeCards.add(new CardIdentity("Search Party Captain", ""));
|
||||
cubeCards.add(new CardIdentity("Searing Spear", ""));
|
||||
cubeCards.add(new CardIdentity("Seeker of the Way", ""));
|
||||
cubeCards.add(new CardIdentity("Selesnya Guildgate", ""));
|
||||
//cubeCards.add(new CardIdentity("Selfie Preservation", ""));
|
||||
cubeCards.add(new CardIdentity("Separatist Voidmage", ""));
|
||||
cubeCards.add(new CardIdentity("Seraph of Dawn", ""));
|
||||
cubeCards.add(new CardIdentity("Sergeant-at-Arms", ""));
|
||||
cubeCards.add(new CardIdentity("Seething Landscape", ""));
|
||||
cubeCards.add(new CardIdentity("Selesnya Sanctuary", ""));
|
||||
cubeCards.add(new CardIdentity("Serrated Arrows", ""));
|
||||
cubeCards.add(new CardIdentity("Shaper Parasite", ""));
|
||||
cubeCards.add(new CardIdentity("Sheer Drop", ""));
|
||||
cubeCards.add(new CardIdentity("Shelter", ""));
|
||||
cubeCards.add(new CardIdentity("Shimmering Glasskite", ""));
|
||||
cubeCards.add(new CardIdentity("Sigil Blessing", ""));
|
||||
cubeCards.add(new CardIdentity("Silent Departure", ""));
|
||||
cubeCards.add(new CardIdentity("Simic Guildgate", ""));
|
||||
cubeCards.add(new CardIdentity("Skirk Marauder", ""));
|
||||
cubeCards.add(new CardIdentity("Skyknight Legionnaire", ""));
|
||||
cubeCards.add(new CardIdentity("Slash Panther", ""));
|
||||
cubeCards.add(new CardIdentity("Snakeform", ""));
|
||||
cubeCards.add(new CardIdentity("Serum Visionary", ""));
|
||||
cubeCards.add(new CardIdentity("Serum Visions", ""));
|
||||
cubeCards.add(new CardIdentity("Settle Beyond Reality", ""));
|
||||
cubeCards.add(new CardIdentity("Shardless Outlander", ""));
|
||||
cubeCards.add(new CardIdentity("Shattered Landscape", ""));
|
||||
cubeCards.add(new CardIdentity("Sheltering Landscape", ""));
|
||||
cubeCards.add(new CardIdentity("Shipwreck Dowser", ""));
|
||||
cubeCards.add(new CardIdentity("Silver Drake", ""));
|
||||
cubeCards.add(new CardIdentity("Silverback Shaman", ""));
|
||||
cubeCards.add(new CardIdentity("Silverquill Campus", ""));
|
||||
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("Snapping Voidcraw", ""));
|
||||
cubeCards.add(new CardIdentity("Soltari Trooper", ""));
|
||||
cubeCards.add(new CardIdentity("Soul Manipulation", ""));
|
||||
cubeCards.add(new CardIdentity("Soul of the Rapids", ""));
|
||||
cubeCards.add(new CardIdentity("Soulstinger", ""));
|
||||
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("Spelleater Wolverine", ""));
|
||||
cubeCards.add(new CardIdentity("Sprout Swarm", ""));
|
||||
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("Stronghold Confessor", ""));
|
||||
cubeCards.add(new CardIdentity("Submerged Boneyard", ""));
|
||||
cubeCards.add(new CardIdentity("Sultai Scavenger", ""));
|
||||
cubeCards.add(new CardIdentity("Suppression Bonds", ""));
|
||||
cubeCards.add(new CardIdentity("Swiftwater Cliffs", ""));
|
||||
cubeCards.add(new CardIdentity("Sylvan Might", ""));
|
||||
cubeCards.add(new CardIdentity("Sylvok Lifestaff", ""));
|
||||
cubeCards.add(new CardIdentity("Temporal Isolation", ""));
|
||||
cubeCards.add(new CardIdentity("Tenement Crasher", ""));
|
||||
cubeCards.add(new CardIdentity("Terminate", ""));
|
||||
cubeCards.add(new CardIdentity("Terramorphic Expanse", ""));
|
||||
cubeCards.add(new CardIdentity("Sulfurous Blast", ""));
|
||||
cubeCards.add(new CardIdentity("Sunlance", ""));
|
||||
cubeCards.add(new CardIdentity("Suture Priest", ""));
|
||||
cubeCards.add(new CardIdentity("Sword Coast Serpent", ""));
|
||||
cubeCards.add(new CardIdentity("Syndic of Tithes", ""));
|
||||
cubeCards.add(new CardIdentity("Tamiyo's Safekeeping", ""));
|
||||
cubeCards.add(new CardIdentity("Tangled Islet", ""));
|
||||
cubeCards.add(new CardIdentity("Teetering Peaks", ""));
|
||||
cubeCards.add(new CardIdentity("Tempest Angler", ""));
|
||||
cubeCards.add(new CardIdentity("Tenth District Legionnaire", ""));
|
||||
cubeCards.add(new CardIdentity("Thorn of the Black Rose", ""));
|
||||
cubeCards.add(new CardIdentity("Thornweald Archer", ""));
|
||||
cubeCards.add(new CardIdentity("Thornwood Falls", ""));
|
||||
cubeCards.add(new CardIdentity("Thought Scour", ""));
|
||||
cubeCards.add(new CardIdentity("Thraben Charm", ""));
|
||||
cubeCards.add(new CardIdentity("Thraben Inspector", ""));
|
||||
cubeCards.add(new CardIdentity("Thrill-Kill Assassin", ""));
|
||||
cubeCards.add(new CardIdentity("Thundering Giant", ""));
|
||||
cubeCards.add(new CardIdentity("Thunderous Wrath", ""));
|
||||
cubeCards.add(new CardIdentity("Timber Gorge", ""));
|
||||
cubeCards.add(new CardIdentity("Time to Feed", ""));
|
||||
cubeCards.add(new CardIdentity("Thriving Grubs", ""));
|
||||
cubeCards.add(new CardIdentity("Thriving Skyclaw", ""));
|
||||
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("Tramway Station", ""));
|
||||
cubeCards.add(new CardIdentity("Tranquil Cove", ""));
|
||||
cubeCards.add(new CardIdentity("Tranquil Expanse", ""));
|
||||
cubeCards.add(new CardIdentity("Travel Preparations", ""));
|
||||
cubeCards.add(new CardIdentity("Tranquil Landscape", ""));
|
||||
cubeCards.add(new CardIdentity("Trapped in the Screen", ""));
|
||||
cubeCards.add(new CardIdentity("Treasure Cruise", ""));
|
||||
cubeCards.add(new CardIdentity("Treetop Snarespinner", ""));
|
||||
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("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("Unmake", ""));
|
||||
cubeCards.add(new CardIdentity("Vampire Interloper", ""));
|
||||
cubeCards.add(new CardIdentity("Unwilling Ingredient", ""));
|
||||
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("Viashino Firstblade", ""));
|
||||
cubeCards.add(new CardIdentity("Vendetta", ""));
|
||||
cubeCards.add(new CardIdentity("Village Rites", ""));
|
||||
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 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("War Flare", ""));
|
||||
cubeCards.add(new CardIdentity("Warden of Evos Isle", ""));
|
||||
cubeCards.add(new CardIdentity("Warped Landscape", ""));
|
||||
cubeCards.add(new CardIdentity("Warren Pilferers", ""));
|
||||
cubeCards.add(new CardIdentity("Wasteland Scorpion", ""));
|
||||
cubeCards.add(new CardIdentity("Waterknot", ""));
|
||||
cubeCards.add(new CardIdentity("Wary Thespian", ""));
|
||||
cubeCards.add(new CardIdentity("Waterfront District", ""));
|
||||
cubeCards.add(new CardIdentity("Wayfarer's Bauble", ""));
|
||||
cubeCards.add(new CardIdentity("Weakstone's Subjugation", ""));
|
||||
cubeCards.add(new CardIdentity("Werebear", ""));
|
||||
cubeCards.add(new CardIdentity("Whitemane Lion", ""));
|
||||
cubeCards.add(new CardIdentity("Wild Instincts", ""));
|
||||
cubeCards.add(new CardIdentity("Wild Mongrel", ""));
|
||||
cubeCards.add(new CardIdentity("Wild Nacatl", ""));
|
||||
cubeCards.add(new CardIdentity("Wildsize", ""));
|
||||
cubeCards.add(new CardIdentity("Will-Forged Golem", ""));
|
||||
cubeCards.add(new CardIdentity("Wind-Scarred Crag", ""));
|
||||
cubeCards.add(new CardIdentity("Winged Coatl", ""));
|
||||
cubeCards.add(new CardIdentity("Wojek Halberdiers", ""));
|
||||
cubeCards.add(new CardIdentity("Woodland Stream", ""));
|
||||
cubeCards.add(new CardIdentity("Wrecking Ball", ""));
|
||||
cubeCards.add(new CardIdentity("Wretched Gryff", ""));
|
||||
cubeCards.add(new CardIdentity("Wild Growth", ""));
|
||||
cubeCards.add(new CardIdentity("Wildfire Elemental", ""));
|
||||
cubeCards.add(new CardIdentity("Winding Way", ""));
|
||||
cubeCards.add(new CardIdentity("Winter Eladrin", ""));
|
||||
cubeCards.add(new CardIdentity("Witch's Cottage", ""));
|
||||
cubeCards.add(new CardIdentity("Wither and Bloom", ""));
|
||||
cubeCards.add(new CardIdentity("Witherbloom Campus", ""));
|
||||
cubeCards.add(new CardIdentity("Witness Protection", ""));
|
||||
cubeCards.add(new CardIdentity("Witty Roastmaster", ""));
|
||||
cubeCards.add(new CardIdentity("Wrangle", ""));
|
||||
cubeCards.add(new CardIdentity("Wrenn's Resolve", ""));
|
||||
cubeCards.add(new CardIdentity("Writhing Chrysalis", ""));
|
||||
cubeCards.add(new CardIdentity("Yavimaya Elder", ""));
|
||||
cubeCards.add(new CardIdentity("Yavimaya Sapherd", ""));
|
||||
cubeCards.add(new CardIdentity("Yotian Soldier", ""));
|
||||
cubeCards.add(new CardIdentity("Yavimaya Steelcrusher", ""));
|
||||
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", ""));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,8 +13,15 @@ import mage.game.draft.DraftCube;
|
|||
public class VintageCube extends DraftCube {
|
||||
|
||||
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("Abrade", ""));
|
||||
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("Arid Mesa", ""));
|
||||
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("Avacyn's Pilgrim", ""));
|
||||
cubeCards.add(new CardIdentity("Badlands", ""));
|
||||
cubeCards.add(new CardIdentity("Balance", ""));
|
||||
cubeCards.add(new CardIdentity("Baleful Mastery", ""));
|
||||
cubeCards.add(new CardIdentity("Baleful Strix", ""));
|
||||
cubeCards.add(new CardIdentity("Baloth Prime", ""));
|
||||
cubeCards.add(new CardIdentity("Barrowgoyf", ""));
|
||||
cubeCards.add(new CardIdentity("Basalt Monolith", ""));
|
||||
cubeCards.add(new CardIdentity("Bayou", ""));
|
||||
cubeCards.add(new CardIdentity("Berserk", ""));
|
||||
cubeCards.add(new CardIdentity("Birds of Paradise", ""));
|
||||
cubeCards.add(new CardIdentity("Bitter Triumph", ""));
|
||||
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("Blood Crypt", ""));
|
||||
cubeCards.add(new CardIdentity("Bloodbraid Challenger", ""));
|
||||
cubeCards.add(new CardIdentity("Bloodchief's Thirst", ""));
|
||||
cubeCards.add(new CardIdentity("Bloodstained Mire", ""));
|
||||
cubeCards.add(new CardIdentity("Bloodtithe Harvester", ""));
|
||||
cubeCards.add(new CardIdentity("Blooming Marsh", ""));
|
||||
cubeCards.add(new CardIdentity("Bolas's Citadel", ""));
|
||||
cubeCards.add(new CardIdentity("Bone Shards", ""));
|
||||
cubeCards.add(new CardIdentity("Bonecrusher Giant", ""));
|
||||
cubeCards.add(new CardIdentity("Bonehoard Dracosaur", ""));
|
||||
cubeCards.add(new CardIdentity("Boseiju, Who Endures", ""));
|
||||
cubeCards.add(new CardIdentity("Botanical Sanctum", ""));
|
||||
cubeCards.add(new CardIdentity("Bountiful Landscape", ""));
|
||||
cubeCards.add(new CardIdentity("Brain Freeze", ""));
|
||||
cubeCards.add(new CardIdentity("Brainstorm", ""));
|
||||
cubeCards.add(new CardIdentity("Brainsurge", ""));
|
||||
|
|
@ -71,6 +82,7 @@ public class VintageCube extends DraftCube {
|
|||
cubeCards.add(new CardIdentity("Carnage Interpreter", ""));
|
||||
cubeCards.add(new CardIdentity("Cathar Commando", ""));
|
||||
cubeCards.add(new CardIdentity("Caustic Bronco", ""));
|
||||
cubeCards.add(new CardIdentity("Cecil, Dark Knight", ""));
|
||||
cubeCards.add(new CardIdentity("Celestial Colonnade", ""));
|
||||
cubeCards.add(new CardIdentity("Chain Lightning", ""));
|
||||
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("Chrome Mox", ""));
|
||||
cubeCards.add(new CardIdentity("City of Traitors", ""));
|
||||
cubeCards.add(new CardIdentity("Clarion Conqueror", ""));
|
||||
cubeCards.add(new CardIdentity("Coalition Relic", ""));
|
||||
cubeCards.add(new CardIdentity("Collective Brutality", ""));
|
||||
cubeCards.add(new CardIdentity("Commercial District", ""));
|
||||
cubeCards.add(new CardIdentity("Concealed Courtyard", ""));
|
||||
cubeCards.add(new CardIdentity("Concealing Curtains", ""));
|
||||
cubeCards.add(new CardIdentity("Consider", ""));
|
||||
cubeCards.add(new CardIdentity("Consult the Star Charts", ""));
|
||||
cubeCards.add(new CardIdentity("Containment Priest", ""));
|
||||
cubeCards.add(new CardIdentity("Copperline Gorge", ""));
|
||||
cubeCards.add(new CardIdentity("Cori-Steel Cutter", ""));
|
||||
cubeCards.add(new CardIdentity("Corpse Dance", ""));
|
||||
cubeCards.add(new CardIdentity("Cosmogrand Zenith", ""));
|
||||
cubeCards.add(new CardIdentity("Council's Judgment", ""));
|
||||
cubeCards.add(new CardIdentity("Counterspell", ""));
|
||||
cubeCards.add(new CardIdentity("Courser of Kruphix", ""));
|
||||
cubeCards.add(new CardIdentity("Coveted Jewel", ""));
|
||||
cubeCards.add(new CardIdentity("Crabomination", ""));
|
||||
cubeCards.add(new CardIdentity("Craterhoof Behemoth", ""));
|
||||
cubeCards.add(new CardIdentity("Creeping Tar Pit", ""));
|
||||
cubeCards.add(new CardIdentity("Crop Rotation", ""));
|
||||
cubeCards.add(new CardIdentity("Crucible of Worlds", ""));
|
||||
cubeCards.add(new CardIdentity("Cryptic Command", ""));
|
||||
cubeCards.add(new CardIdentity("Currency Converter", ""));
|
||||
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("Doomsday", ""));
|
||||
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("Eagles of the North", ""));
|
||||
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("Emperor of Bones", ""));
|
||||
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("Enduring Curiosity", ""));
|
||||
cubeCards.add(new CardIdentity("Enduring Innocence", ""));
|
||||
cubeCards.add(new CardIdentity("Entomb", ""));
|
||||
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("Fiery Confluence", ""));
|
||||
cubeCards.add(new CardIdentity("Figure of Destiny", ""));
|
||||
cubeCards.add(new CardIdentity("Fire // Ice", ""));
|
||||
cubeCards.add(new CardIdentity("Fire Covenant", ""));
|
||||
cubeCards.add(new CardIdentity("Fireblast", ""));
|
||||
cubeCards.add(new CardIdentity("Firebolt", ""));
|
||||
cubeCards.add(new CardIdentity("Flame Slash", ""));
|
||||
cubeCards.add(new CardIdentity("Flame of Anor", ""));
|
||||
cubeCards.add(new CardIdentity("Flash", ""));
|
||||
cubeCards.add(new CardIdentity("Flickerwisp", ""));
|
||||
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 Vigor", ""));
|
||||
cubeCards.add(new CardIdentity("Force of Will", ""));
|
||||
cubeCards.add(new CardIdentity("Forensic Gadgeteer", ""));
|
||||
cubeCards.add(new CardIdentity("Forth Eorlingas!", ""));
|
||||
cubeCards.add(new CardIdentity("Fractured Identity", ""));
|
||||
cubeCards.add(new CardIdentity("Frantic Search", ""));
|
||||
cubeCards.add(new CardIdentity("Fury", ""));
|
||||
cubeCards.add(new CardIdentity("Fyndhorn Elves", ""));
|
||||
cubeCards.add(new CardIdentity("Gaea's Cradle", ""));
|
||||
cubeCards.add(new CardIdentity("Galvanic Blast", ""));
|
||||
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 Plunderer", ""));
|
||||
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("Godless Shrine", ""));
|
||||
cubeCards.add(new CardIdentity("Goldspan Dragon", ""));
|
||||
cubeCards.add(new CardIdentity("Golos, Tireless Pilgrim", ""));
|
||||
cubeCards.add(new CardIdentity("Grave Titan", ""));
|
||||
cubeCards.add(new CardIdentity("Greasewrench Goblin", ""));
|
||||
cubeCards.add(new CardIdentity("Green Sun's Zenith", ""));
|
||||
cubeCards.add(new CardIdentity("Grief", ""));
|
||||
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("Headliner Scarlett", ""));
|
||||
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("High Tide", ""));
|
||||
cubeCards.add(new CardIdentity("Horizon Canopy", ""));
|
||||
cubeCards.add(new CardIdentity("Huatli, Poet of Unity", ""));
|
||||
cubeCards.add(new CardIdentity("Hullbreacher", ""));
|
||||
cubeCards.add(new CardIdentity("Hymn to Tourach", ""));
|
||||
cubeCards.add(new CardIdentity("Icetill Explorer", ""));
|
||||
cubeCards.add(new CardIdentity("Ignoble Hierarch", ""));
|
||||
cubeCards.add(new CardIdentity("Imperial Seal", ""));
|
||||
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("Inspiring Vantage", ""));
|
||||
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("Jace, Vryn's Prodigy", ""));
|
||||
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("Ketria Triome", ""));
|
||||
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("Kolaghan's Command", ""));
|
||||
cubeCards.add(new CardIdentity("Laelia, the Blade Reforged", ""));
|
||||
cubeCards.add(new CardIdentity("Lavaspur Boots", ""));
|
||||
cubeCards.add(new CardIdentity("Ledger Shredder", ""));
|
||||
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("Lethal Scheme", ""));
|
||||
cubeCards.add(new CardIdentity("Leyline Binding", ""));
|
||||
cubeCards.add(new CardIdentity("Library of Alexandria", ""));
|
||||
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("Loot, the Pathfinder", ""));
|
||||
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("Lotus Cobra", ""));
|
||||
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("Lush Portico", ""));
|
||||
cubeCards.add(new CardIdentity("Lutri, the Spellchaser", ""));
|
||||
cubeCards.add(new CardIdentity("Lorien Revealed", ""));
|
||||
cubeCards.add(new CardIdentity("Magda, Brazen Outlaw", ""));
|
||||
cubeCards.add(new CardIdentity("Malcolm, Alluring Scoundrel", ""));
|
||||
cubeCards.add(new CardIdentity("Malevolent Rumble", ""));
|
||||
cubeCards.add(new CardIdentity("Mana Confluence", ""));
|
||||
cubeCards.add(new CardIdentity("Mana Crypt", ""));
|
||||
cubeCards.add(new CardIdentity("Mana Drain", ""));
|
||||
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("Manamorphose", ""));
|
||||
cubeCards.add(new CardIdentity("Manifold Key", ""));
|
||||
cubeCards.add(new CardIdentity("March of Otherworldly Light", ""));
|
||||
cubeCards.add(new CardIdentity("Marsh Flats", ""));
|
||||
cubeCards.add(new CardIdentity("Memory Jar", ""));
|
||||
cubeCards.add(new CardIdentity("Memory Lapse", ""));
|
||||
cubeCards.add(new CardIdentity("Metamorphosis Fanatic", ""));
|
||||
cubeCards.add(new CardIdentity("Meticulous Archive", ""));
|
||||
cubeCards.add(new CardIdentity("Mightform Harmonizer", ""));
|
||||
cubeCards.add(new CardIdentity("Mind Stone", ""));
|
||||
cubeCards.add(new CardIdentity("Mind Twist", ""));
|
||||
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 Workshop", ""));
|
||||
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("Mox Diamond", ""));
|
||||
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 Ruby", ""));
|
||||
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("Mystic Confluence", ""));
|
||||
cubeCards.add(new CardIdentity("Mystical Tutor", ""));
|
||||
cubeCards.add(new CardIdentity("Nadu, Winged Wisdom", ""));
|
||||
cubeCards.add(new CardIdentity("Narset, Parter of Veils", ""));
|
||||
cubeCards.add(new CardIdentity("Natural Order", ""));
|
||||
cubeCards.add(new CardIdentity("Nature's Lore", ""));
|
||||
cubeCards.add(new CardIdentity("Necromancy", ""));
|
||||
cubeCards.add(new CardIdentity("Nethergoyf", ""));
|
||||
cubeCards.add(new CardIdentity("Nettlecyst", ""));
|
||||
cubeCards.add(new CardIdentity("Nexus of Becoming", ""));
|
||||
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("No More Lies", ""));
|
||||
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("Otawara, Soaring City", ""));
|
||||
cubeCards.add(new CardIdentity("Otharri, Suns' Glory", ""));
|
||||
cubeCards.add(new CardIdentity("Ouroboroid", ""));
|
||||
cubeCards.add(new CardIdentity("Oust", ""));
|
||||
cubeCards.add(new CardIdentity("Overgrown Tomb", ""));
|
||||
cubeCards.add(new CardIdentity("Overlord of the Balemurk", ""));
|
||||
cubeCards.add(new CardIdentity("Overlord of the Mistmoors", ""));
|
||||
cubeCards.add(new CardIdentity("Palace Jailer", ""));
|
||||
cubeCards.add(new CardIdentity("Palantir of Orthanc", ""));
|
||||
cubeCards.add(new CardIdentity("Paradoxical Outcome", ""));
|
||||
cubeCards.add(new CardIdentity("Parallax Wave", ""));
|
||||
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("Phlage, Titan of Fire's Fury", ""));
|
||||
cubeCards.add(new CardIdentity("Phyrexian Metamorph", ""));
|
||||
cubeCards.add(new CardIdentity("Phyrexian Revoker", ""));
|
||||
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("Polluted Delta", ""));
|
||||
cubeCards.add(new CardIdentity("Ponder", ""));
|
||||
|
|
@ -355,17 +365,15 @@ public class VintageCube extends DraftCube {
|
|||
cubeCards.add(new CardIdentity("Primeval Titan", ""));
|
||||
cubeCards.add(new CardIdentity("Prismatic Ending", ""));
|
||||
cubeCards.add(new CardIdentity("Prismatic Vista", ""));
|
||||
cubeCards.add(new CardIdentity("Proft's Eidetic Memory", ""));
|
||||
cubeCards.add(new CardIdentity("Psychic Frog", ""));
|
||||
cubeCards.add(new CardIdentity("Pyrogoyf", ""));
|
||||
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("Raffine's Tower", ""));
|
||||
cubeCards.add(new CardIdentity("Raffine, Scheming Seer", ""));
|
||||
cubeCards.add(new CardIdentity("Ragavan, Nimble Pilferer", ""));
|
||||
cubeCards.add(new CardIdentity("Rain of Filth", ""));
|
||||
cubeCards.add(new CardIdentity("Rampaging Raptor", ""));
|
||||
cubeCards.add(new CardIdentity("Ramunap Excavator", ""));
|
||||
cubeCards.add(new CardIdentity("Rancor", ""));
|
||||
cubeCards.add(new CardIdentity("Raucous Theater", ""));
|
||||
cubeCards.add(new CardIdentity("Raugrin Triome", ""));
|
||||
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("Remand", ""));
|
||||
cubeCards.add(new CardIdentity("Reprieve", ""));
|
||||
cubeCards.add(new CardIdentity("Restless Vinestalk", ""));
|
||||
cubeCards.add(new CardIdentity("Retrofitter Foundry", ""));
|
||||
cubeCards.add(new CardIdentity("Riverpyre Verge", ""));
|
||||
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("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("Savannah", ""));
|
||||
cubeCards.add(new CardIdentity("Scalding Tarn", ""));
|
||||
cubeCards.add(new CardIdentity("Scrapwork Mutt", ""));
|
||||
cubeCards.add(new CardIdentity("Screaming Nemesis", ""));
|
||||
cubeCards.add(new CardIdentity("Scrubland", ""));
|
||||
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("Securitron Squadron", ""));
|
||||
cubeCards.add(new CardIdentity("Sedgemoor Witch", ""));
|
||||
cubeCards.add(new CardIdentity("Seething Song", ""));
|
||||
cubeCards.add(new CardIdentity("Sensei's Divining Top", ""));
|
||||
cubeCards.add(new CardIdentity("Sentinel of the Nameless City", ""));
|
||||
cubeCards.add(new CardIdentity("Serra Paragon", ""));
|
||||
cubeCards.add(new CardIdentity("Shadowspear", ""));
|
||||
cubeCards.add(new CardIdentity("Shadowy Backstreet", ""));
|
||||
cubeCards.add(new CardIdentity("Shallow Grave", ""));
|
||||
cubeCards.add(new CardIdentity("Shelldock Isle", ""));
|
||||
cubeCards.add(new CardIdentity("Sheltering Landscape", ""));
|
||||
cubeCards.add(new CardIdentity("Sheoldred's Edict", ""));
|
||||
cubeCards.add(new CardIdentity("Sheoldred, the Apocalypse", ""));
|
||||
cubeCards.add(new CardIdentity("Shifting Woodland", ""));
|
||||
|
|
@ -411,7 +413,7 @@ public class VintageCube extends DraftCube {
|
|||
cubeCards.add(new CardIdentity("Six", ""));
|
||||
cubeCards.add(new CardIdentity("Skullclamp", ""));
|
||||
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("Snapcaster Mage", ""));
|
||||
cubeCards.add(new CardIdentity("Sneak Attack", ""));
|
||||
|
|
@ -426,8 +428,8 @@ public class VintageCube extends DraftCube {
|
|||
cubeCards.add(new CardIdentity("Spellseeker", ""));
|
||||
cubeCards.add(new CardIdentity("Spirebluff Canal", ""));
|
||||
cubeCards.add(new CardIdentity("Springheart Nantuko", ""));
|
||||
cubeCards.add(new CardIdentity("Spyglass Siren", ""));
|
||||
cubeCards.add(new CardIdentity("Staff of the Storyteller", ""));
|
||||
cubeCards.add(new CardIdentity("Starting Town", ""));
|
||||
cubeCards.add(new CardIdentity("Static Prison", ""));
|
||||
cubeCards.add(new CardIdentity("Steam Vents", ""));
|
||||
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("Sunbillow Verge", ""));
|
||||
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("Swords to Plowshares", ""));
|
||||
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, Inquisitive Student", ""));
|
||||
cubeCards.add(new CardIdentity("Tarfire", ""));
|
||||
cubeCards.add(new CardIdentity("Tarmogoyf", ""));
|
||||
cubeCards.add(new CardIdentity("Tear Asunder", ""));
|
||||
cubeCards.add(new CardIdentity("Teferi, Hero of Dominaria", ""));
|
||||
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("Territorial Kavu", ""));
|
||||
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("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 One Ring", ""));
|
||||
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("Through the Breach", ""));
|
||||
cubeCards.add(new CardIdentity("Thundering Falls", ""));
|
||||
cubeCards.add(new CardIdentity("Thundertrap Trainer", ""));
|
||||
cubeCards.add(new CardIdentity("Tidehollow Sculler", ""));
|
||||
cubeCards.add(new CardIdentity("Tifa Lockhart", ""));
|
||||
cubeCards.add(new CardIdentity("Time Spiral", ""));
|
||||
cubeCards.add(new CardIdentity("Time Walk", ""));
|
||||
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("Touch the Spirit Realm", ""));
|
||||
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("Trinket Mage", ""));
|
||||
cubeCards.add(new CardIdentity("Triplicate Titan", ""));
|
||||
//cubeCards.add(new CardIdentity("Troll of Khazad-dom", ""));
|
||||
cubeCards.add(new CardIdentity("Troll of Khazad-dum", ""));
|
||||
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("Turnabout", ""));
|
||||
cubeCards.add(new CardIdentity("Twisted Landscape", ""));
|
||||
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("Umezawa's Jitte", ""));
|
||||
cubeCards.add(new CardIdentity("Undercity Sewers", ""));
|
||||
|
|
@ -513,6 +513,7 @@ public class VintageCube extends DraftCube {
|
|||
cubeCards.add(new CardIdentity("Unearth", ""));
|
||||
cubeCards.add(new CardIdentity("Unexpectedly Absent", ""));
|
||||
cubeCards.add(new CardIdentity("Unholy Heat", ""));
|
||||
cubeCards.add(new CardIdentity("Unruly Krasis", ""));
|
||||
cubeCards.add(new CardIdentity("Upheaval", ""));
|
||||
cubeCards.add(new CardIdentity("Urborg, Tomb of Yawgmoth", ""));
|
||||
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("Vindicate", ""));
|
||||
cubeCards.add(new CardIdentity("Virtue of Loyalty", ""));
|
||||
cubeCards.add(new CardIdentity("Vivi Ornitier", ""));
|
||||
cubeCards.add(new CardIdentity("Voice of Victory", ""));
|
||||
cubeCards.add(new CardIdentity("Volcanic Island", ""));
|
||||
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("Wasteland", ""));
|
||||
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("Wooded Foothills", ""));
|
||||
cubeCards.add(new CardIdentity("Woodfall Primus", ""));
|
||||
cubeCards.add(new CardIdentity("Worldly Tutor", ""));
|
||||
cubeCards.add(new CardIdentity("Worldspine Wurm", ""));
|
||||
cubeCards.add(new CardIdentity("Wrath of God", ""));
|
||||
cubeCards.add(new CardIdentity("Wrenn and Six", ""));
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-tournament-constructed</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-tournament-sealed</artifactId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-root</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-server-plugins</artifactId>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-root</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-server</artifactId>
|
||||
|
|
@ -208,7 +208,7 @@
|
|||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-compress</artifactId>
|
||||
<version>1.27.1</version>
|
||||
<version>1.28.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.shiro</groupId>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-root</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-sets</artifactId>
|
||||
|
|
|
|||
55
Mage.Sets/src/mage/cards/a/AbbyMercilessSoldier.java
Normal file
55
Mage.Sets/src/mage/cards/a/AbbyMercilessSoldier.java
Normal 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,22 +1,17 @@
|
|||
package mage.cards.a;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.MageItem;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.common.CantBeCounteredSourceAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControllerEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.ProtectionAbility;
|
||||
import mage.abilities.keyword.ProtectionFromEachOpponentAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
|
@ -40,7 +35,7 @@ public final class AbsoluteVirtue extends CardImpl {
|
|||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// 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) {
|
||||
|
|
@ -52,34 +47,3 @@ public final class AbsoluteVirtue extends CardImpl {
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
94
Mage.Sets/src/mage/cards/a/AloySaviorOfMeridian.java
Normal file
94
Mage.Sets/src/mage/cards/a/AloySaviorOfMeridian.java
Normal 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;
|
||||
}
|
||||
}
|
||||
50
Mage.Sets/src/mage/cards/a/AmarantCoral.java
Normal file
50
Mage.Sets/src/mage/cards/a/AmarantCoral.java
Normal 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);
|
||||
}
|
||||
}
|
||||
58
Mage.Sets/src/mage/cards/a/AshlingsCommand.java
Normal file
58
Mage.Sets/src/mage/cards/a/AshlingsCommand.java
Normal 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);
|
||||
}
|
||||
}
|
||||
64
Mage.Sets/src/mage/cards/a/AtreusImpulsiveSon.java
Normal file
64
Mage.Sets/src/mage/cards/a/AtreusImpulsiveSon.java
Normal 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);
|
||||
}
|
||||
}
|
||||
51
Mage.Sets/src/mage/cards/b/BitterbloomBearer.java
Normal file
51
Mage.Sets/src/mage/cards/b/BitterbloomBearer.java
Normal 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);
|
||||
}
|
||||
}
|
||||
69
Mage.Sets/src/mage/cards/b/BrilliantWings.java
Normal file
69
Mage.Sets/src/mage/cards/b/BrilliantWings.java
Normal 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);
|
||||
}
|
||||
}
|
||||
103
Mage.Sets/src/mage/cards/c/CampsiteCuisine.java
Normal file
103
Mage.Sets/src/mage/cards/c/CampsiteCuisine.java
Normal 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;
|
||||
}
|
||||
}
|
||||
65
Mage.Sets/src/mage/cards/d/Deceit.java
Normal file
65
Mage.Sets/src/mage/cards/d/Deceit.java
Normal 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);
|
||||
}
|
||||
}
|
||||
102
Mage.Sets/src/mage/cards/d/DuelistsFlame.java
Normal file
102
Mage.Sets/src/mage/cards/d/DuelistsFlame.java
Normal 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;
|
||||
}
|
||||
}
|
||||
71
Mage.Sets/src/mage/cards/e/EirduCarrierOfDawn.java
Normal file
71
Mage.Sets/src/mage/cards/e/EirduCarrierOfDawn.java
Normal 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);
|
||||
}
|
||||
}
|
||||
107
Mage.Sets/src/mage/cards/e/EllieBrickMaster.java
Normal file
107
Mage.Sets/src/mage/cards/e/EllieBrickMaster.java
Normal 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)
|
||||
);
|
||||
}
|
||||
}
|
||||
58
Mage.Sets/src/mage/cards/e/EllieVengefulHunter.java
Normal file
58
Mage.Sets/src/mage/cards/e/EllieVengefulHunter.java
Normal 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);
|
||||
}
|
||||
}
|
||||
68
Mage.Sets/src/mage/cards/e/Emptiness.java
Normal file
68
Mage.Sets/src/mage/cards/e/Emptiness.java
Normal 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);
|
||||
}
|
||||
}
|
||||
56
Mage.Sets/src/mage/cards/f/FatedClash.java
Normal file
56
Mage.Sets/src/mage/cards/f/FatedClash.java
Normal 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);
|
||||
}
|
||||
}
|
||||
127
Mage.Sets/src/mage/cards/f/FigureOfFable.java
Normal file
127
Mage.Sets/src/mage/cards/f/FigureOfFable.java
Normal 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;
|
||||
}
|
||||
}
|
||||
48
Mage.Sets/src/mage/cards/f/FlashPhotography.java
Normal file
48
Mage.Sets/src/mage/cards/f/FlashPhotography.java
Normal 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);
|
||||
}
|
||||
}
|
||||
66
Mage.Sets/src/mage/cards/f/FormidableSpeaker.java
Normal file
66
Mage.Sets/src/mage/cards/f/FormidableSpeaker.java
Normal 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,20 +1,14 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.DealsDamageToOpponentTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.DamageEachOtherOpponentThatMuchEffect;
|
||||
import mage.abilities.keyword.MeleeAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
|
@ -33,7 +27,9 @@ public final class GrenzosRuffians extends CardImpl {
|
|||
this.addAbility(new MeleeAbility());
|
||||
|
||||
// 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) {
|
||||
|
|
@ -45,40 +41,3 @@ public final class GrenzosRuffians extends CardImpl {
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,19 +1,13 @@
|
|||
package mage.cards.h;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.DealsDamageToOpponentTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.DamageEachOtherOpponentThatMuchEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
|
@ -29,7 +23,9 @@ public final class HydraOmnivore extends CardImpl {
|
|||
this.toughness = new MageInt(8);
|
||||
|
||||
// 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) {
|
||||
|
|
@ -41,40 +37,3 @@ public final class HydraOmnivore extends CardImpl {
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
65
Mage.Sets/src/mage/cards/i/IsiluCarrierOfTwilight.java
Normal file
65
Mage.Sets/src/mage/cards/i/IsiluCarrierOfTwilight.java
Normal 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);
|
||||
}
|
||||
}
|
||||
91
Mage.Sets/src/mage/cards/j/JawsRelentlessPredator.java
Normal file
91
Mage.Sets/src/mage/cards/j/JawsRelentlessPredator.java
Normal 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);
|
||||
}
|
||||
}
|
||||
57
Mage.Sets/src/mage/cards/j/JoelResoluteSurvivor.java
Normal file
57
Mage.Sets/src/mage/cards/j/JoelResoluteSurvivor.java
Normal 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -6,18 +6,18 @@ import mage.abilities.common.DealsDamageToOpponentTriggeredAbility;
|
|||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
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.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.counters.Counter;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
|
@ -37,12 +37,16 @@ public final class KoseiPenitentWarlord extends CardImpl {
|
|||
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."
|
||||
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(
|
||||
new GainAbilitySourceEffect(new DealsDamageToOpponentTriggeredAbility(
|
||||
new KoseiPenitentWarlordEffect(), false, true, true
|
||||
)), KoseiPenitentWarlordCondition.instance, "as long as {this} is enchanted, equipped, " +
|
||||
"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.\""
|
||||
new GainAbilitySourceEffect(ability), KoseiPenitentWarlordCondition.instance, "as long as " +
|
||||
"{this} is enchanted, equipped, 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));
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
95
Mage.Sets/src/mage/cards/k/KratosGodOfWar.java
Normal file
95
Mage.Sets/src/mage/cards/k/KratosGodOfWar.java
Normal 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;
|
||||
}
|
||||
}
|
||||
44
Mage.Sets/src/mage/cards/m/MorningtidesLight.java
Normal file
44
Mage.Sets/src/mage/cards/m/MorningtidesLight.java
Normal 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);
|
||||
}
|
||||
}
|
||||
44
Mage.Sets/src/mage/cards/m/MutableExplorer.java
Normal file
44
Mage.Sets/src/mage/cards/m/MutableExplorer.java
Normal 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,34 +1,34 @@
|
|||
|
||||
package mage.cards.m;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
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.mana.ColorlessManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.permanent.token.TokenImpl;
|
||||
import mage.game.permanent.token.custom.CreatureToken;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jonubuu
|
||||
*/
|
||||
public final class Mutavault extends CardImpl {
|
||||
|
||||
public Mutavault(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// {tap}: Add {C}.
|
||||
this.addAbility(new ColorlessManaAbility());
|
||||
|
||||
// {1}: Mutavault becomes a 2/2 creature with all creature types until end of turn. It's still a land.
|
||||
this.addAbility(new SimpleActivatedAbility(
|
||||
new BecomesCreatureSourceEffect(new MutavaultToken(), CardType.LAND, Duration.EndOfTurn),
|
||||
new ManaCostsImpl<>("{1}")));
|
||||
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
|
||||
new CreatureToken(2, 2, "2/2 creature with all creature types")
|
||||
.withAllCreatureTypes(true),
|
||||
CardType.LAND, Duration.EndOfTurn
|
||||
), new GenericManaCost(1)));
|
||||
}
|
||||
|
||||
private Mutavault(final Mutavault card) {
|
||||
|
|
@ -40,21 +40,3 @@ public final class Mutavault extends CardImpl {
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
49
Mage.Sets/src/mage/cards/s/SearchForDagger.java
Normal file
49
Mage.Sets/src/mage/cards/s/SearchForDagger.java
Normal 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);
|
||||
}
|
||||
}
|
||||
69
Mage.Sets/src/mage/cards/s/SyggWanderbrineShield.java
Normal file
69
Mage.Sets/src/mage/cards/s/SyggWanderbrineShield.java
Normal 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);
|
||||
}
|
||||
}
|
||||
67
Mage.Sets/src/mage/cards/s/SyggWanderwineWisdom.java
Normal file
67
Mage.Sets/src/mage/cards/s/SyggWanderwineWisdom.java
Normal 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);
|
||||
}
|
||||
}
|
||||
68
Mage.Sets/src/mage/cards/t/TheDestinedBlackMage.java
Normal file
68
Mage.Sets/src/mage/cards/t/TheDestinedBlackMage.java
Normal 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);
|
||||
}
|
||||
}
|
||||
102
Mage.Sets/src/mage/cards/t/TheDestinedThief.java
Normal file
102
Mage.Sets/src/mage/cards/t/TheDestinedThief.java
Normal 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);
|
||||
}
|
||||
}
|
||||
80
Mage.Sets/src/mage/cards/t/TheDestinedWarrior.java
Normal file
80
Mage.Sets/src/mage/cards/t/TheDestinedWarrior.java
Normal 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);
|
||||
}
|
||||
}
|
||||
71
Mage.Sets/src/mage/cards/t/TheDestinedWhiteMage.java
Normal file
71
Mage.Sets/src/mage/cards/t/TheDestinedWhiteMage.java
Normal 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -52,7 +52,7 @@ public final class ValgavothTerrorEater extends CardImpl {
|
|||
this.addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
// 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.
|
||||
this.addAbility(new SimpleStaticAbility(new ValgavothTerrorEaterReplacementEffect()));
|
||||
|
|
|
|||
|
|
@ -5,13 +5,14 @@ import mage.MageObject;
|
|||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.DealsDamageToOpponentTriggeredAbility;
|
||||
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.keyword.MenaceAbility;
|
||||
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.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.
|
||||
this.addAbility(new DealsDamageToOpponentTriggeredAbility(
|
||||
new VincentVengefulAtonerEffect(), false, true, true
|
||||
).withFlavorWord("Chaos"));
|
||||
this.addAbility(new DealsDamageToOpponentTriggeredAbility(new ConditionalOneShotEffect(
|
||||
new DamageEachOtherOpponentThatMuchEffect(), VincentVengefulAtonerCondition.instance,
|
||||
"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) {
|
||||
|
|
@ -57,42 +59,16 @@ public final class VincentVengefulAtoner extends CardImpl {
|
|||
}
|
||||
}
|
||||
|
||||
class VincentVengefulAtonerEffect extends OneShotEffect {
|
||||
|
||||
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);
|
||||
}
|
||||
enum VincentVengefulAtonerCondition implements Condition {
|
||||
instance;
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
if (Optional
|
||||
return Optional
|
||||
.ofNullable(source.getSourcePermanentOrLKI(game))
|
||||
.map(MageObject::getPower)
|
||||
.map(MageInt::getValue)
|
||||
.orElse(0) < 7) {
|
||||
return false;
|
||||
}
|
||||
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;
|
||||
.filter(x -> x >= 7)
|
||||
.isPresent();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
58
Mage.Sets/src/mage/cards/w/WarriorsResolve.java
Normal file
58
Mage.Sets/src/mage/cards/w/WarriorsResolve.java
Normal 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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", 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", 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));
|
||||
|
|
@ -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("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", 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("Chocobo Kick", 178, Rarity.COMMON, mage.cards.c.ChocoboKick.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", 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", 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", 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));
|
||||
|
|
@ -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", 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", 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", 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));
|
||||
|
|
@ -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", 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", 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("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));
|
||||
|
|
@ -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", 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", 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("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));
|
||||
|
|
@ -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", 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", 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("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));
|
||||
|
|
@ -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", 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", 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", 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));
|
||||
|
|
|
|||
|
|
@ -17,15 +17,17 @@ public final class FinalFantasyCommander extends ExpansionSet {
|
|||
|
||||
private FinalFantasyCommander() {
|
||||
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", 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("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("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("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("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));
|
||||
|
|
@ -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("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("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", 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", 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("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));
|
||||
|
|
@ -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("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("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", 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", 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("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("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", 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", 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("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));
|
||||
|
|
@ -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", 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("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", 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("Colossus Hammer", 338, Rarity.UNCOMMON, mage.cards.c.ColossusHammer.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("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("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("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("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("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("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", 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", 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("Everflowing Chalice", 343, Rarity.UNCOMMON, mage.cards.e.EverflowingChalice.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("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("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("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("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("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("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("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("Forgotten Ancient", 304, Rarity.RARE, mage.cards.f.ForgottenAncient.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", 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("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("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));
|
||||
|
|
@ -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("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", 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("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("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", 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("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));
|
||||
|
|
@ -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("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", 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("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("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("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));
|
||||
|
|
@ -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 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("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("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));
|
||||
|
|
@ -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("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", 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("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));
|
||||
|
|
@ -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("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("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("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));
|
||||
|
|
@ -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("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("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", 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));
|
||||
|
|
@ -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("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("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("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));
|
||||
|
|
@ -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("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", 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 Mystery", 436, Rarity.RARE, mage.cards.t.TempleOfMystery.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("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("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", 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));
|
||||
|
|
@ -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("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", 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("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("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));
|
||||
|
|
@ -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", 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", 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("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));
|
||||
|
|
|
|||
59
Mage.Sets/src/mage/sets/LorwynEclipsed.java
Normal file
59
Mage.Sets/src/mage/sets/LorwynEclipsed.java
Normal 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));
|
||||
}
|
||||
}
|
||||
66
Mage.Sets/src/mage/sets/MarvelUniverse.java
Normal file
66
Mage.Sets/src/mage/sets/MarvelUniverse.java
Normal 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));
|
||||
}
|
||||
}
|
||||
|
|
@ -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("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("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("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));
|
||||
|
|
@ -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, 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("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("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));
|
||||
|
|
|
|||
|
|
@ -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", "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", "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", "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", "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", "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));
|
||||
|
|
@ -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("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("Feldon's Cane", "ll50sb", Rarity.UNCOMMON, 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", "ml50", Rarity.UNCOMMON, 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", "ll50sb", Rarity.COMMON, 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.COMMON, 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", "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));
|
||||
|
|
@ -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", "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", "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", "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", "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("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));
|
||||
|
|
@ -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", "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", "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", "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", "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("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));
|
||||
|
|
@ -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", "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("Jalum Tome", "ll54", Rarity.UNCOMMON, 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", "ll54", Rarity.RARE, 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", "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));
|
||||
|
|
@ -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", "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", "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", "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", "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("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));
|
||||
|
|
@ -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("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", "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", "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", "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", "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", "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", "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", "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("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));
|
||||
|
|
@ -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", "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", "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", "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", "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("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));
|
||||
|
|
|
|||
|
|
@ -7,16 +7,16 @@ import mage.constants.SetType;
|
|||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
private SecretLair30thAnniversaryCountdownKit() {
|
||||
super("Secret Lair 30th Anniversary Countdown Kit", "SLC", ExpansionSet.buildDate(2022, 11, 1), SetType.PROMOTIONAL);
|
||||
private SecretLairCountdown() {
|
||||
super("Secret Lair Countdown", "SLC", ExpansionSet.buildDate(2022, 11, 1), SetType.PROMOTIONAL);
|
||||
this.hasBasicLands = false;
|
||||
|
||||
cards.add(new SetCardInfo("Arclight Phoenix", 2018, Rarity.MYTHIC, mage.cards.a.ArclightPhoenix.class));
|
||||
|
|
@ -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),
|
||||
// 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("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));
|
||||
|
|
@ -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("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("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("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));
|
||||
|
|
@ -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("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("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("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));
|
||||
|
|
@ -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("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("Explore", 114, Rarity.RARE, mage.cards.e.Explore.class));
|
||||
cards.add(new SetCardInfo("Glen Elendra Archmage", 115, Rarity.RARE, mage.cards.g.GlenElendraArchmage.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, NON_FULL_USE_VARIOUS));
|
||||
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("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("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("Hallowed Fountain", 123, Rarity.RARE, mage.cards.h.HallowedFountain.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("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("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("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));
|
||||
|
|
@ -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("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("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("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));
|
||||
|
|
@ -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("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("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("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));
|
||||
|
|
@ -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("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("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("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));
|
||||
|
|
@ -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("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("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("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));
|
||||
|
|
@ -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", 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", 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("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("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("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("Sculpting Steel", 864, Rarity.RARE, mage.cards.s.SculptingSteel.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("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("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("Helpful Hunter", 895, Rarity.RARE, mage.cards.h.HelpfulHunter.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("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));
|
||||
}
|
||||
|
||||
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("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));
|
||||
|
|
@ -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("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("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("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));
|
||||
|
|
@ -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("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("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("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));
|
||||
|
|
@ -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("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("Terminate", 1427, Rarity.RARE, mage.cards.t.Terminate.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("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("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));
|
||||
|
|
@ -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("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("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("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));
|
||||
|
|
@ -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("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("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("Mayhem Devil", 1715, Rarity.RARE, mage.cards.m.MayhemDevil.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("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("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("Bear Umbra", 1723, Rarity.RARE, mage.cards.b.BearUmbra.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("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("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("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));
|
||||
|
|
@ -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("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("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("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("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("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("Temporal Extortion", 1859, Rarity.RARE, mage.cards.t.TemporalExtortion.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("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("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("Final Fortune", 1956, Rarity.RARE, mage.cards.f.FinalFortune.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("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("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("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("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("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("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));
|
||||
|
|
@ -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("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("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("Orcish Lumberjack", 2025, Rarity.RARE, mage.cards.o.OrcishLumberjack.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("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("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("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("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("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));
|
||||
|
|
@ -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", 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("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("Doom Blade", 9990, Rarity.RARE, mage.cards.d.DoomBlade.class));
|
||||
cards.add(new SetCardInfo("Massacre", 9991, Rarity.RARE, mage.cards.m.Massacre.class));
|
||||
|
|
|
|||
|
|
@ -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("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("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("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("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("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("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("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("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));
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@ import mage.constants.SetType;
|
|||
|
||||
/**
|
||||
* https://scryfall.com/sets/sum
|
||||
*
|
||||
* https://mtg.wiki/page/Revised_Edition#%22Summer_Magic%22/%22Edgar%22
|
||||
*/
|
||||
public class SummerMagicEdgar extends ExpansionSet {
|
||||
|
||||
|
|
@ -19,9 +21,15 @@ public class SummerMagicEdgar extends ExpansionSet {
|
|||
|
||||
private SummerMagicEdgar() {
|
||||
super("Summer Magic / Edgar", "SUM", ExpansionSet.buildDate(1994, 6, 21), SetType.CORE);
|
||||
this.hasBoosters = false;
|
||||
this.hasBoosters = 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("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));
|
||||
|
|
|
|||
|
|
@ -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", "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("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", "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));
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-root</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-tests</artifactId>
|
||||
|
|
|
|||
|
|
@ -6,12 +6,17 @@ import mage.constants.CardType;
|
|||
import mage.constants.PhaseStep;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.predicate.mageobject.NamePredicate;
|
||||
import mage.game.permanent.Permanent;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.player.TestPlayer;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author LevelX2
|
||||
*/
|
||||
|
|
@ -82,6 +87,7 @@ public class BestowTest extends CardTestPlayerBase {
|
|||
assertSubtype("Hopeful Eidolon", SubType.AURA);
|
||||
assertType("Hopeful Eidolon", CardType.ENCHANTMENT, true);
|
||||
assertType("Hopeful Eidolon", CardType.CREATURE, false);
|
||||
assertNotSubtype("Hopeful Eidolon", SubType.SPIRIT);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -122,59 +128,63 @@ public class BestowTest extends CardTestPlayerBase {
|
|||
@Test
|
||||
public void bestowEnchantmentBecomesCreature() {
|
||||
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.BATTLEFIELD, playerB, "Mountain", 1);
|
||||
addCard(Zone.HAND, playerB, "Lightning Bolt");
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Hopeful Eidolon using bestow", "Silvercoat Lion");
|
||||
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Lightning Bolt", "Silvercoat Lion");
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Hopeful Eidolon using bestow", "Safehold Elite");
|
||||
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Lightning Bolt", "Safehold Elite");
|
||||
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
|
||||
// because Boon Satyr is no creature on the battlefield, evolve may not trigger
|
||||
assertLife(playerA, 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);
|
||||
assertPowerToughness(playerA, "Hopeful Eidolon", 1, 1);
|
||||
|
||||
Permanent hopefulEidolon = getPermanent("Hopeful Eidolon", playerA);
|
||||
Assert.assertTrue("Hopeful Eidolon has to be a creature but is not", hopefulEidolon.isCreature(currentGame));
|
||||
Assert.assertTrue("Hopeful Eidolon has to be an enchantment but is not", hopefulEidolon.isEnchantment(currentGame));
|
||||
|
||||
assertType("Hopeful Eidolon", CardType.CREATURE, true);
|
||||
assertSubtype("Hopeful Eidolon", SubType.SPIRIT);
|
||||
assertType("Hopeful Eidolon", CardType.ENCHANTMENT, true);
|
||||
assertNotSubtype("Hopeful Eidolon", SubType.AURA);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
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.HAND, playerA, "Boon Satyr");
|
||||
addCard(Zone.HAND, playerA, "Leafcrown Dryad");
|
||||
|
||||
|
||||
// Enchantment {1}{W}
|
||||
// Creatures your opponents control enter the battlefield tapped.
|
||||
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);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
|
||||
// because Boon Satyr is no creature on the battlefield, evolve may not trigger
|
||||
assertPermanentCount(playerA, "Silent Artisan", 1);
|
||||
assertPowerToughness(playerA, "Silent Artisan", 7, 7);
|
||||
// because cast with bestow, Boon Satyr may not be tapped
|
||||
// Boon Satyr should not be tapped since it resolved as an aura, Leafcrown Dryad resolved as a creature
|
||||
assertTapped("Boon Satyr", false);
|
||||
assertTapped("Leafcrown Dryad", true);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -271,7 +281,6 @@ public class BestowTest extends CardTestPlayerBase {
|
|||
assertHandCount(playerB, "Disdainful Stroke", 1);
|
||||
assertPermanentCount(playerA, "Hypnotic Siren", 1);
|
||||
|
||||
// because cast with bestow, Boon Satyr may not be tapped
|
||||
assertPermanentCount(playerA, "Silvercoat Lion", 1);
|
||||
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.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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package org.mage.test.cards.abilities.keywords;
|
|||
|
||||
import mage.MageObject;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
|
|
@ -9,6 +10,7 @@ import mage.cards.Card;
|
|||
import mage.constants.ComparisonType;
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.FilterSpell;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.predicate.Predicate;
|
||||
|
|
@ -61,14 +63,22 @@ public class PrototypeTest extends CardTestPlayerBase {
|
|||
}
|
||||
|
||||
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) {
|
||||
filter.add(predicate);
|
||||
filterA.add(predicate);
|
||||
filterB.add(predicate);
|
||||
}
|
||||
addCustomCardWithAbility(
|
||||
"tester", playerA,
|
||||
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();
|
||||
|
||||
assertLife(playerA, 20 + 1);
|
||||
assertLife(playerB, 20 + 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -174,6 +185,7 @@ public class PrototypeTest extends CardTestPlayerBase {
|
|||
execute();
|
||||
|
||||
assertLife(playerA, 20 + 1);
|
||||
assertLife(playerB, 20 + 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -192,6 +204,7 @@ public class PrototypeTest extends CardTestPlayerBase {
|
|||
execute();
|
||||
|
||||
assertLife(playerA, 20 + 1);
|
||||
assertLife(playerB, 20 + 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -210,6 +223,7 @@ public class PrototypeTest extends CardTestPlayerBase {
|
|||
execute();
|
||||
|
||||
assertLife(playerA, 20 + 1);
|
||||
assertLife(playerB, 20 + 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -225,6 +239,7 @@ public class PrototypeTest extends CardTestPlayerBase {
|
|||
execute();
|
||||
|
||||
assertLife(playerA, 20 + 1);
|
||||
assertLife(playerB, 20 + 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -240,6 +255,7 @@ public class PrototypeTest extends CardTestPlayerBase {
|
|||
execute();
|
||||
|
||||
assertLife(playerA, 20 + 1);
|
||||
assertLife(playerB, 20 + 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -1127,14 +1127,12 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement
|
|||
|
||||
int actualCount = 0;
|
||||
for (Permanent permanent : currentGame.getBattlefield().getAllActivePermanents()) {
|
||||
if (permanent instanceof PermanentToken) {
|
||||
if (permanent.getControllerId().equals(player.getId())) {
|
||||
if (isObjectHaveTargetNameOrAlias(player, permanent, tokenName)) {
|
||||
if (permanent instanceof PermanentToken
|
||||
&& permanent.getControllerId().equals(player.getId())
|
||||
&& isObjectHaveTargetNameOrAlias(player, permanent, tokenName)) {
|
||||
actualCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Assert.assertEquals("(Battlefield) Tokens counts for " + player.getName() + " are not equal (" + tokenName + ')', count, actualCount);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-root</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage-verify</artifactId>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>org.mage</groupId>
|
||||
<artifactId>mage-root</artifactId>
|
||||
<version>1.4.57</version>
|
||||
<version>1.4.58</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mage</artifactId>
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Add table
Add a link
Reference in a new issue