Merge remote-tracking branch 'magefree/master'

This commit is contained in:
Dilnu 2016-11-21 07:07:50 -05:00
commit 5e12a141cb
139 changed files with 6185 additions and 1863 deletions

View file

@ -0,0 +1,77 @@
1 [CMD:266] Barren Moor
1 [CMD:269] Command Tower
1 [CMD:272] Evolving Wilds
10 [CMD:315] Forest
1 [CMD:275] Golgari Rot Farm
1 [CMD:283] Orzhov Basilica
8 [CMD:299] Plains
1 [CMD:285] Rupture Spire
1 [CMD:286] Secluded Steppe
1 [CMD:287] Selesnya Sanctuary
8 [CMD:307] Swamp
1 [CMD:290] Temple of the False God
1 [CMD:292] Tranquil Thicket
1 [CMD:295] Vivid Grove
1 [CMD:296] Vivid Marsh
1 [CMD:297] Vivid Meadow
1 [CMD:141] Aquastrand Spider
1 [CMD:10] Celestial Force
1 [CMD:189] Chorus of the Conclave
1 [CMD:76] Dark Hatchling
1 [CMD:149] Deadly Recluse
1 [CMD:154] Fertilid
1 [CMD:201] Golgari Guildmage
1 [CMD:159] Hornet Queen
1 [CMD:207] Karador, Ghost Chieftain
1 [CMD:20] Monk Realist
1 [CMD:90] Nantuko Husk
1 [CMD:167] Penumbra Spider
1 [CMD:169] Sakura-Tribe Elder
1 [CMD:170] Scavenging Ooze
1 [CMD:223] Selesnya Evangel
1 [CMD:224] Selesnya Guildmage
1 [CMD:100] Shriekmaw
1 [CMD:225] Sigil Captain
1 [CMD:171] Spawnwrithe
1 [CMD:172] Spike Feeder
1 [CMD:173] Squallmonger
1 [CMD:174] Symbiotic Wurm
1 [CMD:230] Teneb, the Harvester
1 [CMD:106] Vampire Nighthawk
1 [CMD:234] Vish Kal, Blood Arbiter
1 [CMD:179] Yavimaya Elder
1 [CMD:241] Acorn Catapult
1 [CMD:2] Afterlife
1 [CMD:4] Alliance of Arms
1 [CMD:72] Attrition
1 [CMD:182] Aura Shards
1 [CMD:142] Awakening Zone
1 [CMD:144] Bestial Menace
1 [CMD:146] Cobra Trap
1 [CMD:148] Cultivate
1 [CMD:245] Darksteel Ingot
1 [CMD:192] Death Mutation
1 [CMD:78] Doom Blade
1 [CMD:156] Fists of Ironwood
1 [CMD:84] Footbottom Feast
1 [CMD:249] Golgari Signet
1 [CMD:158] Harmonize
1 [CMD:87] Hex
1 [CMD:15] Hour of Reckoning
1 [CMD:253] Lightning Greaves
1 [CMD:211] Mortify
1 [CMD:212] Necrogenesis
1 [CMD:91] Nemesis Trap
1 [CMD:23] Oblivion Ring
1 [CMD:255] Orzhov Signet
1 [CMD:258] Selesnya Signet
1 [CMD:260] Skullclamp
1 [CMD:261] Sol Ring
1 [CMD:32] Soul Snare
1 [CMD:34] Storm Herd
1 [CMD:103] Syphon Flesh
1 [CMD:175] Tribute to the Wild
1 [CMD:36] Vow of Duty
1 [CMD:107] Vow of Malice
1 [CMD:178] Vow of Wildness
SB: 1 [CMD:200] Ghave, Guru of Spores

View file

@ -0,0 +1,86 @@
1 [CMD:151] Elvish Aberration
1 [CMD:272] Evolving Wilds
1 [CMD:63] Spell Crumple
1 [CMD:150] Deadwood Treefolk
1 [CMD:197] Electrolyze
1 [CMD:153] Explosive Vegetation
1 [CMD:274] Fungal Reaches
1 [CMD:196] Edric, Spymaster of Trest
1 [CMD:155] Fierce Empath
1 [CMD:199] Firespout
1 [CMD:232] Valley Rannet
1 [CMD:276] Gruul Turf
1 [CMD:198] Fire // Ice
1 [CMD:110] Avatar of Fury
1 [CMD:68] Vow of Flight
2 [CMD:311] Mountain
1 [CMD:157] Garruk Wildspeaker
1 [CMD:113] Chain Reaction
1 [CMD:278] Izzet Boilerworks
1 [CMD:233] Vengeful Rebirth
1 [CMD:277] Homeward Path
2 [CMD:313] Mountain
1 [CMD:115] Chartooth Cougar
2 [CMD:312] Mountain
4 [CMD:315] Forest
1 [CMD:65] Trench Gorger
2 [CMD:314] Mountain
3 [CMD:317] Forest
1 [CMD:119] Disaster Radius
1 [CMD:118] Death by Dragons
3 [CMD:316] Forest
1 [CMD:190] Colossal Might
1 [CMD:181] Animar, Soul of Elements
1 [CMD:261] Sol Ring
1 [CMD:188] Call the Skybreaker
1 [CMD:143] Baloth Woodcrasher
1 [CMD:222] Savage Twister
1 [CMD:148] Cultivate
1 [CMD:269] Command Tower
1 [CMD:147] Collective Voyage
2 [CMD:304] Island
2 [CMD:303] Island
1 [CMD:226] Simic Sky Swallower
1 [CMD:306] Island
2 [CMD:305] Island
1 [CMD:219] Prophetic Bolt
1 [CMD:294] Vivid Creek
1 [CMD:40] Brainstorm
1 [CMD:250] Gruul Signet
1 [CMD:293] Vivid Crag
1 [CMD:252] Izzet Signet
1 [CMD:175] Tribute to the Wild
1 [CMD:295] Vivid Grove
1 [CMD:177] Veteran Explorer
1 [CMD:133] Rapacious One
1 [CMD:253] Lightning Greaves
1 [CMD:256] Prophetic Prism
1 [CMD:135] Spitebellows
1 [CMD:1] Artisan of Kozilek
1 [CMD:178] Vow of Wildness
1 [CMD:134] Ruination
1 [CMD:214] Nucklavee
1 [CMD:42] Conundrum Sphinx
1 [CMD:138] Vow of Lightning
1 [CMD:259] Simic Signet
1 [CMD:39] Aethersnipe
1 [CMD:290] Temple of the False God
1 [CMD:160] Hunting Pack
1 [CMD:280] Kazandu Refuge
1 [CMD:162] Invigorate
1 [CMD:161] Hydra Omnivore
1 [CMD:164] Krosan Tusker
1 [CMD:285] Rupture Spire
1 [CMD:163] Kodama's Reach
1 [CMD:166] Magus of the Vineyard
1 [CMD:122] Faultgrinder
1 [CMD:242] Armillary Sphere
1 [CMD:288] Simic Growth Chamber
1 [CMD:203] Hull Breach
1 [CMD:128] Magmatic Force
1 [CMD:204] Intet, the Dreamer
1 [CMD:56] Ray of Command
3 [CMD:318] Forest
SB: 1 [CMD:220] Riku of Two Reflections
LAYOUT MAIN:(1,10)(CMC,false,50)|([CMD:269],[CMD:272],[CMD:315],[CMD:315],[CMD:315],[CMD:315],[CMD:316],[CMD:316],[CMD:316],[CMD:317],[CMD:317],[CMD:317],[CMD:318],[CMD:318],[CMD:318],[CMD:274],[CMD:276],[CMD:277],[CMD:303],[CMD:303],[CMD:304],[CMD:304],[CMD:305],[CMD:305],[CMD:306],[CMD:278],[CMD:280],[CMD:311],[CMD:311],[CMD:312],[CMD:312],[CMD:313],[CMD:313],[CMD:314],[CMD:314],[CMD:285],[CMD:288],[CMD:290],[CMD:293],[CMD:294],[CMD:295])([CMD:40],[CMD:147],[CMD:166],[CMD:261],[CMD:177])([CMD:242],[CMD:190],[CMD:250],[CMD:203],[CMD:252],[CMD:253],[CMD:256],[CMD:222],[CMD:259],[CMD:175])([CMD:181],[CMD:148],[CMD:196],[CMD:197],[CMD:155],[CMD:199],[CMD:162],[CMD:163],[CMD:63],[CMD:68],[CMD:138],[CMD:178])([CMD:113],[CMD:42],[CMD:153],[CMD:198],[CMD:157],[CMD:56],[CMD:134])([CMD:219])([CMD:39],[CMD:143],[CMD:115],[CMD:150],[CMD:118],[CMD:151],[CMD:161],[CMD:204],[CMD:214],[CMD:133],[CMD:135],[CMD:232],[CMD:233])([CMD:188],[CMD:119],[CMD:122],[CMD:160],[CMD:164],[CMD:226])([CMD:110],[CMD:128],[CMD:65])([CMD:1])
LAYOUT SIDEBOARD:(1,1)(NONE,false,50)|([CMD:220])

View file

@ -564,7 +564,6 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
artifactCounter,
enchantmentCounter,
instantCounter,
sorceryCounter,
planeswalkerCounter,
sorceryCounter,
tribalCounter
@ -614,6 +613,7 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
JPopupMenu selectByPopup;
JCheckBox separateCreaturesCb;
JTextField searchByTextField;
JToggleButton multiplesButton;
JSlider cardSizeSlider;
JLabel cardSizeSliderLabel;
@ -953,8 +953,20 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
ButtonGroup selectByTypeModeGroup = new ButtonGroup();
for (final CardType cardType : CardType.values()) {
JToggleButton button = new JToggleButton(cardType.toString());
if (cardType == cardType.CONSPIRACY) {
multiplesButton = new JToggleButton("Multiples");
selectByTypeButtons.put(cardType, multiplesButton);
selectByTypeMode.add(multiplesButton);
selectByTypeModeGroup.add(multiplesButton);
multiplesButton.addActionListener(e -> {
multiplesButton.setSelected(!multiplesButton.isSelected());
reselectBy();
});
continue;
}
JToggleButton button = new JToggleButton(cardType.toString());
selectByTypeButtons.put(cardType, button);
selectByTypeMode.add(button);
selectByTypeModeGroup.add(button);
@ -1233,6 +1245,29 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
AbstractButton button = selectByTypeButtons.get(cardType);
if (button != null) {
if (button.isSelected()) {
// Special case - "Multiples" (CONSPIRACY type)
if (cardType == CardType.CONSPIRACY) {
HashMap<String, CardView> cardNames = new HashMap<>();
for (ArrayList<ArrayList<CardView>> gridRow : cardGrid) {
for (ArrayList<CardView> stack : gridRow) {
for (CardView card : stack) {
if (cardNames.get(card.getName()) == null) {
cardNames.put(card.getName(), card);
} else {
card.setSelected(true);
cardViews.get(card.getId()).update(card);
CardView origCard = cardNames.get(card.getName());
origCard.setSelected(true);
cardViews.get(origCard.getId()).update(origCard);
}
}
}
}
continue;
}
for (ArrayList<ArrayList<CardView>> gridRow : cardGrid) {
for (ArrayList<CardView> stack : gridRow) {
for (CardView card : stack) {
@ -1591,6 +1626,10 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
AbstractButton button = selectByTypeButtons.get(cardType);
String text = cardType.toString();
int numCards = getCount(cardType);
if (cardType == cardType.CONSPIRACY) {
continue;
}
if (numCards > 0) {
button.setForeground(Color.BLACK);
text = text + " - " + numCards;

View file

@ -26,7 +26,7 @@
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
@ -38,23 +38,32 @@
</Group>
<Component id="lblFlag" alignment="1" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="lblStatus" alignment="1" max="32767" attributes="0"/>
<Component id="chkForceUpdateDB" alignment="0" max="32767" attributes="0"/>
<Component id="chkAutoConnect" alignment="0" pref="386" max="32767" attributes="0"/>
<Component id="jProxySettingsButton" min="-2" max="-2" attributes="0"/>
<Component id="cbFlag" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="1" max="-2" attributes="0">
<Component id="txtServer" pref="286" max="32767" attributes="0"/>
<Component id="txtPort" alignment="0" min="-2" pref="71" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" max="-2" attributes="0">
<Component id="txtServer" alignment="1" pref="286" max="32767" attributes="0"/>
<Component id="txtUserName" alignment="1" max="32767" attributes="0"/>
<Component id="txtPassword" alignment="1" max="32767" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Component id="txtPort" min="-2" pref="71" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="btnFind1" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="btnFind3" min="-2" pref="42" max="-2" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="btnFind2" min="-2" pref="42" max="-2" attributes="0"/>
<EmptySpace min="69" pref="69" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="btnFind" min="-2" max="-2" attributes="0"/>
<EmptySpace min="-2" pref="8" max="-2" attributes="0"/>
<Component id="btnFind" pref="92" max="32767" attributes="0"/>
</Group>
<Component id="chkForceUpdateDB" alignment="0" max="32767" attributes="0"/>
<Component id="chkAutoConnect" alignment="0" pref="375" max="32767" attributes="0"/>
</Group>
</Group>
<Group type="102" alignment="1" attributes="0">
@ -72,7 +81,7 @@
<EmptySpace min="-2" pref="26" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@ -89,6 +98,9 @@
<Group type="103" groupAlignment="3" attributes="0">
<Component id="txtPort" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="lblPort" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="btnFind1" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="btnFind2" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="btnFind3" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
@ -111,7 +123,7 @@
<Component id="chkForceUpdateDB" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jProxySettingsButton" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="38" max="32767" attributes="0"/>
<EmptySpace pref="47" max="32767" attributes="0"/>
<Component id="lblStatus" min="-2" pref="24" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
@ -255,5 +267,62 @@
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnForgotPasswordActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="btnFind1">
<Properties>
<Property name="text" type="java.lang.String" value="X"/>
<Property name="toolTipText" type="java.lang.String" value="Connect to xmage.de"/>
<Property name="actionCommand" type="java.lang.String" value="connectXmageDe"/>
<Property name="alignmentY" type="float" value="0.0"/>
<Property name="horizontalAlignment" type="int" value="2"/>
<Property name="horizontalTextPosition" type="int" value="2"/>
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[42, 23]"/>
</Property>
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[42, 23]"/>
</Property>
<Property name="name" type="java.lang.String" value="connectXmageDeBtn" noResource="true"/>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[23, 23]"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="connectXmageDe"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="btnFind2">
<Properties>
<Property name="text" type="java.lang.String" value="L"/>
<Property name="toolTipText" type="java.lang.String" value="Connect to localhost"/>
<Property name="actionCommand" type="java.lang.String" value="connectLocalhost"/>
<Property name="alignmentY" type="float" value="0.0"/>
<Property name="horizontalAlignment" type="int" value="2"/>
<Property name="horizontalTextPosition" type="int" value="2"/>
<Property name="name" type="java.lang.String" value="connectLocalhostBtn" noResource="true"/>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[23, 23]"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="connectLocalhost"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="btnFind3">
<Properties>
<Property name="text" type="java.lang.String" value="W"/>
<Property name="toolTipText" type="java.lang.String" value="Connect to woogerworks"/>
<Property name="actionCommand" type="java.lang.String" value="connectWoogerworks"/>
<Property name="alignmentY" type="float" value="0.0"/>
<Property name="horizontalAlignment" type="int" value="2"/>
<Property name="horizontalTextPosition" type="int" value="2"/>
<Property name="name" type="java.lang.String" value="connectWoogerworksBtn" noResource="true"/>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[23, 23]"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="connectWoogerworks"/>
</Events>
</Component>
</SubComponents>
</Form>

View file

@ -166,6 +166,9 @@ public class ConnectDialog extends MageDialog {
lblStatus = new javax.swing.JLabel();
btnRegister = new javax.swing.JButton();
btnForgotPassword = new javax.swing.JButton();
btnFind1 = new javax.swing.JButton();
btnFind2 = new javax.swing.JButton();
btnFind3 = new javax.swing.JButton();
setTitle("Connect to server");
setNormalBounds(new java.awt.Rectangle(100, 100, 410, 307));
@ -255,6 +258,50 @@ public class ConnectDialog extends MageDialog {
}
});
btnFind1.setText("X");
btnFind1.setToolTipText("Connect to xmage.de");
btnFind1.setActionCommand("connectXmageDe");
btnFind1.setAlignmentY(0.0F);
btnFind1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
btnFind1.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
btnFind1.setMaximumSize(new java.awt.Dimension(42, 23));
btnFind1.setMinimumSize(new java.awt.Dimension(42, 23));
btnFind1.setName("connectXmageDeBtn"); // NOI18N
btnFind1.setPreferredSize(new java.awt.Dimension(23, 23));
btnFind1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
connectXmageDe(evt);
}
});
btnFind2.setText("L");
btnFind2.setToolTipText("Connect to localhost");
btnFind2.setActionCommand("connectLocalhost");
btnFind2.setAlignmentY(0.0F);
btnFind2.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
btnFind2.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
btnFind2.setName("connectLocalhostBtn"); // NOI18N
btnFind2.setPreferredSize(new java.awt.Dimension(23, 23));
btnFind2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
connectLocalhost(evt);
}
});
btnFind3.setText("W");
btnFind3.setToolTipText("Connect to woogerworks");
btnFind3.setActionCommand("connectWoogerworks");
btnFind3.setAlignmentY(0.0F);
btnFind3.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
btnFind3.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
btnFind3.setName("connectWoogerworksBtn"); // NOI18N
btnFind3.setPreferredSize(new java.awt.Dimension(23, 23));
btnFind3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
connectWoogerworks(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
@ -273,18 +320,26 @@ public class ConnectDialog extends MageDialog {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblStatus, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(chkForceUpdateDB, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(chkAutoConnect, javax.swing.GroupLayout.DEFAULT_SIZE, 386, Short.MAX_VALUE)
.addComponent(jProxySettingsButton)
.addComponent(cbFlag, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(txtServer, javax.swing.GroupLayout.DEFAULT_SIZE, 286, Short.MAX_VALUE)
.addComponent(txtPort, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtUserName)
.addComponent(txtPassword))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnFind))
.addComponent(chkForceUpdateDB, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(chkAutoConnect, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(txtServer, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 286, Short.MAX_VALUE)
.addComponent(txtUserName, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(txtPassword, javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addComponent(txtPort, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnFind1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnFind3, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnFind2, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(69, 69, 69)))
.addGap(8, 8, 8)
.addComponent(btnFind, javax.swing.GroupLayout.DEFAULT_SIZE, 92, Short.MAX_VALUE))))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
@ -309,7 +364,10 @@ public class ConnectDialog extends MageDialog {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblPort))
.addComponent(lblPort)
.addComponent(btnFind1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnFind2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnFind3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtUserName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
@ -328,7 +386,7 @@ public class ConnectDialog extends MageDialog {
.addComponent(chkForceUpdateDB)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jProxySettingsButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 38, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 47, Short.MAX_VALUE)
.addComponent(lblStatus, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
@ -596,6 +654,35 @@ public class ConnectDialog extends MageDialog {
resetPasswordDialog.showDialog();
}//GEN-LAST:event_btnForgotPasswordActionPerformed
private void connectXmageDe(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFind1findPublicServerActionPerformed
String serverAddress = "xmage.de";
this.txtServer.setText(serverAddress);
this.txtPort.setText("17171");
// Update userName and password according to the chosen server.
this.txtUserName.setText(MagePreferences.getUserName(serverAddress));
this.txtPassword.setText(MagePreferences.getPassword(serverAddress));
}//GEN-LAST:event_btnFind1findPublicServerActionPerformed
private void connectLocalhost(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFind2findPublicServerActionPerformed
String serverAddress = "localhost";
this.txtServer.setText(serverAddress);
this.txtPort.setText("17171");
// Update userName and password according to the chosen server.
this.txtUserName.setText(MagePreferences.getUserName(serverAddress));
this.txtPassword.setText(MagePreferences.getPassword(serverAddress));
}//GEN-LAST:event_btnFind2findPublicServerActionPerformed
private void connectWoogerworks(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_connectWoogerworks
String serverAddress = "xmage.woogerworks.com";
this.txtServer.setText(serverAddress);
this.txtPort.setText("17171");
// Update userName and password according to the chosen server.
this.txtUserName.setText(MagePreferences.getUserName(serverAddress));
this.txtPassword.setText(MagePreferences.getPassword(serverAddress));
}//GEN-LAST:event_connectWoogerworks
public String getServer() {
return this.txtServer.getText();
}
@ -608,6 +695,9 @@ public class ConnectDialog extends MageDialog {
private javax.swing.JButton btnCancel;
private javax.swing.JButton btnConnect;
private javax.swing.JButton btnFind;
private javax.swing.JButton btnFind1;
private javax.swing.JButton btnFind2;
private javax.swing.JButton btnFind3;
private javax.swing.JButton btnForgotPassword;
private javax.swing.JButton btnRegister;
private mage.client.util.gui.countryBox.CountryComboBox cbFlag;

View file

@ -59,6 +59,10 @@
<Component id="lblQuitRatio" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="spnQuitRatio" min="-2" pref="60" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="lblEdhPowerLevel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="spnEdhPowerLevel" min="-2" pref="60" max="-2" attributes="0"/>
</Group>
</Group>
</Group>
@ -133,6 +137,8 @@
<Component id="lbDeckType" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="lblQuitRatio" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="spnQuitRatio" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="lblEdhPowerLevel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="spnEdhPowerLevel" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
@ -389,5 +395,12 @@
</Component>
<Component class="javax.swing.JSpinner" name="spnQuitRatio">
</Component>
<Component class="javax.swing.JLabel" name="lblEdhPowerLevel">
<Properties>
<Property name="text" type="java.lang.String" value="EDH power level"/>
</Properties>
</Component>
<Component class="javax.swing.JSpinner" name="spnEdhPowerLevel">
</Component>
</SubComponents>
</Form>

View file

@ -79,6 +79,7 @@ public class NewTableDialog extends MageDialog {
this.spnNumWins.setModel(new SpinnerNumberModel(1, 1, 5, 1));
this.spnFreeMulligans.setModel(new SpinnerNumberModel(0, 0, 5, 1));
this.spnQuitRatio.setModel(new SpinnerNumberModel(100, 0, 100, 5));
this.spnEdhPowerLevel.setModel(new SpinnerNumberModel(100, 0, 100, 5));
MageFrame.getUI().addButton(MageComponents.NEW_TABLE_OK_BUTTON, btnOK);
}
@ -125,7 +126,9 @@ public class NewTableDialog extends MageDialog {
btnOK = new javax.swing.JButton();
btnCancel = new javax.swing.JButton();
lblQuitRatio = new javax.swing.JLabel();
lblEdhPowerLevel = new javax.swing.JLabel();
spnQuitRatio = new javax.swing.JSpinner();
spnEdhPowerLevel = new javax.swing.JSpinner();
setTitle("New Table");
@ -214,8 +217,10 @@ public class NewTableDialog extends MageDialog {
});
lblQuitRatio.setText("Allowed quit %");
lblEdhPowerLevel.setText("EDH power level");
spnQuitRatio.setToolTipText("Players with quit % more than this value can't join this table");
spnEdhPowerLevel.setToolTipText("Players with decks with a higher power level can't join this table");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
@ -256,7 +261,10 @@ public class NewTableDialog extends MageDialog {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(lblQuitRatio)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(spnQuitRatio, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addComponent(spnQuitRatio, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblEdhPowerLevel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(spnEdhPowerLevel, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
@ -314,7 +322,10 @@ public class NewTableDialog extends MageDialog {
.addComponent(lbDeckType)
.addComponent(lblQuitRatio)
.addComponent(chkRated)
.addComponent(spnQuitRatio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(spnQuitRatio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblEdhPowerLevel)
.addComponent(chkRated)
.addComponent(spnEdhPowerLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
@ -395,6 +406,7 @@ public class NewTableDialog extends MageDialog {
options.setFreeMulligans((Integer) this.spnFreeMulligans.getValue());
options.setPassword(this.txtPassword.getText());
options.setQuitRatio((Integer) this.spnQuitRatio.getValue());
options.setEdhPowerLevel((Integer) this.spnEdhPowerLevel.getValue());
if (!checkMatchOptions(options)) {
return;
}
@ -658,6 +670,7 @@ public class NewTableDialog extends MageDialog {
}
this.spnQuitRatio.setValue(Integer.parseInt(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TABLE_QUIT_RATIO, "100")));
this.spnEdhPowerLevel.setValue(0);
}
/**
@ -721,6 +734,7 @@ public class NewTableDialog extends MageDialog {
private javax.swing.JLabel lblNumWins;
private javax.swing.JLabel lblPassword;
private javax.swing.JLabel lblQuitRatio;
private javax.swing.JLabel lblEdhPowerLevel;
private javax.swing.JLabel lblRange;
private javax.swing.JLabel lblSkillLevel;
private mage.client.table.NewPlayerPanel player1Panel;
@ -729,6 +743,7 @@ public class NewTableDialog extends MageDialog {
private javax.swing.JSpinner spnNumPlayers;
private javax.swing.JSpinner spnNumWins;
private javax.swing.JSpinner spnQuitRatio;
private javax.swing.JSpinner spnEdhPowerLevel;
private javax.swing.JTextField txtName;
private javax.swing.JTextField txtPassword;
// End of variables declaration//GEN-END:variables

View file

@ -32,11 +32,12 @@ import javax.swing.JComboBox;
/**
* A custom combo box with its own renderer and editor.
*
* @author wwww.codejava.net
*
*/
public class CountryComboBox extends JComboBox {
private final DefaultComboBoxModel model;
public static String[][] countryList = {
@ -60,6 +61,7 @@ public class CountryComboBox extends JComboBox {
{"Bahrain", "bh"},
{"Bangladesh", "bd"},
{"Barbados", "bb"},
{"Basque", "bq"},
{"Belarus", "by"},
{"Belgium", "be"},
{"Belize", "bz"},
@ -285,9 +287,8 @@ public class CountryComboBox extends JComboBox {
{"Western Sahara", "eh"},
{"Yemen", "ye"},
{"Zambia", "zm"},
{"Zimbabwe", "zw"},
};
{"Zimbabwe", "zw"},};
@SuppressWarnings("unchecked")
public CountryComboBox() {
model = new DefaultComboBoxModel();
@ -296,12 +297,12 @@ public class CountryComboBox extends JComboBox {
setEditor(new CountryItemEditor());
addItems(countryList);
}
/**
* Add an array items to this combo box.
* Each item is an array of two String elements:
* - first element is country name.
* - second element is path of an image file for country flag.
* Add an array items to this combo box. Each item is an array of two String
* elements: - first element is country name. - second element is path of an
* image file for country flag.
*
* @param items
*/
@SuppressWarnings("unchecked")
@ -315,6 +316,5 @@ public class CountryComboBox extends JComboBox {
public Object getSelectedItem() {
return super.getSelectedItem(); //To change body of generated methods, choose Tools | Templates.
}
}

View file

@ -0,0 +1,104 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package org.mage.plugins.card.dl.sources;
import org.mage.plugins.card.images.CardDownloadData;
import java.net.URI;
/**
*
* @author Pete Rossi
*/
public class MagidexImageSource implements CardImageSource {
private static CardImageSource instance = new MagidexImageSource();
public static CardImageSource getInstance() {
if (instance == null) {
instance = new MagidexImageSource();
}
return instance;
}
@Override
public String getSourceName() {
return "magidex.com";
}
@Override
public String getNextHttpImageUrl() {
return null;
}
@Override
public String getFileForHttpImage(String httpImageUrl) {
return null;
}
@Override
public String generateURL(CardDownloadData card) throws Exception {
String cardDownloadName = card.getDownloadName().toLowerCase();
String cardSet = card.getSet();
if (cardDownloadName == null || cardSet == null) {
throw new Exception("Wrong parameters for image: cardDownloadName: " + cardDownloadName + ",card set: " + cardSet);
}
if (card.isSplitCard()) {
cardDownloadName = cardDownloadName.replaceAll(" // ", "");
}
// This will properly escape the url
URI uri = new URI("http", "magidex.com", "/extstatic/card/" + cardSet + "/" + cardDownloadName + ".jpg", null, null);
return uri.toASCIIString();
}
@Override
public String generateTokenUrl(CardDownloadData card) {
return null;
}
@Override
public Float getAverageSize() {
return 62.0f;
}
@Override
public Integer getTotalImages() {
return -1;
}
@Override
public Boolean isTokenSource() {
return false;
}
@Override
public void doPause(String httpImageUrl) {
}
}

View file

@ -64,6 +64,7 @@ import org.mage.plugins.card.dl.sources.MtgOnlTokensImageSource;
import org.mage.plugins.card.dl.sources.MythicspoilerComSource;
import org.mage.plugins.card.dl.sources.TokensMtgImageSource;
import org.mage.plugins.card.dl.sources.WizardCardsImageSource;
import org.mage.plugins.card.dl.sources.MagidexImageSource;
import org.mage.plugins.card.properties.SettingsManager;
import org.mage.plugins.card.utils.CardImageUtils;
@ -149,7 +150,8 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab
"tokens.mtg.onl", //"mtgimage.com (HQ)",
"mtg.onl",
"alternative.mtg.onl",
"GrabBag"
"GrabBag",
"magidex.com"
//"mtgathering.ru HQ",
//"mtgathering.ru MQ",
//"mtgathering.ru LQ",
@ -186,6 +188,9 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab
case 6:
cardImageSource = GrabbagImageSource.getInstance();
break;
case 7:
cardImageSource = MagidexImageSource.getInstance();
break;
}
updateCardsToDownload();
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 B

View file

@ -204,4 +204,358 @@ public class Commander extends Constructed {
|| cardColor.isWhite() && !commander.isWhite());
}
@Override
public int getEdhPowerLevel(Deck deck) {
if (deck == null) {
return 0;
}
int edhPowerLevel = 0;
for (Card card : deck.getCards()) {
int thisMaxPower = 0;
// Examine rules to work out most egregious functions in edh
boolean anyNumberOfTarget = false;
boolean buyback = false;
boolean cascade = false;
boolean copy = false;
boolean exile = false;
boolean exileAll = false;
boolean counter = false;
boolean destroy = false;
boolean destroyAll = false;
boolean each = false;
boolean exalted = false;
boolean drawCards = false;
boolean extraTurns = false;
boolean gainControl = false;
boolean infect = false;
boolean mayCastForFree = false;
boolean miracle = false;
boolean overload = false;
boolean persist = false;
boolean proliferate = false;
boolean retrace = false;
boolean sacrifice = false;
boolean skip = false;
boolean sliver = false;
boolean tutor = false;
boolean undying = false;
boolean wheneverEnters = false;
boolean youControlTarget = false;
for (String str : card.getRules()) {
String s = str.toLowerCase();
anyNumberOfTarget |= s.contains("any number");
buyback |= s.contains("buyback");
cascade |= s.contains("cascade");
copy |= s.contains("copy");
counter |= s.contains("counter") && s.contains("target");
destroy |= s.contains("destroy");
destroyAll |= s.contains("destroy all");
drawCards |= s.contains("draw cards");
each |= s.contains("each");
exalted |= s.contains("exalted");
exile |= s.contains("exile");
exileAll |= s.contains("exile") && s.contains(" all ");
extraTurns |= s.contains("extra turn");
gainControl |= s.contains("gain control");
infect |= s.contains("infect");
mayCastForFree |= s.contains("may cast") && s.contains("without paying");
miracle |= s.contains("miracle");
overload |= s.contains("overload");
persist |= s.contains("persist");
proliferate |= s.contains("proliferate");
retrace |= s.contains("retrace");
sacrifice |= s.contains("sacrifice");
skip |= s.contains("skip") && s.contains("each");
sliver |= s.contains("sliver");
tutor |= s.contains("search your library");
undying |= s.contains("undying");
wheneverEnters |= s.contains("when") && s.contains("another") && s.contains("enters");
youControlTarget |= s.contains("you control target");
}
if (extraTurns) {
thisMaxPower = Math.max(thisMaxPower, 7);
}
if (buyback) {
thisMaxPower = Math.max(thisMaxPower, 6);
}
if (tutor) {
thisMaxPower = Math.max(thisMaxPower, 6);
}
if (infect) {
thisMaxPower = Math.max(thisMaxPower, 5);
}
if (overload) {
thisMaxPower = Math.max(thisMaxPower, 5);
}
if (cascade) {
thisMaxPower = Math.max(thisMaxPower, 4);
}
if (each) {
thisMaxPower = Math.max(thisMaxPower, 4);
}
if (exileAll) {
thisMaxPower = Math.max(thisMaxPower, 4);
}
if (gainControl) {
thisMaxPower = Math.max(thisMaxPower, 4);
}
if (mayCastForFree) {
thisMaxPower = Math.max(thisMaxPower, 4);
}
if (proliferate) {
thisMaxPower = Math.max(thisMaxPower, 4);
}
if (skip) {
thisMaxPower = Math.max(thisMaxPower, 4);
}
if (wheneverEnters) {
thisMaxPower = Math.max(thisMaxPower, 4);
}
if (youControlTarget) {
thisMaxPower = Math.max(thisMaxPower, 4);
}
if (anyNumberOfTarget) {
thisMaxPower = Math.max(thisMaxPower, 3);
}
if (destroyAll) {
thisMaxPower = Math.max(thisMaxPower, 3);
}
if (undying) {
thisMaxPower = Math.max(thisMaxPower, 3);
}
if (persist) {
thisMaxPower = Math.max(thisMaxPower, 3);
}
if (exile) {
thisMaxPower = Math.max(thisMaxPower, 2);
}
if (miracle) {
thisMaxPower = Math.max(thisMaxPower, 2);
}
if (sliver) {
thisMaxPower = Math.max(thisMaxPower, 2);
}
if (sacrifice) {
thisMaxPower = Math.max(thisMaxPower, 2);
}
if (copy) {
thisMaxPower = Math.max(thisMaxPower, 1);
}
if (counter) {
thisMaxPower = Math.max(thisMaxPower, 1);
}
if (destroy) {
thisMaxPower = Math.max(thisMaxPower, 1);
}
if (drawCards) {
thisMaxPower = Math.max(thisMaxPower, 1);
}
if (exalted) {
thisMaxPower = Math.max(thisMaxPower, 1);
}
if (retrace) {
thisMaxPower = Math.max(thisMaxPower, 1);
}
// Planeswalkers
if (card.getCardType().contains(CardType.PLANESWALKER)) {
if (card.getName().toLowerCase().equals("jace, the mind sculptor")) {
thisMaxPower = Math.max(thisMaxPower, 5);
}
thisMaxPower = Math.max(thisMaxPower, 3);
}
if (card.getCardType().contains(CardType.LAND)) {
thisMaxPower = 0;
}
// Banned in french or unfair cards
String cn = card.getName().toLowerCase();
if (cn.equals("ancient tomb")
|| cn.equals("anafenza, the foremost")
|| cn.equals("arcum dagsson")
|| cn.equals("armageddon")
|| cn.equals("aura shards")
|| cn.equals("azami, lady of scrolls")
|| cn.equals("azusa, lost but seeking")
|| cn.equals("back to basics")
|| cn.equals("bane of progress")
|| cn.equals("basalt monolith")
|| cn.equals("blightsteel collossus")
|| cn.equals("braids, cabal minion")
|| cn.equals("cabal coffers")
|| cn.equals("captain sisay")
|| cn.equals("celestial dawn")
|| cn.equals("child of alara")
|| cn.equals("coalition relic")
|| cn.equals("craterhoof behemoth")
|| cn.equals("deepglow skate")
|| cn.equals("derevi, empyrial tactician")
|| cn.equals("dig through time")
|| cn.equals("edric, spymaster of trest")
|| cn.equals("elesh norn, grand cenobite")
|| cn.equals("entomb")
|| cn.equals("food chain")
|| cn.equals("gaddock teeg")
|| cn.equals("gaea's cradle")
|| cn.equals("grand arbiter augustin iv")
|| cn.equals("grim monolith")
|| cn.equals("hermit druid")
|| cn.equals("hokori, dust drinker")
|| cn.equals("humility")
|| cn.equals("imperial seal")
|| cn.equals("iona, shield of emeria")
|| cn.equals("jin-gitaxias, core augur")
|| cn.equals("karador, ghost chieftain")
|| cn.equals("karakas")
|| cn.equals("kataki, war's wage")
|| cn.equals("knowledge pool")
|| cn.equals("linvala, keeper of silence")
|| cn.equals("living death")
|| cn.equals("llawan, cephalid empress")
|| cn.equals("loyal retainers")
|| cn.equals("maelstrom wanderer")
|| cn.equals("malfegor")
|| cn.equals("mana crypt")
|| cn.equals("mana drain")
|| cn.equals("mana vault")
|| cn.equals("michiko konda, truth seeker")
|| cn.equals("nath of the gilt-leaf")
|| cn.equals("natural order")
|| cn.equals("necrotic ooze")
|| cn.equals("nicol bolas")
|| cn.equals("numot, the devastator")
|| cn.equals("oath of druids")
|| cn.equals("pattern of rebirth")
|| cn.equals("protean hulk")
|| cn.equals("purphoros, god of the forge")
|| cn.equals("ravages of war")
|| cn.equals("reclamation sage")
|| cn.equals("sen triplets")
|| cn.equals("serra's sanctum")
|| cn.equals("sheoldred, whispering one")
|| cn.equals("sol ring")
|| cn.equals("spore frog")
|| cn.equals("stasis")
|| cn.equals("strip mine")
|| cn.equals("the tabernacle at pendrell vale")
|| cn.equals("tinker")
|| cn.equals("tolarian academy")
|| cn.equals("treasure cruise")
|| cn.equals("urabrask the hidden")
|| cn.equals("vorinclex, voice of hunger")
|| cn.equals("winter orb")
|| cn.equals("zur the enchanter")) {
thisMaxPower = Math.max(thisMaxPower, 4);
}
// Parts of infinite combos
if (cn.equals("animate artifact") || cn.equals("archaeomancer")
|| cn.equals("ashnod's altar") || cn.equals("azami, lady of scrolls")
|| cn.equals("basalt monolith") || cn.equals("brago, king eternal")
|| cn.equals("candelabra of tawnos") || cn.equals("cephalid aristocrat")
|| cn.equals("cephalid illusionist") || cn.equals("changeling berserker")
|| cn.equals("cinderhaze wretch") || cn.equals("cryptic gateway")
|| cn.equals("deadeye navigator") || cn.equals("derevi, empyrial tactician")
|| cn.equals("doubling season") || cn.equals("dross scorpion")
|| cn.equals("earthcraft") || cn.equals("erratic portal")
|| cn.equals("enter the infinite") || cn.equals("omniscience")
|| cn.equals("exquisite blood") || cn.equals("future sight")
|| cn.equals("grave titan") || cn.equals("great whale")
|| cn.equals("grim monolith") || cn.equals("gush")
|| cn.equals("hellkite charger") || cn.equals("intruder alarm")
|| cn.equals("iona, shield of emeria")
|| cn.equals("karn, silver golem") || cn.equals("kiki-jiki, mirror breaker")
|| cn.equals("krark-clan ironworks") || cn.equals("krenko, mob boss")
|| cn.equals("krosan restorer") || cn.equals("laboratory maniac")
|| cn.equals("leovold, emissary of trest")
|| cn.equals("leonin relic-warder") || cn.equals("leyline of the void")
|| cn.equals("memnarch") || cn.equals("memnarch")
|| cn.equals("meren of clan nel toth") || cn.equals("mikaeus, the unhallowed")
|| cn.equals("mindcrank") || cn.equals("mindslaver")
|| cn.equals("minion reflector") || cn.equals("mycosynth lattice")
|| cn.equals("myr turbine") || cn.equals("narset, enlightened master")
|| cn.equals("nekusar, the mindrazer") || cn.equals("norin the wary")
|| cn.equals("opalescence") || cn.equals("ornithopter")
|| cn.equals("planar portal") || cn.equals("power artifact")
|| cn.equals("rings of brighthearth") || cn.equals("rite of replication")
|| cn.equals("sanguine bond") || cn.equals("sensei's divining top")
|| cn.equals("splinter twin") || cn.equals("stony silence")
|| cn.equals("storm cauldron") || cn.equals("teferi's puzzle box")
|| cn.equals("teferi, mage of zhalfir") || cn.equals("teferi, mage of zhalfir")
|| cn.equals("tezzeret the seeker") || cn.equals("time stretch")
|| cn.equals("time warp") || cn.equals("training grounds")
|| cn.equals("triskelavus") || cn.equals("triskelion")
|| cn.equals("turnabout") || cn.equals("umbral mantle")
|| cn.equals("uyo, silent prophet") || cn.equals("voltaic key")
|| cn.equals("workhorse") || cn.equals("worldgorger dragon")
|| cn.equals("worthy cause") || cn.equals("yawgmoth's will")
|| cn.equals("zealous conscripts")) {
thisMaxPower = Math.max(thisMaxPower, 6);
}
edhPowerLevel += thisMaxPower;
}
for (Card commander : deck.getSideboard()) {
int thisMaxPower = 0;
String cn = commander.getName().toLowerCase();
// Least fun commanders
if (cn.equals("azami, lady of scrolls")
|| cn.equals("braids, cabal minion")
|| cn.equals("child of alara")
|| cn.equals("derevi, empyrial tactician")
|| cn.equals("edric, spymaster of trest")
|| cn.equals("gaddock teeg")
|| cn.equals("grand arbiter augustin iv")
|| cn.equals("hokori, dust drinker")
|| cn.equals("iona, shield of emeria")
|| cn.equals("jin-gitaxias, core augur")
|| cn.equals("karador, ghost chieftain")
|| cn.equals("linvala, keeper of silence")
|| cn.equals("llawan, cephalid empress")
|| cn.equals("memnarch")
|| cn.equals("meren of clan nel toth")
|| cn.equals("michiko konda, truth seeker")
|| cn.equals("narset, enlightened master")
|| cn.equals("nekusar, the mindrazer")
|| cn.equals("norin the wary")
|| cn.equals("numot, the devastator")
|| cn.equals("sheoldred, whispering one")
|| cn.equals("teferi, mage of zhalfir")
|| cn.equals("zur the enchanter")) {
thisMaxPower = Math.max(thisMaxPower, 15);
}
// Next least fun commanders
if (cn.equals("anafenza, the foremost")
|| cn.equals("arcum dagsson")
|| cn.equals("azusa, lost but seeking")
|| cn.equals("brago, king eternal")
|| cn.equals("captain sisay")
|| cn.equals("elesh norn, grand cenobite")
|| cn.equals("malfegor")
|| cn.equals("maelstrom wanderer")
|| cn.equals("mikaeus the unhallowed")
|| cn.equals("nath of the gilt-leaf")
|| cn.equals("purphoros, god of the forge")
|| cn.equals("sen triplets")
|| cn.equals("urabrask the hidden")
|| cn.equals("vorinclex, voice of hunger")) {
thisMaxPower = Math.max(thisMaxPower, 10);
}
edhPowerLevel += thisMaxPower;
}
edhPowerLevel = (int) Math.round(edhPowerLevel / 2.5);
if (edhPowerLevel > 100) {
edhPowerLevel = 100;
}
return edhPowerLevel;
}
}

View file

@ -37,7 +37,6 @@ public class DuelCommander extends Commander {
super("Duel Commander");
banned.add("Ancestral Recall");
banned.add("Ancient Tomb");
banned.add("Balance");
banned.add("Back to Basics");
banned.add("Black Lotus");
banned.add("Channel");
@ -48,7 +47,6 @@ public class DuelCommander extends Commander {
banned.add("Gaea's Cradle");
banned.add("Gifts Ungiven");
banned.add("Grim Monolith");
banned.add("Grindstone");
banned.add("Hermit Druid");
banned.add("Humility");
banned.add("Imperial Seal");
@ -67,12 +65,10 @@ public class DuelCommander extends Commander {
banned.add("Mox Sapphire");
banned.add("Mystical Tutor");
banned.add("Natural Order");
banned.add("Necropotence");
banned.add("Necrotic Oooze");
banned.add("Oath of Druids");
banned.add("Protean Hulk");
banned.add("Sensei's Divining Top");
banned.add("Serra Ascendant");
banned.add("Shahrazad");
banned.add("Sol Ring");
banned.add("Strip Mine");
@ -83,7 +79,6 @@ public class DuelCommander extends Commander {
banned.add("Tolarian Academy");
banned.add("Treasure Cruise");
banned.add("Vampiric Tutor");
banned.add("Yawgmoths Bargain");
bannedCommander.add("Derevi, Empyrial Tactician");
bannedCommander.add("Edric, Spymaster of Trest");

View file

@ -912,10 +912,7 @@ public class HumanPlayer extends PlayerImpl {
FilterCreatureForCombat filter = filterCreatureForCombat.copy();
filter.add(new ControllerIdPredicate(attackingPlayerId));
while (!abort) {
if (passedAllTurns || passedUntilEndStepBeforeMyTurn
|| (!getUserData().getUserSkipPrioritySteps().isStopOnDeclareAttackersDuringSkipAction() && (passedTurn || passedTurnSkipStack || passedUntilEndOfTurn || passedUntilNextMain))) {
return;
}
Map<String, Serializable> options = new HashMap<>();
List<UUID> possibleAttackers = new ArrayList<>();
@ -927,6 +924,12 @@ public class HumanPlayer extends PlayerImpl {
options.put(Constants.Option.POSSIBLE_ATTACKERS, (Serializable) possibleAttackers);
if (possibleAttackers.size() > 0) {
options.put(Constants.Option.SPECIAL_BUTTON, (Serializable) "All attack");
if (getUserData().getUserSkipPrioritySteps().isStopOnDeclareAttackersDuringSkipAction()) {
resetPlayerPassedActions();
}
} else if (passedAllTurns || passedUntilEndStepBeforeMyTurn
|| (!getUserData().getUserSkipPrioritySteps().isStopOnDeclareAttackersDuringSkipAction() && (passedTurn || passedTurnSkipStack || passedUntilEndOfTurn || passedUntilNextMain))) {
return;
}
game.fireSelectEvent(playerId, "Select attackers", options);
@ -1056,7 +1059,14 @@ public class HumanPlayer extends PlayerImpl {
}
}
if (chooseTarget(Outcome.Damage, target, null, game)) {
declareAttacker(attackerId, response.getUUID(), game, true);
UUID defenderId = response.getUUID();
for (Player player : game.getPlayers().values()) {
if (player.getId().equals(response.getUUID())) {
defenderId = player.getId(); // get the correct player object
break;
}
}
declareAttacker(attackerId, defenderId, game, true);
return true;
}
}

View file

@ -36,7 +36,7 @@ import mage.game.draft.DraftCube;
public class AdamStyborskisPauperCube extends DraftCube {
public AdamStyborskisPauperCube() {
super("Adam Styborkski's Cube (411 cards)"); // https://docs.google.com/spreadsheets/d/12iQhC4bHqFW7hEWxPBjyC8yBDehFZ0_4DkqzyA8EL3o/edit#gid=0
super("Adam Styborkski's Pauper Cube"); // https://docs.google.com/spreadsheets/d/12iQhC4bHqFW7hEWxPBjyC8yBDehFZ0_4DkqzyA8EL3o/edit#gid=0
cubeCards.add(new CardIdentity("Act of Treason", ""));
cubeCards.add(new CardIdentity("Adventuring Gear", ""));
@ -47,11 +47,11 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Aim High", ""));
cubeCards.add(new CardIdentity("Ambush Viper", ""));
cubeCards.add(new CardIdentity("Angelic Purge", ""));
cubeCards.add(new CardIdentity("Apex Hawks", ""));
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("Ashes to Ashes", ""));
cubeCards.add(new CardIdentity("Assault Zeppelid", ""));
cubeCards.add(new CardIdentity("Attended Knight", ""));
@ -75,11 +75,12 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Bonded Construct", ""));
cubeCards.add(new CardIdentity("Bonds of Faith", ""));
cubeCards.add(new CardIdentity("Bonesplitter", ""));
cubeCards.add(new CardIdentity("Boomerang", ""));
cubeCards.add(new CardIdentity("Borderland Explorer", ""));
cubeCards.add(new CardIdentity("Borderland Marauder", ""));
cubeCards.add(new CardIdentity("Boros Guildgate", ""));
cubeCards.add(new CardIdentity("Borrowed Grave", ""));
cubeCards.add(new CardIdentity("Branching Bolt", ""));
cubeCards.add(new CardIdentity("Brazen Wolves", ""));
cubeCards.add(new CardIdentity("Brute Force", ""));
cubeCards.add(new CardIdentity("Burst Lightning", ""));
cubeCards.add(new CardIdentity("Butcher Ghoul", ""));
@ -138,8 +139,8 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Doomed Traveler", ""));
cubeCards.add(new CardIdentity("Drag Under", ""));
cubeCards.add(new CardIdentity("Dragon Fodder", ""));
cubeCards.add(new CardIdentity("Driver of the Dead", ""));
cubeCards.add(new CardIdentity("Dynacharge", ""));
cubeCards.add(new CardIdentity("Eager Construct", ""));
cubeCards.add(new CardIdentity("Eldrazi Devastator", ""));
cubeCards.add(new CardIdentity("Eldrazi Skyspawner", ""));
cubeCards.add(new CardIdentity("Elephant Ambush", ""));
@ -155,9 +156,7 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Exultant Cultist", ""));
cubeCards.add(new CardIdentity("Faceless Butcher", ""));
cubeCards.add(new CardIdentity("Faith's Fetters", ""));
cubeCards.add(new CardIdentity("Fall of the Hammer", ""));
cubeCards.add(new CardIdentity("Feeling of Dread", ""));
cubeCards.add(new CardIdentity("Fellwar Stone", ""));
cubeCards.add(new CardIdentity("Fertile Thicket", ""));
cubeCards.add(new CardIdentity("Fervent Cathar", ""));
cubeCards.add(new CardIdentity("Fire Ambush", ""));
@ -166,6 +165,7 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Fireslinger", ""));
cubeCards.add(new CardIdentity("Flayer Husk", ""));
cubeCards.add(new CardIdentity("Flurry of Horns", ""));
cubeCards.add(new CardIdentity("Forked Bolt", ""));
cubeCards.add(new CardIdentity("Fortify", ""));
cubeCards.add(new CardIdentity("Frilled Oculus", ""));
cubeCards.add(new CardIdentity("Frostburn Weird", ""));
@ -174,9 +174,9 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Ghastly Demise", ""));
cubeCards.add(new CardIdentity("Ghirapur Gearcrafter", ""));
cubeCards.add(new CardIdentity("Ghitu Slinger", ""));
cubeCards.add(new CardIdentity("Ghoulcaller's Accomplice", ""));
cubeCards.add(new CardIdentity("Giant Growth", ""));
cubeCards.add(new CardIdentity("Gideon's Lawkeeper", ""));
cubeCards.add(new CardIdentity("Glint-Sleeve Artisan", ""));
cubeCards.add(new CardIdentity("Goblin Freerunner", ""));
cubeCards.add(new CardIdentity("Goblin Heelcutter", ""));
cubeCards.add(new CardIdentity("Gods Willing", ""));
@ -223,11 +223,11 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Laboratory Brute", ""));
cubeCards.add(new CardIdentity("Lash Out", ""));
cubeCards.add(new CardIdentity("Last Gasp", ""));
cubeCards.add(new CardIdentity("Lawless Broker", ""));
cubeCards.add(new CardIdentity("Leonin Bola", ""));
cubeCards.add(new CardIdentity("Leonin Scimitar", ""));
cubeCards.add(new CardIdentity("Lightning Bolt", ""));
cubeCards.add(new CardIdentity("Liliana's Specter", ""));
cubeCards.add(new CardIdentity("Lone Missionary", ""));
cubeCards.add(new CardIdentity("Looming Spires", ""));
cubeCards.add(new CardIdentity("Lotus Path Djinn", ""));
cubeCards.add(new CardIdentity("Loyal Pegasus", ""));
@ -238,6 +238,7 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Mardu Hordechief", ""));
cubeCards.add(new CardIdentity("Mardu Skullhunter", ""));
cubeCards.add(new CardIdentity("Maul Splicer", ""));
cubeCards.add(new CardIdentity("Maulfist Squad", ""));
cubeCards.add(new CardIdentity("Maze of Ith", ""));
cubeCards.add(new CardIdentity("Mental Note", ""));
cubeCards.add(new CardIdentity("Midnight Scavengers", ""));
@ -260,7 +261,6 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Narcolepsy", ""));
cubeCards.add(new CardIdentity("Necromancer's Assistant", ""));
cubeCards.add(new CardIdentity("Nessian Asp", ""));
cubeCards.add(new CardIdentity("Nest Invader", ""));
cubeCards.add(new CardIdentity("Nezumi Cutthroat", ""));
cubeCards.add(new CardIdentity("Night's Whisper", ""));
cubeCards.add(new CardIdentity("Nightscape Familiar", ""));
@ -272,7 +272,9 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Orzhov Guildgate", ""));
cubeCards.add(new CardIdentity("Otherworldly Journey", ""));
cubeCards.add(new CardIdentity("Pacifism", ""));
cubeCards.add(new CardIdentity("Palace Sentinels", ""));
cubeCards.add(new CardIdentity("Path of Anger's Flame", ""));
cubeCards.add(new CardIdentity("Peema Outrider", ""));
cubeCards.add(new CardIdentity("Penumbra Spider", ""));
cubeCards.add(new CardIdentity("Peregrine Drake", ""));
cubeCards.add(new CardIdentity("Perilous Myr", ""));
@ -292,10 +294,10 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Predatory Nightstalker", ""));
cubeCards.add(new CardIdentity("Preordain", ""));
cubeCards.add(new CardIdentity("Prey Upon", ""));
cubeCards.add(new CardIdentity("Prismatic Lens", ""));
cubeCards.add(new CardIdentity("Prismatic Strands", ""));
cubeCards.add(new CardIdentity("Pristine Talisman", ""));
cubeCards.add(new CardIdentity("Probe", ""));
cubeCards.add(new CardIdentity("Propeller Pioneer", ""));
cubeCards.add(new CardIdentity("Prophetic Prism", ""));
cubeCards.add(new CardIdentity("Pulse of Murasa", ""));
cubeCards.add(new CardIdentity("Putrid Leech", ""));
@ -313,9 +315,11 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Razorfin Hunter", ""));
cubeCards.add(new CardIdentity("Reckless Charge", ""));
cubeCards.add(new CardIdentity("Recoil", ""));
cubeCards.add(new CardIdentity("Regicide", ""));
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("Rift Bolt", ""));
cubeCards.add(new CardIdentity("Rishadan Airship", ""));
cubeCards.add(new CardIdentity("Ronin Houndmaster", ""));
@ -338,6 +342,7 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Scuzzback Marauders", ""));
cubeCards.add(new CardIdentity("Searing Blaze", ""));
cubeCards.add(new CardIdentity("Sejiri Steppe", ""));
cubeCards.add(new CardIdentity("Select for Inspection", ""));
cubeCards.add(new CardIdentity("Selesnya Guildgate", ""));
cubeCards.add(new CardIdentity("Sentinel Spider", ""));
cubeCards.add(new CardIdentity("Separatist Voidmage", ""));
@ -357,9 +362,7 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Slash Panther", ""));
cubeCards.add(new CardIdentity("Snakeform", ""));
cubeCards.add(new CardIdentity("Snap", ""));
cubeCards.add(new CardIdentity("Snuff Out", ""));
cubeCards.add(new CardIdentity("Soul Manipulation", ""));
cubeCards.add(new CardIdentity("Spectral Reserves", ""));
cubeCards.add(new CardIdentity("Sphere of the Suns", ""));
cubeCards.add(new CardIdentity("Spined Thopter", ""));
cubeCards.add(new CardIdentity("Splatter Thug", ""));
@ -383,6 +386,7 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Terminate", ""));
cubeCards.add(new CardIdentity("Terramorphic Expanse", ""));
cubeCards.add(new CardIdentity("Test of Faith", ""));
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", ""));
@ -401,7 +405,6 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Typhoid Rats", ""));
cubeCards.add(new CardIdentity("Ulamog's Crusher", ""));
cubeCards.add(new CardIdentity("Ulvenwald Captive", ""));
cubeCards.add(new CardIdentity("Undying Evil", ""));
cubeCards.add(new CardIdentity("Undying Rage", ""));
cubeCards.add(new CardIdentity("Unearth", ""));
cubeCards.add(new CardIdentity("Unmake", ""));
@ -428,7 +431,6 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Werebear", ""));
cubeCards.add(new CardIdentity("Whirlpool Whelm", ""));
cubeCards.add(new CardIdentity("Whitemane Lion", ""));
cubeCards.add(new CardIdentity("Wickerbough Elder", ""));
cubeCards.add(new CardIdentity("Wild Instincts", ""));
cubeCards.add(new CardIdentity("Wild Mongrel", ""));
cubeCards.add(new CardIdentity("Wild Nacatl", ""));
@ -441,7 +443,6 @@ public AdamStyborskisPauperCube() {
cubeCards.add(new CardIdentity("Wretched Gryff", ""));
cubeCards.add(new CardIdentity("Yavimaya Elder", ""));
cubeCards.add(new CardIdentity("Yotian Soldier", ""));
cubeCards.add(new CardIdentity("Zada's Commando", ""));
cubeCards.add(new CardIdentity("Zhur-Taa Swine", ""));
}
}

View file

@ -91,13 +91,13 @@
<tournamentType name="Sealed Swiss (Cube)" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedSwissTournament" typeName="mage.tournament.SealedSwissCubeTournamentType"/>
</tournamentTypes>
<draftCubes>
<draftCube name="Adam Styborski's Pauper Cube (411 cards)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.AdamStyborskisPauperCube"/>
<draftCube name="Ben's Cube (720 cards)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.BensCube"/>
<draftCube name="Adam Styborski's Pauper Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.AdamStyborskisPauperCube"/>
<draftCube name="Ben's Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.BensCube"/>
<draftCube name="Cube Tutor 360 Pauper" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeTutor360Pauper"/>
<draftCube name="Cube Tutor 720" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeTutor720"/>
<draftCube name="Eric Klug's Pro Tour Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.EricKlugsProTourCube"/>
<draftCube name="Guillaume Matignon's Jenny's/Johnny's Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.GuillaumeMatignonsJennysJohnnysCube"/>
<draftCube name="Jim Davis's Cube (469 cards)" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.JimDavisCube"/>
<draftCube name="Jim Davis's Cube" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.JimDavisCube"/>
<draftCube name="Joseph Vasoli's Peasant Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.JosephVasolisPeasantCube"/>
<draftCube name="Mono Blue Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MonoBlueCube"/>
<draftCube name="Timothee Simonot's Twisted Color Pie Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.TimotheeSimonotsTwistedColorPieCube"/>
@ -114,8 +114,8 @@
<draftCube name="MTGO Vintage Cube 2015" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2015"/>
<draftCube name="MTGO Vintage Cube 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2016"/>
<draftCube name="MTGO Vintage Cube June 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeJune2016"/>
<draftCube name="The Peasant's Toolbox (800 cards)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
<draftCube name="www.MTGCube.com (502 cards)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGCube"/>
<draftCube name="The Peasant's Toolbox" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
<draftCube name="www.MTGCube.com" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGCube"/>
<draftCube name="Cube From Deck" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeFromDeck"/>
</draftCubes>
<deckTypes>

View file

@ -88,13 +88,13 @@
<tournamentType name="Sealed Swiss (Cube)" jar="mage-tournament-sealed-${project.version}.jar" className="mage.tournament.SealedSwissTournament" typeName="mage.tournament.SealedSwissCubeTournamentType"/>
</tournamentTypes>
<draftCubes>
<draftCube name="Adam Styborski's Pauper Cube (411 cards)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.AdamStyborskisPauperCube"/>
<draftCube name="Ben's Cube (720 cards)" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.BensCube"/>
<draftCube name="Adam Styborski's Pauper Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.AdamStyborskisPauperCube"/>
<draftCube name="Ben's Cube" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.BensCube"/>
<draftCube name="Cube Tutor 360 Pauper" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.CubeTutor360Pauper"/>
<draftCube name="Cube Tutor 720" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.CubeTutor720"/>
<draftCube name="Eric Klug's Pro Tour Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.EricKlugsProTourCube"/>
<draftCube name="Guillaume Matignon's Jenny's/Johnny's Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.GuillaumeMatignonsJennysJohnnysCube"/>
<draftCube name="Jim Davis's Cube (469 cards)" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.JimDavisCube"/>
<draftCube name="Jim Davis's Cube" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.JimDavisCube"/>
<draftCube name="Joseph Vasoli's Peasant Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.JosephVasolisPeasantCube"/>
<draftCube name="Mono Blue Cube" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MonoBlueCube"/>
<draftCube name="Timothee Simonot's Twisted Color Pie Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.TimotheeSimonotsTwistedColorPieCube"/>
@ -111,8 +111,8 @@
<draftCube name="MTGO Vintage Cube 2015" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCube2015"/>
<draftCube name="MTGO Vintage Cube 2016" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCube2016"/>
<draftCube name="MTGO Vintage Cube June 2016" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCubeJune2016"/>
<draftCube name="The Peasant's Toolbox (800 cards)" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
<draftCube name="www.MTGCube.com (502 cards)" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MTGCube"/>
<draftCube name="The Peasant's Toolbox" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
<draftCube name="www.MTGCube.com" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MTGCube"/>
<draftCube name="Cube From Deck" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.CubeFromDeck"/>
</draftCubes>
<deckTypes>

View file

@ -29,6 +29,7 @@ package mage.server;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Locale;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
@ -45,6 +46,7 @@ import org.apache.log4j.Logger;
public class ChatManager {
private static final Logger logger = Logger.getLogger(ChatManager.class);
private static HashMap<String, String> userMessages = new HashMap<>();
private static final ChatManager INSTANCE = new ChatManager();
@ -103,8 +105,13 @@ public class ChatManager {
public void broadcast(UUID chatId, String userName, String message, MessageColor color, boolean withTime, MessageType messageType) {
this.broadcast(chatId, userName, message, color, withTime, messageType, null);
}
static String lastMessage = "";
private boolean containsSwearing(String message) {
if (message != null && message.toLowerCase().matches("^.*(anal|asshole|balls|bastard|bitch|blowjob|cock|crap|cunt|cum|damn|dick|dildo|douche|fag|fuck|idiot|moron|piss|prick|pussy|rape|rapist|sex|screw|shit|slut|vagina).*$")) {
return true;
}
return false;
}
public void broadcast(UUID chatId, String userName, String message, MessageColor color, boolean withTime, MessageType messageType, SoundToPlay soundToPlay) {
ChatSession chatSession = chatSessions.get(chatId);
@ -120,10 +127,18 @@ public class ChatManager {
}
if (!messageType.equals(MessageType.GAME)) {
if (message.equals(lastMessage)) {
// prevent identical messages
return;
if (message != null && userName != null && !userName.equals("")) {
if (message.equals(userMessages.get(userName))) {
// prevent identical messages
return;
}
userMessages.put(userName, message);
if (containsSwearing(message)) {
return;
}
}
if (messageType.equals(MessageType.TALK)) {
User user = UserManager.getInstance().getUserByName(userName);
if (user != null) {
@ -139,7 +154,6 @@ public class ChatManager {
}
}
lastMessage = message;
chatSession.broadcast(userName, message, color, withTime, messageType, soundToPlay);
}
}

View file

@ -185,9 +185,15 @@ public class Session {
AuthorizedUser authorizedUser = null;
if (ConfigSettings.getInstance().isAuthenticationActivated()) {
authorizedUser = AuthorizedUserRepository.instance.getByName(userName);
if (authorizedUser == null || !authorizedUser.doCredentialsMatch(userName, password)) {
return "Wrong username or password. In case you haven't, please register your account first.";
String errorMsg = "Wrong username or password. In case you haven't, please register your account first.";
if (authorizedUser == null) {
return errorMsg;
}
if (!Main.isTestMode() && !authorizedUser.doCredentialsMatch(userName, password)) {
return errorMsg;
}
if (!authorizedUser.active) {
return "Your profile is deactivated, you can't sign on.";
}

View file

@ -297,6 +297,19 @@ public class TableController {
user.showUserMessage("Join Table", message);
return false;
}
// Check power level for table (currently only used for EDH/Commander table)
int edhPowerLevel = table.getMatch().getOptions().getEdhPowerLevel();
if (edhPowerLevel > 0 && table.getValidator().getName().toLowerCase().equals("commander")) {
int deckEdhPowerLevel = table.getValidator().getEdhPowerLevel(deck);
if (deckEdhPowerLevel > edhPowerLevel) {
String message = new StringBuilder("Your deck appears to be too powerful for this table.\n\nReduce the number of extra turn cards, infect, counters, fogs, reconsider your commander. ")
.append("\nThe table requirement has a maximum power level of ").append(edhPowerLevel).append (" whilst your deck has a calculated power level of ")
.append(deckEdhPowerLevel).toString();
user.showUserMessage("Join Table", message);
return false;
}
}
Player player = createPlayer(name, seat.getPlayerType(), skill);
if (player == null) {

View file

@ -0,0 +1,96 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.costs.Cost;
import mage.abilities.costs.CostImpl;
import mage.abilities.keyword.CumulativeUpkeepAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.counters.CounterType;
import mage.game.Game;
import mage.game.permanent.Permanent;
/**
*
* @author Styxo
*/
public class Aboroth extends CardImpl {
public Aboroth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
this.subtype.add("Elemental");
this.power = new MageInt(9);
this.toughness = new MageInt(9);
// Cumulative upkeep-Put a -1/-1 counter on Aboroth.
this.addAbility(new CumulativeUpkeepAbility(new AborothCost()));
}
public Aboroth(final Aboroth card) {
super(card);
}
@Override
public Aboroth copy() {
return new Aboroth(this);
}
}
class AborothCost extends CostImpl {
public AborothCost() {
this.text = "Put a -1/-1 counter on Aboroth";
}
@Override
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
Permanent permanent = game.getPermanent(sourceId);
if (permanent != null) {
permanent.addCounters(CounterType.M1M1.createInstance(), game);
this.paid = true;
return true;
}
return false;
}
@Override
public boolean canPay(Ability ability, UUID sourceId, UUID controllerId, Game game) {
return true;
}
@Override
public AborothCost copy() {
return new AborothCost();
}
}

View file

@ -0,0 +1,75 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.SkipNextPlayerUntapStepEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
/**
*
* @author Styxo
*/
public class Avizoa extends CardImpl {
public Avizoa(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
this.subtype.add("Jellyfish");
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// Flying
this.addAbility(FlyingAbility.getInstance());
// {0}: Avizoa gets +2/+2 until end of turn. You skip your next untap step. Activate this ability only once each turn.
Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{0}"));
ability.addEffect(new SkipNextPlayerUntapStepEffect());
this.addAbility(ability);
}
public Avizoa(final Avizoa card) {
super(card);
}
@Override
public Avizoa copy() {
return new Avizoa(this);
}
}

View file

@ -0,0 +1,90 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.b;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.keyword.HauntAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.game.Game;
/**
*
* @author Styxo
*/
public class BenedictionOfMoons extends CardImpl {
public BenedictionOfMoons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{W}");
// You gain 1 life for each player.
this.getSpellAbility().addEffect(new GainLifeEffect(new PlayerCount()));
// Haunt
// When the creature Benediction of Moons haunts dies, you gain 1 life for each player.
this.addAbility(new HauntAbility(this, new GainLifeEffect(new PlayerCount())));
}
public BenedictionOfMoons(final BenedictionOfMoons card) {
super(card);
}
@Override
public BenedictionOfMoons copy() {
return new BenedictionOfMoons(this);
}
}
class PlayerCount implements DynamicValue {
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
return game.getNumPlayers();
}
@Override
public PlayerCount copy() {
return new PlayerCount();
}
@Override
public String toString() {
return "X";
}
@Override
public String getMessage() {
return "player";
}
}

View file

@ -0,0 +1,127 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.c;
import java.util.UUID;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
/**
*
* @author Pete Rossi
*/
public class CetaSanctuary extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a red or green permanent");
static {
filter.add(Predicates.or(new ColorPredicate(ObjectColor.RED), new ColorPredicate(ObjectColor.GREEN)));
}
public CetaSanctuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
// At the beginning of your upkeep, if you control a red or green permanent, draw a card, then discard a card. If you control a red permanent and a green permanent, instead draw two cards, then discard a card.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new CetaSanctuaryEffect(), TargetController.YOU, true);
this.addAbility(new ConditionalTriggeredAbility(ability, new PermanentsOnTheBattlefieldCondition(filter),
"At the beginning of your upkeep, if you control a red or green permanent, draw a card, then discard a card. If you control a red permanent and a green permanent, instead draw two cards, then discard a card."));
}
public CetaSanctuary(final CetaSanctuary card) {
super(card);
}
@Override
public CetaSanctuary copy() {
return new CetaSanctuary(this);
}
}
class CetaSanctuaryEffect extends OneShotEffect {
public CetaSanctuaryEffect() {
super(Outcome.DrawCard);
}
public CetaSanctuaryEffect(final CetaSanctuaryEffect effect) {
super(effect);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
int red = 0;
int green = 0;
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(controller.getId())) {
ObjectColor color = permanent.getColor(game);
if (color.isRed()) {
red = 1;
}
if (color.isGreen()) {
green = 1;
}
if (red == 1 && green == 1) {
break;
}
}
if (red != 0 || green != 0) {
controller.drawCards((red + green), game);
controller.discard(1, false, source, game);
return true;
}
}
return false;
}
@Override
public CetaSanctuaryEffect copy() {
return new CetaSanctuaryEffect(this);
}
}

View file

@ -0,0 +1,95 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.c;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SpellCastOpponentTriggeredAbility;
import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.counters.Counter;
import mage.counters.CounterType;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.game.permanent.token.Token;
/**
*
* @author Pete Rossi
*/
public class ChimericEgg extends CardImpl {
private final static FilterSpell nonArtifactFilter = new FilterSpell("a nonartifact spell");
static {
nonArtifactFilter.add(Predicates.not(new CardTypePredicate(CardType.ARTIFACT)));
}
public ChimericEgg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
// Whenever an opponent casts a nonartifact spell, put a charge counter on Chimeric Egg.
this.addAbility(new SpellCastOpponentTriggeredAbility(new AddCountersSourceEffect(CounterType.CHARGE.createInstance()), nonArtifactFilter, false));
// Remove three charge counters from Chimeric Egg: Chimeric Egg becomes a 6/6 Construct artifact creature with trample until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect
(new ChimericEggToken(), "", Duration.EndOfTurn), new RemoveCountersSourceCost(new Counter(CounterType.CHARGE.getName(), 3))));
}
public ChimericEgg(final ChimericEgg card) {
super(card);
}
@Override
public ChimericEgg copy() {
return new ChimericEgg(this);
}
private class ChimericEggToken extends Token {
ChimericEggToken() {
super("", "6/6 Construct artifact creature with trample");
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
this.subtype.add("Construct");
power = new MageInt(6);
toughness = new MageInt(6);
this.addAbility(TrampleAbility.getInstance());
}
}
}

View file

@ -28,7 +28,6 @@
package mage.cards.c;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCosts;
@ -49,7 +48,7 @@ import mage.game.events.GameEvent;
public class CollectiveRestraint extends CardImpl {
public CollectiveRestraint(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
// Domain - Creatures can't attack you unless their controller pays {X} for each creature he or she controls that's attacking you, where X is the number of basic land types you control.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CollectiveRestraintPayManaToAttackAllEffect()));
@ -69,7 +68,7 @@ public class CollectiveRestraint extends CardImpl {
class CollectiveRestraintPayManaToAttackAllEffect extends CantAttackYouUnlessPayManaAllEffect {
CollectiveRestraintPayManaToAttackAllEffect() {
super(null, true);
super(null, false);
staticText = "Creatures can't attack you unless their controller pays {X} for each creature he or she controls that's attacking you, where X is the number of basic land types you control.";
}

View file

@ -0,0 +1,137 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.c;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.keyword.ProtectionAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.choices.ChoiceColor;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.game.Game;
import mage.players.Player;
/**
*
* @author Styxo
*/
public class CouncilGuardian extends CardImpl {
public CouncilGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}");
this.subtype.add("Giant");
this.subtype.add("Soldier");
this.power = new MageInt(5);
this.toughness = new MageInt(5);
// Will of the council - When Council Guardian enters the battlefield, starting with you, each player votes for blue, black, red, or green. Council Guardian gains protection from each color with the most votes or tied for most votes.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CouncilsGuardianEffect(), false, "<i>Will of the council</i> — "));
}
public CouncilGuardian(final CouncilGuardian card) {
super(card);
}
@Override
public CouncilGuardian copy() {
return new CouncilGuardian(this);
}
}
class CouncilsGuardianEffect extends OneShotEffect {
public CouncilsGuardianEffect() {
super(Outcome.Exile);
this.staticText = "starting with you, each player votes for blue, black, red, or green. {this} gains protection from each color with the most votes or tied for most votes";
}
public CouncilsGuardianEffect(final CouncilsGuardianEffect effect) {
super(effect);
}
@Override
public CouncilsGuardianEffect copy() {
return new CouncilsGuardianEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
ChoiceColor choice = new ChoiceColor();
choice.getChoices().remove("White");
if (controller != null) {
Map<ObjectColor, Integer> chosenColors = new HashMap<>(2);
int maxCount = 0;
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
choice.clearChoice();
if (player.choose(outcome, choice, game)) {
ObjectColor color = choice.getColor();
if (color != null) {
if (chosenColors.containsKey(color)) {
int count = chosenColors.get(color) + 1;
if (count > maxCount) {
maxCount = count;
}
chosenColors.put(color, count);
} else {
if (maxCount == 0) {
maxCount = 1;
}
chosenColors.put(color, 1);
}
game.informPlayers(player.getLogName() + " has chosen " + color.getDescription() + ".");
}
}
}
}
for (Map.Entry<ObjectColor, Integer> entry : chosenColors.entrySet()) {
if (entry.getValue() == maxCount) {
ObjectColor color = entry.getKey();
game.addEffect(new GainAbilitySourceEffect(ProtectionAbility.from(color), Duration.Custom), source);
}
}
return true;
}
return false;
}
}

View file

@ -28,18 +28,13 @@
package mage.cards.c;
import java.util.UUID;
import mage.Mana;
import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.AddManaOfAnyColorEffect;
import mage.abilities.effects.common.ManaEffect;
import mage.abilities.mana.ColorlessManaAbility;
import mage.abilities.mana.TriggeredManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
/**
*
@ -54,7 +49,7 @@ public class CrumblingVestige extends CardImpl {
this.addAbility(new EntersBattlefieldTappedAbility());
// When Crumbling Vestige enters the battlefield, add one mana of any color to your mana pool.
this.addAbility(new CrumblingVestigeTriggeredManaAbility(new AddManaOfAnyColorEffect()));
this.addAbility(new EntersBattlefieldTriggeredAbility(new AddManaOfAnyColorEffect(), false));
// {T}: Add {C} to you mana pool.
this.addAbility(new ColorlessManaAbility());
@ -69,35 +64,3 @@ public class CrumblingVestige extends CardImpl {
return new CrumblingVestige(this);
}
}
class CrumblingVestigeTriggeredManaAbility extends TriggeredManaAbility {
public CrumblingVestigeTriggeredManaAbility(ManaEffect effect) {
super(Zone.ALL, effect, false);
this.netMana.add(new Mana(0, 0, 0, 0, 0, 0, 1, 0));
}
public CrumblingVestigeTriggeredManaAbility(final CrumblingVestigeTriggeredManaAbility ability) {
super(ability);
}
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
return event.getTargetId().equals(getSourceId());
}
@Override
public String getRule() {
return "When {this} enters the battlefield, " + super.getRule();
}
@Override
public CrumblingVestigeTriggeredManaAbility copy() {
return new CrumblingVestigeTriggeredManaAbility(this);
}
}

View file

@ -0,0 +1,72 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.d;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.PreventAllDamageToSourceEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
/**
*
* @author spjspj
*/
public class DawnElemental extends CardImpl {
public DawnElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{W}{W}{W}");
this.subtype.add("Elemental");
this.power = new MageInt(3);
this.toughness = new MageInt(3);
// Flying
this.addAbility(FlyingAbility.getInstance());
// Prevent all damage that would be dealt to Dawn Elemental.
Effect effect = new PreventAllDamageToSourceEffect(Duration.WhileOnBattlefield);
effect.setText("Prevent all damage that would be dealt to {this}");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
}
public DawnElemental(final DawnElemental card) {
super(card);
}
@Override
public DawnElemental copy() {
return new DawnElemental(this);
}
}

View file

@ -51,14 +51,14 @@ import mage.target.common.TargetCreaturePermanent;
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
public class DeclarationInStone extends CardImpl {
public DeclarationInStone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
// Exile target creature and all other creatures its controller controls with the same name as that creature.
// That player investigates for each nontoken creature exiled this way.
this.getSpellAbility().addEffect(new DeclarationInStoneEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}
public DeclarationInStone(final DeclarationInStone card) {
@ -72,7 +72,7 @@ public class DeclarationInStone extends CardImpl {
}
class DeclarationInStoneEffect extends OneShotEffect {
private static final FilterCreaturePermanent creaturesOnly = new FilterCreaturePermanent();
private static final FilterCreaturePermanent nonTokenFilter = new FilterCreaturePermanent("nontoken creature");
static{
@ -106,20 +106,20 @@ class DeclarationInStoneEffect extends OneShotEffect {
String name = targetPermanent.getName();
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(controllerPermanentId)) {
if (permanent != null && permanent.getName().equals(name)) {
// only exile creatures (reported bug on awakened lands targetted exiling all other lands of same name)
if (creaturesOnly.match(permanent, game)) {
you.moveCardToExileWithInfo(permanent, exileId, sourceObject.getIdName(), source.getSourceId(), game, Zone.BATTLEFIELD, true);
you.moveCardToExileWithInfo(permanent, null, "", source.getSourceId(), game, Zone.BATTLEFIELD, true);
}
// exiled count only matters for non-tokens
if (nonTokenFilter.match(permanent, game)) {
if (nonTokenFilter.match(permanent, game)) {
exiledCount++;
}
}
}
}
if (exiledCount > 0) {
Token token = new ClueArtifactToken();
token.putOntoBattlefield(exiledCount, game, source.getSourceId(), controllerPermanentId, false, false);

View file

@ -27,6 +27,7 @@
*/
package mage.cards.d;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.GenericManaCost;
@ -41,8 +42,6 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import java.util.UUID;
/**
*
* @author jeffwadsworth
@ -50,12 +49,9 @@ import java.util.UUID;
public class DemonspineWhip extends CardImpl {
public DemonspineWhip(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{B}{R}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{B}{R}");
this.subtype.add("Equipment");
// {X}: Equipped creature gets +X/+0 until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(new XPaid(), new StaticValue(0), Duration.EndOfTurn), new ManaCostsImpl("{X}")));
@ -88,7 +84,7 @@ class XPaid implements DynamicValue {
@Override
public String getMessage() {
return "X paid";
return "";
}
@Override

View file

@ -28,6 +28,7 @@
package mage.cards.d;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
@ -99,7 +100,7 @@ class DivergentTransformationsEffect extends OneShotEffect {
MageObject sourceObject = source.getSourceObject(game);
if (controller != null && sourceObject != null) {
List<UUID> controllerList = new ArrayList<>();
Cards toExile = new CardsImpl();
Set<Card> toExile = new HashSet<>();
for (UUID targetId : getTargetPointer().getTargets(game, source)) {
Permanent permanent = game.getPermanent(targetId);
if (permanent != null) {

View file

@ -40,7 +40,6 @@ import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.game.stack.StackObject;
/**
*
@ -91,8 +90,7 @@ class DoublingSeasonTokenEffect extends ReplacementEffectImpl {
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
StackObject stackObject = game.getStack().getStackObject(event.getSourceId());
return stackObject != null && event.getPlayerId().equals(source.getControllerId());
return event.getPlayerId().equals(source.getControllerId());
}
@Override

View file

@ -0,0 +1,214 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.e;
import java.util.HashMap;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.SupertypePredicate;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.target.targetpointer.FixedTarget;
/**
*
* @author spjspj
*/
public class EyeOfSingularity extends CardImpl {
public EyeOfSingularity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
this.supertype.add("World");
// When Eye of Singularity enters the battlefield, destroy each permanent with the same name as another permanent, except for basic lands. They can't be regenerated.
this.addAbility(new EntersBattlefieldTriggeredAbility(new EyeOfSingularityETBEffect()));
// Whenever a permanent other than a basic land enters the battlefield, destroy all other permanents with that name. They can't be regenerated.
this.addAbility(new EyeOfSingularityTriggeredAbility());
}
public EyeOfSingularity(final EyeOfSingularity card) {
super(card);
}
@Override
public EyeOfSingularity copy() {
return new EyeOfSingularity(this);
}
}
class EyeOfSingularityETBEffect extends OneShotEffect {
private static final FilterPermanent filter = new FilterPermanent();
static {
filter.add(Predicates.not(new SupertypePredicate("Basic")));
}
EyeOfSingularityETBEffect() {
super(Outcome.Benefit);
this.staticText = "destroy each permanent with the same name as another permanent, except for basic lands. They can't be regenerated";
}
EyeOfSingularityETBEffect(final EyeOfSingularityETBEffect effect) {
super(effect);
}
@Override
public EyeOfSingularityETBEffect copy() {
return new EyeOfSingularityETBEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
HashMap<String, UUID> cardNames = new HashMap<String, UUID>();
HashMap<UUID, Integer> toDestroy = new HashMap<>();
for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) {
String cardName = permanent.getName();
if (cardNames.get(cardName) == null) {
cardNames.put(cardName, permanent.getId());
} else {
toDestroy.put(cardNames.get(cardName), 1);
toDestroy.put(permanent.getId(), 1);
}
}
for (UUID id : toDestroy.keySet()) {
Permanent permanent = game.getPermanent(id);
if (permanent != null) {
permanent.destroy(source.getSourceId(), game, false);
}
}
return true;
}
}
class EyeOfSingularityTriggeredAbility extends TriggeredAbilityImpl {
EyeOfSingularityTriggeredAbility() {
super(Zone.BATTLEFIELD, new EyeOfSingularityTriggeredEffect(), false);
}
EyeOfSingularityTriggeredAbility(final EyeOfSingularityTriggeredAbility ability) {
super(ability);
}
@Override
public EyeOfSingularityTriggeredAbility copy() {
return new EyeOfSingularityTriggeredAbility(this);
}
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == EventType.ENTERS_THE_BATTLEFIELD;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
UUID targetId = event.getTargetId();
Permanent permanent = game.getPermanent(targetId);
if (event.getTargetId().equals(this.getSourceId())) {
return false;
}
if (permanent != null && !permanent.getSupertype().contains("Basic")) {
getEffects().get(0).setTargetPointer(new FixedTarget(event.getTargetId()));
return true;
}
return false;
}
@Override
public String getRule() {
return "Whenever a permanent other than a basic land enters the battlefield, destroy all other permanents with that name. They can't be regenerated.";
}
}
class EyeOfSingularityTriggeredEffect extends OneShotEffect {
private static final FilterPermanent filter = new FilterPermanent();
static {
filter.add(Predicates.not(new SupertypePredicate("Basic")));
}
EyeOfSingularityTriggeredEffect() {
super(Outcome.DestroyPermanent);
}
EyeOfSingularityTriggeredEffect(final EyeOfSingularityTriggeredEffect effect) {
super(effect);
}
@Override
public boolean apply(Game game, Ability source) {
HashMap<UUID, Integer> toDestroy = new HashMap<>();
Permanent etbPermanent = game.getPermanent(getTargetPointer().getFirst(game, source));
UUID targetId = source.getEffects().get(0).getTargetPointer().getFirst(game, source);
if (etbPermanent == null) {
return false;
}
String cn = etbPermanent.getName();
for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) {
String cardName = permanent.getName();
if (cardName.equals(cn) && permanent.getId() != etbPermanent.getId()) {
toDestroy.put(permanent.getId(), 1);
}
}
for (UUID id : toDestroy.keySet()) {
Permanent permanent = game.getPermanent(id);
if (permanent != null) {
permanent.destroy(source.getSourceId(), game, false);
}
}
return true;
}
@Override
public EyeOfSingularityTriggeredEffect copy() {
return new EyeOfSingularityTriggeredEffect(this);
}
}

View file

@ -0,0 +1,134 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.AttackingCondition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BecomesBasicLandTargetEffect;
import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.game.Game;
import mage.game.combat.CombatGroup;
import mage.game.permanent.Permanent;
import mage.target.common.TargetLandPermanent;
/**
*
* @author anonymous
*/
public class GaeasLiege extends CardImpl {
final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
static {
filterLands.add(new SubtypePredicate("Forest"));
}
public GaeasLiege(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}{G}");
this.subtype.add("Avatar");
this.power = new MageInt(0);
this.toughness = new MageInt(0);
// As long as Gaea's Liege isn't attacking, its power and toughness are each equal to the number of Forests you control. As long as Gaea's Liege is attacking, its power and toughness are each equal to the number of Forests defending player controls.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new ConditionalContinuousEffect(
new SetPowerToughnessSourceEffect(new DefendersForestCount(), Duration.EndOfCombat),
new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filterLands), Duration.EndOfGame),
AttackingCondition.getInstance(),
"As long as {this} isn't attacking, its power and toughness are each equal to the number of Forests you control. As long as {this} is attacking, its power and toughness are each equal to the number of Forests defending player controls.")));
// {tap}: Target land becomes a Forest until Gaea's Liege leaves the battlefield.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesBasicLandTargetEffect(Duration.WhileOnBattlefield, "Forest"), new TapSourceCost());
ability.addTarget(new TargetLandPermanent());
this.addAbility(ability);
}
public GaeasLiege(final GaeasLiege card) {
super(card);
}
@Override
public GaeasLiege copy() {
return new GaeasLiege(this);
}
}
class DefendersForestCount implements DynamicValue {
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
for (CombatGroup group :game.getCombat().getGroups()) {
if (group.getAttackers().contains(sourceAbility.getSourceId())) {
UUID defenderId = group.getDefenderId();
if (group.isDefenderIsPlaneswalker()) {
Permanent permanent = game.getPermanent(defenderId);
if (permanent != null) {
defenderId = permanent.getControllerId();
}
}
FilterLandPermanent filter = new FilterLandPermanent("forest");
filter.add(new SubtypePredicate("Forest"));
return game.getBattlefield().countAll(filter, defenderId, game);
}
}
return 0;
}
@Override
public DynamicValue copy() {
return new DefendersForestCount();
}
@Override
public String toString() {
return "X";
}
@Override
public String getMessage() {
return "the number of Forests defending player controls";
}
}

View file

@ -30,18 +30,28 @@ package mage.cards.g;
import java.util.UUID;
import mage.Mana;
import mage.abilities.Ability;
import mage.abilities.common.GemstoneCavernsAbility;
import mage.abilities.OpeningHandAction;
import mage.abilities.StaticAbility;
import mage.abilities.condition.common.SourceHasCounterCondition;
import mage.abilities.costs.Cost;
import mage.abilities.costs.common.ExileFromHandCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.decorator.ConditionalManaEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.AddManaOfAnyColorEffect;
import mage.abilities.effects.common.BasicManaEffect;
import mage.abilities.mana.ConditionalManaAbility;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetCardInHand;
/**
*
@ -50,20 +60,20 @@ import mage.counters.CounterType;
public class GemstoneCaverns extends CardImpl {
public GemstoneCaverns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
this.supertype.add("Legendary");
// If Gemstone Caverns is in your opening hand and you're not playing first, you may begin the game with Gemstone Caverns on the battlefield with a luck counter on it. If you do, exile a card from your hand.
this.addAbility(new GemstoneCavernsAbility());
// {tap}: Add {C} to your mana pool. If Gemstone Caverns has a luck counter on it, instead add one mana of any color to your mana pool.
Ability ability = new ConditionalManaAbility(Zone.BATTLEFIELD,
new ConditionalManaEffect(
new AddManaOfAnyColorEffect(),
new BasicManaEffect(Mana.ColorlessMana(1)),
new SourceHasCounterCondition(CounterType.LUCK),
"Add {C} to your mana pool. If {this} has a luck counter on it, instead add one mana of any color to your mana pool."),
new TapSourceCost());
new AddManaOfAnyColorEffect(),
new BasicManaEffect(Mana.ColorlessMana(1)),
new SourceHasCounterCondition(CounterType.LUCK),
"Add {C} to your mana pool. If {this} has a luck counter on it, instead add one mana of any color to your mana pool."),
new TapSourceCost());
this.addAbility(ability);
}
@ -76,3 +86,78 @@ public class GemstoneCaverns extends CardImpl {
return new GemstoneCaverns(this);
}
}
class GemstoneCavernsAbility extends StaticAbility implements OpeningHandAction {
public GemstoneCavernsAbility() {
super(Zone.HAND, new GemstoneCavernsEffect());
}
public GemstoneCavernsAbility(final GemstoneCavernsAbility ability) {
super(ability);
}
@Override
public GemstoneCavernsAbility copy() {
return new GemstoneCavernsAbility(this);
}
@Override
public String getRule() {
return "If {this} is in your opening hand and you're not playing first, you may begin the game with {this} on the battlefield with a luck counter on it. If you do, exile a card from your hand.";
}
@Override
public boolean askUseOpeningHandAction(Card card, Player player, Game game) {
return player.chooseUse(Outcome.PutCardInPlay, "Do you wish to put " + card.getIdName() + " into play?", this, game);
}
@Override
public boolean isOpeningHandActionAllowed(Card card, Player player, Game game) {
return !player.getId().equals(game.getStartingPlayerId());
}
@Override
public void doOpeningHandAction(Card card, Player player, Game game) {
this.resolve(game);
}
}
class GemstoneCavernsEffect extends OneShotEffect {
GemstoneCavernsEffect() {
super(Outcome.PutCardInPlay);
this.staticText = "you may begin the game with {this} on the battlefield with a luck counter on it. If you do, exile a card from your hand";
}
GemstoneCavernsEffect(final GemstoneCavernsEffect effect) {
super(effect);
}
@Override
public GemstoneCavernsEffect copy() {
return new GemstoneCavernsEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player != null) {
Card card = game.getCard(source.getSourceId());
if (card != null) {
if (card.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), source.getControllerId())) {
Permanent permanent = game.getPermanent(card.getId());
if (permanent != null) {
permanent.addCounters(CounterType.LUCK.createInstance(), game);
Cost cost = new ExileFromHandCost(new TargetCardInHand());
if (cost.canPay(source, source.getSourceId(), source.getControllerId(), game)) {
cost.pay(source, game, source.getSourceId(), source.getControllerId(), true, null);
}
}
}
}
}
return false;
}
}

View file

@ -55,7 +55,7 @@ import mage.target.targetpointer.FixedTarget;
public class GiftOfImmortality extends CardImpl {
public GiftOfImmortality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
this.subtype.add("Aura");
// Enchant creature
@ -99,25 +99,27 @@ class GiftOfImmortalityEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Permanent enchantment = (Permanent) game.getLastKnownInformation(source.getSourceId(), Zone.BATTLEFIELD);
if (enchantment != null && enchantment.getAttachedTo() != null) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null && enchantment != null && enchantment.getAttachedTo() != null) {
Permanent enchanted = (Permanent) game.getLastKnownInformation(enchantment.getAttachedTo(), Zone.BATTLEFIELD);
Card card = game.getCard(enchantment.getAttachedTo());
if (card != null) {
Zone currentZone = game.getState().getZone(card.getId());
if (card.putOntoBattlefield(game, currentZone, source.getSourceId(), card.getOwnerId())) {
Permanent permanent = game.getPermanent(card.getId());
if (permanent != null) {
//create delayed triggered ability
Effect effect = new GiftOfImmortalityReturnEnchantmentEffect();
effect.setTargetPointer(new FixedTarget(permanent, game));
game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect), source);
}
if (card != null && enchanted != null && card.getZoneChangeCounter(game) == enchanted.getZoneChangeCounter(game) + 1) {
controller.moveCards(card, Zone.BATTLEFIELD, source, game, false, false, true, null);
Permanent permanent = game.getPermanent(card.getId());
if (permanent != null) {
//create delayed triggered ability
Effect effect = new GiftOfImmortalityReturnEnchantmentEffect();
effect.setTargetPointer(new FixedTarget(permanent, game));
game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect), source);
}
return true;
}
return true;
}
return false;
}
}
class GiftOfImmortalityReturnEnchantmentEffect extends OneShotEffect {

View file

@ -50,8 +50,8 @@ import mage.target.common.TargetControlledCreaturePermanent;
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
public class GravespawnSovereign extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Vampires you control");
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Zombies you control");
static {
filter.add(new SubtypePredicate("Zombie"));
@ -59,7 +59,7 @@ public class GravespawnSovereign extends CardImpl {
}
public GravespawnSovereign(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
this.subtype.add("Zombie");
this.power = new MageInt(3);
this.toughness = new MageInt(3);
@ -68,7 +68,7 @@ public class GravespawnSovereign extends CardImpl {
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), new TapTargetCost(new TargetControlledCreaturePermanent(5, 5, filter, true)));
ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard")));
this.addAbility(ability);
}
public GravespawnSovereign(final GravespawnSovereign card) {

View file

@ -55,7 +55,7 @@ import mage.util.RandomUtil;
public class GripOfChaos extends CardImpl {
public GripOfChaos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R}{R}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{R}{R}");
// Whenever a spell or ability is put onto the stack, if it has a single target, reselect its target at random.
this.addAbility(new GripOfChaosTriggeredAbility());
@ -152,7 +152,7 @@ class GripOfChaosEffect extends OneShotEffect {
Mode mode = stackObject.getStackAbility().getModes().get(modeId);
for (Target target : mode.getTargets()) {
UUID oldTargetId = target.getFirstTarget();
Set<UUID> possibleTargets = target.possibleTargets(source.getSourceId(), source.getControllerId(), game);
Set<UUID> possibleTargets = target.possibleTargets(stackObject.getSourceId(), stackObject.getControllerId(), game);
if (possibleTargets.size() > 0) {
int i = 0;
int rnd = RandomUtil.nextInt(possibleTargets.size());

View file

@ -36,18 +36,18 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetControlledPermanent;
/**
* @author Loki
*/
public class HeritageDruid extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Elves you control");
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Elves you control");
static {
filter.add(Predicates.not(new TappedPredicate()));
@ -63,7 +63,7 @@ public class HeritageDruid extends CardImpl {
this.toughness = new MageInt(1);
// Tap three untapped Elves you control: Add {G}{G}{G} to your mana pool.
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, Mana.GreenMana(3), new TapTargetCost(new TargetControlledCreaturePermanent(3, 3, filter, true))));
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, Mana.GreenMana(3), new TapTargetCost(new TargetControlledPermanent(3, 3, filter, true))));
}
public HeritageDruid(final HeritageDruid card) {

View file

@ -0,0 +1,106 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.h;
import java.util.UUID;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.SpellAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.CostModificationEffectImpl;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.CostModificationType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.common.FilterArtifactPermanent;
import mage.game.Game;
import mage.util.CardUtil;
/**
*
* @author Pete Rossi
*/
public class HumOfTheRadix extends CardImpl {
public HumOfTheRadix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}");
// Each artifact spell costs {1} more to cast for each artifact its controller controls.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new HumOfTheRadixCostIncreaseEffect()));
}
public HumOfTheRadix(final HumOfTheRadix card) {
super(card);
}
@Override
public HumOfTheRadix copy() {
return new HumOfTheRadix(this);
}
}
class HumOfTheRadixCostIncreaseEffect extends CostModificationEffectImpl {
HumOfTheRadixCostIncreaseEffect() {
super(Duration.WhileOnBattlefield, Outcome.Detriment, CostModificationType.INCREASE_COST);
staticText = "each artifact spell costs {1} more to cast for each artifact its controller controls";
}
HumOfTheRadixCostIncreaseEffect(final HumOfTheRadixCostIncreaseEffect effect) {
super(effect);
}
@Override
public boolean apply(Game game, Ability source, Ability abilityToModify) {
int additionalCost = game.getBattlefield().getAllActivePermanents(new FilterArtifactPermanent(), abilityToModify.getControllerId(), game).size();
if (additionalCost > 0) {
CardUtil.increaseCost(abilityToModify, additionalCost);
}
return true;
}
@Override
public boolean applies(Ability abilityToModify, Ability source, Game game) {
if (abilityToModify instanceof SpellAbility) {
MageObject sourceObject = abilityToModify.getSourceObject(game);
if (sourceObject != null && sourceObject.getCardType().contains(CardType.ARTIFACT)) {
return true;
}
}
return false;
}
@Override
public HumOfTheRadixCostIncreaseEffect copy() {
return new HumOfTheRadixCostIncreaseEffect(this);
}
}

View file

@ -0,0 +1,74 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.i;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.permanent.TokenPredicate;
import mage.target.common.TargetControlledPermanent;
/**
*
* @author Styxo
*/
public class InfernalTribute extends CardImpl {
private final static FilterControlledPermanent filter = new FilterControlledPermanent("a nontoken permanent");
static {
filter.add(Predicates.not(new TokenPredicate()));
}
public InfernalTribute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}{B}{B}");
// {2}, Sacrifice a nontoken permanent: Draw a card.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(2));
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
this.addAbility(ability);
}
public InfernalTribute(final InfernalTribute card) {
super(card);
}
@Override
public InfernalTribute copy() {
return new InfernalTribute(this);
}
}

View file

@ -0,0 +1,77 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.j;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.condition.common.IsPhaseCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalActivatedAbility;
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.TurnPhase;
import mage.constants.Zone;
import mage.game.permanent.token.Token;
/**
*
* @author anonymous
*/
public class JadeStatue extends CardImpl {
public JadeStatue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
// {2}: Jade Statue becomes a 3/6 Golem artifact creature until end of combat. Activate this ability only during combat.
this.addAbility(new ConditionalActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect (new JadeStatueToken(), "", Duration.EndOfCombat), new ManaCostsImpl("{2}"), new IsPhaseCondition(TurnPhase.COMBAT), "{this} becomes a 3/6 Golem artifact creature until end of combat. Activate this ability only during combat."));
}
public JadeStatue(final JadeStatue card) {
super(card);
}
@Override
public JadeStatue copy() {
return new JadeStatue(this);
}
private class JadeStatueToken extends Token {
JadeStatueToken() {
super("", "3/6 Golem artifact creature");
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
this.subtype.add("Golem");
power = new MageInt(3);
toughness = new MageInt(6);
}
}
}

View file

@ -0,0 +1,148 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.j;
import java.util.HashSet;
import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.ProtectionAbility;
import mage.abilities.keyword.ShadowAbility;
import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.choices.Choice;
import mage.choices.ChoiceImpl;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Layer;
import mage.constants.Outcome;
import mage.constants.SubLayer;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
/**
*
* @author Styxo
*/
public class JodahsAvenger extends CardImpl {
public JodahsAvenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}");
this.subtype.add("Shapeshifter");
this.power = new MageInt(4);
this.toughness = new MageInt(4);
// {0}: Until end of turn, Jodah's Avenger gets -1/-1 and gains your choice of double strike, protection from red, vigilance, or shadow.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new JodahsAvengerEffect(), new ManaCostsImpl("{0}")));
}
public JodahsAvenger(final JodahsAvenger card) {
super(card);
}
@Override
public JodahsAvenger copy() {
return new JodahsAvenger(this);
}
}
class JodahsAvengerEffect extends ContinuousEffectImpl {
private static final HashSet<String> choices = new HashSet<>();
private Ability gainedAbility;
static {
choices.add("Double strike");
choices.add("Protection from red");
choices.add("Vigilance");
choices.add("Shadow");
}
public JodahsAvengerEffect() {
super(Duration.EndOfTurn, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.AddAbility);
this.staticText = "Until end of turn, {this} gets -1/-1 and gains your choice of double strike, protection from red, vigilance, or shadow";
}
public JodahsAvengerEffect(final JodahsAvengerEffect effect) {
super(effect);
}
@Override
public JodahsAvengerEffect copy() {
return new JodahsAvengerEffect(this);
}
@Override
public void init(Ability source, Game game) {
super.init(source, game);
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
Choice choice = new ChoiceImpl(true);
choice.setMessage("Choose one");
choice.setChoices(choices);
if (controller.choose(outcome, choice, game)) {
switch (choice.getChoice()) {
case "Double strike":
gainedAbility = DoubleStrikeAbility.getInstance();
break;
case "Vigilance":
gainedAbility = VigilanceAbility.getInstance();
break;
case "Shadow":
gainedAbility = ShadowAbility.getInstance();
break;
default:
gainedAbility = ProtectionAbility.from(ObjectColor.RED);
break;
}
}
}
}
@Override
public boolean apply(Game game, Ability source) {
Permanent sourceObject = game.getPermanent(source.getSourceId());
if (sourceObject != null) {
sourceObject.addPower(-1);
sourceObject.addToughness(-1);
game.addEffect(new GainAbilitySourceEffect(gainedAbility, Duration.EndOfTurn), source);
return true;
}
return false;
}
}

View file

@ -62,7 +62,7 @@ import mage.target.targetpointer.FixedTarget;
public class KaronaFalseGod extends CardImpl {
public KaronaFalseGod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{U}{B}{R}{G}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{U}{B}{R}{G}");
this.supertype.add("Legendary");
this.subtype.add("Avatar");
@ -71,10 +71,10 @@ public class KaronaFalseGod extends CardImpl {
// Haste
this.addAbility(HasteAbility.getInstance());
// At the beginning of each player's upkeep, that player untaps Karona, False God and gains control of it.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new KaronaFalseGodUntapGetControlEffect(), TargetController.ANY, false, true));
// Whenever Karona attacks, creatures of the creature type of your choice get +3/+3 until end of turn.
this.addAbility(new AttacksTriggeredAbility(new KaronaFalseGodEffect(), false));
}
@ -93,7 +93,7 @@ class KaronaFalseGodUntapGetControlEffect extends OneShotEffect {
public KaronaFalseGodUntapGetControlEffect() {
super(Outcome.GainControl);
this.staticText = "that player untaps Karona, False God and gains control of it";
this.staticText = "that player untaps {this} and gains control of it";
}
public KaronaFalseGodUntapGetControlEffect(final KaronaFalseGodUntapGetControlEffect effect) {
@ -110,9 +110,23 @@ class KaronaFalseGodUntapGetControlEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
MageObject sourceObject = source.getSourceObject(game);
Permanent sourcePermanent = game.getPermanent(source.getSourceId());
if (controller != null && sourceObject != null && sourceObject.equals(sourcePermanent)) {
Player newController = game.getPlayer(getTargetPointer().getFirst(game, source));
if (newController != null && controller != null && sourceObject != null && sourceObject.equals(sourcePermanent)) {
sourcePermanent.untap(game);
ContinuousEffect effect = new GainControlTargetEffect(Duration.Custom, true, getTargetPointer().getFirst(game, source));
game.informPlayers(newController.getLogName() + " untaps " + sourceObject.getIdName());
// remove old control effects of the same player
for (ContinuousEffect effect : game.getState().getContinuousEffects().getLayeredEffects(game)) {
if (effect instanceof GainControlTargetEffect) {
UUID checkId = (UUID) ((GainControlTargetEffect) effect).getValue("KaronaFalseGodSourceId");
UUID controllerId = (UUID) ((GainControlTargetEffect) effect).getValue("KaronaFalseGodControllerId");
if (source.getSourceId().equals(checkId) && newController.getId().equals(controllerId)) {
effect.discard();
}
}
}
ContinuousEffect effect = new GainControlTargetEffect(Duration.Custom, true, newController.getId());
effect.setValue("KaronaFalseGodSourceId", source.getSourceId());
effect.setValue("KaronaFalseGodControllerId", newController.getId());
effect.setTargetPointer(new FixedTarget(sourcePermanent.getId()));
effect.setText("and gains control of it");
game.addEffect(effect, source);
@ -123,21 +137,21 @@ class KaronaFalseGodUntapGetControlEffect extends OneShotEffect {
}
class KaronaFalseGodEffect extends OneShotEffect {
public KaronaFalseGodEffect() {
super(Outcome.BoostCreature);
this.staticText = "creatures of the creature type of your choice get +3/+3 until end of turn";
}
public KaronaFalseGodEffect(final KaronaFalseGodEffect effect) {
super(effect);
}
@Override
public KaronaFalseGodEffect copy() {
return new KaronaFalseGodEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
@ -156,7 +170,7 @@ class KaronaFalseGodEffect extends OneShotEffect {
game.informPlayers(controller.getLogName() + " has chosen " + typeChosen);
FilterCreaturePermanent filter = new FilterCreaturePermanent();
filter.add(new SubtypePredicate(typeChosen));
game.addEffect(new BoostAllEffect(3,3,Duration.EndOfTurn, filter, false), source);
game.addEffect(new BoostAllEffect(3, 3, Duration.EndOfTurn, filter, false), source);
}
return true;
}

View file

@ -0,0 +1,107 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.l;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.DiesCreatureTriggeredAbility;
import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.ReturnToBattlefieldUnderOwnerControlTargetEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game;
import mage.target.targetpointer.FixedTarget;
/**
*
* @author HCrescent
*/
public class Lifeline extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature");
public Lifeline(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
// Whenever a creature dies, if another creature is on the battlefield, return the first card to the battlefield under its owner's control at the beginning of the next end step.
Ability ability = new ConditionalTriggeredAbility(
new DiesCreatureTriggeredAbility( Zone.BATTLEFIELD, new LifelineEffect(), false, filter, true),
new PermanentsOnTheBattlefieldCondition(filter, PermanentsOnTheBattlefieldCondition.CountType.MORE_THAN, 0, false),
"Whenever a creature dies, if another creature is on the battlefield, return the first card to the battlefield under its owner's control at the beginning of the next end step.");
this.addAbility(ability);
}
public Lifeline(final Lifeline card) {
super(card);
}
@Override
public Lifeline copy() {
return new Lifeline(this);
}
}
class LifelineEffect extends OneShotEffect {
public LifelineEffect() {
super(Outcome.PutCardInPlay);
this.staticText = "";
}
public LifelineEffect(final LifelineEffect effect) {
super(effect);
}
@Override
public LifelineEffect copy() {
return new LifelineEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Card card = game.getCard(getTargetPointer().getFirst(game, source));
if (card != null) {
Effect effect = new ReturnToBattlefieldUnderOwnerControlTargetEffect();
effect.setTargetPointer(new FixedTarget(card.getId(), card.getZoneChangeCounter(game)));
effect.setText("return that card to the battlefield under it's owner's control at the beginning of the next end step");
game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.ANY), source);
return true;
}
return false;
}
}

View file

@ -0,0 +1,101 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.l;
import java.util.UUID;
import mage.MageObject;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.effects.PreventionEffectImpl;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.game.Game;
import mage.game.events.GameEvent;
/**
*
* @author Styxo
*/
public class Luminesce extends CardImpl {
public Luminesce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
// Prevent all damage that black sources and red sources would deal this turn.
getSpellAbility().addEffect(new LuminescePreventionEffect());
}
public Luminesce(final Luminesce card) {
super(card);
}
@Override
public Luminesce copy() {
return new Luminesce(this);
}
}
class LuminescePreventionEffect extends PreventionEffectImpl {
public LuminescePreventionEffect() {
super(Duration.EndOfTurn, Integer.MAX_VALUE, false, false);
staticText = "Prevent all damage that black sources and red sources would deal this turn";
}
public LuminescePreventionEffect(LuminescePreventionEffect effect) {
super(effect);
}
@Override
public boolean apply(Game game, Ability source) {
return true;
}
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
if (super.applies(event, source, game)) {
if (event.getType().equals(GameEvent.EventType.DAMAGE_PLAYER)
|| event.getType().equals(GameEvent.EventType.DAMAGE_CREATURE)
|| event.getType().equals(GameEvent.EventType.DAMAGE_PLANESWALKER)) {
MageObject sourceObject = game.getObject(event.getSourceId());
if (sourceObject != null
&& (sourceObject.getColor(game).shares(ObjectColor.BLACK) || sourceObject.getColor(game).shares(ObjectColor.RED))) {
return true;
}
}
}
return false;
}
@Override
public LuminescePreventionEffect copy() {
return new LuminescePreventionEffect(this);
}
}

View file

@ -0,0 +1,154 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.m;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetCardInLibrary;
import mage.util.CardUtil;
/**
*
* @author emerald000
*/
public class MangarasTome extends CardImpl {
public MangarasTome(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
// When Mangara's Tome enters the battlefield, search your library for five cards, exile them in a face-down pile, and shuffle that pile. Then shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new MangarasTomeSearchEffect()));
// {2}: The next time you would draw a card this turn, instead put the top card of the exiled pile into its owner's hand.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new MangarasTomeReplacementEffect(), new GenericManaCost(2)));
}
public MangarasTome(final MangarasTome card) {
super(card);
}
@Override
public MangarasTome copy() {
return new MangarasTome(this);
}
}
class MangarasTomeSearchEffect extends OneShotEffect {
MangarasTomeSearchEffect() {
super(Outcome.Neutral);
this.staticText = "When Mangara's Tome enters the battlefield, search your library for five cards, exile them in a face-down pile, and shuffle that pile. Then shuffle your library";
}
MangarasTomeSearchEffect(final MangarasTomeSearchEffect effect) {
super(effect);
}
@Override
public MangarasTomeSearchEffect copy() {
return new MangarasTomeSearchEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
Permanent permanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
if (controller != null && permanent != null) {
TargetCardInLibrary target = new TargetCardInLibrary(5, new FilterCard());
if (controller.searchLibrary(target, game)) {
for (UUID targetId : target.getTargets()) {
Card card = controller.getLibrary().getCard(targetId, game);
if (card != null) {
controller.moveCardsToExile(card, source, game, false, CardUtil.getCardExileZoneId(game, source), permanent.getLogName());
card.setFaceDown(true, game);
}
}
}
return true;
}
return false;
}
}
class MangarasTomeReplacementEffect extends ReplacementEffectImpl {
MangarasTomeReplacementEffect() {
super(Duration.EndOfTurn, Outcome.DrawCard);
staticText = "The next time you would draw a card this turn, instead put the top card of the exiled pile into its owner's hand";
}
MangarasTomeReplacementEffect(final MangarasTomeReplacementEffect effect) {
super(effect);
}
@Override
public MangarasTomeReplacementEffect copy() {
return new MangarasTomeReplacementEffect(this);
}
@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
Card card = game.getExile().getExileZone(CardUtil.getCardExileZoneId(game, source)).getRandom(game);
if (card != null) {
controller.moveCards(card, Zone.HAND, source, game);
}
}
return true;
}
@Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == EventType.DRAW_CARD;
}
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
return source.getControllerId().equals(event.getPlayerId());
}
}

View file

@ -1,4 +1,4 @@
/*
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
@ -28,8 +28,6 @@
package mage.cards.m;
import java.util.UUID;
import mage.constants.*;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
@ -37,6 +35,7 @@ import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.CardTypePredicate;
@ -58,13 +57,17 @@ public class MasterOfEtherium extends CardImpl {
}
public MasterOfEtherium(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}{U}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}{U}");
this.subtype.add("Vedalken");
this.subtype.add("Wizard");
this.power = new MageInt(0);
this.toughness = new MageInt(0);
// Master of Etherium's power and toughness are each equal to the number of artifacts you control.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filterCounted), Duration.EndOfGame)));
// Other artifact creatures you control get +1/+1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filterBoosted, true)));
}

View file

@ -37,9 +37,9 @@ import mage.abilities.condition.common.SourceOnBattlefieldControlUnchangedCondit
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.continuous.GainControlTargetEffect;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -62,7 +62,7 @@ import mage.target.targetpointer.FixedTarget;
public class MeriekeRiBerit extends CardImpl {
public MeriekeRiBerit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}{B}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}{B}");
this.supertype.add("Legendary");
this.subtype.add("Human");
this.power = new MageInt(1);
@ -97,7 +97,7 @@ class MeriekeRiBeritCreateDelayedTriggerEffect extends OneShotEffect {
public MeriekeRiBeritCreateDelayedTriggerEffect() {
super(Outcome.Detriment);
this.staticText = "When {this} leaves the battlefield or becomes untapped, destroy that creature. It can't be regenerated.";
this.staticText = "When {this} leaves the battlefield or becomes untapped, destroy that creature. It can't be regenerated";
}
public MeriekeRiBeritCreateDelayedTriggerEffect(final MeriekeRiBeritCreateDelayedTriggerEffect effect) {
@ -114,12 +114,8 @@ class MeriekeRiBeritCreateDelayedTriggerEffect extends OneShotEffect {
Permanent controlledCreature = game.getPermanent(source.getFirstTarget());
if (controlledCreature != null) {
DelayedTriggeredAbility delayedAbility = new MeriekeRiBeritDelayedTriggeredAbility();
delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(controlledCreature.getId()));
delayedAbility.setSourceId(source.getSourceId());
delayedAbility.setControllerId(source.getControllerId());
delayedAbility.setSourceObject(source.getSourceObject(game), game);
delayedAbility.init(game);
game.addDelayedTriggeredAbility(delayedAbility);
delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(controlledCreature, game));
game.addDelayedTriggeredAbility(delayedAbility, source);
return true;
}
return false;
@ -129,7 +125,7 @@ class MeriekeRiBeritCreateDelayedTriggerEffect extends OneShotEffect {
class MeriekeRiBeritDelayedTriggeredAbility extends DelayedTriggeredAbility {
MeriekeRiBeritDelayedTriggeredAbility() {
super(new DestroyTargetEffect(true), Duration.EndOfGame, true);
super(new DestroyTargetEffect(true), Duration.Custom, true);
}
MeriekeRiBeritDelayedTriggeredAbility(MeriekeRiBeritDelayedTriggeredAbility ability) {
@ -142,9 +138,15 @@ class MeriekeRiBeritDelayedTriggeredAbility extends DelayedTriggeredAbility {
|| event.getType() == EventType.UNTAPPED;
}
@Override
public boolean isInactive(Game game) {
return getSourceObjectIfItStillExists(game) == null
&& game.getLastKnownInformation(getSourceId(), Zone.BATTLEFIELD, getSourceObjectZoneChangeCounter()) == null;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getSourceId() != null) {
if (event.getTargetId() != null) {
if (GameEvent.EventType.ZONE_CHANGE.equals(event.getType())
&& event.getTargetId().equals(getSourceId())) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;

View file

@ -0,0 +1,127 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.m;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.PutOnLibraryTargetEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.FilterPermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetCardInHand;
import java.util.UUID;
/**
*
* @author JRHerlehy
*/
public class Metamorphose extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("permanent an opponent controls");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
}
public Metamorphose(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
// Put target permanent an opponent controls on top of its owner's library. That opponent may put an artifact, creature, enchantment, or land card from his or her hand onto the battlefield.
this.getSpellAbility().addEffect(new PutOnLibraryTargetEffect(true));
this.getSpellAbility().addTarget(new TargetPermanent(filter));
this.getSpellAbility().addEffect(new MetamorphoseEffect());
}
public Metamorphose(final Metamorphose card) {
super(card);
}
@Override
public Metamorphose copy() {
return new Metamorphose(this);
}
}
class MetamorphoseEffect extends OneShotEffect {
private static final FilterCard filter = new FilterCard("artifact, creature, enchantment, or land card");
static{
filter.add(Predicates.or(
new CardTypePredicate(CardType.ARTIFACT),
new CardTypePredicate(CardType.CREATURE),
new CardTypePredicate(CardType.ENCHANTMENT),
new CardTypePredicate(CardType.LAND)
));
}
public MetamorphoseEffect() {
super(Outcome.PutCardInPlay);
this.staticText = "That opponent may put an artifact, creature, enchantment, or land card from his or her hand onto the battlefield.";
}
public MetamorphoseEffect (final MetamorphoseEffect effect) { super(effect); }
@Override
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanentOrLKIBattlefield(source.getFirstTarget());
if (permanent != null) {
Player controller = game.getPlayer(permanent.getControllerId());
if (controller != null && controller.canRespond() && controller.chooseUse(Outcome.PutCardInPlay, "Do you wish to put an artifact, creature, enchantment, or land card onto the battlefield?", source, game)) {
TargetCardInHand target = new TargetCardInHand(filter);
target.clearChosen();
if (controller.chooseTarget(outcome, target, source, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
}
}
}
return true;
}
return false;
}
@Override
public MetamorphoseEffect copy() { return new MetamorphoseEffect(this); }
}

View file

@ -0,0 +1,63 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.m;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.PutIntoGraveFromBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.PutOnLibraryTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.common.FilterCreaturePermanent;
/**
*
* @author HCrescent
*/
public class Mortuary extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature");
public Mortuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
Ability ability = new PutIntoGraveFromBattlefieldAllTriggeredAbility(new PutOnLibraryTargetEffect(true, "put that card on top of your library."), false, filter, true, true);
// Whenever a creature is put into your graveyard from the battlefield, put that card on top of your library.
this.addAbility(ability);
}
public Mortuary(final Mortuary card) {
super(card);
}
@Override
public Mortuary copy() {
return new Mortuary(this);
}
}

View file

@ -28,8 +28,6 @@
package mage.cards.m;
import java.util.UUID;
import mage.constants.CardType;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
@ -38,6 +36,7 @@ import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.common.FilterArtifactSpell;
import mage.game.Game;
import mage.game.permanent.token.MyrToken;
@ -47,19 +46,21 @@ import mage.game.permanent.token.MyrToken;
* @author Loki, North
*/
public class Myrsmith extends CardImpl {
public Myrsmith (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
public Myrsmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
this.subtype.add("Human");
this.subtype.add("Artificer");
this.power = new MageInt(2);
this.toughness = new MageInt(1);
// Whenever you cast an artifact spell, you may pay {1}. If you do, put a 1/1 colorless Myr artifact creature token onto the battlefield.
FilterArtifactSpell filter = new FilterArtifactSpell("an artifact spell");
this.addAbility(new SpellCastControllerTriggeredAbility(new MyrsmithEffect(), filter, false));
}
public Myrsmith (final Myrsmith card) {
public Myrsmith(final Myrsmith card) {
super(card);
}
@ -70,6 +71,7 @@ public class Myrsmith extends CardImpl {
}
class MyrsmithEffect extends CreateTokenEffect {
public MyrsmithEffect() {
super(new MyrToken());
staticText = "you may pay {1}. If you do, create a 1/1 colorless Myr artifact creature token";

View file

@ -61,7 +61,7 @@ public class NaturesWay extends CardImpl {
}
public NaturesWay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
// Target creature you control gains vigilance and trample until end of turn. It deals damage equal to its power to target creature you don't control.
Effect effect = new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn);
@ -69,6 +69,7 @@ public class NaturesWay extends CardImpl {
this.getSpellAbility().addEffect(effect);
effect = new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn);
effect.setText("and trample until end of turn");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addEffect(new NaturesWayEffect());
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));

View file

@ -55,14 +55,14 @@ public class ObscuringAether extends CardImpl {
}
public ObscuringAether(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
// Face-down creature spells you cast cost {1} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionControllerEffect(filter, 1)));
// {1}{G}: Turn Obscuring Aether face down.
Effect effect = new BecomesFaceDownCreatureEffect(Duration.Custom, BecomesFaceDownCreatureEffect.FaceDownType.MANUAL);
effect.setText("Turn Obscuring Aether face down. <i>(It becomes a 2/2 creature.)</i>");
effect.setText("Turn {this} face down. <i>(It becomes a 2/2 creature.)</i>");
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{1}{G}")));
}

View file

@ -25,17 +25,16 @@
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.p;
import java.util.UUID;
import mage.constants.CardType;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DiesTriggeredAbility;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.target.common.TargetCreatureOrPlayer;
/**
@ -44,17 +43,19 @@ import mage.target.common.TargetCreatureOrPlayer;
*/
public class PerilousMyr extends CardImpl {
public PerilousMyr (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}");
public PerilousMyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
this.subtype.add("Myr");
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// When Perilous Myr dies, it deals 2 damage to target creature or player.
Ability ability = new DiesTriggeredAbility(new DamageTargetEffect(2), false);
ability.addTarget(new TargetCreatureOrPlayer());
this.addAbility(ability);
}
public PerilousMyr (final PerilousMyr card) {
public PerilousMyr(final PerilousMyr card) {
super(card);
}

View file

@ -34,7 +34,6 @@ import mage.abilities.DelayedTriggeredAbility;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.PreventionEffectData;
import mage.abilities.effects.PreventionEffectImpl;
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
import mage.abilities.effects.common.EntersBattlefieldWithXCountersEffect;
@ -106,12 +105,11 @@ public class ProteanHydra extends CardImpl {
@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
PreventionEffectData preventionEffectData = preventDamageAction(event, source, game);
if (preventionEffectData.getPreventedDamage() > 0) {
Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null) {
permanent.removeCounters(CounterType.P1P1.createInstance(preventionEffectData.getPreventedDamage()), game);
}
int damage = event.getAmount();
preventDamageAction(event, source, game);
Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null) {
permanent.removeCounters(CounterType.P1P1.createInstance(damage), game); //MTG ruling Protean Hydra loses counters even if the damage isn't prevented
}
return false;
}

View file

@ -53,7 +53,7 @@ import mage.target.common.TargetOpponent;
public class RainbowVale extends CardImpl {
public RainbowVale(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
// {tap}: Add one mana of any color to your mana pool. An opponent gains control of Rainbow Vale at the beginning of the next end step.
Ability ability = new AnyColorManaAbility();
@ -74,7 +74,7 @@ public class RainbowVale extends CardImpl {
public RainbowValeEffect() {
super(Outcome.PutManaInPool);
staticText = "An opponent gains control of {this} at the beginning of the next end step.";
staticText = "an opponent gains control of {this} at the beginning of the next end step";
}
public RainbowValeEffect(final RainbowValeEffect effect) {
@ -85,7 +85,7 @@ public class RainbowVale extends CardImpl {
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null) {
game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new OpponentGainControlEffect()));
game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new OpponentGainControlEffect()), source);
return true;
}
return false;

View file

@ -89,12 +89,10 @@ public class RiteOfTheRagingStorm extends CardImpl {
class RiteOfTheRagingStormEffect extends OneShotEffect {
private static final String effectText = "that player creates a 5/1 red Elemental creature token named Lightning Rager. "
+ "It has trample, haste, and \"At the beginning of the end step, sacrifice this creature.\"";
RiteOfTheRagingStormEffect() {
super(Outcome.Sacrifice);
staticText = effectText;
staticText = "that player creates a 5/1 red Elemental creature token named Lightning Rager. "
+ "It has trample, haste, and \"At the beginning of the end step, sacrifice this creature.\"";
}
RiteOfTheRagingStormEffect(RiteOfTheRagingStormEffect effect) {
@ -105,8 +103,7 @@ class RiteOfTheRagingStormEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(targetPointer.getFirst(game, source));
if (player != null) {
Token lightningRagerToken = new LightningRagerToken();
lightningRagerToken.putOntoBattlefield(1, game, this.getId(), player.getId());
return new LightningRagerToken().putOntoBattlefield(1, game, source.getSourceId(), player.getId());
}
return false;
}

View file

@ -0,0 +1,129 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.r;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalActivatedAbility;
import mage.abilities.effects.PreventionEffectImpl;
import mage.abilities.effects.common.EntersBattlefieldWithXCountersEffect;
import mage.abilities.effects.common.PreventDamageToSourceEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
/**
*
* @author anonymous
*/
public class RockHydra extends CardImpl {
public RockHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{X}{R}{R}");
this.subtype.add("Hydra");
this.power = new MageInt(0);
this.toughness = new MageInt(0);
// Rock Hydra enters the battlefield with X +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(new EntersBattlefieldWithXCountersEffect(CounterType.P1P1.createInstance())));
// For each 1 damage that would be dealt to Rock Hydra, if it has a +1/+1 counter on it, remove a +1/+1 counter from it and prevent that 1 damage.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new RockHydraEffect()));
// {R}: Prevent the next 1 damage that would be dealt to Rock Hydra this turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreventDamageToSourceEffect(Duration.EndOfTurn, 1), new ManaCostsImpl("{R}")));
// {R}{R}{R}: Put a +1/+1 counter on Rock Hydra. Activate this ability only during your upkeep.
this.addAbility(new ConditionalActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)), new ManaCostsImpl("{R}{R}{R}"), new IsStepCondition(PhaseStep.UPKEEP), null));
}
public RockHydra(final RockHydra card) {
super(card);
}
@Override
public RockHydra copy() {
return new RockHydra(this);
}
class RockHydraEffect extends PreventionEffectImpl {
public RockHydraEffect() {
super(Duration.WhileOnBattlefield, Integer.MAX_VALUE, false, false);
staticText = "For each 1 damage that would be dealt to {this}, if it has a +1/+1 counter on it, remove a +1/+1 counter from it and prevent that 1 damage.";
}
public RockHydraEffect(final RockHydraEffect effect) {
super(effect);
}
@Override
public RockHydraEffect copy() {
return new RockHydraEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
return true;
}
@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
int damage = event.getAmount();
preventDamageAction(event, source, game);
Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null) {
permanent.removeCounters(CounterType.P1P1.createInstance(damage), game); //MTG ruling Rock Hydra loses counters even if the damage isn't prevented
}
return false;
}
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
if (super.applies(event, source, game)) {
if (event.getTargetId().equals(source.getSourceId())) {
return true;
}
}
return false;
}
}
}

View file

@ -0,0 +1,113 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.Cost;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.common.TargetControlledPermanent;
/**
*
* @author Pete Rossi
*/
public class SanguinePraetor extends CardImpl {
public SanguinePraetor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{B}{B}");
this.subtype.add("Avatar");
this.subtype.add("Praetor");
this.power = new MageInt(7);
this.toughness = new MageInt(5);
// {B}, Sacrifice a creature: Destroy each creature with the same converted mana cost as the sacrificed creature.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SanguinePraetorEffect(), new ManaCostsImpl("{B}"));
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledCreaturePermanent())));
this.addAbility(ability);
}
public SanguinePraetor(final SanguinePraetor card) {
super(card);
}
@Override
public SanguinePraetor copy() {
return new SanguinePraetor(this);
}
}
class SanguinePraetorEffect extends OneShotEffect {
public SanguinePraetorEffect() {
super(Outcome.Damage);
staticText = "Destroy each creature with the same converted mana cost as the sacrificed creature";
}
public SanguinePraetorEffect(final SanguinePraetorEffect effect) {
super(effect);
}
@Override
public boolean apply(Game game, Ability source) {
int cmc = 0;
for (Cost cost : source.getCosts()) {
if (cost instanceof SacrificeTargetCost && ((SacrificeTargetCost) cost).getPermanents().size() > 0) {
cmc = ((SacrificeTargetCost) cost).getPermanents().get(0).getConvertedManaCost();
break;
}
}
for (Permanent permanent : game.getBattlefield().getActivePermanents(new FilterCreaturePermanent(), source.getControllerId(), game)) {
if (permanent.getConvertedManaCost() == cmc) {
permanent.destroy(source.getSourceId(), game, false);
}
}
return true;
}
@Override
public SanguinePraetorEffect copy() {
return new SanguinePraetorEffect(this);
}
}

View file

@ -52,7 +52,7 @@ import mage.players.Player;
public class SelvalaExplorerReturned extends CardImpl {
public SelvalaExplorerReturned(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{W}");
this.supertype.add("Legendary");
this.subtype.add("Elf");
this.subtype.add("Scout");
@ -101,7 +101,7 @@ class SelvalaExplorerReturnedEffect extends ManaEffect {
Mana parley = getMana(game, source);
if (parley.getGreen() > 0) {
controller.getManaPool().addMana(parley, game, source);
controller.gainLife(parley.getAny(), game);
controller.gainLife(parley.getGreen(), game);
}
return true;
}

View file

@ -54,10 +54,10 @@ import mage.game.permanent.Permanent;
*/
public class SidarKondoOfJamuraa extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or greater");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
static {
filter.add(new PowerPredicate(Filter.ComparisonType.GreaterThan, 1));
filter.add(new PowerPredicate(Filter.ComparisonType.LessThan, 3));
}
public SidarKondoOfJamuraa(UUID ownerId, CardSetInfo setInfo) {

View file

@ -41,10 +41,10 @@ import mage.abilities.effects.common.DamageTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.game.permanent.token.GoblinToken;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetCreatureOrPlayer;
/**
@ -53,7 +53,7 @@ import mage.target.common.TargetCreatureOrPlayer;
*/
public class SiegeGangCommander extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin");
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Goblin");
static {
filter.add(new SubtypePredicate("Goblin"));
@ -67,7 +67,7 @@ public class SiegeGangCommander extends CardImpl {
this.toughness = new MageInt(2);
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GoblinToken(), 3), false));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl("{1}{R}"));
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, false)));
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(1, 1, filter, false)));
ability.addTarget(new TargetCreatureOrPlayer());
this.addAbility(ability);
}

View file

@ -0,0 +1,122 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.s;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CounterTargetEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.common.FilterInstantOrSorcerySpell;
import mage.game.Game;
import mage.game.stack.Spell;
import mage.players.Library;
import mage.players.Player;
import mage.target.TargetSpell;
/**
*
* @author Styxo
*/
public class Spellshift extends CardImpl {
public Spellshift(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}");
// Counter target instant or sorcery spell.
this.getSpellAbility().addTarget(new TargetSpell(new FilterInstantOrSorcerySpell()));
this.getSpellAbility().addEffect(new CounterTargetEffect());
// Its controller reveals cards from the top of his or her library until he or she reveals an instant or sorcery card. That player may cast that card without paying its mana cost. Then he or she shuffles his or her library.
this.getSpellAbility().addEffect(new SpellshiftEffect());
}
public Spellshift(final Spellshift card) {
super(card);
}
@Override
public Spellshift copy() {
return new Spellshift(this);
}
}
class SpellshiftEffect extends OneShotEffect {
public SpellshiftEffect() {
super(Outcome.Detriment);
this.staticText = "Its controller reveals cards from the top of his or her library until he or she reveals an instant or sorcery card. That player may cast that card without paying its mana cost. Then he or she shuffles his or her library";
}
public SpellshiftEffect(final SpellshiftEffect effect) {
super(effect);
}
@Override
public SpellshiftEffect copy() {
return new SpellshiftEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(((Spell) game.getLastKnownInformation(targetPointer.getFirst(game, source), Zone.STACK)).getControllerId());
if (player != null) {
Library library = player.getLibrary();
if (library.size() > 0) {
Cards cards = new CardsImpl();
Card card = library.removeFromTop(game);
cards.add(card);
while (!(card.getCardType().contains(CardType.SORCERY) || card.getCardType().contains(CardType.INSTANT)) && library.size() > 0) {
card = library.removeFromTop(game);
cards.add(card);
}
if (card.getCardType().contains(CardType.SORCERY) || card.getCardType().contains(CardType.INSTANT)) {
if (player.chooseUse(outcome, "Cast " + card.getLogName() + " ?", source, game)) {
if (player.cast(card.getSpellAbility(), game, true)) {
cards.remove(card.getId());
}
}
}
if (cards.size() > 0) {
library.addAll(cards.getCards(game), game);
}
}
return true;
}
return false;
}
}

View file

@ -83,7 +83,7 @@ class TangleWireEffect extends OneShotEffect {
new CardTypePredicate(CardType.CREATURE),
new CardTypePredicate(CardType.LAND)));
}
TangleWireEffect() {
super(Outcome.Sacrifice);
staticText = "that player taps an untapped artifact, creature, or land he or she controls for each fade counter on Tangle Wire";
@ -96,15 +96,15 @@ class TangleWireEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(targetPointer.getFirst(game, source));
Permanent permanent = game.getPermanent(source.getSourceId());
Permanent permanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
if (player == null || permanent == null) {
return false;
}
int targetCount = game.getBattlefield().countAll(filter, player.getId(), game);
int counterCount = permanent.getCounters(game).getCount(CounterType.FADE);
int amount = Math.min(counterCount, targetCount);
Target target = new TargetControlledPermanent(amount, amount, filter, true);
target.setNotTarget(true);

View file

@ -0,0 +1,101 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.v;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.discard.DiscardCardYouChooseTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.filter.Filter;
import mage.filter.FilterCard;
import mage.filter.common.FilterNonlandCard;
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
import mage.game.Game;
import mage.players.Player;
import mage.target.TargetPlayer;
/**
*
* @author Styxo
*/
public class VenarianGlimmer extends CardImpl {
public VenarianGlimmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{U}");
// Target player reveals his or her hand. You choose a nonland card with converted mana cost X or less from it. That player discards that card.
this.getSpellAbility().addTarget(new TargetPlayer());
this.getSpellAbility().addEffect(new VenarianGlimmerEffect());
}
public VenarianGlimmer(final VenarianGlimmer card) {
super(card);
}
@Override
public VenarianGlimmer copy() {
return new VenarianGlimmer(this);
}
}
class VenarianGlimmerEffect extends OneShotEffect {
public VenarianGlimmerEffect() {
super(Outcome.Discard);
this.staticText = "Target player reveals his or her hand. You choose a nonland card with converted mana cost X or less from it. That player discards that card";
}
public VenarianGlimmerEffect(final VenarianGlimmerEffect effect) {
super(effect);
}
@Override
public VenarianGlimmerEffect copy() {
return new VenarianGlimmerEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(targetPointer.getFirst(game, source));
if (player != null) {
FilterCard filter = new FilterNonlandCard();
filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, source.getManaCostsToPay().getX() + 1));
Effect effect = new DiscardCardYouChooseTargetEffect(filter, TargetController.ANY);
effect.setTargetPointer(targetPointer);
effect.apply(game, source);
return true;
}
return false;
}
}

View file

@ -54,7 +54,7 @@ import mage.players.Player;
public class WarpWorld extends CardImpl {
public WarpWorld(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{R}{R}{R}");
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{R}{R}{R}");
// Each player shuffles all permanents he or she owns into his or her library, then reveals that many cards from the top of his or her library. Each player puts all artifact, creature, and land cards revealed this way onto the battlefield, then does the same for enchantment cards, then puts all cards revealed this way that weren't put onto the battlefield on the bottom of his or her library.
this.getSpellAbility().addEffect(new WarpWorldEffect());
@ -130,14 +130,8 @@ class WarpWorldEffect extends OneShotEffect {
for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
Integer count = Math.min(permanentsCount.get(player.getId()), player.getLibrary().size());
CardsImpl cards = new CardsImpl();
for (int i = 0; i < count; i++) {
Card card = player.getLibrary().removeFromTop(game);
if (card != null) {
cards.add(card);
}
}
cards.addAll(player.getLibrary().getTopCards(game, permanentsCount.get(player.getId())));
player.revealCards(sourceObject.getIdName() + " (" + player.getName() + ")", cards, game);
cardsRevealed.put(player.getId(), cards);
}

View file

@ -56,7 +56,7 @@ import mage.target.Targets;
public class YoseiTheMorningStar extends CardImpl {
public YoseiTheMorningStar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}{W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
this.supertype.add("Legendary");
this.subtype.add("Dragon");
this.subtype.add("Spirit");
@ -66,8 +66,9 @@ public class YoseiTheMorningStar extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// When Yosei, the Morning Star dies, target player skips his or her next untap step. Tap up to five target permanents that player controls.
Ability ability = new DiesTriggeredAbility(new SkipNextPlayerUntapStepEffect());
Ability ability = new DiesTriggeredAbility(new SkipNextPlayerUntapStepEffect("target "));
ability.addTarget(new TargetPlayer());
ability.addTarget(new YoseiTheMorningStarTarget());
ability.addEffect(new YoseiTheMorningStarTapEffect());
@ -84,9 +85,9 @@ public class YoseiTheMorningStar extends CardImpl {
}
}
class YoseiTheMorningStarTarget extends TargetPermanent {
class YoseiTheMorningStarTarget extends TargetPermanent {
private static final FilterPermanent filterTemplate = new FilterPermanent("up to five target permanents that player controls that will be tapped");
private static final FilterPermanent filterTemplate = new FilterPermanent("up to five target permanents that player controls that will be tapped");
public YoseiTheMorningStarTarget() {
super(0, 5, filterTemplate, false);
@ -96,14 +97,14 @@ public class YoseiTheMorningStar extends CardImpl {
super(target);
}
@Override
public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) {
Player player = game.getPlayer(source.getFirstTarget());
if (player != null) {
this.filter = filterTemplate.copy();
this.filter.add(new ControllerIdPredicate(player.getId()));
return super.canTarget(controllerId, id, source, game);
}
@Override
public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) {
Player player = game.getPlayer(source.getFirstTarget());
if (player != null) {
this.filter = filterTemplate.copy();
this.filter.add(new ControllerIdPredicate(player.getId()));
return super.canTarget(controllerId, id, source, game);
}
return false;
}
@ -118,7 +119,7 @@ class YoseiTheMorningStarTapEffect extends OneShotEffect {
public YoseiTheMorningStarTapEffect() {
super(Outcome.Tap);
staticText = "Tap up to five target permanents that player controls";
staticText = "Tap up to five target permanents that player controls";
}
public YoseiTheMorningStarTapEffect(final YoseiTheMorningStarTapEffect effect) {
@ -132,9 +133,9 @@ class YoseiTheMorningStarTapEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Targets targets = source.getTargets();
Target target1 = targets.get(1);
for (UUID target: target1.getTargets()) {
Targets targets = source.getTargets();
Target target1 = targets.get(1);
for (UUID target : target1.getTargets()) {
Permanent permanent = game.getPermanent(target);
if (permanent != null) {
permanent.tap(game);
@ -147,7 +148,7 @@ class YoseiTheMorningStarTapEffect extends OneShotEffect {
@Override
public String getText(Mode mode) {
return staticText;
return staticText;
}
}

View file

@ -34,6 +34,7 @@ public class Apocalypse extends ExpansionSet {
cards.add(new SetCardInfo("Brass Herald", 133, Rarity.UNCOMMON, mage.cards.b.BrassHerald.class));
cards.add(new SetCardInfo("Caves of Koilos", 140, Rarity.RARE, mage.cards.c.CavesOfKoilos.class));
cards.add(new SetCardInfo("Ceta Disciple", 19, Rarity.COMMON, mage.cards.c.CetaDisciple.class));
cards.add(new SetCardInfo("Ceta Sanctuary", 20, Rarity.UNCOMMON, mage.cards.c.CetaSanctuary.class));
cards.add(new SetCardInfo("Cetavolver", 21, Rarity.RARE, mage.cards.c.Cetavolver.class));
cards.add(new SetCardInfo("Coalition Flag", 2, Rarity.UNCOMMON, mage.cards.c.CoalitionFlag.class));
cards.add(new SetCardInfo("Coalition Honor Guard", 3, Rarity.COMMON, mage.cards.c.CoalitionHonorGuard.class));

View file

@ -116,6 +116,7 @@ public class Coldsnap extends ExpansionSet {
cards.add(new SetCardInfo("Lightning Serpent", 88, Rarity.RARE, mage.cards.l.LightningSerpent.class));
cards.add(new SetCardInfo("Lightning Storm", 89, Rarity.UNCOMMON, mage.cards.l.LightningStorm.class));
cards.add(new SetCardInfo("Lovisa Coldeyes", 90, Rarity.RARE, mage.cards.l.LovisaColdeyes.class));
cards.add(new SetCardInfo("Luminesce", 14, Rarity.UNCOMMON, mage.cards.l.Luminesce.class));
cards.add(new SetCardInfo("Martyr of Ashes", 92, Rarity.COMMON, mage.cards.m.MartyrOfAshes.class));
cards.add(new SetCardInfo("Martyr of Bones", 65, Rarity.COMMON, mage.cards.m.MartyrOfBones.class));
cards.add(new SetCardInfo("Martyr of Frost", 40, Rarity.COMMON, mage.cards.m.MartyrOfFrost.class));

View file

@ -42,7 +42,7 @@ public class CommanderAnthology extends ExpansionSet {
}
private CommanderAnthology() {
super("Commander Anthology", "CMA2", ExpansionSet.buildDate(2017, 6, 9), SetType.SUPPLEMENTAL);
super("Commander Anthology", "CMA", ExpansionSet.buildDate(2017, 6, 9), SetType.SUPPLEMENTAL);
this.blockName = "Commander Anthology";
this.hasBasicLands = false;
}

View file

@ -45,7 +45,7 @@ public class CommandersArsenal extends ExpansionSet {
}
private CommandersArsenal() {
super("Commander's Arsenal", "CMA", ExpansionSet.buildDate(2012, 11, 2), SetType.SUPPLEMENTAL);
super("Commander's Arsenal", "CM1", ExpansionSet.buildDate(2012, 11, 2), SetType.SUPPLEMENTAL);
this.blockName = "Command Zone";
cards.add(new SetCardInfo("Chaos Warp", 1, Rarity.SPECIAL, mage.cards.c.ChaosWarp.class));
cards.add(new SetCardInfo("Command Tower", 2, Rarity.COMMON, mage.cards.c.CommandTower.class));

View file

@ -1,240 +1,241 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.SetType;
import mage.constants.Rarity;
/**
*
* @author LevelX2
*/
public class Conspiracy extends ExpansionSet {
private static final Conspiracy fINSTANCE = new Conspiracy();
public static Conspiracy getInstance() {
return fINSTANCE;
}
private Conspiracy() {
super("Conspiracy", "CNS", ExpansionSet.buildDate(2014, 6, 6), SetType.SUPPLEMENTAL);
this.blockName = "Conspiracy";
this.hasBasicLands = false;
this.hasBoosters = true;
this.numBoosterLands = 0;
this.numBoosterCommon = 11;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 8;
cards.add(new SetCardInfo("Academy Elite", 20, Rarity.RARE, mage.cards.a.AcademyElite.class));
cards.add(new SetCardInfo("Aether Tradewinds", 89, Rarity.COMMON, mage.cards.a.AetherTradewinds.class));
cards.add(new SetCardInfo("Air Servant", 90, Rarity.UNCOMMON, mage.cards.a.AirServant.class));
cards.add(new SetCardInfo("Ajani's Sunstriker", 66, Rarity.COMMON, mage.cards.a.AjanisSunstriker.class));
cards.add(new SetCardInfo("Altar of Dementia", 196, Rarity.RARE, mage.cards.a.AltarOfDementia.class));
cards.add(new SetCardInfo("Altar's Reap", 112, Rarity.COMMON, mage.cards.a.AltarsReap.class));
cards.add(new SetCardInfo("Apex Hawks", 67, Rarity.COMMON, mage.cards.a.ApexHawks.class));
cards.add(new SetCardInfo("Assassinate", 113, Rarity.COMMON, mage.cards.a.Assassinate.class));
cards.add(new SetCardInfo("Barbed Shocker", 136, Rarity.UNCOMMON, mage.cards.b.BarbedShocker.class));
cards.add(new SetCardInfo("Basandra, Battle Seraph", 184, Rarity.RARE, mage.cards.b.BasandraBattleSeraph.class));
cards.add(new SetCardInfo("Bite of the Black Rose", 26, Rarity.UNCOMMON, mage.cards.b.BiteOfTheBlackRose.class));
cards.add(new SetCardInfo("Boldwyr Intimidator", 137, Rarity.UNCOMMON, mage.cards.b.BoldwyrIntimidator.class));
cards.add(new SetCardInfo("Brago, King Eternal", 41, Rarity.RARE, mage.cards.b.BragoKingEternal.class));
cards.add(new SetCardInfo("Brainstorm", 91, Rarity.COMMON, mage.cards.b.Brainstorm.class));
cards.add(new SetCardInfo("Breakthrough", 92, Rarity.UNCOMMON, mage.cards.b.Breakthrough.class));
cards.add(new SetCardInfo("Brimstone Volley", 138, Rarity.COMMON, mage.cards.b.BrimstoneVolley.class));
cards.add(new SetCardInfo("Charging Rhino", 159, Rarity.COMMON, mage.cards.c.ChargingRhino.class));
cards.add(new SetCardInfo("Chartooth Cougar", 139, Rarity.COMMON, mage.cards.c.ChartoothCougar.class));
cards.add(new SetCardInfo("Cinder Wall", 140, Rarity.COMMON, mage.cards.c.CinderWall.class));
cards.add(new SetCardInfo("Coercive Portal", 56, Rarity.MYTHIC, mage.cards.c.CoercivePortal.class));
cards.add(new SetCardInfo("Compulsive Research", 93, Rarity.COMMON, mage.cards.c.CompulsiveResearch.class));
cards.add(new SetCardInfo("Copperhorn Scout", 160, Rarity.COMMON, mage.cards.c.CopperhornScout.class));
cards.add(new SetCardInfo("Council's Judgment", 16, Rarity.RARE, mage.cards.c.CouncilsJudgment.class));
cards.add(new SetCardInfo("Courier Hawk", 68, Rarity.COMMON, mage.cards.c.CourierHawk.class));
cards.add(new SetCardInfo("Crookclaw Transmuter", 94, Rarity.COMMON, mage.cards.c.CrookclawTransmuter.class));
cards.add(new SetCardInfo("Custodi Soulbinders", 17, Rarity.RARE, mage.cards.c.CustodiSoulbinders.class));
cards.add(new SetCardInfo("Custodi Squire", 18, Rarity.COMMON, mage.cards.c.CustodiSquire.class));
cards.add(new SetCardInfo("Dack Fayden", 42, Rarity.MYTHIC, mage.cards.d.DackFayden.class));
cards.add(new SetCardInfo("Dack's Duplicate", 43, Rarity.RARE, mage.cards.d.DacksDuplicate.class));
cards.add(new SetCardInfo("Deathforge Shaman", 141, Rarity.UNCOMMON, mage.cards.d.DeathforgeShaman.class));
cards.add(new SetCardInfo("Deathreap Ritual", 44, Rarity.UNCOMMON, mage.cards.d.DeathreapRitual.class));
cards.add(new SetCardInfo("Deathrender", 197, Rarity.RARE, mage.cards.d.Deathrender.class));
cards.add(new SetCardInfo("Decimate", 185, Rarity.RARE, mage.cards.d.Decimate.class));
cards.add(new SetCardInfo("Dimir Doppelganger", 186, Rarity.RARE, mage.cards.d.DimirDoppelganger.class));
cards.add(new SetCardInfo("Doomed Traveler", 69, Rarity.COMMON, mage.cards.d.DoomedTraveler.class));
cards.add(new SetCardInfo("Drakestown Forgotten", 27, Rarity.RARE, mage.cards.d.DrakestownForgotten.class));
cards.add(new SetCardInfo("Dream Fracture", 95, Rarity.COMMON, mage.cards.d.DreamFracture.class));
cards.add(new SetCardInfo("Echoing Courage", 161, Rarity.COMMON, mage.cards.e.EchoingCourage.class));
cards.add(new SetCardInfo("Edric, Spymaster of Trest", 187, Rarity.RARE, mage.cards.e.EdricSpymasterOfTrest.class));
cards.add(new SetCardInfo("Elephant Guide", 162, Rarity.UNCOMMON, mage.cards.e.ElephantGuide.class));
cards.add(new SetCardInfo("Elvish Aberration", 163, Rarity.COMMON, mage.cards.e.ElvishAberration.class));
cards.add(new SetCardInfo("Enclave Elite", 96, Rarity.COMMON, mage.cards.e.EnclaveElite.class));
cards.add(new SetCardInfo("Enraged Revolutionary", 31, Rarity.COMMON, mage.cards.e.EnragedRevolutionary.class));
cards.add(new SetCardInfo("Exploration", 164, Rarity.RARE, mage.cards.e.Exploration.class));
cards.add(new SetCardInfo("Explorer's Scope", 198, Rarity.UNCOMMON, mage.cards.e.ExplorersScope.class));
cards.add(new SetCardInfo("Extract from Darkness", 45, Rarity.UNCOMMON, mage.cards.e.ExtractFromDarkness.class));
cards.add(new SetCardInfo("Fact or Fiction", 97, Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class));
cards.add(new SetCardInfo("Favorable Winds", 98, Rarity.UNCOMMON, mage.cards.f.FavorableWinds.class));
cards.add(new SetCardInfo("Fireshrieker", 199, Rarity.UNCOMMON, mage.cards.f.Fireshrieker.class));
cards.add(new SetCardInfo("Fires of Yavimaya", 188, Rarity.UNCOMMON, mage.cards.f.FiresOfYavimaya.class));
cards.add(new SetCardInfo("Flamewright", 46, Rarity.UNCOMMON, mage.cards.f.Flamewright.class));
cards.add(new SetCardInfo("Flaring Flame-Kin", 142, Rarity.UNCOMMON, mage.cards.f.FlaringFlameKin.class));
cards.add(new SetCardInfo("Flowstone Blade", 143, Rarity.COMMON, mage.cards.f.FlowstoneBlade.class));
cards.add(new SetCardInfo("Galvanic Juggernaut", 200, Rarity.UNCOMMON, mage.cards.g.GalvanicJuggernaut.class));
cards.add(new SetCardInfo("Gamekeeper", 165, Rarity.UNCOMMON, mage.cards.g.Gamekeeper.class));
cards.add(new SetCardInfo("Glimmerpoint Stag", 70, Rarity.UNCOMMON, mage.cards.g.GlimmerpointStag.class));
cards.add(new SetCardInfo("Gnarlid Pack", 166, Rarity.COMMON, mage.cards.g.GnarlidPack.class));
cards.add(new SetCardInfo("Grenzo, Dungeon Warden", 47, Rarity.RARE, mage.cards.g.GrenzoDungeonWarden.class));
cards.add(new SetCardInfo("Grenzo's Cutthroat", 32, Rarity.COMMON, mage.cards.g.GrenzosCutthroat.class));
cards.add(new SetCardInfo("Grixis Illusionist", 99, Rarity.COMMON, mage.cards.g.GrixisIllusionist.class));
cards.add(new SetCardInfo("Guardian Zendikon", 71, Rarity.COMMON, mage.cards.g.GuardianZendikon.class));
cards.add(new SetCardInfo("Heartless Hidetsugu", 144, Rarity.RARE, mage.cards.h.HeartlessHidetsugu.class));
cards.add(new SetCardInfo("Heckling Fiends", 145, Rarity.UNCOMMON, mage.cards.h.HecklingFiends.class));
cards.add(new SetCardInfo("Howling Wolf", 167, Rarity.COMMON, mage.cards.h.HowlingWolf.class));
cards.add(new SetCardInfo("Hunger of the Howlpack", 168, Rarity.COMMON, mage.cards.h.HungerOfTheHowlpack.class));
cards.add(new SetCardInfo("Hydra Omnivore", 169, Rarity.MYTHIC, mage.cards.h.HydraOmnivore.class));
cards.add(new SetCardInfo("Ignition Team", 34, Rarity.RARE, mage.cards.i.IgnitionTeam.class));
cards.add(new SetCardInfo("Ill-Gotten Gains", 114, Rarity.RARE, mage.cards.i.IllGottenGains.class));
cards.add(new SetCardInfo("Infectious Horror", 115, Rarity.COMMON, mage.cards.i.InfectiousHorror.class));
cards.add(new SetCardInfo("Intangible Virtue", 72, Rarity.UNCOMMON, mage.cards.i.IntangibleVirtue.class));
cards.add(new SetCardInfo("Jetting Glasskite", 100, Rarity.UNCOMMON, mage.cards.j.JettingGlasskite.class));
cards.add(new SetCardInfo("Kor Chant", 73, Rarity.COMMON, mage.cards.k.KorChant.class));
cards.add(new SetCardInfo("Lead the Stampede", 170, Rarity.UNCOMMON, mage.cards.l.LeadTheStampede.class));
cards.add(new SetCardInfo("Liliana's Specter", 116, Rarity.COMMON, mage.cards.l.LilianasSpecter.class));
cards.add(new SetCardInfo("Lizard Warrior", 146, Rarity.COMMON, mage.cards.l.LizardWarrior.class));
cards.add(new SetCardInfo("Magister of Worth", 48, Rarity.RARE, mage.cards.m.MagisterOfWorth.class));
cards.add(new SetCardInfo("Magus of the Mirror", 117, Rarity.RARE, mage.cards.m.MagusOfTheMirror.class));
cards.add(new SetCardInfo("Mana Geyser", 147, Rarity.COMMON, mage.cards.m.ManaGeyser.class));
cards.add(new SetCardInfo("Marchesa's Emissary", 21, Rarity.COMMON, mage.cards.m.MarchesasEmissary.class));
cards.add(new SetCardInfo("Marchesa's Infiltrator", 22, Rarity.UNCOMMON, mage.cards.m.MarchesasInfiltrator.class));
cards.add(new SetCardInfo("Marchesa's Smuggler", 50, Rarity.UNCOMMON, mage.cards.m.MarchesasSmuggler.class));
cards.add(new SetCardInfo("Marchesa, the Black Rose", 49, Rarity.MYTHIC, mage.cards.m.MarchesaTheBlackRose.class));
cards.add(new SetCardInfo("Minamo Scrollkeeper", 101, Rarity.COMMON, mage.cards.m.MinamoScrollkeeper.class));
cards.add(new SetCardInfo("Mirari's Wake", 189, Rarity.MYTHIC, mage.cards.m.MirarisWake.class));
cards.add(new SetCardInfo("Mirrodin's Core", 208, Rarity.UNCOMMON, mage.cards.m.MirrodinsCore.class));
cards.add(new SetCardInfo("Misdirection", 102, Rarity.RARE, mage.cards.m.Misdirection.class));
cards.add(new SetCardInfo("Moment of Heroism", 74, Rarity.COMMON, mage.cards.m.MomentOfHeroism.class));
cards.add(new SetCardInfo("Morkrut Banshee", 118, Rarity.UNCOMMON, mage.cards.m.MorkrutBanshee.class));
cards.add(new SetCardInfo("Mortify", 190, Rarity.UNCOMMON, mage.cards.m.Mortify.class));
cards.add(new SetCardInfo("Muzzio, Visionary Architect", 23, Rarity.MYTHIC, mage.cards.m.MuzzioVisionaryArchitect.class));
cards.add(new SetCardInfo("Nature's Claim", 171, Rarity.COMMON, mage.cards.n.NaturesClaim.class));
cards.add(new SetCardInfo("Necromantic Thirst", 119, Rarity.COMMON, mage.cards.n.NecromanticThirst.class));
cards.add(new SetCardInfo("Noble Templar", 75, Rarity.COMMON, mage.cards.n.NobleTemplar.class));
cards.add(new SetCardInfo("Orcish Cannonade", 148, Rarity.COMMON, mage.cards.o.OrcishCannonade.class));
cards.add(new SetCardInfo("Peace Strider", 201, Rarity.UNCOMMON, mage.cards.p.PeaceStrider.class));
cards.add(new SetCardInfo("Pelakka Wurm", 172, Rarity.UNCOMMON, mage.cards.p.PelakkaWurm.class));
cards.add(new SetCardInfo("Pernicious Deed", 191, Rarity.MYTHIC, mage.cards.p.PerniciousDeed.class));
cards.add(new SetCardInfo("Phage the Untouchable", 120, Rarity.MYTHIC, mage.cards.p.PhageTheUntouchable.class));
cards.add(new SetCardInfo("Pillarfield Ox", 76, Rarity.COMMON, mage.cards.p.PillarfieldOx.class));
cards.add(new SetCardInfo("Pitchburn Devils", 149, Rarity.COMMON, mage.cards.p.PitchburnDevils.class));
cards.add(new SetCardInfo("Plagued Rusalka", 121, Rarity.UNCOMMON, mage.cards.p.PlaguedRusalka.class));
cards.add(new SetCardInfo("Plated Seastrider", 103, Rarity.COMMON, mage.cards.p.PlatedSeastrider.class));
cards.add(new SetCardInfo("Plea for Power", 24, Rarity.RARE, mage.cards.p.PleaForPower.class));
cards.add(new SetCardInfo("Plummet", 173, Rarity.COMMON, mage.cards.p.Plummet.class));
cards.add(new SetCardInfo("Power of Fire", 150, Rarity.COMMON, mage.cards.p.PowerOfFire.class));
cards.add(new SetCardInfo("Predator's Howl", 37, Rarity.UNCOMMON, mage.cards.p.PredatorsHowl.class));
cards.add(new SetCardInfo("Pride Guardian", 77, Rarity.COMMON, mage.cards.p.PrideGuardian.class));
cards.add(new SetCardInfo("Pristine Angel", 78, Rarity.MYTHIC, mage.cards.p.PristineAngel.class));
cards.add(new SetCardInfo("Provoke", 174, Rarity.COMMON, mage.cards.p.Provoke.class));
cards.add(new SetCardInfo("Quag Vampires", 122, Rarity.COMMON, mage.cards.q.QuagVampires.class));
cards.add(new SetCardInfo("Quicksand", 209, Rarity.UNCOMMON, mage.cards.q.Quicksand.class));
cards.add(new SetCardInfo("Realm Seekers", 38, Rarity.RARE, mage.cards.r.RealmSeekers.class));
cards.add(new SetCardInfo("Reckless Scholar", 104, Rarity.COMMON, mage.cards.r.RecklessScholar.class));
cards.add(new SetCardInfo("Reckless Spite", 123, Rarity.UNCOMMON, mage.cards.r.RecklessSpite.class));
cards.add(new SetCardInfo("Reflecting Pool", 210, Rarity.RARE, mage.cards.r.ReflectingPool.class));
cards.add(new SetCardInfo("Reign of the Pit", 29, Rarity.RARE, mage.cards.r.ReignOfThePit.class));
cards.add(new SetCardInfo("Reito Lantern", 202, Rarity.UNCOMMON, mage.cards.r.ReitoLantern.class));
cards.add(new SetCardInfo("Relic Crush", 175, Rarity.UNCOMMON, mage.cards.r.RelicCrush.class));
cards.add(new SetCardInfo("Respite", 176, Rarity.COMMON, mage.cards.r.Respite.class));
cards.add(new SetCardInfo("Reya Dawnbringer", 79, Rarity.RARE, mage.cards.r.ReyaDawnbringer.class));
cards.add(new SetCardInfo("Rousing of Souls", 19, Rarity.COMMON, mage.cards.r.RousingOfSouls.class));
cards.add(new SetCardInfo("Rout", 80, Rarity.RARE, mage.cards.r.Rout.class));
cards.add(new SetCardInfo("Runed Servitor", 203, Rarity.UNCOMMON, mage.cards.r.RunedServitor.class));
cards.add(new SetCardInfo("Sakura-Tribe Elder", 177, Rarity.COMMON, mage.cards.s.SakuraTribeElder.class));
cards.add(new SetCardInfo("Scaled Wurm", 178, Rarity.COMMON, mage.cards.s.ScaledWurm.class));
cards.add(new SetCardInfo("Scourge of the Throne", 35, Rarity.MYTHIC, mage.cards.s.ScourgeOfTheThrone.class));
cards.add(new SetCardInfo("Screaming Seahawk", 105, Rarity.COMMON, mage.cards.s.ScreamingSeahawk.class));
cards.add(new SetCardInfo("Selvala, Explorer Returned", 51, Rarity.RARE, mage.cards.s.SelvalaExplorerReturned.class));
cards.add(new SetCardInfo("Selvala's Charge", 39, Rarity.UNCOMMON, mage.cards.s.SelvalasCharge.class));
cards.add(new SetCardInfo("Selvala's Enforcer", 40, Rarity.COMMON, mage.cards.s.SelvalasEnforcer.class));
cards.add(new SetCardInfo("Shoreline Ranger", 106, Rarity.COMMON, mage.cards.s.ShorelineRanger.class));
cards.add(new SetCardInfo("Silent Arbiter", 204, Rarity.RARE, mage.cards.s.SilentArbiter.class));
cards.add(new SetCardInfo("Silverchase Fox", 81, Rarity.COMMON, mage.cards.s.SilverchaseFox.class));
cards.add(new SetCardInfo("Skeletal Scrying", 124, Rarity.UNCOMMON, mage.cards.s.SkeletalScrying.class));
cards.add(new SetCardInfo("Skitter of Lizards", 151, Rarity.COMMON, mage.cards.s.SkitterOfLizards.class));
cards.add(new SetCardInfo("Sky Spirit", 192, Rarity.UNCOMMON, mage.cards.s.SkySpirit.class));
cards.add(new SetCardInfo("Smallpox", 125, Rarity.UNCOMMON, mage.cards.s.Smallpox.class));
cards.add(new SetCardInfo("Soulcatcher", 82, Rarity.UNCOMMON, mage.cards.s.Soulcatcher.class));
cards.add(new SetCardInfo("Spiritmonger", 193, Rarity.RARE, mage.cards.s.Spiritmonger.class));
cards.add(new SetCardInfo("Split Decision", 25, Rarity.UNCOMMON, mage.cards.s.SplitDecision.class));
cards.add(new SetCardInfo("Spontaneous Combustion", 194, Rarity.UNCOMMON, mage.cards.s.SpontaneousCombustion.class));
cards.add(new SetCardInfo("Sporecap Spider", 179, Rarity.COMMON, mage.cards.s.SporecapSpider.class));
cards.add(new SetCardInfo("Squirrel Nest", 180, Rarity.UNCOMMON, mage.cards.s.SquirrelNest.class));
cards.add(new SetCardInfo("Stasis Cell", 107, Rarity.COMMON, mage.cards.s.StasisCell.class));
cards.add(new SetCardInfo("Stave Off", 83, Rarity.COMMON, mage.cards.s.StaveOff.class));
cards.add(new SetCardInfo("Stifle", 108, Rarity.RARE, mage.cards.s.Stifle.class));
cards.add(new SetCardInfo("Stronghold Discipline", 126, Rarity.COMMON, mage.cards.s.StrongholdDiscipline.class));
cards.add(new SetCardInfo("Sulfuric Vortex", 152, Rarity.RARE, mage.cards.s.SulfuricVortex.class));
cards.add(new SetCardInfo("Swords to Plowshares", 84, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
cards.add(new SetCardInfo("Syphon Soul", 127, Rarity.COMMON, mage.cards.s.SyphonSoul.class));
cards.add(new SetCardInfo("Terastodon", 181, Rarity.RARE, mage.cards.t.Terastodon.class));
cards.add(new SetCardInfo("Torch Fiend", 153, Rarity.COMMON, mage.cards.t.TorchFiend.class));
cards.add(new SetCardInfo("Tragic Slip", 128, Rarity.COMMON, mage.cards.t.TragicSlip.class));
cards.add(new SetCardInfo("Traveler's Cloak", 109, Rarity.COMMON, mage.cards.t.TravelersCloak.class));
cards.add(new SetCardInfo("Treasonous Ogre", 36, Rarity.UNCOMMON, mage.cards.t.TreasonousOgre.class));
cards.add(new SetCardInfo("Trumpet Blast", 154, Rarity.COMMON, mage.cards.t.TrumpetBlast.class));
cards.add(new SetCardInfo("Turn the Tide", 110, Rarity.COMMON, mage.cards.t.TurnTheTide.class));
cards.add(new SetCardInfo("Twisted Abomination", 129, Rarity.COMMON, mage.cards.t.TwistedAbomination.class));
cards.add(new SetCardInfo("Typhoid Rats", 130, Rarity.COMMON, mage.cards.t.TyphoidRats.class));
cards.add(new SetCardInfo("Tyrant's Choice", 30, Rarity.COMMON, mage.cards.t.TyrantsChoice.class));
cards.add(new SetCardInfo("Uncontrollable Anger", 155, Rarity.UNCOMMON, mage.cards.u.UncontrollableAnger.class));
cards.add(new SetCardInfo("Unhallowed Pact", 131, Rarity.COMMON, mage.cards.u.UnhallowedPact.class));
cards.add(new SetCardInfo("Unquestioned Authority", 85, Rarity.UNCOMMON, mage.cards.u.UnquestionedAuthority.class));
cards.add(new SetCardInfo("Valor Made Real", 86, Rarity.COMMON, mage.cards.v.ValorMadeReal.class));
cards.add(new SetCardInfo("Vampire Hexmage", 132, Rarity.UNCOMMON, mage.cards.v.VampireHexmage.class));
cards.add(new SetCardInfo("Vedalken Orrery", 206, Rarity.RARE, mage.cards.v.VedalkenOrrery.class));
cards.add(new SetCardInfo("Vent Sentinel", 156, Rarity.COMMON, mage.cards.v.VentSentinel.class));
cards.add(new SetCardInfo("Victimize", 133, Rarity.UNCOMMON, mage.cards.v.Victimize.class));
cards.add(new SetCardInfo("Volcanic Fallout", 157, Rarity.UNCOMMON, mage.cards.v.VolcanicFallout.class));
cards.add(new SetCardInfo("Vow of Duty", 87, Rarity.UNCOMMON, mage.cards.v.VowOfDuty.class));
cards.add(new SetCardInfo("Wakedancer", 134, Rarity.COMMON, mage.cards.w.Wakedancer.class));
cards.add(new SetCardInfo("Wakestone Gargoyle", 88, Rarity.UNCOMMON, mage.cards.w.WakestoneGargoyle.class));
cards.add(new SetCardInfo("Warmonger's Chariot", 207, Rarity.UNCOMMON, mage.cards.w.WarmongersChariot.class));
cards.add(new SetCardInfo("Wind Dancer", 111, Rarity.UNCOMMON, mage.cards.w.WindDancer.class));
cards.add(new SetCardInfo("Wolfbriar Elemental", 182, Rarity.RARE, mage.cards.w.WolfbriarElemental.class));
cards.add(new SetCardInfo("Wood Sage", 195, Rarity.UNCOMMON, mage.cards.w.WoodSage.class));
cards.add(new SetCardInfo("Woodvine Elemental", 52, Rarity.UNCOMMON, mage.cards.w.WoodvineElemental.class));
cards.add(new SetCardInfo("Wrap in Flames", 158, Rarity.COMMON, mage.cards.w.WrapInFlames.class));
cards.add(new SetCardInfo("Wrap in Vigor", 183, Rarity.COMMON, mage.cards.w.WrapInVigor.class));
cards.add(new SetCardInfo("Zombie Goliath", 135, Rarity.COMMON, mage.cards.z.ZombieGoliath.class));
}
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.SetType;
import mage.constants.Rarity;
/**
*
* @author LevelX2
*/
public class Conspiracy extends ExpansionSet {
private static final Conspiracy fINSTANCE = new Conspiracy();
public static Conspiracy getInstance() {
return fINSTANCE;
}
private Conspiracy() {
super("Conspiracy", "CNS", ExpansionSet.buildDate(2014, 6, 6), SetType.SUPPLEMENTAL);
this.blockName = "Conspiracy";
this.hasBasicLands = false;
this.hasBoosters = true;
this.numBoosterLands = 0;
this.numBoosterCommon = 11;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 8;
cards.add(new SetCardInfo("Academy Elite", 20, Rarity.RARE, mage.cards.a.AcademyElite.class));
cards.add(new SetCardInfo("Aether Tradewinds", 89, Rarity.COMMON, mage.cards.a.AetherTradewinds.class));
cards.add(new SetCardInfo("Air Servant", 90, Rarity.UNCOMMON, mage.cards.a.AirServant.class));
cards.add(new SetCardInfo("Ajani's Sunstriker", 66, Rarity.COMMON, mage.cards.a.AjanisSunstriker.class));
cards.add(new SetCardInfo("Altar of Dementia", 196, Rarity.RARE, mage.cards.a.AltarOfDementia.class));
cards.add(new SetCardInfo("Altar's Reap", 112, Rarity.COMMON, mage.cards.a.AltarsReap.class));
cards.add(new SetCardInfo("Apex Hawks", 67, Rarity.COMMON, mage.cards.a.ApexHawks.class));
cards.add(new SetCardInfo("Assassinate", 113, Rarity.COMMON, mage.cards.a.Assassinate.class));
cards.add(new SetCardInfo("Barbed Shocker", 136, Rarity.UNCOMMON, mage.cards.b.BarbedShocker.class));
cards.add(new SetCardInfo("Basandra, Battle Seraph", 184, Rarity.RARE, mage.cards.b.BasandraBattleSeraph.class));
cards.add(new SetCardInfo("Bite of the Black Rose", 26, Rarity.UNCOMMON, mage.cards.b.BiteOfTheBlackRose.class));
cards.add(new SetCardInfo("Boldwyr Intimidator", 137, Rarity.UNCOMMON, mage.cards.b.BoldwyrIntimidator.class));
cards.add(new SetCardInfo("Brago, King Eternal", 41, Rarity.RARE, mage.cards.b.BragoKingEternal.class));
cards.add(new SetCardInfo("Brainstorm", 91, Rarity.COMMON, mage.cards.b.Brainstorm.class));
cards.add(new SetCardInfo("Breakthrough", 92, Rarity.UNCOMMON, mage.cards.b.Breakthrough.class));
cards.add(new SetCardInfo("Brimstone Volley", 138, Rarity.COMMON, mage.cards.b.BrimstoneVolley.class));
cards.add(new SetCardInfo("Charging Rhino", 159, Rarity.COMMON, mage.cards.c.ChargingRhino.class));
cards.add(new SetCardInfo("Chartooth Cougar", 139, Rarity.COMMON, mage.cards.c.ChartoothCougar.class));
cards.add(new SetCardInfo("Cinder Wall", 140, Rarity.COMMON, mage.cards.c.CinderWall.class));
cards.add(new SetCardInfo("Coercive Portal", 56, Rarity.MYTHIC, mage.cards.c.CoercivePortal.class));
cards.add(new SetCardInfo("Compulsive Research", 93, Rarity.COMMON, mage.cards.c.CompulsiveResearch.class));
cards.add(new SetCardInfo("Copperhorn Scout", 160, Rarity.COMMON, mage.cards.c.CopperhornScout.class));
cards.add(new SetCardInfo("Council Guardian", 15, Rarity.UNCOMMON, mage.cards.c.CouncilGuardian.class));
cards.add(new SetCardInfo("Council's Judgment", 16, Rarity.RARE, mage.cards.c.CouncilsJudgment.class));
cards.add(new SetCardInfo("Courier Hawk", 68, Rarity.COMMON, mage.cards.c.CourierHawk.class));
cards.add(new SetCardInfo("Crookclaw Transmuter", 94, Rarity.COMMON, mage.cards.c.CrookclawTransmuter.class));
cards.add(new SetCardInfo("Custodi Soulbinders", 17, Rarity.RARE, mage.cards.c.CustodiSoulbinders.class));
cards.add(new SetCardInfo("Custodi Squire", 18, Rarity.COMMON, mage.cards.c.CustodiSquire.class));
cards.add(new SetCardInfo("Dack Fayden", 42, Rarity.MYTHIC, mage.cards.d.DackFayden.class));
cards.add(new SetCardInfo("Dack's Duplicate", 43, Rarity.RARE, mage.cards.d.DacksDuplicate.class));
cards.add(new SetCardInfo("Deathforge Shaman", 141, Rarity.UNCOMMON, mage.cards.d.DeathforgeShaman.class));
cards.add(new SetCardInfo("Deathreap Ritual", 44, Rarity.UNCOMMON, mage.cards.d.DeathreapRitual.class));
cards.add(new SetCardInfo("Deathrender", 197, Rarity.RARE, mage.cards.d.Deathrender.class));
cards.add(new SetCardInfo("Decimate", 185, Rarity.RARE, mage.cards.d.Decimate.class));
cards.add(new SetCardInfo("Dimir Doppelganger", 186, Rarity.RARE, mage.cards.d.DimirDoppelganger.class));
cards.add(new SetCardInfo("Doomed Traveler", 69, Rarity.COMMON, mage.cards.d.DoomedTraveler.class));
cards.add(new SetCardInfo("Drakestown Forgotten", 27, Rarity.RARE, mage.cards.d.DrakestownForgotten.class));
cards.add(new SetCardInfo("Dream Fracture", 95, Rarity.COMMON, mage.cards.d.DreamFracture.class));
cards.add(new SetCardInfo("Echoing Courage", 161, Rarity.COMMON, mage.cards.e.EchoingCourage.class));
cards.add(new SetCardInfo("Edric, Spymaster of Trest", 187, Rarity.RARE, mage.cards.e.EdricSpymasterOfTrest.class));
cards.add(new SetCardInfo("Elephant Guide", 162, Rarity.UNCOMMON, mage.cards.e.ElephantGuide.class));
cards.add(new SetCardInfo("Elvish Aberration", 163, Rarity.COMMON, mage.cards.e.ElvishAberration.class));
cards.add(new SetCardInfo("Enclave Elite", 96, Rarity.COMMON, mage.cards.e.EnclaveElite.class));
cards.add(new SetCardInfo("Enraged Revolutionary", 31, Rarity.COMMON, mage.cards.e.EnragedRevolutionary.class));
cards.add(new SetCardInfo("Exploration", 164, Rarity.RARE, mage.cards.e.Exploration.class));
cards.add(new SetCardInfo("Explorer's Scope", 198, Rarity.UNCOMMON, mage.cards.e.ExplorersScope.class));
cards.add(new SetCardInfo("Extract from Darkness", 45, Rarity.UNCOMMON, mage.cards.e.ExtractFromDarkness.class));
cards.add(new SetCardInfo("Fact or Fiction", 97, Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class));
cards.add(new SetCardInfo("Favorable Winds", 98, Rarity.UNCOMMON, mage.cards.f.FavorableWinds.class));
cards.add(new SetCardInfo("Fireshrieker", 199, Rarity.UNCOMMON, mage.cards.f.Fireshrieker.class));
cards.add(new SetCardInfo("Fires of Yavimaya", 188, Rarity.UNCOMMON, mage.cards.f.FiresOfYavimaya.class));
cards.add(new SetCardInfo("Flamewright", 46, Rarity.UNCOMMON, mage.cards.f.Flamewright.class));
cards.add(new SetCardInfo("Flaring Flame-Kin", 142, Rarity.UNCOMMON, mage.cards.f.FlaringFlameKin.class));
cards.add(new SetCardInfo("Flowstone Blade", 143, Rarity.COMMON, mage.cards.f.FlowstoneBlade.class));
cards.add(new SetCardInfo("Galvanic Juggernaut", 200, Rarity.UNCOMMON, mage.cards.g.GalvanicJuggernaut.class));
cards.add(new SetCardInfo("Gamekeeper", 165, Rarity.UNCOMMON, mage.cards.g.Gamekeeper.class));
cards.add(new SetCardInfo("Glimmerpoint Stag", 70, Rarity.UNCOMMON, mage.cards.g.GlimmerpointStag.class));
cards.add(new SetCardInfo("Gnarlid Pack", 166, Rarity.COMMON, mage.cards.g.GnarlidPack.class));
cards.add(new SetCardInfo("Grenzo, Dungeon Warden", 47, Rarity.RARE, mage.cards.g.GrenzoDungeonWarden.class));
cards.add(new SetCardInfo("Grenzo's Cutthroat", 32, Rarity.COMMON, mage.cards.g.GrenzosCutthroat.class));
cards.add(new SetCardInfo("Grixis Illusionist", 99, Rarity.COMMON, mage.cards.g.GrixisIllusionist.class));
cards.add(new SetCardInfo("Guardian Zendikon", 71, Rarity.COMMON, mage.cards.g.GuardianZendikon.class));
cards.add(new SetCardInfo("Heartless Hidetsugu", 144, Rarity.RARE, mage.cards.h.HeartlessHidetsugu.class));
cards.add(new SetCardInfo("Heckling Fiends", 145, Rarity.UNCOMMON, mage.cards.h.HecklingFiends.class));
cards.add(new SetCardInfo("Howling Wolf", 167, Rarity.COMMON, mage.cards.h.HowlingWolf.class));
cards.add(new SetCardInfo("Hunger of the Howlpack", 168, Rarity.COMMON, mage.cards.h.HungerOfTheHowlpack.class));
cards.add(new SetCardInfo("Hydra Omnivore", 169, Rarity.MYTHIC, mage.cards.h.HydraOmnivore.class));
cards.add(new SetCardInfo("Ignition Team", 34, Rarity.RARE, mage.cards.i.IgnitionTeam.class));
cards.add(new SetCardInfo("Ill-Gotten Gains", 114, Rarity.RARE, mage.cards.i.IllGottenGains.class));
cards.add(new SetCardInfo("Infectious Horror", 115, Rarity.COMMON, mage.cards.i.InfectiousHorror.class));
cards.add(new SetCardInfo("Intangible Virtue", 72, Rarity.UNCOMMON, mage.cards.i.IntangibleVirtue.class));
cards.add(new SetCardInfo("Jetting Glasskite", 100, Rarity.UNCOMMON, mage.cards.j.JettingGlasskite.class));
cards.add(new SetCardInfo("Kor Chant", 73, Rarity.COMMON, mage.cards.k.KorChant.class));
cards.add(new SetCardInfo("Lead the Stampede", 170, Rarity.UNCOMMON, mage.cards.l.LeadTheStampede.class));
cards.add(new SetCardInfo("Liliana's Specter", 116, Rarity.COMMON, mage.cards.l.LilianasSpecter.class));
cards.add(new SetCardInfo("Lizard Warrior", 146, Rarity.COMMON, mage.cards.l.LizardWarrior.class));
cards.add(new SetCardInfo("Magister of Worth", 48, Rarity.RARE, mage.cards.m.MagisterOfWorth.class));
cards.add(new SetCardInfo("Magus of the Mirror", 117, Rarity.RARE, mage.cards.m.MagusOfTheMirror.class));
cards.add(new SetCardInfo("Mana Geyser", 147, Rarity.COMMON, mage.cards.m.ManaGeyser.class));
cards.add(new SetCardInfo("Marchesa's Emissary", 21, Rarity.COMMON, mage.cards.m.MarchesasEmissary.class));
cards.add(new SetCardInfo("Marchesa's Infiltrator", 22, Rarity.UNCOMMON, mage.cards.m.MarchesasInfiltrator.class));
cards.add(new SetCardInfo("Marchesa's Smuggler", 50, Rarity.UNCOMMON, mage.cards.m.MarchesasSmuggler.class));
cards.add(new SetCardInfo("Marchesa, the Black Rose", 49, Rarity.MYTHIC, mage.cards.m.MarchesaTheBlackRose.class));
cards.add(new SetCardInfo("Minamo Scrollkeeper", 101, Rarity.COMMON, mage.cards.m.MinamoScrollkeeper.class));
cards.add(new SetCardInfo("Mirari's Wake", 189, Rarity.MYTHIC, mage.cards.m.MirarisWake.class));
cards.add(new SetCardInfo("Mirrodin's Core", 208, Rarity.UNCOMMON, mage.cards.m.MirrodinsCore.class));
cards.add(new SetCardInfo("Misdirection", 102, Rarity.RARE, mage.cards.m.Misdirection.class));
cards.add(new SetCardInfo("Moment of Heroism", 74, Rarity.COMMON, mage.cards.m.MomentOfHeroism.class));
cards.add(new SetCardInfo("Morkrut Banshee", 118, Rarity.UNCOMMON, mage.cards.m.MorkrutBanshee.class));
cards.add(new SetCardInfo("Mortify", 190, Rarity.UNCOMMON, mage.cards.m.Mortify.class));
cards.add(new SetCardInfo("Muzzio, Visionary Architect", 23, Rarity.MYTHIC, mage.cards.m.MuzzioVisionaryArchitect.class));
cards.add(new SetCardInfo("Nature's Claim", 171, Rarity.COMMON, mage.cards.n.NaturesClaim.class));
cards.add(new SetCardInfo("Necromantic Thirst", 119, Rarity.COMMON, mage.cards.n.NecromanticThirst.class));
cards.add(new SetCardInfo("Noble Templar", 75, Rarity.COMMON, mage.cards.n.NobleTemplar.class));
cards.add(new SetCardInfo("Orcish Cannonade", 148, Rarity.COMMON, mage.cards.o.OrcishCannonade.class));
cards.add(new SetCardInfo("Peace Strider", 201, Rarity.UNCOMMON, mage.cards.p.PeaceStrider.class));
cards.add(new SetCardInfo("Pelakka Wurm", 172, Rarity.UNCOMMON, mage.cards.p.PelakkaWurm.class));
cards.add(new SetCardInfo("Pernicious Deed", 191, Rarity.MYTHIC, mage.cards.p.PerniciousDeed.class));
cards.add(new SetCardInfo("Phage the Untouchable", 120, Rarity.MYTHIC, mage.cards.p.PhageTheUntouchable.class));
cards.add(new SetCardInfo("Pillarfield Ox", 76, Rarity.COMMON, mage.cards.p.PillarfieldOx.class));
cards.add(new SetCardInfo("Pitchburn Devils", 149, Rarity.COMMON, mage.cards.p.PitchburnDevils.class));
cards.add(new SetCardInfo("Plagued Rusalka", 121, Rarity.UNCOMMON, mage.cards.p.PlaguedRusalka.class));
cards.add(new SetCardInfo("Plated Seastrider", 103, Rarity.COMMON, mage.cards.p.PlatedSeastrider.class));
cards.add(new SetCardInfo("Plea for Power", 24, Rarity.RARE, mage.cards.p.PleaForPower.class));
cards.add(new SetCardInfo("Plummet", 173, Rarity.COMMON, mage.cards.p.Plummet.class));
cards.add(new SetCardInfo("Power of Fire", 150, Rarity.COMMON, mage.cards.p.PowerOfFire.class));
cards.add(new SetCardInfo("Predator's Howl", 37, Rarity.UNCOMMON, mage.cards.p.PredatorsHowl.class));
cards.add(new SetCardInfo("Pride Guardian", 77, Rarity.COMMON, mage.cards.p.PrideGuardian.class));
cards.add(new SetCardInfo("Pristine Angel", 78, Rarity.MYTHIC, mage.cards.p.PristineAngel.class));
cards.add(new SetCardInfo("Provoke", 174, Rarity.COMMON, mage.cards.p.Provoke.class));
cards.add(new SetCardInfo("Quag Vampires", 122, Rarity.COMMON, mage.cards.q.QuagVampires.class));
cards.add(new SetCardInfo("Quicksand", 209, Rarity.UNCOMMON, mage.cards.q.Quicksand.class));
cards.add(new SetCardInfo("Realm Seekers", 38, Rarity.RARE, mage.cards.r.RealmSeekers.class));
cards.add(new SetCardInfo("Reckless Scholar", 104, Rarity.COMMON, mage.cards.r.RecklessScholar.class));
cards.add(new SetCardInfo("Reckless Spite", 123, Rarity.UNCOMMON, mage.cards.r.RecklessSpite.class));
cards.add(new SetCardInfo("Reflecting Pool", 210, Rarity.RARE, mage.cards.r.ReflectingPool.class));
cards.add(new SetCardInfo("Reign of the Pit", 29, Rarity.RARE, mage.cards.r.ReignOfThePit.class));
cards.add(new SetCardInfo("Reito Lantern", 202, Rarity.UNCOMMON, mage.cards.r.ReitoLantern.class));
cards.add(new SetCardInfo("Relic Crush", 175, Rarity.UNCOMMON, mage.cards.r.RelicCrush.class));
cards.add(new SetCardInfo("Respite", 176, Rarity.COMMON, mage.cards.r.Respite.class));
cards.add(new SetCardInfo("Reya Dawnbringer", 79, Rarity.RARE, mage.cards.r.ReyaDawnbringer.class));
cards.add(new SetCardInfo("Rousing of Souls", 19, Rarity.COMMON, mage.cards.r.RousingOfSouls.class));
cards.add(new SetCardInfo("Rout", 80, Rarity.RARE, mage.cards.r.Rout.class));
cards.add(new SetCardInfo("Runed Servitor", 203, Rarity.UNCOMMON, mage.cards.r.RunedServitor.class));
cards.add(new SetCardInfo("Sakura-Tribe Elder", 177, Rarity.COMMON, mage.cards.s.SakuraTribeElder.class));
cards.add(new SetCardInfo("Scaled Wurm", 178, Rarity.COMMON, mage.cards.s.ScaledWurm.class));
cards.add(new SetCardInfo("Scourge of the Throne", 35, Rarity.MYTHIC, mage.cards.s.ScourgeOfTheThrone.class));
cards.add(new SetCardInfo("Screaming Seahawk", 105, Rarity.COMMON, mage.cards.s.ScreamingSeahawk.class));
cards.add(new SetCardInfo("Selvala, Explorer Returned", 51, Rarity.RARE, mage.cards.s.SelvalaExplorerReturned.class));
cards.add(new SetCardInfo("Selvala's Charge", 39, Rarity.UNCOMMON, mage.cards.s.SelvalasCharge.class));
cards.add(new SetCardInfo("Selvala's Enforcer", 40, Rarity.COMMON, mage.cards.s.SelvalasEnforcer.class));
cards.add(new SetCardInfo("Shoreline Ranger", 106, Rarity.COMMON, mage.cards.s.ShorelineRanger.class));
cards.add(new SetCardInfo("Silent Arbiter", 204, Rarity.RARE, mage.cards.s.SilentArbiter.class));
cards.add(new SetCardInfo("Silverchase Fox", 81, Rarity.COMMON, mage.cards.s.SilverchaseFox.class));
cards.add(new SetCardInfo("Skeletal Scrying", 124, Rarity.UNCOMMON, mage.cards.s.SkeletalScrying.class));
cards.add(new SetCardInfo("Skitter of Lizards", 151, Rarity.COMMON, mage.cards.s.SkitterOfLizards.class));
cards.add(new SetCardInfo("Sky Spirit", 192, Rarity.UNCOMMON, mage.cards.s.SkySpirit.class));
cards.add(new SetCardInfo("Smallpox", 125, Rarity.UNCOMMON, mage.cards.s.Smallpox.class));
cards.add(new SetCardInfo("Soulcatcher", 82, Rarity.UNCOMMON, mage.cards.s.Soulcatcher.class));
cards.add(new SetCardInfo("Spiritmonger", 193, Rarity.RARE, mage.cards.s.Spiritmonger.class));
cards.add(new SetCardInfo("Split Decision", 25, Rarity.UNCOMMON, mage.cards.s.SplitDecision.class));
cards.add(new SetCardInfo("Spontaneous Combustion", 194, Rarity.UNCOMMON, mage.cards.s.SpontaneousCombustion.class));
cards.add(new SetCardInfo("Sporecap Spider", 179, Rarity.COMMON, mage.cards.s.SporecapSpider.class));
cards.add(new SetCardInfo("Squirrel Nest", 180, Rarity.UNCOMMON, mage.cards.s.SquirrelNest.class));
cards.add(new SetCardInfo("Stasis Cell", 107, Rarity.COMMON, mage.cards.s.StasisCell.class));
cards.add(new SetCardInfo("Stave Off", 83, Rarity.COMMON, mage.cards.s.StaveOff.class));
cards.add(new SetCardInfo("Stifle", 108, Rarity.RARE, mage.cards.s.Stifle.class));
cards.add(new SetCardInfo("Stronghold Discipline", 126, Rarity.COMMON, mage.cards.s.StrongholdDiscipline.class));
cards.add(new SetCardInfo("Sulfuric Vortex", 152, Rarity.RARE, mage.cards.s.SulfuricVortex.class));
cards.add(new SetCardInfo("Swords to Plowshares", 84, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class));
cards.add(new SetCardInfo("Syphon Soul", 127, Rarity.COMMON, mage.cards.s.SyphonSoul.class));
cards.add(new SetCardInfo("Terastodon", 181, Rarity.RARE, mage.cards.t.Terastodon.class));
cards.add(new SetCardInfo("Torch Fiend", 153, Rarity.COMMON, mage.cards.t.TorchFiend.class));
cards.add(new SetCardInfo("Tragic Slip", 128, Rarity.COMMON, mage.cards.t.TragicSlip.class));
cards.add(new SetCardInfo("Traveler's Cloak", 109, Rarity.COMMON, mage.cards.t.TravelersCloak.class));
cards.add(new SetCardInfo("Treasonous Ogre", 36, Rarity.UNCOMMON, mage.cards.t.TreasonousOgre.class));
cards.add(new SetCardInfo("Trumpet Blast", 154, Rarity.COMMON, mage.cards.t.TrumpetBlast.class));
cards.add(new SetCardInfo("Turn the Tide", 110, Rarity.COMMON, mage.cards.t.TurnTheTide.class));
cards.add(new SetCardInfo("Twisted Abomination", 129, Rarity.COMMON, mage.cards.t.TwistedAbomination.class));
cards.add(new SetCardInfo("Typhoid Rats", 130, Rarity.COMMON, mage.cards.t.TyphoidRats.class));
cards.add(new SetCardInfo("Tyrant's Choice", 30, Rarity.COMMON, mage.cards.t.TyrantsChoice.class));
cards.add(new SetCardInfo("Uncontrollable Anger", 155, Rarity.UNCOMMON, mage.cards.u.UncontrollableAnger.class));
cards.add(new SetCardInfo("Unhallowed Pact", 131, Rarity.COMMON, mage.cards.u.UnhallowedPact.class));
cards.add(new SetCardInfo("Unquestioned Authority", 85, Rarity.UNCOMMON, mage.cards.u.UnquestionedAuthority.class));
cards.add(new SetCardInfo("Valor Made Real", 86, Rarity.COMMON, mage.cards.v.ValorMadeReal.class));
cards.add(new SetCardInfo("Vampire Hexmage", 132, Rarity.UNCOMMON, mage.cards.v.VampireHexmage.class));
cards.add(new SetCardInfo("Vedalken Orrery", 206, Rarity.RARE, mage.cards.v.VedalkenOrrery.class));
cards.add(new SetCardInfo("Vent Sentinel", 156, Rarity.COMMON, mage.cards.v.VentSentinel.class));
cards.add(new SetCardInfo("Victimize", 133, Rarity.UNCOMMON, mage.cards.v.Victimize.class));
cards.add(new SetCardInfo("Volcanic Fallout", 157, Rarity.UNCOMMON, mage.cards.v.VolcanicFallout.class));
cards.add(new SetCardInfo("Vow of Duty", 87, Rarity.UNCOMMON, mage.cards.v.VowOfDuty.class));
cards.add(new SetCardInfo("Wakedancer", 134, Rarity.COMMON, mage.cards.w.Wakedancer.class));
cards.add(new SetCardInfo("Wakestone Gargoyle", 88, Rarity.UNCOMMON, mage.cards.w.WakestoneGargoyle.class));
cards.add(new SetCardInfo("Warmonger's Chariot", 207, Rarity.UNCOMMON, mage.cards.w.WarmongersChariot.class));
cards.add(new SetCardInfo("Wind Dancer", 111, Rarity.UNCOMMON, mage.cards.w.WindDancer.class));
cards.add(new SetCardInfo("Wolfbriar Elemental", 182, Rarity.RARE, mage.cards.w.WolfbriarElemental.class));
cards.add(new SetCardInfo("Wood Sage", 195, Rarity.UNCOMMON, mage.cards.w.WoodSage.class));
cards.add(new SetCardInfo("Woodvine Elemental", 52, Rarity.UNCOMMON, mage.cards.w.WoodvineElemental.class));
cards.add(new SetCardInfo("Wrap in Flames", 158, Rarity.COMMON, mage.cards.w.WrapInFlames.class));
cards.add(new SetCardInfo("Wrap in Vigor", 183, Rarity.COMMON, mage.cards.w.WrapInVigor.class));
cards.add(new SetCardInfo("Zombie Goliath", 135, Rarity.COMMON, mage.cards.z.ZombieGoliath.class));
}
}

View file

@ -44,6 +44,7 @@ public class Darksteel extends ExpansionSet {
cards.add(new SetCardInfo("Barbed Lightning", 55, Rarity.COMMON, mage.cards.b.BarbedLightning.class));
cards.add(new SetCardInfo("Blinkmoth Nexus", 163, Rarity.RARE, mage.cards.b.BlinkmothNexus.class));
cards.add(new SetCardInfo("Burden of Greed", 38, Rarity.COMMON, mage.cards.b.BurdenOfGreed.class));
cards.add(new SetCardInfo("Chimeric Egg", 106, Rarity.UNCOMMON, mage.cards.c.ChimericEgg.class));
cards.add(new SetCardInfo("Chittering Rats", 39, Rarity.COMMON, mage.cards.c.ChitteringRats.class));
cards.add(new SetCardInfo("Chromescale Drake", 20, Rarity.RARE, mage.cards.c.ChromescaleDrake.class));
cards.add(new SetCardInfo("Coretapper", 107, Rarity.UNCOMMON, mage.cards.c.Coretapper.class));

View file

@ -85,7 +85,7 @@ public class FifthDawn extends ExpansionSet {
cards.add(new SetCardInfo("Cackling Imp", 44, Rarity.COMMON, mage.cards.c.CacklingImp.class));
cards.add(new SetCardInfo("Channel the Suns", 84, Rarity.UNCOMMON, mage.cards.c.ChannelTheSuns.class));
cards.add(new SetCardInfo("Chimeric Coils", 108, Rarity.UNCOMMON, mage.cards.c.ChimericCoils.class));
cards.add(new SetCardInfo("Circle of Protection: Artifacts", 8, Rarity.COMMON, mage.cards.c.CircleOfProtectionArtifacts.class));
cards.add(new SetCardInfo("Circle of Protection: Artifacts", 8, Rarity.UNCOMMON, mage.cards.c.CircleOfProtectionArtifacts.class));
cards.add(new SetCardInfo("Clearwater Goblet", 109, Rarity.RARE, mage.cards.c.ClearwaterGoblet.class));
cards.add(new SetCardInfo("Clock of Omens", 110, Rarity.UNCOMMON, mage.cards.c.ClockOfOmens.class));
cards.add(new SetCardInfo("Composite Golem", 111, Rarity.UNCOMMON, mage.cards.c.CompositeGolem.class));

View file

@ -170,6 +170,7 @@ public class FourthEdition extends ExpansionSet {
cards.add(new SetCardInfo("Forest", 177, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Frozen Shade", 22, Rarity.COMMON, mage.cards.f.FrozenShade.class));
cards.add(new SetCardInfo("Fungusaur", 130, Rarity.RARE, mage.cards.f.Fungusaur.class));
cards.add(new SetCardInfo("Gaea's Liege", 131, Rarity.RARE, mage.cards.g.GaeasLiege.class));
cards.add(new SetCardInfo("Gaseous Form", 74, Rarity.COMMON, mage.cards.g.GaseousForm.class));
cards.add(new SetCardInfo("Ghost Ship", 75, Rarity.UNCOMMON, mage.cards.g.GhostShip.class));
cards.add(new SetCardInfo("Giant Growth", 132, Rarity.COMMON, mage.cards.g.GiantGrowth.class));

View file

@ -1,203 +1,205 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.SetType;
import mage.constants.Rarity;
/**
* Created by IntelliJ IDEA. User: Loki Date: 20.12.10 Time: 21:01
*/
public class Guildpact extends ExpansionSet {
private static final Guildpact fINSTANCE = new Guildpact();
public static Guildpact getInstance() {
return fINSTANCE;
}
private Guildpact() {
super("Guildpact", "GPT", ExpansionSet.buildDate(2006, 1, 3), SetType.EXPANSION);
this.blockName = "Ravnica";
this.parentSet = RavnicaCityOfGuilds.getInstance();
this.hasBasicLands = false;
this.hasBoosters = true;
this.numBoosterLands = 0;
this.numBoosterCommon = 11;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 0;
cards.add(new SetCardInfo("Absolver Thrull", 1, Rarity.COMMON, mage.cards.a.AbsolverThrull.class));
cards.add(new SetCardInfo("Abyssal Nocturnus", 43, Rarity.RARE, mage.cards.a.AbyssalNocturnus.class));
cards.add(new SetCardInfo("Agent of Masks", 100, Rarity.UNCOMMON, mage.cards.a.AgentOfMasks.class));
cards.add(new SetCardInfo("Angel of Despair", 101, Rarity.RARE, mage.cards.a.AngelOfDespair.class));
cards.add(new SetCardInfo("Battering Wurm", 79, Rarity.UNCOMMON, mage.cards.b.BatteringWurm.class));
cards.add(new SetCardInfo("Beastmaster's Magemark", 80, Rarity.COMMON, mage.cards.b.BeastmastersMagemark.class));
cards.add(new SetCardInfo("Belfry Spirit", 2, Rarity.UNCOMMON, mage.cards.b.BelfrySpirit.class));
cards.add(new SetCardInfo("Blind Hunter", 102, Rarity.COMMON, mage.cards.b.BlindHunter.class));
cards.add(new SetCardInfo("Bloodscale Prowler", 64, Rarity.COMMON, mage.cards.b.BloodscaleProwler.class));
cards.add(new SetCardInfo("Borborygmos", 103, Rarity.RARE, mage.cards.b.Borborygmos.class));
cards.add(new SetCardInfo("Burning-Tree Bloodscale", 104, Rarity.COMMON, mage.cards.b.BurningTreeBloodscale.class));
cards.add(new SetCardInfo("Burning-Tree Shaman", 105, Rarity.RARE, mage.cards.b.BurningTreeShaman.class));
cards.add(new SetCardInfo("Castigate", 106, Rarity.COMMON, mage.cards.c.Castigate.class));
cards.add(new SetCardInfo("Caustic Rain", 44, Rarity.UNCOMMON, mage.cards.c.CausticRain.class));
cards.add(new SetCardInfo("Cerebral Vortex", 107, Rarity.RARE, mage.cards.c.CerebralVortex.class));
cards.add(new SetCardInfo("Cremate", 45, Rarity.COMMON, mage.cards.c.Cremate.class));
cards.add(new SetCardInfo("Cry of Contrition", 46, Rarity.COMMON, mage.cards.c.CryOfContrition.class));
cards.add(new SetCardInfo("Crystal Seer", 23, Rarity.UNCOMMON, mage.cards.c.CrystalSeer.class));
cards.add(new SetCardInfo("Culling Sun", 109, Rarity.RARE, mage.cards.c.CullingSun.class));
cards.add(new SetCardInfo("Daggerclaw Imp", 48, Rarity.UNCOMMON, mage.cards.d.DaggerclawImp.class));
cards.add(new SetCardInfo("Debtors' Knell", 141, Rarity.RARE, mage.cards.d.DebtorsKnell.class));
cards.add(new SetCardInfo("Djinn Illuminatus", 142, Rarity.RARE, mage.cards.d.DjinnIlluminatus.class));
cards.add(new SetCardInfo("Douse in Gloom", 49, Rarity.COMMON, mage.cards.d.DouseInGloom.class));
cards.add(new SetCardInfo("Drowned Rusalka", 24, Rarity.UNCOMMON, mage.cards.d.DrownedRusalka.class));
cards.add(new SetCardInfo("Dryad Sophisticate", 83, Rarity.UNCOMMON, mage.cards.d.DryadSophisticate.class));
cards.add(new SetCardInfo("Dune-Brood Nephilim", 110, Rarity.RARE, mage.cards.d.DuneBroodNephilim.class));
cards.add(new SetCardInfo("Earth Surge", 84, Rarity.RARE, mage.cards.e.EarthSurge.class));
cards.add(new SetCardInfo("Electrolyze", 111, Rarity.UNCOMMON, mage.cards.e.Electrolyze.class));
cards.add(new SetCardInfo("Exhumer Thrull", 50, Rarity.UNCOMMON, mage.cards.e.ExhumerThrull.class));
cards.add(new SetCardInfo("Fencer's Magemark", 65, Rarity.COMMON, mage.cards.f.FencersMagemark.class));
cards.add(new SetCardInfo("Feral Animist", 112, Rarity.UNCOMMON, mage.cards.f.FeralAnimist.class));
cards.add(new SetCardInfo("Frazzle", 25, Rarity.UNCOMMON, mage.cards.f.Frazzle.class));
cards.add(new SetCardInfo("Gelectrode", 113, Rarity.UNCOMMON, mage.cards.g.Gelectrode.class));
cards.add(new SetCardInfo("Ghor-Clan Bloodscale", 66, Rarity.UNCOMMON, mage.cards.g.GhorClanBloodscale.class));
cards.add(new SetCardInfo("Ghor-Clan Savage", 86, Rarity.COMMON, mage.cards.g.GhorClanSavage.class));
cards.add(new SetCardInfo("Ghost Council of Orzhova", 114, Rarity.RARE, mage.cards.g.GhostCouncilOfOrzhova.class));
cards.add(new SetCardInfo("Ghost Warden", 5, Rarity.COMMON, mage.cards.g.GhostWarden.class));
cards.add(new SetCardInfo("Ghostway", 6, Rarity.RARE, mage.cards.g.Ghostway.class));
cards.add(new SetCardInfo("Giant Solifuge", 143, Rarity.RARE, mage.cards.g.GiantSolifuge.class));
cards.add(new SetCardInfo("Gigadrowse", 26, Rarity.COMMON, mage.cards.g.Gigadrowse.class));
cards.add(new SetCardInfo("Glint-Eye Nephilim", 115, Rarity.RARE, mage.cards.g.GlintEyeNephilim.class));
cards.add(new SetCardInfo("Goblin Flectomancer", 116, Rarity.UNCOMMON, mage.cards.g.GoblinFlectomancer.class));
cards.add(new SetCardInfo("Godless Shrine", 157, Rarity.RARE, mage.cards.g.GodlessShrine.class));
cards.add(new SetCardInfo("Graven Dominator", 7, Rarity.RARE, mage.cards.g.GravenDominator.class));
cards.add(new SetCardInfo("Gristleback", 87, Rarity.UNCOMMON, mage.cards.g.Gristleback.class));
cards.add(new SetCardInfo("Gruul Guildmage", 144, Rarity.UNCOMMON, mage.cards.g.GruulGuildmage.class));
cards.add(new SetCardInfo("Gruul Nodorog", 88, Rarity.COMMON, mage.cards.g.GruulNodorog.class));
cards.add(new SetCardInfo("Gruul Scrapper", 89, Rarity.COMMON, mage.cards.g.GruulScrapper.class));
cards.add(new SetCardInfo("Gruul Signet", 150, Rarity.COMMON, mage.cards.g.GruulSignet.class));
cards.add(new SetCardInfo("Gruul Turf", 158, Rarity.COMMON, mage.cards.g.GruulTurf.class));
cards.add(new SetCardInfo("Gruul War Plow", 151, Rarity.RARE, mage.cards.g.GruulWarPlow.class));
cards.add(new SetCardInfo("Guardian's Magemark", 8, Rarity.COMMON, mage.cards.g.GuardiansMagemark.class));
cards.add(new SetCardInfo("Harrier Griffin", 9, Rarity.UNCOMMON, mage.cards.h.HarrierGriffin.class));
cards.add(new SetCardInfo("Hatching Plans", 27, Rarity.RARE, mage.cards.h.HatchingPlans.class));
cards.add(new SetCardInfo("Hissing Miasma", 51, Rarity.UNCOMMON, mage.cards.h.HissingMiasma.class));
cards.add(new SetCardInfo("Hypervolt Grasp", 67, Rarity.UNCOMMON, mage.cards.h.HypervoltGrasp.class));
cards.add(new SetCardInfo("Infiltrator's Magemark", 28, Rarity.COMMON, mage.cards.i.InfiltratorsMagemark.class));
cards.add(new SetCardInfo("Ink-Treader Nephilim", 117, Rarity.RARE, mage.cards.i.InkTreaderNephilim.class));
cards.add(new SetCardInfo("Invoke the Firemind", 118, Rarity.RARE, mage.cards.i.InvokeTheFiremind.class));
cards.add(new SetCardInfo("Izzet Boilerworks", 159, Rarity.COMMON, mage.cards.i.IzzetBoilerworks.class));
cards.add(new SetCardInfo("Izzet Chronarch", 119, Rarity.COMMON, mage.cards.i.IzzetChronarch.class));
cards.add(new SetCardInfo("Izzet Guildmage", 145, Rarity.UNCOMMON, mage.cards.i.IzzetGuildmage.class));
cards.add(new SetCardInfo("Izzet Signet", 152, Rarity.COMMON, mage.cards.i.IzzetSignet.class));
cards.add(new SetCardInfo("Leap of Flame", 121, Rarity.COMMON, mage.cards.l.LeapOfFlame.class));
cards.add(new SetCardInfo("Leyline of Lifeforce", 90, Rarity.RARE, mage.cards.l.LeylineOfLifeforce.class));
cards.add(new SetCardInfo("Leyline of Lightning", 68, Rarity.RARE, mage.cards.l.LeylineOfLightning.class));
cards.add(new SetCardInfo("Leyline of Singularity", 29, Rarity.RARE, mage.cards.l.LeylineOfSingularity.class));
cards.add(new SetCardInfo("Leyline of the Meek", 10, Rarity.RARE, mage.cards.l.LeylineOfTheMeek.class));
cards.add(new SetCardInfo("Leyline of the Void", 52, Rarity.RARE, mage.cards.l.LeylineOfTheVoid.class));
cards.add(new SetCardInfo("Lionheart Maverick", 11, Rarity.COMMON, mage.cards.l.LionheartMaverick.class));
cards.add(new SetCardInfo("Martyred Rusalka", 12, Rarity.UNCOMMON, mage.cards.m.MartyredRusalka.class));
cards.add(new SetCardInfo("Mizzium Transreliquat", 153, Rarity.RARE, mage.cards.m.MizziumTransreliquat.class));
cards.add(new SetCardInfo("Mortify", 122, Rarity.UNCOMMON, mage.cards.m.Mortify.class));
cards.add(new SetCardInfo("Mourning Thrull", 146, Rarity.COMMON, mage.cards.m.MourningThrull.class));
cards.add(new SetCardInfo("Necromancer's Magemark", 53, Rarity.COMMON, mage.cards.n.NecromancersMagemark.class));
cards.add(new SetCardInfo("Nivix, Aerie of the Firemind", 160, Rarity.UNCOMMON, mage.cards.n.NivixAerieOfTheFiremind.class));
cards.add(new SetCardInfo("Niv-Mizzet, the Firemind", 123, Rarity.RARE, mage.cards.n.NivMizzetTheFiremind.class));
cards.add(new SetCardInfo("Ogre Savant", 70, Rarity.COMMON, mage.cards.o.OgreSavant.class));
cards.add(new SetCardInfo("Order of the Stars", 13, Rarity.UNCOMMON, mage.cards.o.OrderOfTheStars.class));
cards.add(new SetCardInfo("Orzhova, the Church of Deals", 162, Rarity.UNCOMMON, mage.cards.o.OrzhovaTheChurchOfDeals.class));
cards.add(new SetCardInfo("Orzhov Basilica", 161, Rarity.COMMON, mage.cards.o.OrzhovBasilica.class));
cards.add(new SetCardInfo("Orzhov Euthanist", 54, Rarity.COMMON, mage.cards.o.OrzhovEuthanist.class));
cards.add(new SetCardInfo("Orzhov Guildmage", 147, Rarity.UNCOMMON, mage.cards.o.OrzhovGuildmage.class));
cards.add(new SetCardInfo("Orzhov Pontiff", 124, Rarity.RARE, mage.cards.o.OrzhovPontiff.class));
cards.add(new SetCardInfo("Orzhov Signet", 155, Rarity.COMMON, mage.cards.o.OrzhovSignet.class));
cards.add(new SetCardInfo("Ostiary Thrull", 55, Rarity.COMMON, mage.cards.o.OstiaryThrull.class));
cards.add(new SetCardInfo("Petrahydrox", 148, Rarity.COMMON, mage.cards.p.Petrahydrox.class));
cards.add(new SetCardInfo("Pillory of the Sleepless", 125, Rarity.COMMON, mage.cards.p.PilloryOfTheSleepless.class));
cards.add(new SetCardInfo("Plagued Rusalka", 56, Rarity.UNCOMMON, mage.cards.p.PlaguedRusalka.class));
cards.add(new SetCardInfo("Poisonbelly Ogre", 57, Rarity.COMMON, mage.cards.p.PoisonbellyOgre.class));
cards.add(new SetCardInfo("Pyromatics", 72, Rarity.COMMON, mage.cards.p.Pyromatics.class));
cards.add(new SetCardInfo("Quicken", 31, Rarity.RARE, mage.cards.q.Quicken.class));
cards.add(new SetCardInfo("Rabble-Rouser", 73, Rarity.UNCOMMON, mage.cards.r.RabbleRouser.class));
cards.add(new SetCardInfo("Repeal", 32, Rarity.COMMON, mage.cards.r.Repeal.class));
cards.add(new SetCardInfo("Restless Bones", 58, Rarity.COMMON, mage.cards.r.RestlessBones.class));
cards.add(new SetCardInfo("Revenant Patriarch", 59, Rarity.UNCOMMON, mage.cards.r.RevenantPatriarch.class));
cards.add(new SetCardInfo("Rumbling Slum", 126, Rarity.RARE, mage.cards.r.RumblingSlum.class));
cards.add(new SetCardInfo("Runeboggle", 33, Rarity.COMMON, mage.cards.r.Runeboggle.class));
cards.add(new SetCardInfo("Savage Twister", 127, Rarity.UNCOMMON, mage.cards.s.SavageTwister.class));
cards.add(new SetCardInfo("Scab-Clan Mauler", 128, Rarity.COMMON, mage.cards.s.ScabClanMauler.class));
cards.add(new SetCardInfo("Schismotivate", 129, Rarity.UNCOMMON, mage.cards.s.Schismotivate.class));
cards.add(new SetCardInfo("Scorched Rusalka", 74, Rarity.UNCOMMON, mage.cards.s.ScorchedRusalka.class));
cards.add(new SetCardInfo("Shadow Lance", 14, Rarity.UNCOMMON, mage.cards.s.ShadowLance.class));
cards.add(new SetCardInfo("Shattering Spree", 75, Rarity.UNCOMMON, mage.cards.s.ShatteringSpree.class));
cards.add(new SetCardInfo("Shrieking Grotesque", 15, Rarity.COMMON, mage.cards.s.ShriekingGrotesque.class));
cards.add(new SetCardInfo("Siege of Towers", 76, Rarity.RARE, mage.cards.s.SiegeOfTowers.class));
cards.add(new SetCardInfo("Silhana Ledgewalker", 94, Rarity.COMMON, mage.cards.s.SilhanaLedgewalker.class));
cards.add(new SetCardInfo("Silhana Starfletcher", 95, Rarity.COMMON, mage.cards.s.SilhanaStarfletcher.class));
cards.add(new SetCardInfo("Skarrgan Firebird", 77, Rarity.RARE, mage.cards.s.SkarrganFirebird.class));
cards.add(new SetCardInfo("Skarrgan Pit-Skulk", 96, Rarity.COMMON, mage.cards.s.SkarrganPitSkulk.class));
cards.add(new SetCardInfo("Skarrgan Skybreaker", 130, Rarity.UNCOMMON, mage.cards.s.SkarrganSkybreaker.class));
cards.add(new SetCardInfo("Skarrg, the Rage Pits", 163, Rarity.UNCOMMON, mage.cards.s.SkarrgTheRagePits.class));
cards.add(new SetCardInfo("Skeletal Vampire", 62, Rarity.RARE, mage.cards.s.SkeletalVampire.class));
cards.add(new SetCardInfo("Skyrider Trainee", 17, Rarity.COMMON, mage.cards.s.SkyriderTrainee.class));
cards.add(new SetCardInfo("Smogsteed Rider", 63, Rarity.UNCOMMON, mage.cards.s.SmogsteedRider.class));
cards.add(new SetCardInfo("Souls of the Faultless", 131, Rarity.UNCOMMON, mage.cards.s.SoulsOfTheFaultless.class));
cards.add(new SetCardInfo("Spelltithe Enforcer", 18, Rarity.RARE, mage.cards.s.SpelltitheEnforcer.class));
cards.add(new SetCardInfo("Starved Rusalka", 97, Rarity.UNCOMMON, mage.cards.s.StarvedRusalka.class));
cards.add(new SetCardInfo("Steamcore Weird", 35, Rarity.COMMON, mage.cards.s.SteamcoreWeird.class));
cards.add(new SetCardInfo("Steam Vents", 164, Rarity.RARE, mage.cards.s.SteamVents.class));
cards.add(new SetCardInfo("Stitch in Time", 132, Rarity.RARE, mage.cards.s.StitchInTime.class));
cards.add(new SetCardInfo("Stomping Ground", 165, Rarity.RARE, mage.cards.s.StompingGround.class));
cards.add(new SetCardInfo("Storm Herd", 19, Rarity.RARE, mage.cards.s.StormHerd.class));
cards.add(new SetCardInfo("Stratozeppelid", 36, Rarity.UNCOMMON, mage.cards.s.Stratozeppelid.class));
cards.add(new SetCardInfo("Streetbreaker Wurm", 133, Rarity.COMMON, mage.cards.s.StreetbreakerWurm.class));
cards.add(new SetCardInfo("Sword of the Paruns", 156, Rarity.RARE, mage.cards.s.SwordOfTheParuns.class));
cards.add(new SetCardInfo("Teysa, Orzhov Scion", 134, Rarity.RARE, mage.cards.t.TeysaOrzhovScion.class));
cards.add(new SetCardInfo("Thunderheads", 37, Rarity.UNCOMMON, mage.cards.t.Thunderheads.class));
cards.add(new SetCardInfo("Tibor and Lumia", 135, Rarity.RARE, mage.cards.t.TiborAndLumia.class));
cards.add(new SetCardInfo("Tin Street Hooligan", 78, Rarity.COMMON, mage.cards.t.TinStreetHooligan.class));
cards.add(new SetCardInfo("To Arms!", 20, Rarity.UNCOMMON, mage.cards.t.ToArms.class));
cards.add(new SetCardInfo("Torch Drake", 38, Rarity.COMMON, mage.cards.t.TorchDrake.class));
cards.add(new SetCardInfo("Train of Thought", 39, Rarity.COMMON, mage.cards.t.TrainOfThought.class));
cards.add(new SetCardInfo("Ulasht, the Hate Seed", 136, Rarity.RARE, mage.cards.u.UlashtTheHateSeed.class));
cards.add(new SetCardInfo("Vacuumelt", 40, Rarity.UNCOMMON, mage.cards.v.Vacuumelt.class));
cards.add(new SetCardInfo("Vedalken Plotter", 41, Rarity.UNCOMMON, mage.cards.v.VedalkenPlotter.class));
cards.add(new SetCardInfo("Vertigo Spawn", 42, Rarity.UNCOMMON, mage.cards.v.VertigoSpawn.class));
cards.add(new SetCardInfo("Wee Dragonauts", 137, Rarity.COMMON, mage.cards.w.WeeDragonauts.class));
cards.add(new SetCardInfo("Wild Cantor", 149, Rarity.COMMON, mage.cards.w.WildCantor.class));
cards.add(new SetCardInfo("Wildsize", 98, Rarity.COMMON, mage.cards.w.Wildsize.class));
cards.add(new SetCardInfo("Witch-Maw Nephilim", 138, Rarity.RARE, mage.cards.w.WitchMawNephilim.class));
cards.add(new SetCardInfo("Withstand", 21, Rarity.COMMON, mage.cards.w.Withstand.class));
cards.add(new SetCardInfo("Wreak Havoc", 139, Rarity.UNCOMMON, mage.cards.w.WreakHavoc.class));
cards.add(new SetCardInfo("Wurmweaver Coil", 99, Rarity.RARE, mage.cards.w.WurmweaverCoil.class));
cards.add(new SetCardInfo("Yore-Tiller Nephilim", 140, Rarity.RARE, mage.cards.y.YoreTillerNephilim.class));
}
}
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.SetType;
import mage.constants.Rarity;
/**
* Created by IntelliJ IDEA. User: Loki Date: 20.12.10 Time: 21:01
*/
public class Guildpact extends ExpansionSet {
private static final Guildpact fINSTANCE = new Guildpact();
public static Guildpact getInstance() {
return fINSTANCE;
}
private Guildpact() {
super("Guildpact", "GPT", ExpansionSet.buildDate(2006, 1, 3), SetType.EXPANSION);
this.blockName = "Ravnica";
this.parentSet = RavnicaCityOfGuilds.getInstance();
this.hasBasicLands = false;
this.hasBoosters = true;
this.numBoosterLands = 0;
this.numBoosterCommon = 11;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 0;
cards.add(new SetCardInfo("Absolver Thrull", 1, Rarity.COMMON, mage.cards.a.AbsolverThrull.class));
cards.add(new SetCardInfo("Abyssal Nocturnus", 43, Rarity.RARE, mage.cards.a.AbyssalNocturnus.class));
cards.add(new SetCardInfo("Agent of Masks", 100, Rarity.UNCOMMON, mage.cards.a.AgentOfMasks.class));
cards.add(new SetCardInfo("Angel of Despair", 101, Rarity.RARE, mage.cards.a.AngelOfDespair.class));
cards.add(new SetCardInfo("Battering Wurm", 79, Rarity.UNCOMMON, mage.cards.b.BatteringWurm.class));
cards.add(new SetCardInfo("Beastmaster's Magemark", 80, Rarity.COMMON, mage.cards.b.BeastmastersMagemark.class));
cards.add(new SetCardInfo("Belfry Spirit", 2, Rarity.UNCOMMON, mage.cards.b.BelfrySpirit.class));
cards.add(new SetCardInfo("Benediction of Moons", 3, Rarity.COMMON, mage.cards.b.BenedictionOfMoons.class));
cards.add(new SetCardInfo("Blind Hunter", 102, Rarity.COMMON, mage.cards.b.BlindHunter.class));
cards.add(new SetCardInfo("Bloodscale Prowler", 64, Rarity.COMMON, mage.cards.b.BloodscaleProwler.class));
cards.add(new SetCardInfo("Borborygmos", 103, Rarity.RARE, mage.cards.b.Borborygmos.class));
cards.add(new SetCardInfo("Burning-Tree Bloodscale", 104, Rarity.COMMON, mage.cards.b.BurningTreeBloodscale.class));
cards.add(new SetCardInfo("Burning-Tree Shaman", 105, Rarity.RARE, mage.cards.b.BurningTreeShaman.class));
cards.add(new SetCardInfo("Castigate", 106, Rarity.COMMON, mage.cards.c.Castigate.class));
cards.add(new SetCardInfo("Caustic Rain", 44, Rarity.UNCOMMON, mage.cards.c.CausticRain.class));
cards.add(new SetCardInfo("Cerebral Vortex", 107, Rarity.RARE, mage.cards.c.CerebralVortex.class));
cards.add(new SetCardInfo("Cremate", 45, Rarity.COMMON, mage.cards.c.Cremate.class));
cards.add(new SetCardInfo("Cry of Contrition", 46, Rarity.COMMON, mage.cards.c.CryOfContrition.class));
cards.add(new SetCardInfo("Crystal Seer", 23, Rarity.UNCOMMON, mage.cards.c.CrystalSeer.class));
cards.add(new SetCardInfo("Culling Sun", 109, Rarity.RARE, mage.cards.c.CullingSun.class));
cards.add(new SetCardInfo("Daggerclaw Imp", 48, Rarity.UNCOMMON, mage.cards.d.DaggerclawImp.class));
cards.add(new SetCardInfo("Debtors' Knell", 141, Rarity.RARE, mage.cards.d.DebtorsKnell.class));
cards.add(new SetCardInfo("Djinn Illuminatus", 142, Rarity.RARE, mage.cards.d.DjinnIlluminatus.class));
cards.add(new SetCardInfo("Douse in Gloom", 49, Rarity.COMMON, mage.cards.d.DouseInGloom.class));
cards.add(new SetCardInfo("Drowned Rusalka", 24, Rarity.UNCOMMON, mage.cards.d.DrownedRusalka.class));
cards.add(new SetCardInfo("Dryad Sophisticate", 83, Rarity.UNCOMMON, mage.cards.d.DryadSophisticate.class));
cards.add(new SetCardInfo("Dune-Brood Nephilim", 110, Rarity.RARE, mage.cards.d.DuneBroodNephilim.class));
cards.add(new SetCardInfo("Earth Surge", 84, Rarity.RARE, mage.cards.e.EarthSurge.class));
cards.add(new SetCardInfo("Electrolyze", 111, Rarity.UNCOMMON, mage.cards.e.Electrolyze.class));
cards.add(new SetCardInfo("Exhumer Thrull", 50, Rarity.UNCOMMON, mage.cards.e.ExhumerThrull.class));
cards.add(new SetCardInfo("Fencer's Magemark", 65, Rarity.COMMON, mage.cards.f.FencersMagemark.class));
cards.add(new SetCardInfo("Feral Animist", 112, Rarity.UNCOMMON, mage.cards.f.FeralAnimist.class));
cards.add(new SetCardInfo("Frazzle", 25, Rarity.UNCOMMON, mage.cards.f.Frazzle.class));
cards.add(new SetCardInfo("Gelectrode", 113, Rarity.UNCOMMON, mage.cards.g.Gelectrode.class));
cards.add(new SetCardInfo("Ghor-Clan Bloodscale", 66, Rarity.UNCOMMON, mage.cards.g.GhorClanBloodscale.class));
cards.add(new SetCardInfo("Ghor-Clan Savage", 86, Rarity.COMMON, mage.cards.g.GhorClanSavage.class));
cards.add(new SetCardInfo("Ghost Council of Orzhova", 114, Rarity.RARE, mage.cards.g.GhostCouncilOfOrzhova.class));
cards.add(new SetCardInfo("Ghost Warden", 5, Rarity.COMMON, mage.cards.g.GhostWarden.class));
cards.add(new SetCardInfo("Ghostway", 6, Rarity.RARE, mage.cards.g.Ghostway.class));
cards.add(new SetCardInfo("Giant Solifuge", 143, Rarity.RARE, mage.cards.g.GiantSolifuge.class));
cards.add(new SetCardInfo("Gigadrowse", 26, Rarity.COMMON, mage.cards.g.Gigadrowse.class));
cards.add(new SetCardInfo("Glint-Eye Nephilim", 115, Rarity.RARE, mage.cards.g.GlintEyeNephilim.class));
cards.add(new SetCardInfo("Goblin Flectomancer", 116, Rarity.UNCOMMON, mage.cards.g.GoblinFlectomancer.class));
cards.add(new SetCardInfo("Godless Shrine", 157, Rarity.RARE, mage.cards.g.GodlessShrine.class));
cards.add(new SetCardInfo("Graven Dominator", 7, Rarity.RARE, mage.cards.g.GravenDominator.class));
cards.add(new SetCardInfo("Gristleback", 87, Rarity.UNCOMMON, mage.cards.g.Gristleback.class));
cards.add(new SetCardInfo("Gruul Guildmage", 144, Rarity.UNCOMMON, mage.cards.g.GruulGuildmage.class));
cards.add(new SetCardInfo("Gruul Nodorog", 88, Rarity.COMMON, mage.cards.g.GruulNodorog.class));
cards.add(new SetCardInfo("Gruul Scrapper", 89, Rarity.COMMON, mage.cards.g.GruulScrapper.class));
cards.add(new SetCardInfo("Gruul Signet", 150, Rarity.COMMON, mage.cards.g.GruulSignet.class));
cards.add(new SetCardInfo("Gruul Turf", 158, Rarity.COMMON, mage.cards.g.GruulTurf.class));
cards.add(new SetCardInfo("Gruul War Plow", 151, Rarity.RARE, mage.cards.g.GruulWarPlow.class));
cards.add(new SetCardInfo("Guardian's Magemark", 8, Rarity.COMMON, mage.cards.g.GuardiansMagemark.class));
cards.add(new SetCardInfo("Harrier Griffin", 9, Rarity.UNCOMMON, mage.cards.h.HarrierGriffin.class));
cards.add(new SetCardInfo("Hatching Plans", 27, Rarity.RARE, mage.cards.h.HatchingPlans.class));
cards.add(new SetCardInfo("Hissing Miasma", 51, Rarity.UNCOMMON, mage.cards.h.HissingMiasma.class));
cards.add(new SetCardInfo("Hypervolt Grasp", 67, Rarity.UNCOMMON, mage.cards.h.HypervoltGrasp.class));
cards.add(new SetCardInfo("Infiltrator's Magemark", 28, Rarity.COMMON, mage.cards.i.InfiltratorsMagemark.class));
cards.add(new SetCardInfo("Ink-Treader Nephilim", 117, Rarity.RARE, mage.cards.i.InkTreaderNephilim.class));
cards.add(new SetCardInfo("Invoke the Firemind", 118, Rarity.RARE, mage.cards.i.InvokeTheFiremind.class));
cards.add(new SetCardInfo("Izzet Boilerworks", 159, Rarity.COMMON, mage.cards.i.IzzetBoilerworks.class));
cards.add(new SetCardInfo("Izzet Chronarch", 119, Rarity.COMMON, mage.cards.i.IzzetChronarch.class));
cards.add(new SetCardInfo("Izzet Guildmage", 145, Rarity.UNCOMMON, mage.cards.i.IzzetGuildmage.class));
cards.add(new SetCardInfo("Izzet Signet", 152, Rarity.COMMON, mage.cards.i.IzzetSignet.class));
cards.add(new SetCardInfo("Leap of Flame", 121, Rarity.COMMON, mage.cards.l.LeapOfFlame.class));
cards.add(new SetCardInfo("Leyline of Lifeforce", 90, Rarity.RARE, mage.cards.l.LeylineOfLifeforce.class));
cards.add(new SetCardInfo("Leyline of Lightning", 68, Rarity.RARE, mage.cards.l.LeylineOfLightning.class));
cards.add(new SetCardInfo("Leyline of Singularity", 29, Rarity.RARE, mage.cards.l.LeylineOfSingularity.class));
cards.add(new SetCardInfo("Leyline of the Meek", 10, Rarity.RARE, mage.cards.l.LeylineOfTheMeek.class));
cards.add(new SetCardInfo("Leyline of the Void", 52, Rarity.RARE, mage.cards.l.LeylineOfTheVoid.class));
cards.add(new SetCardInfo("Lionheart Maverick", 11, Rarity.COMMON, mage.cards.l.LionheartMaverick.class));
cards.add(new SetCardInfo("Martyred Rusalka", 12, Rarity.UNCOMMON, mage.cards.m.MartyredRusalka.class));
cards.add(new SetCardInfo("Mizzium Transreliquat", 153, Rarity.RARE, mage.cards.m.MizziumTransreliquat.class));
cards.add(new SetCardInfo("Mortify", 122, Rarity.UNCOMMON, mage.cards.m.Mortify.class));
cards.add(new SetCardInfo("Mourning Thrull", 146, Rarity.COMMON, mage.cards.m.MourningThrull.class));
cards.add(new SetCardInfo("Necromancer's Magemark", 53, Rarity.COMMON, mage.cards.n.NecromancersMagemark.class));
cards.add(new SetCardInfo("Nivix, Aerie of the Firemind", 160, Rarity.UNCOMMON, mage.cards.n.NivixAerieOfTheFiremind.class));
cards.add(new SetCardInfo("Niv-Mizzet, the Firemind", 123, Rarity.RARE, mage.cards.n.NivMizzetTheFiremind.class));
cards.add(new SetCardInfo("Ogre Savant", 70, Rarity.COMMON, mage.cards.o.OgreSavant.class));
cards.add(new SetCardInfo("Order of the Stars", 13, Rarity.UNCOMMON, mage.cards.o.OrderOfTheStars.class));
cards.add(new SetCardInfo("Orzhova, the Church of Deals", 162, Rarity.UNCOMMON, mage.cards.o.OrzhovaTheChurchOfDeals.class));
cards.add(new SetCardInfo("Orzhov Basilica", 161, Rarity.COMMON, mage.cards.o.OrzhovBasilica.class));
cards.add(new SetCardInfo("Orzhov Euthanist", 54, Rarity.COMMON, mage.cards.o.OrzhovEuthanist.class));
cards.add(new SetCardInfo("Orzhov Guildmage", 147, Rarity.UNCOMMON, mage.cards.o.OrzhovGuildmage.class));
cards.add(new SetCardInfo("Orzhov Pontiff", 124, Rarity.RARE, mage.cards.o.OrzhovPontiff.class));
cards.add(new SetCardInfo("Orzhov Signet", 155, Rarity.COMMON, mage.cards.o.OrzhovSignet.class));
cards.add(new SetCardInfo("Ostiary Thrull", 55, Rarity.COMMON, mage.cards.o.OstiaryThrull.class));
cards.add(new SetCardInfo("Petrahydrox", 148, Rarity.COMMON, mage.cards.p.Petrahydrox.class));
cards.add(new SetCardInfo("Pillory of the Sleepless", 125, Rarity.COMMON, mage.cards.p.PilloryOfTheSleepless.class));
cards.add(new SetCardInfo("Plagued Rusalka", 56, Rarity.UNCOMMON, mage.cards.p.PlaguedRusalka.class));
cards.add(new SetCardInfo("Poisonbelly Ogre", 57, Rarity.COMMON, mage.cards.p.PoisonbellyOgre.class));
cards.add(new SetCardInfo("Pyromatics", 72, Rarity.COMMON, mage.cards.p.Pyromatics.class));
cards.add(new SetCardInfo("Quicken", 31, Rarity.RARE, mage.cards.q.Quicken.class));
cards.add(new SetCardInfo("Rabble-Rouser", 73, Rarity.UNCOMMON, mage.cards.r.RabbleRouser.class));
cards.add(new SetCardInfo("Repeal", 32, Rarity.COMMON, mage.cards.r.Repeal.class));
cards.add(new SetCardInfo("Restless Bones", 58, Rarity.COMMON, mage.cards.r.RestlessBones.class));
cards.add(new SetCardInfo("Revenant Patriarch", 59, Rarity.UNCOMMON, mage.cards.r.RevenantPatriarch.class));
cards.add(new SetCardInfo("Rumbling Slum", 126, Rarity.RARE, mage.cards.r.RumblingSlum.class));
cards.add(new SetCardInfo("Runeboggle", 33, Rarity.COMMON, mage.cards.r.Runeboggle.class));
cards.add(new SetCardInfo("Sanguine Praetor", 60, Rarity.RARE, mage.cards.s.SanguinePraetor.class));
cards.add(new SetCardInfo("Savage Twister", 127, Rarity.UNCOMMON, mage.cards.s.SavageTwister.class));
cards.add(new SetCardInfo("Scab-Clan Mauler", 128, Rarity.COMMON, mage.cards.s.ScabClanMauler.class));
cards.add(new SetCardInfo("Schismotivate", 129, Rarity.UNCOMMON, mage.cards.s.Schismotivate.class));
cards.add(new SetCardInfo("Scorched Rusalka", 74, Rarity.UNCOMMON, mage.cards.s.ScorchedRusalka.class));
cards.add(new SetCardInfo("Shadow Lance", 14, Rarity.UNCOMMON, mage.cards.s.ShadowLance.class));
cards.add(new SetCardInfo("Shattering Spree", 75, Rarity.UNCOMMON, mage.cards.s.ShatteringSpree.class));
cards.add(new SetCardInfo("Shrieking Grotesque", 15, Rarity.COMMON, mage.cards.s.ShriekingGrotesque.class));
cards.add(new SetCardInfo("Siege of Towers", 76, Rarity.RARE, mage.cards.s.SiegeOfTowers.class));
cards.add(new SetCardInfo("Silhana Ledgewalker", 94, Rarity.COMMON, mage.cards.s.SilhanaLedgewalker.class));
cards.add(new SetCardInfo("Silhana Starfletcher", 95, Rarity.COMMON, mage.cards.s.SilhanaStarfletcher.class));
cards.add(new SetCardInfo("Skarrgan Firebird", 77, Rarity.RARE, mage.cards.s.SkarrganFirebird.class));
cards.add(new SetCardInfo("Skarrgan Pit-Skulk", 96, Rarity.COMMON, mage.cards.s.SkarrganPitSkulk.class));
cards.add(new SetCardInfo("Skarrgan Skybreaker", 130, Rarity.UNCOMMON, mage.cards.s.SkarrganSkybreaker.class));
cards.add(new SetCardInfo("Skarrg, the Rage Pits", 163, Rarity.UNCOMMON, mage.cards.s.SkarrgTheRagePits.class));
cards.add(new SetCardInfo("Skeletal Vampire", 62, Rarity.RARE, mage.cards.s.SkeletalVampire.class));
cards.add(new SetCardInfo("Skyrider Trainee", 17, Rarity.COMMON, mage.cards.s.SkyriderTrainee.class));
cards.add(new SetCardInfo("Smogsteed Rider", 63, Rarity.UNCOMMON, mage.cards.s.SmogsteedRider.class));
cards.add(new SetCardInfo("Souls of the Faultless", 131, Rarity.UNCOMMON, mage.cards.s.SoulsOfTheFaultless.class));
cards.add(new SetCardInfo("Spelltithe Enforcer", 18, Rarity.RARE, mage.cards.s.SpelltitheEnforcer.class));
cards.add(new SetCardInfo("Starved Rusalka", 97, Rarity.UNCOMMON, mage.cards.s.StarvedRusalka.class));
cards.add(new SetCardInfo("Steamcore Weird", 35, Rarity.COMMON, mage.cards.s.SteamcoreWeird.class));
cards.add(new SetCardInfo("Steam Vents", 164, Rarity.RARE, mage.cards.s.SteamVents.class));
cards.add(new SetCardInfo("Stitch in Time", 132, Rarity.RARE, mage.cards.s.StitchInTime.class));
cards.add(new SetCardInfo("Stomping Ground", 165, Rarity.RARE, mage.cards.s.StompingGround.class));
cards.add(new SetCardInfo("Storm Herd", 19, Rarity.RARE, mage.cards.s.StormHerd.class));
cards.add(new SetCardInfo("Stratozeppelid", 36, Rarity.UNCOMMON, mage.cards.s.Stratozeppelid.class));
cards.add(new SetCardInfo("Streetbreaker Wurm", 133, Rarity.COMMON, mage.cards.s.StreetbreakerWurm.class));
cards.add(new SetCardInfo("Sword of the Paruns", 156, Rarity.RARE, mage.cards.s.SwordOfTheParuns.class));
cards.add(new SetCardInfo("Teysa, Orzhov Scion", 134, Rarity.RARE, mage.cards.t.TeysaOrzhovScion.class));
cards.add(new SetCardInfo("Thunderheads", 37, Rarity.UNCOMMON, mage.cards.t.Thunderheads.class));
cards.add(new SetCardInfo("Tibor and Lumia", 135, Rarity.RARE, mage.cards.t.TiborAndLumia.class));
cards.add(new SetCardInfo("Tin Street Hooligan", 78, Rarity.COMMON, mage.cards.t.TinStreetHooligan.class));
cards.add(new SetCardInfo("To Arms!", 20, Rarity.UNCOMMON, mage.cards.t.ToArms.class));
cards.add(new SetCardInfo("Torch Drake", 38, Rarity.COMMON, mage.cards.t.TorchDrake.class));
cards.add(new SetCardInfo("Train of Thought", 39, Rarity.COMMON, mage.cards.t.TrainOfThought.class));
cards.add(new SetCardInfo("Ulasht, the Hate Seed", 136, Rarity.RARE, mage.cards.u.UlashtTheHateSeed.class));
cards.add(new SetCardInfo("Vacuumelt", 40, Rarity.UNCOMMON, mage.cards.v.Vacuumelt.class));
cards.add(new SetCardInfo("Vedalken Plotter", 41, Rarity.UNCOMMON, mage.cards.v.VedalkenPlotter.class));
cards.add(new SetCardInfo("Vertigo Spawn", 42, Rarity.UNCOMMON, mage.cards.v.VertigoSpawn.class));
cards.add(new SetCardInfo("Wee Dragonauts", 137, Rarity.COMMON, mage.cards.w.WeeDragonauts.class));
cards.add(new SetCardInfo("Wild Cantor", 149, Rarity.COMMON, mage.cards.w.WildCantor.class));
cards.add(new SetCardInfo("Wildsize", 98, Rarity.COMMON, mage.cards.w.Wildsize.class));
cards.add(new SetCardInfo("Witch-Maw Nephilim", 138, Rarity.RARE, mage.cards.w.WitchMawNephilim.class));
cards.add(new SetCardInfo("Withstand", 21, Rarity.COMMON, mage.cards.w.Withstand.class));
cards.add(new SetCardInfo("Wreak Havoc", 139, Rarity.UNCOMMON, mage.cards.w.WreakHavoc.class));
cards.add(new SetCardInfo("Wurmweaver Coil", 99, Rarity.RARE, mage.cards.w.WurmweaverCoil.class));
cards.add(new SetCardInfo("Yore-Tiller Nephilim", 140, Rarity.RARE, mage.cards.y.YoreTillerNephilim.class));
}
}

View file

@ -107,6 +107,7 @@ public class LimitedEditionAlpha extends ExpansionSet {
cards.add(new SetCardInfo("Fork", 153, Rarity.RARE, mage.cards.f.Fork.class));
cards.add(new SetCardInfo("Frozen Shade", 18, Rarity.COMMON, mage.cards.f.FrozenShade.class));
cards.add(new SetCardInfo("Fungusaur", 104, Rarity.RARE, mage.cards.f.Fungusaur.class));
cards.add(new SetCardInfo("Gaea's Liege", 105, Rarity.RARE, mage.cards.g.GaeasLiege.class));
cards.add(new SetCardInfo("Gauntlet of Might", 244, Rarity.RARE, mage.cards.g.GauntletOfMight.class));
cards.add(new SetCardInfo("Giant Growth", 106, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
cards.add(new SetCardInfo("Giant Spider", 107, Rarity.COMMON, mage.cards.g.GiantSpider.class));
@ -139,6 +140,7 @@ public class LimitedEditionAlpha extends ExpansionSet {
cards.add(new SetCardInfo("Island Sanctuary", 209, Rarity.RARE, mage.cards.i.IslandSanctuary.class));
cards.add(new SetCardInfo("Ivory Cup", 251, Rarity.UNCOMMON, mage.cards.i.IvoryCup.class));
cards.add(new SetCardInfo("Jade Monolith", 252, Rarity.RARE, mage.cards.j.JadeMonolith.class));
cards.add(new SetCardInfo("Jade Statue", 253, Rarity.UNCOMMON, mage.cards.j.JadeStatue.class));
cards.add(new SetCardInfo("Jayemdae Tome", 254, Rarity.RARE, mage.cards.j.JayemdaeTome.class));
cards.add(new SetCardInfo("Juggernaut", 255, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class));
cards.add(new SetCardInfo("Jump", 61, Rarity.COMMON, mage.cards.j.Jump.class));
@ -209,6 +211,7 @@ public class LimitedEditionAlpha extends ExpansionSet {
cards.add(new SetCardInfo("Reverse Damage", 219, Rarity.RARE, mage.cards.r.ReverseDamage.class));
cards.add(new SetCardInfo("Righteousness", 220, Rarity.RARE, mage.cards.r.Righteousness.class));
cards.add(new SetCardInfo("Roc of Kher Ridges", 171, Rarity.RARE, mage.cards.r.RocOfKherRidges.class));
cards.add(new SetCardInfo("Rock Hydra", 172, Rarity.RARE, mage.cards.r.RockHydra.class));
cards.add(new SetCardInfo("Rod of Ruin", 268, Rarity.UNCOMMON, mage.cards.r.RodOfRuin.class));
cards.add(new SetCardInfo("Royal Assassin", 32, Rarity.RARE, mage.cards.r.RoyalAssassin.class));
cards.add(new SetCardInfo("Sacrifice", 33, Rarity.UNCOMMON, mage.cards.s.Sacrifice.class));

View file

@ -109,6 +109,7 @@ public class LimitedEditionBeta extends ExpansionSet {
cards.add(new SetCardInfo("Fork", 154, Rarity.RARE, mage.cards.f.Fork.class));
cards.add(new SetCardInfo("Frozen Shade", 18, Rarity.COMMON, mage.cards.f.FrozenShade.class));
cards.add(new SetCardInfo("Fungusaur", 104, Rarity.RARE, mage.cards.f.Fungusaur.class));
cards.add(new SetCardInfo("Gaea's Liege", 105, Rarity.RARE, mage.cards.g.GaeasLiege.class));
cards.add(new SetCardInfo("Gauntlet of Might", 246, Rarity.RARE, mage.cards.g.GauntletOfMight.class));
cards.add(new SetCardInfo("Giant Growth", 106, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
cards.add(new SetCardInfo("Giant Spider", 107, Rarity.COMMON, mage.cards.g.GiantSpider.class));
@ -142,6 +143,7 @@ public class LimitedEditionBeta extends ExpansionSet {
cards.add(new SetCardInfo("Island Sanctuary", 211, Rarity.RARE, mage.cards.i.IslandSanctuary.class));
cards.add(new SetCardInfo("Ivory Cup", 253, Rarity.UNCOMMON, mage.cards.i.IvoryCup.class));
cards.add(new SetCardInfo("Jade Monolith", 254, Rarity.RARE, mage.cards.j.JadeMonolith.class));
cards.add(new SetCardInfo("Jade Statue", 255, Rarity.UNCOMMON, mage.cards.j.JadeStatue.class));
cards.add(new SetCardInfo("Jayemdae Tome", 256, Rarity.RARE, mage.cards.j.JayemdaeTome.class));
cards.add(new SetCardInfo("Juggernaut", 257, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class));
cards.add(new SetCardInfo("Jump", 61, Rarity.COMMON, mage.cards.j.Jump.class));
@ -214,6 +216,7 @@ public class LimitedEditionBeta extends ExpansionSet {
cards.add(new SetCardInfo("Reverse Damage", 221, Rarity.RARE, mage.cards.r.ReverseDamage.class));
cards.add(new SetCardInfo("Righteousness", 222, Rarity.RARE, mage.cards.r.Righteousness.class));
cards.add(new SetCardInfo("Roc of Kher Ridges", 172, Rarity.RARE, mage.cards.r.RocOfKherRidges.class));
cards.add(new SetCardInfo("Rock Hydra", 173, Rarity.RARE, mage.cards.r.RockHydra.class));
cards.add(new SetCardInfo("Rod of Ruin", 270, Rarity.UNCOMMON, mage.cards.r.RodOfRuin.class));
cards.add(new SetCardInfo("Royal Assassin", 32, Rarity.RARE, mage.cards.r.RoyalAssassin.class));
cards.add(new SetCardInfo("Sacrifice", 33, Rarity.UNCOMMON, mage.cards.s.Sacrifice.class));

View file

@ -213,8 +213,10 @@ public class MastersEditionIV extends ExpansionSet {
cards.add(new SetCardInfo("Regrowth", 163, Rarity.RARE, mage.cards.r.Regrowth.class));
cards.add(new SetCardInfo("Righteous Charge", 23, Rarity.COMMON, mage.cards.r.RighteousCharge.class));
cards.add(new SetCardInfo("Ring of Renewal", 224, Rarity.RARE, mage.cards.r.RingOfRenewal.class));
cards.add(new SetCardInfo("Rock Hydra", 133, Rarity.RARE, mage.cards.r.RockHydra.class));
cards.add(new SetCardInfo("Rockslide Ambush", 134, Rarity.COMMON, mage.cards.r.RockslideAmbush.class));
cards.add(new SetCardInfo("Roc of Kher Ridges", 132, Rarity.UNCOMMON, mage.cards.r.RocOfKherRidges.class));
cards.add(new SetCardInfo("Rock Hydra", 133, Rarity.RARE, mage.cards.r.RockHydra.class));
cards.add(new SetCardInfo("Sandstorm", 164, Rarity.COMMON, mage.cards.s.Sandstorm.class));
cards.add(new SetCardInfo("Savannah", 250, Rarity.RARE, mage.cards.s.Savannah.class));
cards.add(new SetCardInfo("Savannah Lions", 24, Rarity.UNCOMMON, mage.cards.s.SavannahLions.class));

View file

@ -1,293 +1,294 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.SetType;
import mage.constants.Rarity;
import mage.cards.CardGraphicInfo;
/**
*
* @author North
*/
public class Mirage extends ExpansionSet {
private static final Mirage fINSTANCE = new Mirage();
public static Mirage getInstance() {
return fINSTANCE;
}
private Mirage() {
super("Mirage", "MIR", ExpansionSet.buildDate(1996, 8, 21), SetType.EXPANSION);
this.blockName = "Mirage";
this.hasBoosters = true;
this.numBoosterLands = 0;
this.numBoosterCommon = 11;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 0;
cards.add(new SetCardInfo("Abyssal Hunter", 1, Rarity.RARE, mage.cards.a.AbyssalHunter.class));
cards.add(new SetCardInfo("Afterlife", 205, Rarity.UNCOMMON, mage.cards.a.Afterlife.class));
cards.add(new SetCardInfo("Agility", 154, Rarity.COMMON, mage.cards.a.Agility.class));
cards.add(new SetCardInfo("Alarum", 206, Rarity.COMMON, mage.cards.a.Alarum.class));
cards.add(new SetCardInfo("Aleatory", 155, Rarity.UNCOMMON, mage.cards.a.Aleatory.class));
cards.add(new SetCardInfo("Amber Prison", 257, Rarity.RARE, mage.cards.a.AmberPrison.class));
cards.add(new SetCardInfo("Ancestral Memories", 52, Rarity.RARE, mage.cards.a.AncestralMemories.class));
cards.add(new SetCardInfo("Armorer Guildmage", 156, Rarity.COMMON, mage.cards.a.ArmorerGuildmage.class));
cards.add(new SetCardInfo("Armor of Thorns", 104, Rarity.COMMON, mage.cards.a.ArmorOfThorns.class));
cards.add(new SetCardInfo("Ashen Powder", 2, Rarity.RARE, mage.cards.a.AshenPowder.class));
cards.add(new SetCardInfo("Asmira, Holy Avenger", 316, Rarity.RARE, mage.cards.a.AsmiraHolyAvenger.class));
cards.add(new SetCardInfo("Auspicious Ancestor", 207, Rarity.RARE, mage.cards.a.AuspiciousAncestor.class));
cards.add(new SetCardInfo("Azimaet Drake", 53, Rarity.COMMON, mage.cards.a.AzimaetDrake.class));
cards.add(new SetCardInfo("Bad River", 289, Rarity.UNCOMMON, mage.cards.b.BadRiver.class));
cards.add(new SetCardInfo("Barbed-Back Wurm", 3, Rarity.UNCOMMON, mage.cards.b.BarbedBackWurm.class));
cards.add(new SetCardInfo("Bay Falcon", 54, Rarity.COMMON, mage.cards.b.BayFalcon.class));
cards.add(new SetCardInfo("Benthic Djinn", 317, Rarity.RARE, mage.cards.b.BenthicDjinn.class));
cards.add(new SetCardInfo("Binding Agony", 4, Rarity.COMMON, mage.cards.b.BindingAgony.class));
cards.add(new SetCardInfo("Blighted Shaman", 5, Rarity.UNCOMMON, mage.cards.b.BlightedShaman.class));
cards.add(new SetCardInfo("Blinding Light", 209, Rarity.UNCOMMON, mage.cards.b.BlindingLight.class));
cards.add(new SetCardInfo("Blistering Barrier", 159, Rarity.COMMON, mage.cards.b.BlisteringBarrier.class));
cards.add(new SetCardInfo("Bone Harvest", 6, Rarity.COMMON, mage.cards.b.BoneHarvest.class));
cards.add(new SetCardInfo("Boomerang", 56, Rarity.COMMON, mage.cards.b.Boomerang.class));
cards.add(new SetCardInfo("Breathstealer", 7, Rarity.COMMON, mage.cards.b.Breathstealer.class));
cards.add(new SetCardInfo("Brushwagg", 106, Rarity.RARE, mage.cards.b.Brushwagg.class));
cards.add(new SetCardInfo("Burning Shield Askari", 162, Rarity.COMMON, mage.cards.b.BurningShieldAskari.class));
cards.add(new SetCardInfo("Cadaverous Bloom", 318, Rarity.RARE, mage.cards.c.CadaverousBloom.class));
cards.add(new SetCardInfo("Cadaverous Knight", 8, Rarity.COMMON, mage.cards.c.CadaverousKnight.class));
cards.add(new SetCardInfo("Canopy Dragon", 107, Rarity.RARE, mage.cards.c.CanopyDragon.class));
cards.add(new SetCardInfo("Celestial Dawn", 210, Rarity.RARE, mage.cards.c.CelestialDawn.class));
cards.add(new SetCardInfo("Cerulean Wyvern", 57, Rarity.UNCOMMON, mage.cards.c.CeruleanWyvern.class));
cards.add(new SetCardInfo("Chaos Charm", 163, Rarity.COMMON, mage.cards.c.ChaosCharm.class));
cards.add(new SetCardInfo("Charcoal Diamond", 261, Rarity.UNCOMMON, mage.cards.c.CharcoalDiamond.class));
cards.add(new SetCardInfo("Choking Sands", 11, Rarity.COMMON, mage.cards.c.ChokingSands.class));
cards.add(new SetCardInfo("Civic Guildmage", 211, Rarity.COMMON, mage.cards.c.CivicGuildmage.class));
cards.add(new SetCardInfo("Cloak of Invisibility", 58, Rarity.COMMON, mage.cards.c.CloakOfInvisibility.class));
cards.add(new SetCardInfo("Coral Fighters", 59, Rarity.UNCOMMON, mage.cards.c.CoralFighters.class));
cards.add(new SetCardInfo("Crash of Rhinos", 108, Rarity.COMMON, mage.cards.c.CrashOfRhinos.class));
cards.add(new SetCardInfo("Crimson Hellkite", 167, Rarity.RARE, mage.cards.c.CrimsonHellkite.class));
cards.add(new SetCardInfo("Crypt Cobra", 12, Rarity.UNCOMMON, mage.cards.c.CryptCobra.class));
cards.add(new SetCardInfo("Crystal Golem", 263, Rarity.UNCOMMON, mage.cards.c.CrystalGolem.class));
cards.add(new SetCardInfo("Crystal Vein", 290, Rarity.UNCOMMON, mage.cards.c.CrystalVein.class));
cards.add(new SetCardInfo("Cursed Totem", 264, Rarity.RARE, mage.cards.c.CursedTotem.class));
cards.add(new SetCardInfo("Daring Apprentice", 60, Rarity.RARE, mage.cards.d.DaringApprentice.class));
cards.add(new SetCardInfo("Dark Banishing", 13, Rarity.COMMON, mage.cards.d.DarkBanishing.class));
cards.add(new SetCardInfo("Dark Ritual", 14, Rarity.COMMON, mage.cards.d.DarkRitual.class));
cards.add(new SetCardInfo("Dirtwater Wraith", 15, Rarity.COMMON, mage.cards.d.DirtwaterWraith.class));
cards.add(new SetCardInfo("Disenchant", 214, Rarity.COMMON, mage.cards.d.Disenchant.class));
cards.add(new SetCardInfo("Dissipate", 61, Rarity.UNCOMMON, mage.cards.d.Dissipate.class));
cards.add(new SetCardInfo("Divine Offering", 215, Rarity.COMMON, mage.cards.d.DivineOffering.class));
cards.add(new SetCardInfo("Drain Life", 16, Rarity.COMMON, mage.cards.d.DrainLife.class));
cards.add(new SetCardInfo("Dread Specter", 17, Rarity.UNCOMMON, mage.cards.d.DreadSpecter.class));
cards.add(new SetCardInfo("Dream Cache", 62, Rarity.COMMON, mage.cards.d.DreamCache.class));
cards.add(new SetCardInfo("Dwarven Miner", 169, Rarity.UNCOMMON, mage.cards.d.DwarvenMiner.class));
cards.add(new SetCardInfo("Dwarven Nomad", 170, Rarity.COMMON, mage.cards.d.DwarvenNomad.class));
cards.add(new SetCardInfo("Early Harvest", 111, Rarity.RARE, mage.cards.e.EarlyHarvest.class));
cards.add(new SetCardInfo("Ebony Charm", 18, Rarity.COMMON, mage.cards.e.EbonyCharm.class));
cards.add(new SetCardInfo("Ekundu Griffin", 217, Rarity.COMMON, mage.cards.e.EkunduGriffin.class));
cards.add(new SetCardInfo("Elixir of Vitality", 265, Rarity.UNCOMMON, mage.cards.e.ElixirOfVitality.class));
cards.add(new SetCardInfo("Enfeeblement", 19, Rarity.COMMON, mage.cards.e.Enfeeblement.class));
cards.add(new SetCardInfo("Enlightened Tutor", 218, Rarity.UNCOMMON, mage.cards.e.EnlightenedTutor.class));
cards.add(new SetCardInfo("Ersatz Gnomes", 266, Rarity.UNCOMMON, mage.cards.e.ErsatzGnomes.class));
cards.add(new SetCardInfo("Ethereal Champion", 219, Rarity.RARE, mage.cards.e.EtherealChampion.class));
cards.add(new SetCardInfo("Fallow Earth", 112, Rarity.UNCOMMON, mage.cards.f.FallowEarth.class));
cards.add(new SetCardInfo("Femeref Archers", 113, Rarity.UNCOMMON, mage.cards.f.FemerefArchers.class));
cards.add(new SetCardInfo("Femeref Healer", 221, Rarity.COMMON, mage.cards.f.FemerefHealer.class));
cards.add(new SetCardInfo("Femeref Knight", 222, Rarity.COMMON, mage.cards.f.FemerefKnight.class));
cards.add(new SetCardInfo("Femeref Scouts", 223, Rarity.COMMON, mage.cards.f.FemerefScouts.class));
cards.add(new SetCardInfo("Feral Shadow", 20, Rarity.COMMON, mage.cards.f.FeralShadow.class));
cards.add(new SetCardInfo("Fetid Horror", 21, Rarity.COMMON, mage.cards.f.FetidHorror.class));
cards.add(new SetCardInfo("Final Fortune", 173, Rarity.RARE, mage.cards.f.FinalFortune.class));
cards.add(new SetCardInfo("Firebreathing", 174, Rarity.COMMON, mage.cards.f.Firebreathing.class));
cards.add(new SetCardInfo("Fire Diamond", 267, Rarity.UNCOMMON, mage.cards.f.FireDiamond.class));
cards.add(new SetCardInfo("Flare", 176, Rarity.COMMON, mage.cards.f.Flare.class));
cards.add(new SetCardInfo("Flash", 66, Rarity.RARE, mage.cards.f.Flash.class));
cards.add(new SetCardInfo("Flood Plain", 291, Rarity.UNCOMMON, mage.cards.f.FloodPlain.class));
cards.add(new SetCardInfo("Fog", 114, Rarity.COMMON, mage.cards.f.Fog.class));
cards.add(new SetCardInfo("Foratog", 115, Rarity.UNCOMMON, mage.cards.f.Foratog.class));
cards.add(new SetCardInfo("Forbidden Crypt", 22, Rarity.RARE, mage.cards.f.ForbiddenCrypt.class));
cards.add(new SetCardInfo("Forest", 292, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 293, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 294, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 295, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forsaken Wastes", 23, Rarity.RARE, mage.cards.f.ForsakenWastes.class));
cards.add(new SetCardInfo("Frenetic Efreet", 324, Rarity.RARE, mage.cards.f.FreneticEfreet.class));
cards.add(new SetCardInfo("Giant Mantis", 116, Rarity.COMMON, mage.cards.g.GiantMantis.class));
cards.add(new SetCardInfo("Goblin Elite Infantry", 177, Rarity.COMMON, mage.cards.g.GoblinEliteInfantry.class));
cards.add(new SetCardInfo("Goblin Scouts", 178, Rarity.UNCOMMON, mage.cards.g.GoblinScouts.class));
cards.add(new SetCardInfo("Goblin Soothsayer", 179, Rarity.COMMON, mage.cards.g.GoblinSoothsayer.class));
cards.add(new SetCardInfo("Goblin Tinkerer", 180, Rarity.COMMON, mage.cards.g.GoblinTinkerer.class));
cards.add(new SetCardInfo("Granger Guildmage", 118, Rarity.COMMON, mage.cards.g.GrangerGuildmage.class));
cards.add(new SetCardInfo("Grasslands", 296, Rarity.UNCOMMON, mage.cards.g.Grasslands.class));
cards.add(new SetCardInfo("Gravebane Zombie", 25, Rarity.COMMON, mage.cards.g.GravebaneZombie.class));
cards.add(new SetCardInfo("Grave Servitude", 24, Rarity.COMMON, mage.cards.g.GraveServitude.class));
cards.add(new SetCardInfo("Grinning Totem", 268, Rarity.RARE, mage.cards.g.GrinningTotem.class));
cards.add(new SetCardInfo("Hammer of Bogardan", 181, Rarity.RARE, mage.cards.h.HammerOfBogardan.class));
cards.add(new SetCardInfo("Harbinger of Night", 26, Rarity.RARE, mage.cards.h.HarbingerOfNight.class));
cards.add(new SetCardInfo("Harmattan Efreet", 69, Rarity.UNCOMMON, mage.cards.h.HarmattanEfreet.class));
cards.add(new SetCardInfo("Hazerider Drake", 328, Rarity.UNCOMMON, mage.cards.h.HazeriderDrake.class));
cards.add(new SetCardInfo("Healing Salve", 224, Rarity.COMMON, mage.cards.h.HealingSalve.class));
cards.add(new SetCardInfo("Horrible Hordes", 269, Rarity.UNCOMMON, mage.cards.h.HorribleHordes.class));
cards.add(new SetCardInfo("Igneous Golem", 270, Rarity.UNCOMMON, mage.cards.i.IgneousGolem.class));
cards.add(new SetCardInfo("Illicit Auction", 183, Rarity.RARE, mage.cards.i.IllicitAuction.class));
cards.add(new SetCardInfo("Illumination", 225, Rarity.UNCOMMON, mage.cards.i.Illumination.class));
cards.add(new SetCardInfo("Incinerate", 184, Rarity.COMMON, mage.cards.i.Incinerate.class));
cards.add(new SetCardInfo("Infernal Contract", 27, Rarity.RARE, mage.cards.i.InfernalContract.class));
cards.add(new SetCardInfo("Iron Tusk Elephant", 226, Rarity.UNCOMMON, mage.cards.i.IronTuskElephant.class));
cards.add(new SetCardInfo("Island", 297, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 298, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 299, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 300, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Ivory Charm", 227, Rarity.COMMON, mage.cards.i.IvoryCharm.class));
cards.add(new SetCardInfo("Jolrael's Centaur", 120, Rarity.COMMON, mage.cards.j.JolraelsCentaur.class));
cards.add(new SetCardInfo("Jolt", 70, Rarity.COMMON, mage.cards.j.Jolt.class));
cards.add(new SetCardInfo("Jungle Patrol", 121, Rarity.RARE, mage.cards.j.JunglePatrol.class));
cards.add(new SetCardInfo("Jungle Troll", 329, Rarity.UNCOMMON, mage.cards.j.JungleTroll.class));
cards.add(new SetCardInfo("Jungle Wurm", 122, Rarity.COMMON, mage.cards.j.JungleWurm.class));
cards.add(new SetCardInfo("Kaervek's Torch", 185, Rarity.COMMON, mage.cards.k.KaerveksTorch.class));
cards.add(new SetCardInfo("Karoo Meerkat", 123, Rarity.UNCOMMON, mage.cards.k.KarooMeerkat.class));
cards.add(new SetCardInfo("Kukemssa Serpent", 72, Rarity.COMMON, mage.cards.k.KukemssaSerpent.class));
cards.add(new SetCardInfo("Lead Golem", 271, Rarity.UNCOMMON, mage.cards.l.LeadGolem.class));
cards.add(new SetCardInfo("Lightning Reflexes", 186, Rarity.COMMON, mage.cards.l.LightningReflexes.class));
cards.add(new SetCardInfo("Lion's Eye Diamond", 272, Rarity.RARE, mage.cards.l.LionsEyeDiamond.class));
cards.add(new SetCardInfo("Locust Swarm", 124, Rarity.UNCOMMON, mage.cards.l.LocustSwarm.class));
cards.add(new SetCardInfo("Mana Prism", 273, Rarity.UNCOMMON, mage.cards.m.ManaPrism.class));
cards.add(new SetCardInfo("Marble Diamond", 275, Rarity.UNCOMMON, mage.cards.m.MarbleDiamond.class));
cards.add(new SetCardInfo("Maro", 126, Rarity.RARE, mage.cards.m.Maro.class));
cards.add(new SetCardInfo("Melesse Spirit", 231, Rarity.UNCOMMON, mage.cards.m.MelesseSpirit.class));
cards.add(new SetCardInfo("Memory Lapse", 74, Rarity.COMMON, mage.cards.m.MemoryLapse.class));
cards.add(new SetCardInfo("Merfolk Raiders", 75, Rarity.COMMON, mage.cards.m.MerfolkRaiders.class));
cards.add(new SetCardInfo("Merfolk Seer", 76, Rarity.COMMON, mage.cards.m.MerfolkSeer.class));
cards.add(new SetCardInfo("Mist Dragon", 79, Rarity.RARE, mage.cards.m.MistDragon.class));
cards.add(new SetCardInfo("Moss Diamond", 277, Rarity.UNCOMMON, mage.cards.m.MossDiamond.class));
cards.add(new SetCardInfo("Mountain", 301, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 302, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 303, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 304, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain Valley", 305, Rarity.UNCOMMON, mage.cards.m.MountainValley.class));
cards.add(new SetCardInfo("Mtenda Griffin", 232, Rarity.UNCOMMON, mage.cards.m.MtendaGriffin.class));
cards.add(new SetCardInfo("Mtenda Herder", 233, Rarity.COMMON, mage.cards.m.MtendaHerder.class));
cards.add(new SetCardInfo("Mystical Tutor", 80, Rarity.UNCOMMON, mage.cards.m.MysticalTutor.class));
cards.add(new SetCardInfo("Nettletooth Djinn", 130, Rarity.UNCOMMON, mage.cards.n.NettletoothDjinn.class));
cards.add(new SetCardInfo("Nocturnal Raid", 30, Rarity.UNCOMMON, mage.cards.n.NocturnalRaid.class));
cards.add(new SetCardInfo("Pacifism", 236, Rarity.COMMON, mage.cards.p.Pacifism.class));
cards.add(new SetCardInfo("Painful Memories", 31, Rarity.UNCOMMON, mage.cards.p.PainfulMemories.class));
cards.add(new SetCardInfo("Patagia Golem", 278, Rarity.UNCOMMON, mage.cards.p.PatagiaGolem.class));
cards.add(new SetCardInfo("Paupers' Cage", 279, Rarity.RARE, mage.cards.p.PaupersCage.class));
cards.add(new SetCardInfo("Pearl Dragon", 237, Rarity.RARE, mage.cards.p.PearlDragon.class));
cards.add(new SetCardInfo("Phyrexian Dreadnought", 280, Rarity.RARE, mage.cards.p.PhyrexianDreadnought.class));
cards.add(new SetCardInfo("Phyrexian Tribute", 32, Rarity.RARE, mage.cards.p.PhyrexianTribute.class));
cards.add(new SetCardInfo("Phyrexian Vault", 281, Rarity.UNCOMMON, mage.cards.p.PhyrexianVault.class));
cards.add(new SetCardInfo("Plains", 306, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 307, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 308, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 309, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Political Trickery", 81, Rarity.RARE, mage.cards.p.PoliticalTrickery.class));
cards.add(new SetCardInfo("Polymorph", 82, Rarity.RARE, mage.cards.p.Polymorph.class));
cards.add(new SetCardInfo("Power Sink", 83, Rarity.COMMON, mage.cards.p.PowerSink.class));
cards.add(new SetCardInfo("Psychic Transfer", 85, Rarity.RARE, mage.cards.p.PsychicTransfer.class));
cards.add(new SetCardInfo("Quirion Elves", 132, Rarity.COMMON, mage.cards.q.QuirionElves.class));
cards.add(new SetCardInfo("Radiant Essence", 336, Rarity.UNCOMMON, mage.cards.r.RadiantEssence.class));
cards.add(new SetCardInfo("Raging Spirit", 188, Rarity.COMMON, mage.cards.r.RagingSpirit.class));
cards.add(new SetCardInfo("Rampant Growth", 133, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
cards.add(new SetCardInfo("Rashida Scalebane", 239, Rarity.RARE, mage.cards.r.RashidaScalebane.class));
cards.add(new SetCardInfo("Ray of Command", 86, Rarity.COMMON, mage.cards.r.RayOfCommand.class));
cards.add(new SetCardInfo("Reality Ripple", 87, Rarity.COMMON, mage.cards.r.RealityRipple.class));
cards.add(new SetCardInfo("Reckless Embermage", 189, Rarity.RARE, mage.cards.r.RecklessEmbermage.class));
cards.add(new SetCardInfo("Regeneration", 134, Rarity.COMMON, mage.cards.r.Regeneration.class));
cards.add(new SetCardInfo("Restless Dead", 36, Rarity.COMMON, mage.cards.r.RestlessDead.class));
cards.add(new SetCardInfo("Ritual of Steel", 240, Rarity.COMMON, mage.cards.r.RitualOfSteel.class));
cards.add(new SetCardInfo("Rock Basilisk", 339, Rarity.RARE, mage.cards.r.RockBasilisk.class));
cards.add(new SetCardInfo("Rocky Tar Pit", 310, Rarity.UNCOMMON, mage.cards.r.RockyTarPit.class));
cards.add(new SetCardInfo("Sabertooth Cobra", 136, Rarity.COMMON, mage.cards.s.SabertoothCobra.class));
cards.add(new SetCardInfo("Sacred Mesa", 241, Rarity.RARE, mage.cards.s.SacredMesa.class));
cards.add(new SetCardInfo("Sandbar Crocodile", 88, Rarity.COMMON, mage.cards.s.SandbarCrocodile.class));
cards.add(new SetCardInfo("Sandstorm", 137, Rarity.COMMON, mage.cards.s.Sandstorm.class));
cards.add(new SetCardInfo("Sapphire Charm", 89, Rarity.COMMON, mage.cards.s.SapphireCharm.class));
cards.add(new SetCardInfo("Savage Twister", 340, Rarity.UNCOMMON, mage.cards.s.SavageTwister.class));
cards.add(new SetCardInfo("Searing Spear Askari", 191, Rarity.COMMON, mage.cards.s.SearingSpearAskari.class));
cards.add(new SetCardInfo("Sea Scryer", 90, Rarity.COMMON, mage.cards.s.SeaScryer.class));
cards.add(new SetCardInfo("Seedling Charm", 138, Rarity.COMMON, mage.cards.s.SeedlingCharm.class));
cards.add(new SetCardInfo("Serene Heart", 140, Rarity.COMMON, mage.cards.s.SereneHeart.class));
cards.add(new SetCardInfo("Sewer Rats", 37, Rarity.COMMON, mage.cards.s.SewerRats.class));
cards.add(new SetCardInfo("Shadow Guildmage", 38, Rarity.COMMON, mage.cards.s.ShadowGuildmage.class));
cards.add(new SetCardInfo("Shallow Grave", 39, Rarity.RARE, mage.cards.s.ShallowGrave.class));
cards.add(new SetCardInfo("Shaper Guildmage", 91, Rarity.COMMON, mage.cards.s.ShaperGuildmage.class));
cards.add(new SetCardInfo("Shimmer", 92, Rarity.RARE, mage.cards.s.Shimmer.class));
cards.add(new SetCardInfo("Sidar Jabari", 243, Rarity.RARE, mage.cards.s.SidarJabari.class));
cards.add(new SetCardInfo("Skulking Ghost", 41, Rarity.COMMON, mage.cards.s.SkulkingGhost.class));
cards.add(new SetCardInfo("Sky Diamond", 284, Rarity.UNCOMMON, mage.cards.s.SkyDiamond.class));
cards.add(new SetCardInfo("Soar", 93, Rarity.COMMON, mage.cards.s.Soar.class));
cards.add(new SetCardInfo("Soul Rend", 42, Rarity.UNCOMMON, mage.cards.s.SoulRend.class));
cards.add(new SetCardInfo("Spirit of the Night", 44, Rarity.RARE, mage.cards.s.SpiritOfTheNight.class));
cards.add(new SetCardInfo("Spitting Earth", 193, Rarity.COMMON, mage.cards.s.SpittingEarth.class));
cards.add(new SetCardInfo("Stalking Tiger", 141, Rarity.COMMON, mage.cards.s.StalkingTiger.class));
cards.add(new SetCardInfo("Stone Rain", 194, Rarity.COMMON, mage.cards.s.StoneRain.class));
cards.add(new SetCardInfo("Stupor", 45, Rarity.UNCOMMON, mage.cards.s.Stupor.class));
cards.add(new SetCardInfo("Sunweb", 246, Rarity.RARE, mage.cards.s.Sunweb.class));
cards.add(new SetCardInfo("Swamp", 311, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 312, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 313, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 314, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Talruum Minotaur", 196, Rarity.COMMON, mage.cards.t.TalruumMinotaur.class));
cards.add(new SetCardInfo("Taniwha", 95, Rarity.RARE, mage.cards.t.Taniwha.class));
cards.add(new SetCardInfo("Teeka's Dragon", 285, Rarity.RARE, mage.cards.t.TeekasDragon.class));
cards.add(new SetCardInfo("Teferi's Curse", 96, Rarity.COMMON, mage.cards.t.TeferisCurse.class));
cards.add(new SetCardInfo("Teferi's Drake", 97, Rarity.COMMON, mage.cards.t.TeferisDrake.class));
cards.add(new SetCardInfo("Teferi's Isle", 315, Rarity.RARE, mage.cards.t.TeferisIsle.class));
cards.add(new SetCardInfo("Telim'Tor's Darts", 286, Rarity.UNCOMMON, mage.cards.t.TelimTorsDarts.class));
cards.add(new SetCardInfo("Thirst", 99, Rarity.COMMON, mage.cards.t.Thirst.class));
cards.add(new SetCardInfo("Tidal Wave", 100, Rarity.UNCOMMON, mage.cards.t.TidalWave.class));
cards.add(new SetCardInfo("Tranquil Domain", 143, Rarity.COMMON, mage.cards.t.TranquilDomain.class));
cards.add(new SetCardInfo("Uktabi Wildcats", 146, Rarity.RARE, mage.cards.u.UktabiWildcats.class));
cards.add(new SetCardInfo("Unfulfilled Desires", 345, Rarity.RARE, mage.cards.u.UnfulfilledDesires.class));
cards.add(new SetCardInfo("Unseen Walker", 147, Rarity.UNCOMMON, mage.cards.u.UnseenWalker.class));
cards.add(new SetCardInfo("Unyaro Bee Sting", 148, Rarity.UNCOMMON, mage.cards.u.UnyaroBeeSting.class));
cards.add(new SetCardInfo("Unyaro Griffin", 248, Rarity.UNCOMMON, mage.cards.u.UnyaroGriffin.class));
cards.add(new SetCardInfo("Vaporous Djinn", 101, Rarity.UNCOMMON, mage.cards.v.VaporousDjinn.class));
cards.add(new SetCardInfo("Viashino Warrior", 200, Rarity.COMMON, mage.cards.v.ViashinoWarrior.class));
cards.add(new SetCardInfo("Vigilant Martyr", 249, Rarity.UNCOMMON, mage.cards.v.VigilantMartyr.class));
cards.add(new SetCardInfo("Village Elder", 149, Rarity.COMMON, mage.cards.v.VillageElder.class));
cards.add(new SetCardInfo("Vitalizing Cascade", 346, Rarity.UNCOMMON, mage.cards.v.VitalizingCascade.class));
cards.add(new SetCardInfo("Volcanic Dragon", 201, Rarity.RARE, mage.cards.v.VolcanicDragon.class));
cards.add(new SetCardInfo("Volcanic Geyser", 202, Rarity.UNCOMMON, mage.cards.v.VolcanicGeyser.class));
cards.add(new SetCardInfo("Waiting in the Weeds", 150, Rarity.RARE, mage.cards.w.WaitingInTheWeeds.class));
cards.add(new SetCardInfo("Wall of Roots", 151, Rarity.COMMON, mage.cards.w.WallOfRoots.class));
cards.add(new SetCardInfo("Ward of Lights", 251, Rarity.COMMON, mage.cards.w.WardOfLights.class));
cards.add(new SetCardInfo("Wild Elephant", 152, Rarity.COMMON, mage.cards.w.WildElephant.class));
cards.add(new SetCardInfo("Wildfire Emissary", 203, Rarity.UNCOMMON, mage.cards.w.WildfireEmissary.class));
cards.add(new SetCardInfo("Windreaper Falcon", 349, Rarity.UNCOMMON, mage.cards.w.WindreaperFalcon.class));
cards.add(new SetCardInfo("Withering Boon", 50, Rarity.UNCOMMON, mage.cards.w.WitheringBoon.class));
cards.add(new SetCardInfo("Worldly Tutor", 153, Rarity.UNCOMMON, mage.cards.w.WorldlyTutor.class));
cards.add(new SetCardInfo("Zebra Unicorn", 350, Rarity.UNCOMMON, mage.cards.z.ZebraUnicorn.class));
cards.add(new SetCardInfo("Zhalfirin Commander", 253, Rarity.UNCOMMON, mage.cards.z.ZhalfirinCommander.class));
cards.add(new SetCardInfo("Zhalfirin Knight", 254, Rarity.COMMON, mage.cards.z.ZhalfirinKnight.class));
cards.add(new SetCardInfo("Zirilan of the Claw", 204, Rarity.RARE, mage.cards.z.ZirilanOfTheClaw.class));
cards.add(new SetCardInfo("Zuberi, Golden Feather", 255, Rarity.RARE, mage.cards.z.ZuberiGoldenFeather.class));
}
}
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.SetType;
import mage.constants.Rarity;
import mage.cards.CardGraphicInfo;
/**
*
* @author North
*/
public class Mirage extends ExpansionSet {
private static final Mirage fINSTANCE = new Mirage();
public static Mirage getInstance() {
return fINSTANCE;
}
private Mirage() {
super("Mirage", "MIR", ExpansionSet.buildDate(1996, 8, 21), SetType.EXPANSION);
this.blockName = "Mirage";
this.hasBoosters = true;
this.numBoosterLands = 0;
this.numBoosterCommon = 11;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 0;
cards.add(new SetCardInfo("Abyssal Hunter", 1, Rarity.RARE, mage.cards.a.AbyssalHunter.class));
cards.add(new SetCardInfo("Afterlife", 205, Rarity.UNCOMMON, mage.cards.a.Afterlife.class));
cards.add(new SetCardInfo("Agility", 154, Rarity.COMMON, mage.cards.a.Agility.class));
cards.add(new SetCardInfo("Alarum", 206, Rarity.COMMON, mage.cards.a.Alarum.class));
cards.add(new SetCardInfo("Aleatory", 155, Rarity.UNCOMMON, mage.cards.a.Aleatory.class));
cards.add(new SetCardInfo("Amber Prison", 257, Rarity.RARE, mage.cards.a.AmberPrison.class));
cards.add(new SetCardInfo("Ancestral Memories", 52, Rarity.RARE, mage.cards.a.AncestralMemories.class));
cards.add(new SetCardInfo("Armorer Guildmage", 156, Rarity.COMMON, mage.cards.a.ArmorerGuildmage.class));
cards.add(new SetCardInfo("Armor of Thorns", 104, Rarity.COMMON, mage.cards.a.ArmorOfThorns.class));
cards.add(new SetCardInfo("Ashen Powder", 2, Rarity.RARE, mage.cards.a.AshenPowder.class));
cards.add(new SetCardInfo("Asmira, Holy Avenger", 316, Rarity.RARE, mage.cards.a.AsmiraHolyAvenger.class));
cards.add(new SetCardInfo("Auspicious Ancestor", 207, Rarity.RARE, mage.cards.a.AuspiciousAncestor.class));
cards.add(new SetCardInfo("Azimaet Drake", 53, Rarity.COMMON, mage.cards.a.AzimaetDrake.class));
cards.add(new SetCardInfo("Bad River", 289, Rarity.UNCOMMON, mage.cards.b.BadRiver.class));
cards.add(new SetCardInfo("Barbed-Back Wurm", 3, Rarity.UNCOMMON, mage.cards.b.BarbedBackWurm.class));
cards.add(new SetCardInfo("Bay Falcon", 54, Rarity.COMMON, mage.cards.b.BayFalcon.class));
cards.add(new SetCardInfo("Benthic Djinn", 317, Rarity.RARE, mage.cards.b.BenthicDjinn.class));
cards.add(new SetCardInfo("Binding Agony", 4, Rarity.COMMON, mage.cards.b.BindingAgony.class));
cards.add(new SetCardInfo("Blighted Shaman", 5, Rarity.UNCOMMON, mage.cards.b.BlightedShaman.class));
cards.add(new SetCardInfo("Blinding Light", 209, Rarity.UNCOMMON, mage.cards.b.BlindingLight.class));
cards.add(new SetCardInfo("Blistering Barrier", 159, Rarity.COMMON, mage.cards.b.BlisteringBarrier.class));
cards.add(new SetCardInfo("Bone Harvest", 6, Rarity.COMMON, mage.cards.b.BoneHarvest.class));
cards.add(new SetCardInfo("Boomerang", 56, Rarity.COMMON, mage.cards.b.Boomerang.class));
cards.add(new SetCardInfo("Breathstealer", 7, Rarity.COMMON, mage.cards.b.Breathstealer.class));
cards.add(new SetCardInfo("Brushwagg", 106, Rarity.RARE, mage.cards.b.Brushwagg.class));
cards.add(new SetCardInfo("Burning Shield Askari", 162, Rarity.COMMON, mage.cards.b.BurningShieldAskari.class));
cards.add(new SetCardInfo("Cadaverous Bloom", 318, Rarity.RARE, mage.cards.c.CadaverousBloom.class));
cards.add(new SetCardInfo("Cadaverous Knight", 8, Rarity.COMMON, mage.cards.c.CadaverousKnight.class));
cards.add(new SetCardInfo("Canopy Dragon", 107, Rarity.RARE, mage.cards.c.CanopyDragon.class));
cards.add(new SetCardInfo("Celestial Dawn", 210, Rarity.RARE, mage.cards.c.CelestialDawn.class));
cards.add(new SetCardInfo("Cerulean Wyvern", 57, Rarity.UNCOMMON, mage.cards.c.CeruleanWyvern.class));
cards.add(new SetCardInfo("Chaos Charm", 163, Rarity.COMMON, mage.cards.c.ChaosCharm.class));
cards.add(new SetCardInfo("Charcoal Diamond", 261, Rarity.UNCOMMON, mage.cards.c.CharcoalDiamond.class));
cards.add(new SetCardInfo("Choking Sands", 11, Rarity.COMMON, mage.cards.c.ChokingSands.class));
cards.add(new SetCardInfo("Civic Guildmage", 211, Rarity.COMMON, mage.cards.c.CivicGuildmage.class));
cards.add(new SetCardInfo("Cloak of Invisibility", 58, Rarity.COMMON, mage.cards.c.CloakOfInvisibility.class));
cards.add(new SetCardInfo("Coral Fighters", 59, Rarity.UNCOMMON, mage.cards.c.CoralFighters.class));
cards.add(new SetCardInfo("Crash of Rhinos", 108, Rarity.COMMON, mage.cards.c.CrashOfRhinos.class));
cards.add(new SetCardInfo("Crimson Hellkite", 167, Rarity.RARE, mage.cards.c.CrimsonHellkite.class));
cards.add(new SetCardInfo("Crypt Cobra", 12, Rarity.UNCOMMON, mage.cards.c.CryptCobra.class));
cards.add(new SetCardInfo("Crystal Golem", 263, Rarity.UNCOMMON, mage.cards.c.CrystalGolem.class));
cards.add(new SetCardInfo("Crystal Vein", 290, Rarity.UNCOMMON, mage.cards.c.CrystalVein.class));
cards.add(new SetCardInfo("Cursed Totem", 264, Rarity.RARE, mage.cards.c.CursedTotem.class));
cards.add(new SetCardInfo("Daring Apprentice", 60, Rarity.RARE, mage.cards.d.DaringApprentice.class));
cards.add(new SetCardInfo("Dark Banishing", 13, Rarity.COMMON, mage.cards.d.DarkBanishing.class));
cards.add(new SetCardInfo("Dark Ritual", 14, Rarity.COMMON, mage.cards.d.DarkRitual.class));
cards.add(new SetCardInfo("Dirtwater Wraith", 15, Rarity.COMMON, mage.cards.d.DirtwaterWraith.class));
cards.add(new SetCardInfo("Disenchant", 214, Rarity.COMMON, mage.cards.d.Disenchant.class));
cards.add(new SetCardInfo("Dissipate", 61, Rarity.UNCOMMON, mage.cards.d.Dissipate.class));
cards.add(new SetCardInfo("Divine Offering", 215, Rarity.COMMON, mage.cards.d.DivineOffering.class));
cards.add(new SetCardInfo("Drain Life", 16, Rarity.COMMON, mage.cards.d.DrainLife.class));
cards.add(new SetCardInfo("Dread Specter", 17, Rarity.UNCOMMON, mage.cards.d.DreadSpecter.class));
cards.add(new SetCardInfo("Dream Cache", 62, Rarity.COMMON, mage.cards.d.DreamCache.class));
cards.add(new SetCardInfo("Dwarven Miner", 169, Rarity.UNCOMMON, mage.cards.d.DwarvenMiner.class));
cards.add(new SetCardInfo("Dwarven Nomad", 170, Rarity.COMMON, mage.cards.d.DwarvenNomad.class));
cards.add(new SetCardInfo("Early Harvest", 111, Rarity.RARE, mage.cards.e.EarlyHarvest.class));
cards.add(new SetCardInfo("Ebony Charm", 18, Rarity.COMMON, mage.cards.e.EbonyCharm.class));
cards.add(new SetCardInfo("Ekundu Griffin", 217, Rarity.COMMON, mage.cards.e.EkunduGriffin.class));
cards.add(new SetCardInfo("Elixir of Vitality", 265, Rarity.UNCOMMON, mage.cards.e.ElixirOfVitality.class));
cards.add(new SetCardInfo("Enfeeblement", 19, Rarity.COMMON, mage.cards.e.Enfeeblement.class));
cards.add(new SetCardInfo("Enlightened Tutor", 218, Rarity.UNCOMMON, mage.cards.e.EnlightenedTutor.class));
cards.add(new SetCardInfo("Ersatz Gnomes", 266, Rarity.UNCOMMON, mage.cards.e.ErsatzGnomes.class));
cards.add(new SetCardInfo("Ethereal Champion", 219, Rarity.RARE, mage.cards.e.EtherealChampion.class));
cards.add(new SetCardInfo("Fallow Earth", 112, Rarity.UNCOMMON, mage.cards.f.FallowEarth.class));
cards.add(new SetCardInfo("Femeref Archers", 113, Rarity.UNCOMMON, mage.cards.f.FemerefArchers.class));
cards.add(new SetCardInfo("Femeref Healer", 221, Rarity.COMMON, mage.cards.f.FemerefHealer.class));
cards.add(new SetCardInfo("Femeref Knight", 222, Rarity.COMMON, mage.cards.f.FemerefKnight.class));
cards.add(new SetCardInfo("Femeref Scouts", 223, Rarity.COMMON, mage.cards.f.FemerefScouts.class));
cards.add(new SetCardInfo("Feral Shadow", 20, Rarity.COMMON, mage.cards.f.FeralShadow.class));
cards.add(new SetCardInfo("Fetid Horror", 21, Rarity.COMMON, mage.cards.f.FetidHorror.class));
cards.add(new SetCardInfo("Final Fortune", 173, Rarity.RARE, mage.cards.f.FinalFortune.class));
cards.add(new SetCardInfo("Firebreathing", 174, Rarity.COMMON, mage.cards.f.Firebreathing.class));
cards.add(new SetCardInfo("Fire Diamond", 267, Rarity.UNCOMMON, mage.cards.f.FireDiamond.class));
cards.add(new SetCardInfo("Flare", 176, Rarity.COMMON, mage.cards.f.Flare.class));
cards.add(new SetCardInfo("Flash", 66, Rarity.RARE, mage.cards.f.Flash.class));
cards.add(new SetCardInfo("Flood Plain", 291, Rarity.UNCOMMON, mage.cards.f.FloodPlain.class));
cards.add(new SetCardInfo("Fog", 114, Rarity.COMMON, mage.cards.f.Fog.class));
cards.add(new SetCardInfo("Foratog", 115, Rarity.UNCOMMON, mage.cards.f.Foratog.class));
cards.add(new SetCardInfo("Forbidden Crypt", 22, Rarity.RARE, mage.cards.f.ForbiddenCrypt.class));
cards.add(new SetCardInfo("Forest", 292, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 293, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 294, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 295, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forsaken Wastes", 23, Rarity.RARE, mage.cards.f.ForsakenWastes.class));
cards.add(new SetCardInfo("Frenetic Efreet", 324, Rarity.RARE, mage.cards.f.FreneticEfreet.class));
cards.add(new SetCardInfo("Giant Mantis", 116, Rarity.COMMON, mage.cards.g.GiantMantis.class));
cards.add(new SetCardInfo("Goblin Elite Infantry", 177, Rarity.COMMON, mage.cards.g.GoblinEliteInfantry.class));
cards.add(new SetCardInfo("Goblin Scouts", 178, Rarity.UNCOMMON, mage.cards.g.GoblinScouts.class));
cards.add(new SetCardInfo("Goblin Soothsayer", 179, Rarity.COMMON, mage.cards.g.GoblinSoothsayer.class));
cards.add(new SetCardInfo("Goblin Tinkerer", 180, Rarity.COMMON, mage.cards.g.GoblinTinkerer.class));
cards.add(new SetCardInfo("Granger Guildmage", 118, Rarity.COMMON, mage.cards.g.GrangerGuildmage.class));
cards.add(new SetCardInfo("Grasslands", 296, Rarity.UNCOMMON, mage.cards.g.Grasslands.class));
cards.add(new SetCardInfo("Gravebane Zombie", 25, Rarity.COMMON, mage.cards.g.GravebaneZombie.class));
cards.add(new SetCardInfo("Grave Servitude", 24, Rarity.COMMON, mage.cards.g.GraveServitude.class));
cards.add(new SetCardInfo("Grinning Totem", 268, Rarity.RARE, mage.cards.g.GrinningTotem.class));
cards.add(new SetCardInfo("Hammer of Bogardan", 181, Rarity.RARE, mage.cards.h.HammerOfBogardan.class));
cards.add(new SetCardInfo("Harbinger of Night", 26, Rarity.RARE, mage.cards.h.HarbingerOfNight.class));
cards.add(new SetCardInfo("Harmattan Efreet", 69, Rarity.UNCOMMON, mage.cards.h.HarmattanEfreet.class));
cards.add(new SetCardInfo("Hazerider Drake", 328, Rarity.UNCOMMON, mage.cards.h.HazeriderDrake.class));
cards.add(new SetCardInfo("Healing Salve", 224, Rarity.COMMON, mage.cards.h.HealingSalve.class));
cards.add(new SetCardInfo("Horrible Hordes", 269, Rarity.UNCOMMON, mage.cards.h.HorribleHordes.class));
cards.add(new SetCardInfo("Igneous Golem", 270, Rarity.UNCOMMON, mage.cards.i.IgneousGolem.class));
cards.add(new SetCardInfo("Illicit Auction", 183, Rarity.RARE, mage.cards.i.IllicitAuction.class));
cards.add(new SetCardInfo("Illumination", 225, Rarity.UNCOMMON, mage.cards.i.Illumination.class));
cards.add(new SetCardInfo("Incinerate", 184, Rarity.COMMON, mage.cards.i.Incinerate.class));
cards.add(new SetCardInfo("Infernal Contract", 27, Rarity.RARE, mage.cards.i.InfernalContract.class));
cards.add(new SetCardInfo("Iron Tusk Elephant", 226, Rarity.UNCOMMON, mage.cards.i.IronTuskElephant.class));
cards.add(new SetCardInfo("Island", 297, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 298, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 299, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 300, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Ivory Charm", 227, Rarity.COMMON, mage.cards.i.IvoryCharm.class));
cards.add(new SetCardInfo("Jolrael's Centaur", 120, Rarity.COMMON, mage.cards.j.JolraelsCentaur.class));
cards.add(new SetCardInfo("Jolt", 70, Rarity.COMMON, mage.cards.j.Jolt.class));
cards.add(new SetCardInfo("Jungle Patrol", 121, Rarity.RARE, mage.cards.j.JunglePatrol.class));
cards.add(new SetCardInfo("Jungle Troll", 329, Rarity.UNCOMMON, mage.cards.j.JungleTroll.class));
cards.add(new SetCardInfo("Jungle Wurm", 122, Rarity.COMMON, mage.cards.j.JungleWurm.class));
cards.add(new SetCardInfo("Kaervek's Torch", 185, Rarity.COMMON, mage.cards.k.KaerveksTorch.class));
cards.add(new SetCardInfo("Karoo Meerkat", 123, Rarity.UNCOMMON, mage.cards.k.KarooMeerkat.class));
cards.add(new SetCardInfo("Kukemssa Serpent", 72, Rarity.COMMON, mage.cards.k.KukemssaSerpent.class));
cards.add(new SetCardInfo("Lead Golem", 271, Rarity.UNCOMMON, mage.cards.l.LeadGolem.class));
cards.add(new SetCardInfo("Lightning Reflexes", 186, Rarity.COMMON, mage.cards.l.LightningReflexes.class));
cards.add(new SetCardInfo("Lion's Eye Diamond", 272, Rarity.RARE, mage.cards.l.LionsEyeDiamond.class));
cards.add(new SetCardInfo("Locust Swarm", 124, Rarity.UNCOMMON, mage.cards.l.LocustSwarm.class));
cards.add(new SetCardInfo("Mana Prism", 273, Rarity.UNCOMMON, mage.cards.m.ManaPrism.class));
cards.add(new SetCardInfo("Mangara's Tome", 274, Rarity.RARE, mage.cards.m.MangarasTome.class));
cards.add(new SetCardInfo("Marble Diamond", 275, Rarity.UNCOMMON, mage.cards.m.MarbleDiamond.class));
cards.add(new SetCardInfo("Maro", 126, Rarity.RARE, mage.cards.m.Maro.class));
cards.add(new SetCardInfo("Melesse Spirit", 231, Rarity.UNCOMMON, mage.cards.m.MelesseSpirit.class));
cards.add(new SetCardInfo("Memory Lapse", 74, Rarity.COMMON, mage.cards.m.MemoryLapse.class));
cards.add(new SetCardInfo("Merfolk Raiders", 75, Rarity.COMMON, mage.cards.m.MerfolkRaiders.class));
cards.add(new SetCardInfo("Merfolk Seer", 76, Rarity.COMMON, mage.cards.m.MerfolkSeer.class));
cards.add(new SetCardInfo("Mist Dragon", 79, Rarity.RARE, mage.cards.m.MistDragon.class));
cards.add(new SetCardInfo("Moss Diamond", 277, Rarity.UNCOMMON, mage.cards.m.MossDiamond.class));
cards.add(new SetCardInfo("Mountain", 301, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 302, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 303, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 304, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain Valley", 305, Rarity.UNCOMMON, mage.cards.m.MountainValley.class));
cards.add(new SetCardInfo("Mtenda Griffin", 232, Rarity.UNCOMMON, mage.cards.m.MtendaGriffin.class));
cards.add(new SetCardInfo("Mtenda Herder", 233, Rarity.COMMON, mage.cards.m.MtendaHerder.class));
cards.add(new SetCardInfo("Mystical Tutor", 80, Rarity.UNCOMMON, mage.cards.m.MysticalTutor.class));
cards.add(new SetCardInfo("Nettletooth Djinn", 130, Rarity.UNCOMMON, mage.cards.n.NettletoothDjinn.class));
cards.add(new SetCardInfo("Nocturnal Raid", 30, Rarity.UNCOMMON, mage.cards.n.NocturnalRaid.class));
cards.add(new SetCardInfo("Pacifism", 236, Rarity.COMMON, mage.cards.p.Pacifism.class));
cards.add(new SetCardInfo("Painful Memories", 31, Rarity.UNCOMMON, mage.cards.p.PainfulMemories.class));
cards.add(new SetCardInfo("Patagia Golem", 278, Rarity.UNCOMMON, mage.cards.p.PatagiaGolem.class));
cards.add(new SetCardInfo("Paupers' Cage", 279, Rarity.RARE, mage.cards.p.PaupersCage.class));
cards.add(new SetCardInfo("Pearl Dragon", 237, Rarity.RARE, mage.cards.p.PearlDragon.class));
cards.add(new SetCardInfo("Phyrexian Dreadnought", 280, Rarity.RARE, mage.cards.p.PhyrexianDreadnought.class));
cards.add(new SetCardInfo("Phyrexian Tribute", 32, Rarity.RARE, mage.cards.p.PhyrexianTribute.class));
cards.add(new SetCardInfo("Phyrexian Vault", 281, Rarity.UNCOMMON, mage.cards.p.PhyrexianVault.class));
cards.add(new SetCardInfo("Plains", 306, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 307, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 308, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 309, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Political Trickery", 81, Rarity.RARE, mage.cards.p.PoliticalTrickery.class));
cards.add(new SetCardInfo("Polymorph", 82, Rarity.RARE, mage.cards.p.Polymorph.class));
cards.add(new SetCardInfo("Power Sink", 83, Rarity.COMMON, mage.cards.p.PowerSink.class));
cards.add(new SetCardInfo("Psychic Transfer", 85, Rarity.RARE, mage.cards.p.PsychicTransfer.class));
cards.add(new SetCardInfo("Quirion Elves", 132, Rarity.COMMON, mage.cards.q.QuirionElves.class));
cards.add(new SetCardInfo("Radiant Essence", 336, Rarity.UNCOMMON, mage.cards.r.RadiantEssence.class));
cards.add(new SetCardInfo("Raging Spirit", 188, Rarity.COMMON, mage.cards.r.RagingSpirit.class));
cards.add(new SetCardInfo("Rampant Growth", 133, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
cards.add(new SetCardInfo("Rashida Scalebane", 239, Rarity.RARE, mage.cards.r.RashidaScalebane.class));
cards.add(new SetCardInfo("Ray of Command", 86, Rarity.COMMON, mage.cards.r.RayOfCommand.class));
cards.add(new SetCardInfo("Reality Ripple", 87, Rarity.COMMON, mage.cards.r.RealityRipple.class));
cards.add(new SetCardInfo("Reckless Embermage", 189, Rarity.RARE, mage.cards.r.RecklessEmbermage.class));
cards.add(new SetCardInfo("Regeneration", 134, Rarity.COMMON, mage.cards.r.Regeneration.class));
cards.add(new SetCardInfo("Restless Dead", 36, Rarity.COMMON, mage.cards.r.RestlessDead.class));
cards.add(new SetCardInfo("Ritual of Steel", 240, Rarity.COMMON, mage.cards.r.RitualOfSteel.class));
cards.add(new SetCardInfo("Rock Basilisk", 339, Rarity.RARE, mage.cards.r.RockBasilisk.class));
cards.add(new SetCardInfo("Rocky Tar Pit", 310, Rarity.UNCOMMON, mage.cards.r.RockyTarPit.class));
cards.add(new SetCardInfo("Sabertooth Cobra", 136, Rarity.COMMON, mage.cards.s.SabertoothCobra.class));
cards.add(new SetCardInfo("Sacred Mesa", 241, Rarity.RARE, mage.cards.s.SacredMesa.class));
cards.add(new SetCardInfo("Sandbar Crocodile", 88, Rarity.COMMON, mage.cards.s.SandbarCrocodile.class));
cards.add(new SetCardInfo("Sandstorm", 137, Rarity.COMMON, mage.cards.s.Sandstorm.class));
cards.add(new SetCardInfo("Sapphire Charm", 89, Rarity.COMMON, mage.cards.s.SapphireCharm.class));
cards.add(new SetCardInfo("Savage Twister", 340, Rarity.UNCOMMON, mage.cards.s.SavageTwister.class));
cards.add(new SetCardInfo("Searing Spear Askari", 191, Rarity.COMMON, mage.cards.s.SearingSpearAskari.class));
cards.add(new SetCardInfo("Sea Scryer", 90, Rarity.COMMON, mage.cards.s.SeaScryer.class));
cards.add(new SetCardInfo("Seedling Charm", 138, Rarity.COMMON, mage.cards.s.SeedlingCharm.class));
cards.add(new SetCardInfo("Serene Heart", 140, Rarity.COMMON, mage.cards.s.SereneHeart.class));
cards.add(new SetCardInfo("Sewer Rats", 37, Rarity.COMMON, mage.cards.s.SewerRats.class));
cards.add(new SetCardInfo("Shadow Guildmage", 38, Rarity.COMMON, mage.cards.s.ShadowGuildmage.class));
cards.add(new SetCardInfo("Shallow Grave", 39, Rarity.RARE, mage.cards.s.ShallowGrave.class));
cards.add(new SetCardInfo("Shaper Guildmage", 91, Rarity.COMMON, mage.cards.s.ShaperGuildmage.class));
cards.add(new SetCardInfo("Shimmer", 92, Rarity.RARE, mage.cards.s.Shimmer.class));
cards.add(new SetCardInfo("Sidar Jabari", 243, Rarity.RARE, mage.cards.s.SidarJabari.class));
cards.add(new SetCardInfo("Skulking Ghost", 41, Rarity.COMMON, mage.cards.s.SkulkingGhost.class));
cards.add(new SetCardInfo("Sky Diamond", 284, Rarity.UNCOMMON, mage.cards.s.SkyDiamond.class));
cards.add(new SetCardInfo("Soar", 93, Rarity.COMMON, mage.cards.s.Soar.class));
cards.add(new SetCardInfo("Soul Rend", 42, Rarity.UNCOMMON, mage.cards.s.SoulRend.class));
cards.add(new SetCardInfo("Spirit of the Night", 44, Rarity.RARE, mage.cards.s.SpiritOfTheNight.class));
cards.add(new SetCardInfo("Spitting Earth", 193, Rarity.COMMON, mage.cards.s.SpittingEarth.class));
cards.add(new SetCardInfo("Stalking Tiger", 141, Rarity.COMMON, mage.cards.s.StalkingTiger.class));
cards.add(new SetCardInfo("Stone Rain", 194, Rarity.COMMON, mage.cards.s.StoneRain.class));
cards.add(new SetCardInfo("Stupor", 45, Rarity.UNCOMMON, mage.cards.s.Stupor.class));
cards.add(new SetCardInfo("Sunweb", 246, Rarity.RARE, mage.cards.s.Sunweb.class));
cards.add(new SetCardInfo("Swamp", 311, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 312, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 313, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 314, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Talruum Minotaur", 196, Rarity.COMMON, mage.cards.t.TalruumMinotaur.class));
cards.add(new SetCardInfo("Taniwha", 95, Rarity.RARE, mage.cards.t.Taniwha.class));
cards.add(new SetCardInfo("Teeka's Dragon", 285, Rarity.RARE, mage.cards.t.TeekasDragon.class));
cards.add(new SetCardInfo("Teferi's Curse", 96, Rarity.COMMON, mage.cards.t.TeferisCurse.class));
cards.add(new SetCardInfo("Teferi's Drake", 97, Rarity.COMMON, mage.cards.t.TeferisDrake.class));
cards.add(new SetCardInfo("Teferi's Isle", 315, Rarity.RARE, mage.cards.t.TeferisIsle.class));
cards.add(new SetCardInfo("Telim'Tor's Darts", 286, Rarity.UNCOMMON, mage.cards.t.TelimTorsDarts.class));
cards.add(new SetCardInfo("Thirst", 99, Rarity.COMMON, mage.cards.t.Thirst.class));
cards.add(new SetCardInfo("Tidal Wave", 100, Rarity.UNCOMMON, mage.cards.t.TidalWave.class));
cards.add(new SetCardInfo("Tranquil Domain", 143, Rarity.COMMON, mage.cards.t.TranquilDomain.class));
cards.add(new SetCardInfo("Uktabi Wildcats", 146, Rarity.RARE, mage.cards.u.UktabiWildcats.class));
cards.add(new SetCardInfo("Unfulfilled Desires", 345, Rarity.RARE, mage.cards.u.UnfulfilledDesires.class));
cards.add(new SetCardInfo("Unseen Walker", 147, Rarity.UNCOMMON, mage.cards.u.UnseenWalker.class));
cards.add(new SetCardInfo("Unyaro Bee Sting", 148, Rarity.UNCOMMON, mage.cards.u.UnyaroBeeSting.class));
cards.add(new SetCardInfo("Unyaro Griffin", 248, Rarity.UNCOMMON, mage.cards.u.UnyaroGriffin.class));
cards.add(new SetCardInfo("Vaporous Djinn", 101, Rarity.UNCOMMON, mage.cards.v.VaporousDjinn.class));
cards.add(new SetCardInfo("Viashino Warrior", 200, Rarity.COMMON, mage.cards.v.ViashinoWarrior.class));
cards.add(new SetCardInfo("Vigilant Martyr", 249, Rarity.UNCOMMON, mage.cards.v.VigilantMartyr.class));
cards.add(new SetCardInfo("Village Elder", 149, Rarity.COMMON, mage.cards.v.VillageElder.class));
cards.add(new SetCardInfo("Vitalizing Cascade", 346, Rarity.UNCOMMON, mage.cards.v.VitalizingCascade.class));
cards.add(new SetCardInfo("Volcanic Dragon", 201, Rarity.RARE, mage.cards.v.VolcanicDragon.class));
cards.add(new SetCardInfo("Volcanic Geyser", 202, Rarity.UNCOMMON, mage.cards.v.VolcanicGeyser.class));
cards.add(new SetCardInfo("Waiting in the Weeds", 150, Rarity.RARE, mage.cards.w.WaitingInTheWeeds.class));
cards.add(new SetCardInfo("Wall of Roots", 151, Rarity.COMMON, mage.cards.w.WallOfRoots.class));
cards.add(new SetCardInfo("Ward of Lights", 251, Rarity.COMMON, mage.cards.w.WardOfLights.class));
cards.add(new SetCardInfo("Wild Elephant", 152, Rarity.COMMON, mage.cards.w.WildElephant.class));
cards.add(new SetCardInfo("Wildfire Emissary", 203, Rarity.UNCOMMON, mage.cards.w.WildfireEmissary.class));
cards.add(new SetCardInfo("Windreaper Falcon", 349, Rarity.UNCOMMON, mage.cards.w.WindreaperFalcon.class));
cards.add(new SetCardInfo("Withering Boon", 50, Rarity.UNCOMMON, mage.cards.w.WitheringBoon.class));
cards.add(new SetCardInfo("Worldly Tutor", 153, Rarity.UNCOMMON, mage.cards.w.WorldlyTutor.class));
cards.add(new SetCardInfo("Zebra Unicorn", 350, Rarity.UNCOMMON, mage.cards.z.ZebraUnicorn.class));
cards.add(new SetCardInfo("Zhalfirin Commander", 253, Rarity.UNCOMMON, mage.cards.z.ZhalfirinCommander.class));
cards.add(new SetCardInfo("Zhalfirin Knight", 254, Rarity.COMMON, mage.cards.z.ZhalfirinKnight.class));
cards.add(new SetCardInfo("Zirilan of the Claw", 204, Rarity.RARE, mage.cards.z.ZirilanOfTheClaw.class));
cards.add(new SetCardInfo("Zuberi, Golden Feather", 255, Rarity.RARE, mage.cards.z.ZuberiGoldenFeather.class));
}
}

View file

@ -115,6 +115,7 @@ public class Mirrodin extends ExpansionSet {
cards.add(new SetCardInfo("Groffskithur", 121, Rarity.COMMON, mage.cards.g.Groffskithur.class));
cards.add(new SetCardInfo("Heartwood Shard", 184, Rarity.UNCOMMON, mage.cards.h.HeartwoodShard.class));
cards.add(new SetCardInfo("Hematite Golem", 185, Rarity.COMMON, mage.cards.h.HematiteGolem.class));
cards.add(new SetCardInfo("Hum of the Radix", 122, Rarity.RARE, mage.cards.h.HumOfTheRadix.class));
cards.add(new SetCardInfo("Icy Manipulator", 186, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class));
cards.add(new SetCardInfo("Incite War", 96, Rarity.COMMON, mage.cards.i.InciteWar.class));
cards.add(new SetCardInfo("Inertia Bubble", 37, Rarity.COMMON, mage.cards.i.InertiaBubble.class));

View file

@ -173,6 +173,7 @@ public class NinthEdition extends ExpansionSet {
cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Ivory Mask", 23, Rarity.RARE, mage.cards.i.IvoryMask.class));
cards.add(new SetCardInfo("Jade Statue", 300, Rarity.RARE, mage.cards.j.JadeStatue.class));
cards.add(new SetCardInfo("Jester's Cap", 301, Rarity.RARE, mage.cards.j.JestersCap.class));
cards.add(new SetCardInfo("Kami of Old Stone", 24, Rarity.UNCOMMON, mage.cards.k.KamiOfOldStone.class));
cards.add(new SetCardInfo("Karplusan Forest", 321, Rarity.RARE, mage.cards.k.KarplusanForest.class));

View file

@ -1,208 +1,211 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets;
import mage.constants.SetType;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
/**
*
* @author North
*/
public class PlanarChaos extends ExpansionSet {
private static final PlanarChaos fINSTANCE = new PlanarChaos();
public static PlanarChaos getInstance() {
return fINSTANCE;
}
private PlanarChaos() {
super("Planar Chaos", "PLC", ExpansionSet.buildDate(2007, 1, 2), SetType.EXPANSION);
this.blockName = "Time Spiral";
this.parentSet = TimeSpiral.getInstance();
this.hasBasicLands = false;
this.hasBoosters = true;
this.numBoosterLands = 0;
this.numBoosterCommon = 10;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 0;
cards.add(new SetCardInfo("Aeon Chronicler", 32, Rarity.RARE, mage.cards.a.AeonChronicler.class));
cards.add(new SetCardInfo("Aether Membrane", 93, Rarity.UNCOMMON, mage.cards.a.AetherMembrane.class));
cards.add(new SetCardInfo("Akroma, Angel of Fury", 94, Rarity.RARE, mage.cards.a.AkromaAngelOfFury.class));
cards.add(new SetCardInfo("Ana Battlemage", 124, Rarity.UNCOMMON, mage.cards.a.AnaBattlemage.class));
cards.add(new SetCardInfo("Aquamorph Entity", 33, Rarity.COMMON, mage.cards.a.AquamorphEntity.class));
cards.add(new SetCardInfo("Aven Riftwatcher", 1, Rarity.COMMON, mage.cards.a.AvenRiftwatcher.class));
cards.add(new SetCardInfo("Battering Sliver", 95, Rarity.COMMON, mage.cards.b.BatteringSliver.class));
cards.add(new SetCardInfo("Benalish Commander", 2, Rarity.RARE, mage.cards.b.BenalishCommander.class));
cards.add(new SetCardInfo("Big Game Hunter", 63, Rarity.UNCOMMON, mage.cards.b.BigGameHunter.class));
cards.add(new SetCardInfo("Blightspeaker", 64, Rarity.COMMON, mage.cards.b.Blightspeaker.class));
cards.add(new SetCardInfo("Blood Knight", 115, Rarity.UNCOMMON, mage.cards.b.BloodKnight.class));
cards.add(new SetCardInfo("Body Double", 35, Rarity.RARE, mage.cards.b.BodyDouble.class));
cards.add(new SetCardInfo("Bog Serpent", 84, Rarity.COMMON, mage.cards.b.BogSerpent.class));
cards.add(new SetCardInfo("Boom // Bust", 112, Rarity.RARE, mage.cards.b.BoomBust.class));
cards.add(new SetCardInfo("Braids, Conjurer Adept", 36, Rarity.RARE, mage.cards.b.BraidsConjurerAdept.class));
cards.add(new SetCardInfo("Brain Gorgers", 65, Rarity.COMMON, mage.cards.b.BrainGorgers.class));
cards.add(new SetCardInfo("Brute Force", 116, Rarity.COMMON, mage.cards.b.BruteForce.class));
cards.add(new SetCardInfo("Calciderm", 23, Rarity.UNCOMMON, mage.cards.c.Calciderm.class));
cards.add(new SetCardInfo("Cautery Sliver", 154, Rarity.UNCOMMON, mage.cards.c.CauterySliver.class));
cards.add(new SetCardInfo("Chronozoa", 37, Rarity.RARE, mage.cards.c.Chronozoa.class));
cards.add(new SetCardInfo("Circle of Affliction", 66, Rarity.UNCOMMON, mage.cards.c.CircleOfAffliction.class));
cards.add(new SetCardInfo("Citanul Woodreaders", 125, Rarity.COMMON, mage.cards.c.CitanulWoodreaders.class));
cards.add(new SetCardInfo("Cradle to Grave", 67, Rarity.COMMON, mage.cards.c.CradleToGrave.class));
cards.add(new SetCardInfo("Crovax, Ascendant Hero", 3, Rarity.RARE, mage.cards.c.CrovaxAscendantHero.class));
cards.add(new SetCardInfo("Damnation", 85, Rarity.RARE, mage.cards.d.Damnation.class));
cards.add(new SetCardInfo("Darkheart Sliver", 155, Rarity.UNCOMMON, mage.cards.d.DarkheartSliver.class));
cards.add(new SetCardInfo("Dash Hopes", 68, Rarity.COMMON, mage.cards.d.DashHopes.class));
cards.add(new SetCardInfo("Dawn Charm", 4, Rarity.COMMON, mage.cards.d.DawnCharm.class));
cards.add(new SetCardInfo("Dead // Gone", 113, Rarity.COMMON, mage.cards.d.DeadGone.class));
cards.add(new SetCardInfo("Deadly Grub", 69, Rarity.COMMON, mage.cards.d.DeadlyGrub.class));
cards.add(new SetCardInfo("Deadwood Treefolk", 126, Rarity.UNCOMMON, mage.cards.d.DeadwoodTreefolk.class));
cards.add(new SetCardInfo("Detritivore", 96, Rarity.RARE, mage.cards.d.Detritivore.class));
cards.add(new SetCardInfo("Dismal Failure", 39, Rarity.UNCOMMON, mage.cards.d.DismalFailure.class));
cards.add(new SetCardInfo("Dormant Sliver", 156, Rarity.UNCOMMON, mage.cards.d.DormantSliver.class));
cards.add(new SetCardInfo("Dreamscape Artist", 40, Rarity.COMMON, mage.cards.d.DreamscapeArtist.class));
cards.add(new SetCardInfo("Dunerider Outlaw", 86, Rarity.UNCOMMON, mage.cards.d.DuneriderOutlaw.class));
cards.add(new SetCardInfo("Dust Corona", 97, Rarity.COMMON, mage.cards.d.DustCorona.class));
cards.add(new SetCardInfo("Dust Elemental", 5, Rarity.RARE, mage.cards.d.DustElemental.class));
cards.add(new SetCardInfo("Enslave", 70, Rarity.UNCOMMON, mage.cards.e.Enslave.class));
cards.add(new SetCardInfo("Erratic Mutation", 41, Rarity.COMMON, mage.cards.e.ErraticMutation.class));
cards.add(new SetCardInfo("Essence Warden", 145, Rarity.COMMON, mage.cards.e.EssenceWarden.class));
cards.add(new SetCardInfo("Evolution Charm", 127, Rarity.COMMON, mage.cards.e.EvolutionCharm.class));
cards.add(new SetCardInfo("Extirpate", 71, Rarity.RARE, mage.cards.e.Extirpate.class));
cards.add(new SetCardInfo("Fa'adiyah Seer", 146, Rarity.COMMON, mage.cards.f.FaadiyahSeer.class));
cards.add(new SetCardInfo("Fatal Frenzy", 98, Rarity.RARE, mage.cards.f.FatalFrenzy.class));
cards.add(new SetCardInfo("Firefright Mage", 99, Rarity.COMMON, mage.cards.f.FirefrightMage.class));
cards.add(new SetCardInfo("Frenetic Sliver", 157, Rarity.UNCOMMON, mage.cards.f.FreneticSliver.class));
cards.add(new SetCardInfo("Frozen Aether", 54, Rarity.UNCOMMON, mage.cards.f.FrozenAether.class));
cards.add(new SetCardInfo("Fungal Behemoth", 128, Rarity.RARE, mage.cards.f.FungalBehemoth.class));
cards.add(new SetCardInfo("Fury Charm", 100, Rarity.COMMON, mage.cards.f.FuryCharm.class));
cards.add(new SetCardInfo("Gaea's Anthem", 147, Rarity.RARE, mage.cards.g.GaeasAnthem.class));
cards.add(new SetCardInfo("Ghost Tactician", 6, Rarity.COMMON, mage.cards.g.GhostTactician.class));
cards.add(new SetCardInfo("Giant Dustwasp", 129, Rarity.COMMON, mage.cards.g.GiantDustwasp.class));
cards.add(new SetCardInfo("Gossamer Phantasm", 55, Rarity.COMMON, mage.cards.g.GossamerPhantasm.class));
cards.add(new SetCardInfo("Groundbreaker", 148, Rarity.RARE, mage.cards.g.Groundbreaker.class));
cards.add(new SetCardInfo("Hammerheim Deadeye", 101, Rarity.UNCOMMON, mage.cards.h.HammerheimDeadeye.class));
cards.add(new SetCardInfo("Harmonize", 149, Rarity.UNCOMMON, mage.cards.h.Harmonize.class));
cards.add(new SetCardInfo("Healing Leaves", 150, Rarity.COMMON, mage.cards.h.HealingLeaves.class));
cards.add(new SetCardInfo("Hedge Troll", 151, Rarity.UNCOMMON, mage.cards.h.HedgeTroll.class));
cards.add(new SetCardInfo("Heroes Remembered", 7, Rarity.RARE, mage.cards.h.HeroesRemembered.class));
cards.add(new SetCardInfo("Hunting Wilds", 130, Rarity.UNCOMMON, mage.cards.h.HuntingWilds.class));
cards.add(new SetCardInfo("Imp's Mischief", 72, Rarity.RARE, mage.cards.i.ImpsMischief.class));
cards.add(new SetCardInfo("Intet, the Dreamer", 158, Rarity.RARE, mage.cards.i.IntetTheDreamer.class));
cards.add(new SetCardInfo("Jedit Ojanen of Efrava", 131, Rarity.RARE, mage.cards.j.JeditOjanenOfEfrava.class));
cards.add(new SetCardInfo("Kavu Predator", 132, Rarity.UNCOMMON, mage.cards.k.KavuPredator.class));
cards.add(new SetCardInfo("Keen Sense", 152, Rarity.UNCOMMON, mage.cards.k.KeenSense.class));
cards.add(new SetCardInfo("Keldon Marauders", 102, Rarity.COMMON, mage.cards.k.KeldonMarauders.class));
cards.add(new SetCardInfo("Lavacore Elemental", 103, Rarity.UNCOMMON, mage.cards.l.LavacoreElemental.class));
cards.add(new SetCardInfo("Life and Limb", 133, Rarity.RARE, mage.cards.l.LifeAndLimb.class));
cards.add(new SetCardInfo("Magus of the Arena", 104, Rarity.RARE, mage.cards.m.MagusOfTheArena.class));
cards.add(new SetCardInfo("Magus of the Bazaar", 43, Rarity.RARE, mage.cards.m.MagusOfTheBazaar.class));
cards.add(new SetCardInfo("Magus of the Coffers", 73, Rarity.RARE, mage.cards.m.MagusOfTheCoffers.class));
cards.add(new SetCardInfo("Magus of the Library", 134, Rarity.RARE, mage.cards.m.MagusOfTheLibrary.class));
cards.add(new SetCardInfo("Magus of the Tabernacle", 8, Rarity.RARE, mage.cards.m.MagusOfTheTabernacle.class));
cards.add(new SetCardInfo("Malach of the Dawn", 24, Rarity.UNCOMMON, mage.cards.m.MalachOfTheDawn.class));
cards.add(new SetCardInfo("Mana Tithe", 25, Rarity.COMMON, mage.cards.m.ManaTithe.class));
cards.add(new SetCardInfo("Melancholy", 88, Rarity.COMMON, mage.cards.m.Melancholy.class));
cards.add(new SetCardInfo("Merfolk Thaumaturgist", 56, Rarity.COMMON, mage.cards.m.MerfolkThaumaturgist.class));
cards.add(new SetCardInfo("Mesa Enchantress", 26, Rarity.RARE, mage.cards.m.MesaEnchantress.class));
cards.add(new SetCardInfo("Midnight Charm", 74, Rarity.COMMON, mage.cards.m.MidnightCharm.class));
cards.add(new SetCardInfo("Mire Boa", 135, Rarity.COMMON, mage.cards.m.MireBoa.class));
cards.add(new SetCardInfo("Mirri the Cursed", 75, Rarity.RARE, mage.cards.m.MirriTheCursed.class));
cards.add(new SetCardInfo("Mycologist", 27, Rarity.UNCOMMON, mage.cards.m.Mycologist.class));
cards.add(new SetCardInfo("Necrotic Sliver", 159, Rarity.UNCOMMON, mage.cards.n.NecroticSliver.class));
cards.add(new SetCardInfo("Needlepeak Spider", 105, Rarity.COMMON, mage.cards.n.NeedlepeakSpider.class));
cards.add(new SetCardInfo("Null Profusion", 89, Rarity.RARE, mage.cards.n.NullProfusion.class));
cards.add(new SetCardInfo("Numot, the Devastator", 160, Rarity.RARE, mage.cards.n.NumotTheDevastator.class));
cards.add(new SetCardInfo("Oros, the Avenger", 161, Rarity.RARE, mage.cards.o.OrosTheAvenger.class));
cards.add(new SetCardInfo("Ovinize", 57, Rarity.UNCOMMON, mage.cards.o.Ovinize.class));
cards.add(new SetCardInfo("Pallid Mycoderm", 10, Rarity.COMMON, mage.cards.p.PallidMycoderm.class));
cards.add(new SetCardInfo("Phantasmagorian", 77, Rarity.UNCOMMON, mage.cards.p.Phantasmagorian.class));
cards.add(new SetCardInfo("Piracy Charm", 58, Rarity.COMMON, mage.cards.p.PiracyCharm.class));
cards.add(new SetCardInfo("Pongify", 44, Rarity.UNCOMMON, mage.cards.p.Pongify.class));
cards.add(new SetCardInfo("Porphyry Nodes", 28, Rarity.RARE, mage.cards.p.PorphyryNodes.class));
cards.add(new SetCardInfo("Poultice Sliver", 11, Rarity.COMMON, mage.cards.p.PoulticeSliver.class));
cards.add(new SetCardInfo("Pouncing Wurm", 136, Rarity.UNCOMMON, mage.cards.p.PouncingWurm.class));
cards.add(new SetCardInfo("Primal Plasma", 59, Rarity.COMMON, mage.cards.p.PrimalPlasma.class));
cards.add(new SetCardInfo("Prodigal Pyromancer", 118, Rarity.COMMON, mage.cards.p.ProdigalPyromancer.class));
cards.add(new SetCardInfo("Psychotrope Thallid", 137, Rarity.UNCOMMON, mage.cards.p.PsychotropeThallid.class));
cards.add(new SetCardInfo("Pyrohemia", 119, Rarity.UNCOMMON, mage.cards.p.Pyrohemia.class));
cards.add(new SetCardInfo("Radha, Heir to Keld", 162, Rarity.RARE, mage.cards.r.RadhaHeirToKeld.class));
cards.add(new SetCardInfo("Rathi Trapper", 90, Rarity.COMMON, mage.cards.r.RathiTrapper.class));
cards.add(new SetCardInfo("Reality Acid", 45, Rarity.COMMON, mage.cards.r.RealityAcid.class));
cards.add(new SetCardInfo("Rebuff the Wicked", 12, Rarity.UNCOMMON, mage.cards.r.RebuffTheWicked.class));
cards.add(new SetCardInfo("Reckless Wurm", 120, Rarity.UNCOMMON, mage.cards.r.RecklessWurm.class));
cards.add(new SetCardInfo("Reflex Sliver", 138, Rarity.COMMON, mage.cards.r.ReflexSliver.class));
cards.add(new SetCardInfo("Revered Dead", 29, Rarity.COMMON, mage.cards.r.ReveredDead.class));
cards.add(new SetCardInfo("Ridged Kusite", 78, Rarity.COMMON, mage.cards.r.RidgedKusite.class));
cards.add(new SetCardInfo("Riptide Pilferer", 60, Rarity.UNCOMMON, mage.cards.r.RiptidePilferer.class));
cards.add(new SetCardInfo("Roiling Horror", 79, Rarity.RARE, mage.cards.r.RoilingHorror.class));
cards.add(new SetCardInfo("Rough // Tumble", 114, Rarity.UNCOMMON, mage.cards.r.RoughTumble.class));
cards.add(new SetCardInfo("Saltblast", 15, Rarity.UNCOMMON, mage.cards.s.Saltblast.class));
cards.add(new SetCardInfo("Saltfield Recluse", 16, Rarity.COMMON, mage.cards.s.SaltfieldRecluse.class));
cards.add(new SetCardInfo("Seal of Primordium", 153, Rarity.COMMON, mage.cards.s.SealOfPrimordium.class));
cards.add(new SetCardInfo("Serendib Sorcerer", 61, Rarity.RARE, mage.cards.s.SerendibSorcerer.class));
cards.add(new SetCardInfo("Serra's Boon", 17, Rarity.UNCOMMON, mage.cards.s.SerrasBoon.class));
cards.add(new SetCardInfo("Serra Sphinx", 62, Rarity.RARE, mage.cards.s.SerraSphinx.class));
cards.add(new SetCardInfo("Shade of Trokair", 18, Rarity.COMMON, mage.cards.s.ShadeOfTrokair.class));
cards.add(new SetCardInfo("Shaper Parasite", 46, Rarity.COMMON, mage.cards.s.ShaperParasite.class));
cards.add(new SetCardInfo("Shivan Meteor", 106, Rarity.UNCOMMON, mage.cards.s.ShivanMeteor.class));
cards.add(new SetCardInfo("Shivan Wumpus", 121, Rarity.RARE, mage.cards.s.ShivanWumpus.class));
cards.add(new SetCardInfo("Shrouded Lore", 91, Rarity.UNCOMMON, mage.cards.s.ShroudedLore.class));
cards.add(new SetCardInfo("Simian Spirit Guide", 122, Rarity.COMMON, mage.cards.s.SimianSpiritGuide.class));
cards.add(new SetCardInfo("Sinew Sliver", 30, Rarity.COMMON, mage.cards.s.SinewSliver.class));
cards.add(new SetCardInfo("Skirk Shaman", 123, Rarity.COMMON, mage.cards.s.SkirkShaman.class));
cards.add(new SetCardInfo("Sophic Centaur", 139, Rarity.UNCOMMON, mage.cards.s.SophicCentaur.class));
cards.add(new SetCardInfo("Spitting Sliver", 80, Rarity.COMMON, mage.cards.s.SpittingSliver.class));
cards.add(new SetCardInfo("Stingscourger", 107, Rarity.COMMON, mage.cards.s.Stingscourger.class));
cards.add(new SetCardInfo("Stonecloaker", 19, Rarity.UNCOMMON, mage.cards.s.Stonecloaker.class));
cards.add(new SetCardInfo("Stormfront Riders", 20, Rarity.UNCOMMON, mage.cards.s.StormfrontRiders.class));
cards.add(new SetCardInfo("Sulfur Elemental", 108, Rarity.UNCOMMON, mage.cards.s.SulfurElemental.class));
cards.add(new SetCardInfo("Sunlance", 31, Rarity.COMMON, mage.cards.s.Sunlance.class));
cards.add(new SetCardInfo("Synchronous Sliver", 48, Rarity.COMMON, mage.cards.s.SynchronousSliver.class));
cards.add(new SetCardInfo("Temporal Extortion", 81, Rarity.RARE, mage.cards.t.TemporalExtortion.class));
cards.add(new SetCardInfo("Teneb, the Harvester", 163, Rarity.RARE, mage.cards.t.TenebTheHarvester.class));
cards.add(new SetCardInfo("Tidewalker", 49, Rarity.UNCOMMON, mage.cards.t.Tidewalker.class));
cards.add(new SetCardInfo("Timbermare", 140, Rarity.RARE, mage.cards.t.Timbermare.class));
cards.add(new SetCardInfo("Timecrafting", 109, Rarity.UNCOMMON, mage.cards.t.Timecrafting.class));
cards.add(new SetCardInfo("Torchling", 110, Rarity.RARE, mage.cards.t.Torchling.class));
cards.add(new SetCardInfo("Uktabi Drake", 141, Rarity.COMMON, mage.cards.u.UktabiDrake.class));
cards.add(new SetCardInfo("Urborg, Tomb of Yawgmoth", 165, Rarity.RARE, mage.cards.u.UrborgTombOfYawgmoth.class));
cards.add(new SetCardInfo("Utopia Vow", 142, Rarity.COMMON, mage.cards.u.UtopiaVow.class));
cards.add(new SetCardInfo("Vampiric Link", 92, Rarity.COMMON, mage.cards.v.VampiricLink.class));
cards.add(new SetCardInfo("Vitaspore Thallid", 143, Rarity.COMMON, mage.cards.v.VitasporeThallid.class));
cards.add(new SetCardInfo("Voidstone Gargoyle", 21, Rarity.RARE, mage.cards.v.VoidstoneGargoyle.class));
cards.add(new SetCardInfo("Vorosh, the Hunter", 164, Rarity.RARE, mage.cards.v.VoroshTheHunter.class));
cards.add(new SetCardInfo("Waning Wurm", 83, Rarity.UNCOMMON, mage.cards.w.WaningWurm.class));
cards.add(new SetCardInfo("Whitemane Lion", 22, Rarity.COMMON, mage.cards.w.WhitemaneLion.class));
cards.add(new SetCardInfo("Wild Pair", 144, Rarity.RARE, mage.cards.w.WildPair.class));
cards.add(new SetCardInfo("Wistful Thinking", 53, Rarity.COMMON, mage.cards.w.WistfulThinking.class));
}
}
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets;
import mage.constants.SetType;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
/**
*
* @author North
*/
public class PlanarChaos extends ExpansionSet {
private static final PlanarChaos fINSTANCE = new PlanarChaos();
public static PlanarChaos getInstance() {
return fINSTANCE;
}
private PlanarChaos() {
super("Planar Chaos", "PLC", ExpansionSet.buildDate(2007, 1, 2), SetType.EXPANSION);
this.blockName = "Time Spiral";
this.parentSet = TimeSpiral.getInstance();
this.hasBasicLands = false;
this.hasBoosters = true;
this.numBoosterLands = 0;
this.numBoosterCommon = 10;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 0;
cards.add(new SetCardInfo("Aeon Chronicler", 32, Rarity.RARE, mage.cards.a.AeonChronicler.class));
cards.add(new SetCardInfo("Aether Membrane", 93, Rarity.UNCOMMON, mage.cards.a.AetherMembrane.class));
cards.add(new SetCardInfo("Akroma, Angel of Fury", 94, Rarity.RARE, mage.cards.a.AkromaAngelOfFury.class));
cards.add(new SetCardInfo("Ana Battlemage", 124, Rarity.UNCOMMON, mage.cards.a.AnaBattlemage.class));
cards.add(new SetCardInfo("Aquamorph Entity", 33, Rarity.COMMON, mage.cards.a.AquamorphEntity.class));
cards.add(new SetCardInfo("Aven Riftwatcher", 1, Rarity.COMMON, mage.cards.a.AvenRiftwatcher.class));
cards.add(new SetCardInfo("Battering Sliver", 95, Rarity.COMMON, mage.cards.b.BatteringSliver.class));
cards.add(new SetCardInfo("Benalish Commander", 2, Rarity.RARE, mage.cards.b.BenalishCommander.class));
cards.add(new SetCardInfo("Big Game Hunter", 63, Rarity.UNCOMMON, mage.cards.b.BigGameHunter.class));
cards.add(new SetCardInfo("Blightspeaker", 64, Rarity.COMMON, mage.cards.b.Blightspeaker.class));
cards.add(new SetCardInfo("Blood Knight", 115, Rarity.UNCOMMON, mage.cards.b.BloodKnight.class));
cards.add(new SetCardInfo("Body Double", 35, Rarity.RARE, mage.cards.b.BodyDouble.class));
cards.add(new SetCardInfo("Bog Serpent", 84, Rarity.COMMON, mage.cards.b.BogSerpent.class));
cards.add(new SetCardInfo("Boom // Bust", 112, Rarity.RARE, mage.cards.b.BoomBust.class));
cards.add(new SetCardInfo("Braids, Conjurer Adept", 36, Rarity.RARE, mage.cards.b.BraidsConjurerAdept.class));
cards.add(new SetCardInfo("Brain Gorgers", 65, Rarity.COMMON, mage.cards.b.BrainGorgers.class));
cards.add(new SetCardInfo("Brute Force", 116, Rarity.COMMON, mage.cards.b.BruteForce.class));
cards.add(new SetCardInfo("Calciderm", 23, Rarity.UNCOMMON, mage.cards.c.Calciderm.class));
cards.add(new SetCardInfo("Cautery Sliver", 154, Rarity.UNCOMMON, mage.cards.c.CauterySliver.class));
cards.add(new SetCardInfo("Chronozoa", 37, Rarity.RARE, mage.cards.c.Chronozoa.class));
cards.add(new SetCardInfo("Circle of Affliction", 66, Rarity.UNCOMMON, mage.cards.c.CircleOfAffliction.class));
cards.add(new SetCardInfo("Citanul Woodreaders", 125, Rarity.COMMON, mage.cards.c.CitanulWoodreaders.class));
cards.add(new SetCardInfo("Cradle to Grave", 67, Rarity.COMMON, mage.cards.c.CradleToGrave.class));
cards.add(new SetCardInfo("Crovax, Ascendant Hero", 3, Rarity.RARE, mage.cards.c.CrovaxAscendantHero.class));
cards.add(new SetCardInfo("Damnation", 85, Rarity.RARE, mage.cards.d.Damnation.class));
cards.add(new SetCardInfo("Darkheart Sliver", 155, Rarity.UNCOMMON, mage.cards.d.DarkheartSliver.class));
cards.add(new SetCardInfo("Dash Hopes", 68, Rarity.COMMON, mage.cards.d.DashHopes.class));
cards.add(new SetCardInfo("Dawn Charm", 4, Rarity.COMMON, mage.cards.d.DawnCharm.class));
cards.add(new SetCardInfo("Dead // Gone", 113, Rarity.COMMON, mage.cards.d.DeadGone.class));
cards.add(new SetCardInfo("Deadly Grub", 69, Rarity.COMMON, mage.cards.d.DeadlyGrub.class));
cards.add(new SetCardInfo("Deadwood Treefolk", 126, Rarity.UNCOMMON, mage.cards.d.DeadwoodTreefolk.class));
cards.add(new SetCardInfo("Detritivore", 96, Rarity.RARE, mage.cards.d.Detritivore.class));
cards.add(new SetCardInfo("Dismal Failure", 39, Rarity.UNCOMMON, mage.cards.d.DismalFailure.class));
cards.add(new SetCardInfo("Dormant Sliver", 156, Rarity.UNCOMMON, mage.cards.d.DormantSliver.class));
cards.add(new SetCardInfo("Dreamscape Artist", 40, Rarity.COMMON, mage.cards.d.DreamscapeArtist.class));
cards.add(new SetCardInfo("Dunerider Outlaw", 86, Rarity.UNCOMMON, mage.cards.d.DuneriderOutlaw.class));
cards.add(new SetCardInfo("Dust Corona", 97, Rarity.COMMON, mage.cards.d.DustCorona.class));
cards.add(new SetCardInfo("Dust Elemental", 5, Rarity.RARE, mage.cards.d.DustElemental.class));
cards.add(new SetCardInfo("Enslave", 70, Rarity.UNCOMMON, mage.cards.e.Enslave.class));
cards.add(new SetCardInfo("Erratic Mutation", 41, Rarity.COMMON, mage.cards.e.ErraticMutation.class));
cards.add(new SetCardInfo("Essence Warden", 145, Rarity.COMMON, mage.cards.e.EssenceWarden.class));
cards.add(new SetCardInfo("Evolution Charm", 127, Rarity.COMMON, mage.cards.e.EvolutionCharm.class));
cards.add(new SetCardInfo("Extirpate", 71, Rarity.RARE, mage.cards.e.Extirpate.class));
cards.add(new SetCardInfo("Fa'adiyah Seer", 146, Rarity.COMMON, mage.cards.f.FaadiyahSeer.class));
cards.add(new SetCardInfo("Fatal Frenzy", 98, Rarity.RARE, mage.cards.f.FatalFrenzy.class));
cards.add(new SetCardInfo("Firefright Mage", 99, Rarity.COMMON, mage.cards.f.FirefrightMage.class));
cards.add(new SetCardInfo("Frenetic Sliver", 157, Rarity.UNCOMMON, mage.cards.f.FreneticSliver.class));
cards.add(new SetCardInfo("Frozen Aether", 54, Rarity.UNCOMMON, mage.cards.f.FrozenAether.class));
cards.add(new SetCardInfo("Fungal Behemoth", 128, Rarity.RARE, mage.cards.f.FungalBehemoth.class));
cards.add(new SetCardInfo("Fury Charm", 100, Rarity.COMMON, mage.cards.f.FuryCharm.class));
cards.add(new SetCardInfo("Gaea's Anthem", 147, Rarity.RARE, mage.cards.g.GaeasAnthem.class));
cards.add(new SetCardInfo("Ghost Tactician", 6, Rarity.COMMON, mage.cards.g.GhostTactician.class));
cards.add(new SetCardInfo("Giant Dustwasp", 129, Rarity.COMMON, mage.cards.g.GiantDustwasp.class));
cards.add(new SetCardInfo("Gossamer Phantasm", 55, Rarity.COMMON, mage.cards.g.GossamerPhantasm.class));
cards.add(new SetCardInfo("Groundbreaker", 148, Rarity.RARE, mage.cards.g.Groundbreaker.class));
cards.add(new SetCardInfo("Hammerheim Deadeye", 101, Rarity.UNCOMMON, mage.cards.h.HammerheimDeadeye.class));
cards.add(new SetCardInfo("Harmonize", 149, Rarity.UNCOMMON, mage.cards.h.Harmonize.class));
cards.add(new SetCardInfo("Healing Leaves", 150, Rarity.COMMON, mage.cards.h.HealingLeaves.class));
cards.add(new SetCardInfo("Hedge Troll", 151, Rarity.UNCOMMON, mage.cards.h.HedgeTroll.class));
cards.add(new SetCardInfo("Heroes Remembered", 7, Rarity.RARE, mage.cards.h.HeroesRemembered.class));
cards.add(new SetCardInfo("Hunting Wilds", 130, Rarity.UNCOMMON, mage.cards.h.HuntingWilds.class));
cards.add(new SetCardInfo("Imp's Mischief", 72, Rarity.RARE, mage.cards.i.ImpsMischief.class));
cards.add(new SetCardInfo("Intet, the Dreamer", 158, Rarity.RARE, mage.cards.i.IntetTheDreamer.class));
cards.add(new SetCardInfo("Jedit Ojanen of Efrava", 131, Rarity.RARE, mage.cards.j.JeditOjanenOfEfrava.class));
cards.add(new SetCardInfo("Jodah's Avenger", 42, Rarity.UNCOMMON, mage.cards.j.JodahsAvenger.class));
cards.add(new SetCardInfo("Kavu Predator", 132, Rarity.UNCOMMON, mage.cards.k.KavuPredator.class));
cards.add(new SetCardInfo("Keen Sense", 152, Rarity.UNCOMMON, mage.cards.k.KeenSense.class));
cards.add(new SetCardInfo("Keldon Marauders", 102, Rarity.COMMON, mage.cards.k.KeldonMarauders.class));
cards.add(new SetCardInfo("Lavacore Elemental", 103, Rarity.UNCOMMON, mage.cards.l.LavacoreElemental.class));
cards.add(new SetCardInfo("Life and Limb", 133, Rarity.RARE, mage.cards.l.LifeAndLimb.class));
cards.add(new SetCardInfo("Magus of the Arena", 104, Rarity.RARE, mage.cards.m.MagusOfTheArena.class));
cards.add(new SetCardInfo("Magus of the Bazaar", 43, Rarity.RARE, mage.cards.m.MagusOfTheBazaar.class));
cards.add(new SetCardInfo("Magus of the Coffers", 73, Rarity.RARE, mage.cards.m.MagusOfTheCoffers.class));
cards.add(new SetCardInfo("Magus of the Library", 134, Rarity.RARE, mage.cards.m.MagusOfTheLibrary.class));
cards.add(new SetCardInfo("Magus of the Tabernacle", 8, Rarity.RARE, mage.cards.m.MagusOfTheTabernacle.class));
cards.add(new SetCardInfo("Malach of the Dawn", 24, Rarity.UNCOMMON, mage.cards.m.MalachOfTheDawn.class));
cards.add(new SetCardInfo("Mana Tithe", 25, Rarity.COMMON, mage.cards.m.ManaTithe.class));
cards.add(new SetCardInfo("Melancholy", 88, Rarity.COMMON, mage.cards.m.Melancholy.class));
cards.add(new SetCardInfo("Merfolk Thaumaturgist", 56, Rarity.COMMON, mage.cards.m.MerfolkThaumaturgist.class));
cards.add(new SetCardInfo("Mesa Enchantress", 26, Rarity.RARE, mage.cards.m.MesaEnchantress.class));
cards.add(new SetCardInfo("Midnight Charm", 74, Rarity.COMMON, mage.cards.m.MidnightCharm.class));
cards.add(new SetCardInfo("Mire Boa", 135, Rarity.COMMON, mage.cards.m.MireBoa.class));
cards.add(new SetCardInfo("Mirri the Cursed", 75, Rarity.RARE, mage.cards.m.MirriTheCursed.class));
cards.add(new SetCardInfo("Mycologist", 27, Rarity.UNCOMMON, mage.cards.m.Mycologist.class));
cards.add(new SetCardInfo("Necrotic Sliver", 159, Rarity.UNCOMMON, mage.cards.n.NecroticSliver.class));
cards.add(new SetCardInfo("Needlepeak Spider", 105, Rarity.COMMON, mage.cards.n.NeedlepeakSpider.class));
cards.add(new SetCardInfo("Null Profusion", 89, Rarity.RARE, mage.cards.n.NullProfusion.class));
cards.add(new SetCardInfo("Numot, the Devastator", 160, Rarity.RARE, mage.cards.n.NumotTheDevastator.class));
cards.add(new SetCardInfo("Oros, the Avenger", 161, Rarity.RARE, mage.cards.o.OrosTheAvenger.class));
cards.add(new SetCardInfo("Ovinize", 57, Rarity.UNCOMMON, mage.cards.o.Ovinize.class));
cards.add(new SetCardInfo("Pallid Mycoderm", 10, Rarity.COMMON, mage.cards.p.PallidMycoderm.class));
cards.add(new SetCardInfo("Phantasmagorian", 77, Rarity.UNCOMMON, mage.cards.p.Phantasmagorian.class));
cards.add(new SetCardInfo("Piracy Charm", 58, Rarity.COMMON, mage.cards.p.PiracyCharm.class));
cards.add(new SetCardInfo("Pongify", 44, Rarity.UNCOMMON, mage.cards.p.Pongify.class));
cards.add(new SetCardInfo("Porphyry Nodes", 28, Rarity.RARE, mage.cards.p.PorphyryNodes.class));
cards.add(new SetCardInfo("Poultice Sliver", 11, Rarity.COMMON, mage.cards.p.PoulticeSliver.class));
cards.add(new SetCardInfo("Pouncing Wurm", 136, Rarity.UNCOMMON, mage.cards.p.PouncingWurm.class));
cards.add(new SetCardInfo("Primal Plasma", 59, Rarity.COMMON, mage.cards.p.PrimalPlasma.class));
cards.add(new SetCardInfo("Prodigal Pyromancer", 118, Rarity.COMMON, mage.cards.p.ProdigalPyromancer.class));
cards.add(new SetCardInfo("Psychotrope Thallid", 137, Rarity.UNCOMMON, mage.cards.p.PsychotropeThallid.class));
cards.add(new SetCardInfo("Pyrohemia", 119, Rarity.UNCOMMON, mage.cards.p.Pyrohemia.class));
cards.add(new SetCardInfo("Radha, Heir to Keld", 162, Rarity.RARE, mage.cards.r.RadhaHeirToKeld.class));
cards.add(new SetCardInfo("Rathi Trapper", 90, Rarity.COMMON, mage.cards.r.RathiTrapper.class));
cards.add(new SetCardInfo("Reality Acid", 45, Rarity.COMMON, mage.cards.r.RealityAcid.class));
cards.add(new SetCardInfo("Rebuff the Wicked", 12, Rarity.UNCOMMON, mage.cards.r.RebuffTheWicked.class));
cards.add(new SetCardInfo("Reckless Wurm", 120, Rarity.UNCOMMON, mage.cards.r.RecklessWurm.class));
cards.add(new SetCardInfo("Reflex Sliver", 138, Rarity.COMMON, mage.cards.r.ReflexSliver.class));
cards.add(new SetCardInfo("Revered Dead", 29, Rarity.COMMON, mage.cards.r.ReveredDead.class));
cards.add(new SetCardInfo("Ridged Kusite", 78, Rarity.COMMON, mage.cards.r.RidgedKusite.class));
cards.add(new SetCardInfo("Riptide Pilferer", 60, Rarity.UNCOMMON, mage.cards.r.RiptidePilferer.class));
cards.add(new SetCardInfo("Roiling Horror", 79, Rarity.RARE, mage.cards.r.RoilingHorror.class));
cards.add(new SetCardInfo("Rough // Tumble", 114, Rarity.UNCOMMON, mage.cards.r.RoughTumble.class));
cards.add(new SetCardInfo("Saltblast", 15, Rarity.UNCOMMON, mage.cards.s.Saltblast.class));
cards.add(new SetCardInfo("Saltfield Recluse", 16, Rarity.COMMON, mage.cards.s.SaltfieldRecluse.class));
cards.add(new SetCardInfo("Seal of Primordium", 153, Rarity.COMMON, mage.cards.s.SealOfPrimordium.class));
cards.add(new SetCardInfo("Serendib Sorcerer", 61, Rarity.RARE, mage.cards.s.SerendibSorcerer.class));
cards.add(new SetCardInfo("Serra's Boon", 17, Rarity.UNCOMMON, mage.cards.s.SerrasBoon.class));
cards.add(new SetCardInfo("Serra Sphinx", 62, Rarity.RARE, mage.cards.s.SerraSphinx.class));
cards.add(new SetCardInfo("Shade of Trokair", 18, Rarity.COMMON, mage.cards.s.ShadeOfTrokair.class));
cards.add(new SetCardInfo("Shaper Parasite", 46, Rarity.COMMON, mage.cards.s.ShaperParasite.class));
cards.add(new SetCardInfo("Shivan Meteor", 106, Rarity.UNCOMMON, mage.cards.s.ShivanMeteor.class));
cards.add(new SetCardInfo("Shivan Wumpus", 121, Rarity.RARE, mage.cards.s.ShivanWumpus.class));
cards.add(new SetCardInfo("Shrouded Lore", 91, Rarity.UNCOMMON, mage.cards.s.ShroudedLore.class));
cards.add(new SetCardInfo("Simian Spirit Guide", 122, Rarity.COMMON, mage.cards.s.SimianSpiritGuide.class));
cards.add(new SetCardInfo("Sinew Sliver", 30, Rarity.COMMON, mage.cards.s.SinewSliver.class));
cards.add(new SetCardInfo("Skirk Shaman", 123, Rarity.COMMON, mage.cards.s.SkirkShaman.class));
cards.add(new SetCardInfo("Sophic Centaur", 139, Rarity.UNCOMMON, mage.cards.s.SophicCentaur.class));
cards.add(new SetCardInfo("Spellshift", 47, Rarity.RARE, mage.cards.s.Spellshift.class));
cards.add(new SetCardInfo("Spitting Sliver", 80, Rarity.COMMON, mage.cards.s.SpittingSliver.class));
cards.add(new SetCardInfo("Stingscourger", 107, Rarity.COMMON, mage.cards.s.Stingscourger.class));
cards.add(new SetCardInfo("Stonecloaker", 19, Rarity.UNCOMMON, mage.cards.s.Stonecloaker.class));
cards.add(new SetCardInfo("Stormfront Riders", 20, Rarity.UNCOMMON, mage.cards.s.StormfrontRiders.class));
cards.add(new SetCardInfo("Sulfur Elemental", 108, Rarity.UNCOMMON, mage.cards.s.SulfurElemental.class));
cards.add(new SetCardInfo("Sunlance", 31, Rarity.COMMON, mage.cards.s.Sunlance.class));
cards.add(new SetCardInfo("Synchronous Sliver", 48, Rarity.COMMON, mage.cards.s.SynchronousSliver.class));
cards.add(new SetCardInfo("Temporal Extortion", 81, Rarity.RARE, mage.cards.t.TemporalExtortion.class));
cards.add(new SetCardInfo("Teneb, the Harvester", 163, Rarity.RARE, mage.cards.t.TenebTheHarvester.class));
cards.add(new SetCardInfo("Tidewalker", 49, Rarity.UNCOMMON, mage.cards.t.Tidewalker.class));
cards.add(new SetCardInfo("Timbermare", 140, Rarity.RARE, mage.cards.t.Timbermare.class));
cards.add(new SetCardInfo("Timecrafting", 109, Rarity.UNCOMMON, mage.cards.t.Timecrafting.class));
cards.add(new SetCardInfo("Torchling", 110, Rarity.RARE, mage.cards.t.Torchling.class));
cards.add(new SetCardInfo("Uktabi Drake", 141, Rarity.COMMON, mage.cards.u.UktabiDrake.class));
cards.add(new SetCardInfo("Urborg, Tomb of Yawgmoth", 165, Rarity.RARE, mage.cards.u.UrborgTombOfYawgmoth.class));
cards.add(new SetCardInfo("Utopia Vow", 142, Rarity.COMMON, mage.cards.u.UtopiaVow.class));
cards.add(new SetCardInfo("Vampiric Link", 92, Rarity.COMMON, mage.cards.v.VampiricLink.class));
cards.add(new SetCardInfo("Venarian Glimmer", 52, Rarity.UNCOMMON, mage.cards.v.VenarianGlimmer.class));
cards.add(new SetCardInfo("Vitaspore Thallid", 143, Rarity.COMMON, mage.cards.v.VitasporeThallid.class));
cards.add(new SetCardInfo("Voidstone Gargoyle", 21, Rarity.RARE, mage.cards.v.VoidstoneGargoyle.class));
cards.add(new SetCardInfo("Vorosh, the Hunter", 164, Rarity.RARE, mage.cards.v.VoroshTheHunter.class));
cards.add(new SetCardInfo("Waning Wurm", 83, Rarity.UNCOMMON, mage.cards.w.WaningWurm.class));
cards.add(new SetCardInfo("Whitemane Lion", 22, Rarity.COMMON, mage.cards.w.WhitemaneLion.class));
cards.add(new SetCardInfo("Wild Pair", 144, Rarity.RARE, mage.cards.w.WildPair.class));
cards.add(new SetCardInfo("Wistful Thinking", 53, Rarity.COMMON, mage.cards.w.WistfulThinking.class));
}
}

View file

@ -51,7 +51,7 @@ public class PortalSecondAge extends ExpansionSet {
}
private PortalSecondAge() {
super("Portal Second Age", "PO2", ExpansionSet.buildDate(1998, 6, 24), SetType.SUPPLEMENTAL);
super("Portal Second Age", "P02", ExpansionSet.buildDate(1998, 6, 24), SetType.SUPPLEMENTAL);
this.blockName = "Beginner";
this.hasBasicLands = true;
this.hasBoosters = true;

View file

@ -120,6 +120,7 @@ public class RevisedEdition extends ExpansionSet {
cards.add(new SetCardInfo("Fork", 152, Rarity.RARE, mage.cards.f.Fork.class));
cards.add(new SetCardInfo("Frozen Shade", 20, Rarity.COMMON, mage.cards.f.FrozenShade.class));
cards.add(new SetCardInfo("Fungusaur", 104, Rarity.RARE, mage.cards.f.Fungusaur.class));
cards.add(new SetCardInfo("Gaea's Liege", 105, Rarity.RARE, mage.cards.g.GaeasLiege.class));
cards.add(new SetCardInfo("Giant Growth", 106, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
cards.add(new SetCardInfo("Giant Spider", 107, Rarity.COMMON, mage.cards.g.GiantSpider.class));
cards.add(new SetCardInfo("Glasses of Urza", 249, Rarity.UNCOMMON, mage.cards.g.GlassesOfUrza.class));
@ -224,8 +225,10 @@ public class RevisedEdition extends ExpansionSet {
cards.add(new SetCardInfo("Resurrection", 218, Rarity.UNCOMMON, mage.cards.r.Resurrection.class));
cards.add(new SetCardInfo("Reverse Damage", 219, Rarity.RARE, mage.cards.r.ReverseDamage.class));
cards.add(new SetCardInfo("Righteousness", 221, Rarity.RARE, mage.cards.r.Righteousness.class));
cards.add(new SetCardInfo("Rock Hydra", 172, Rarity.RARE, mage.cards.r.RockHydra.class));
cards.add(new SetCardInfo("Rocket Launcher", 272, Rarity.RARE, mage.cards.r.RocketLauncher.class));
cards.add(new SetCardInfo("Roc of Kher Ridges", 171, Rarity.RARE, mage.cards.r.RocOfKherRidges.class));
cards.add(new SetCardInfo("Rock Hydra", 172, Rarity.RARE, mage.cards.r.RockHydra.class));
cards.add(new SetCardInfo("Rod of Ruin", 273, Rarity.UNCOMMON, mage.cards.r.RodOfRuin.class));
cards.add(new SetCardInfo("Royal Assassin", 33, Rarity.RARE, mage.cards.r.RoyalAssassin.class));
cards.add(new SetCardInfo("Sacrifice", 34, Rarity.UNCOMMON, mage.cards.s.Sacrifice.class));

View file

@ -68,7 +68,8 @@ public class Scourge extends ExpansionSet {
cards.add(new SetCardInfo("Brain Freeze", 29, Rarity.UNCOMMON, mage.cards.b.BrainFreeze.class));
cards.add(new SetCardInfo("Break Asunder", 113, Rarity.COMMON, mage.cards.b.BreakAsunder.class));
cards.add(new SetCardInfo("Cabal Conditioning", 56, Rarity.RARE, mage.cards.c.CabalConditioning.class));
cards.add(new SetCardInfo("Cabal Interrogator", 57, Rarity.UNCOMMON, mage.cards.c.CabalInterrogator.class));
cards.add(new SetCardInfo("Cabal Interrogator", 57, Rarity.UNCOMMON, mage.cards.c.CabalInterrogator.class));
cards.add(new SetCardInfo("Dawn Elemental", 7, Rarity.RARE, mage.cards.d.DawnElemental.class));
cards.add(new SetCardInfo("Call to the Grave", 58, Rarity.RARE, mage.cards.c.CallToTheGrave.class));
cards.add(new SetCardInfo("Carbonize", 83, Rarity.UNCOMMON, mage.cards.c.Carbonize.class));
cards.add(new SetCardInfo("Carrion Feeder", 59, Rarity.COMMON, mage.cards.c.CarrionFeeder.class));
@ -119,6 +120,7 @@ public class Scourge extends ExpansionSet {
cards.add(new SetCardInfo("Kurgadon", 124, Rarity.UNCOMMON, mage.cards.k.Kurgadon.class));
cards.add(new SetCardInfo("Long-Term Plans", 38, Rarity.UNCOMMON, mage.cards.l.LongTermPlans.class));
cards.add(new SetCardInfo("Mercurial Kite", 39, Rarity.COMMON, mage.cards.m.MercurialKite.class));
cards.add(new SetCardInfo("Metamorphose", 40, Rarity.UNCOMMON, mage.cards.m.Metamorphose.class));
cards.add(new SetCardInfo("Mind's Desire", 41, Rarity.RARE, mage.cards.m.MindsDesire.class));
cards.add(new SetCardInfo("Mischievous Quanar", 42, Rarity.RARE, mage.cards.m.MischievousQuanar.class));
cards.add(new SetCardInfo("Misguided Rage", 99, Rarity.COMMON, mage.cards.m.MisguidedRage.class));

View file

@ -121,6 +121,7 @@ public class Stronghold extends ExpansionSet {
cards.add(new SetCardInfo("Mogg Infestation", 93, Rarity.RARE, mage.cards.m.MoggInfestation.class));
cards.add(new SetCardInfo("Mogg Maniac", 94, Rarity.UNCOMMON, mage.cards.m.MoggManiac.class));
cards.add(new SetCardInfo("Morgue Thrull", 15, Rarity.COMMON, mage.cards.m.MorgueThrull.class));
cards.add(new SetCardInfo("Mortuary", 16, Rarity.RARE, mage.cards.m.Mortuary.class));
cards.add(new SetCardInfo("Mox Diamond", 132, Rarity.RARE, mage.cards.m.MoxDiamond.class));
cards.add(new SetCardInfo("Mulch", 60, Rarity.COMMON, mage.cards.m.Mulch.class));
cards.add(new SetCardInfo("Nomads en-Kor", 109, Rarity.COMMON, mage.cards.n.NomadsEnKor.class));

View file

@ -1,439 +1,440 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets;
import mage.constants.SetType;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.cards.CardGraphicInfo;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class TenthEdition extends ExpansionSet {
private static final TenthEdition fINSTANCE = new TenthEdition();
public static TenthEdition getInstance() {
return fINSTANCE;
}
private TenthEdition() {
super("Tenth Edition", "10E", ExpansionSet.buildDate(2007, 6, 14), SetType.CORE);
this.hasBoosters = true;
this.numBoosterLands = 1;
this.numBoosterCommon = 10;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 0;
cards.add(new SetCardInfo("Abundance", 249, Rarity.RARE, mage.cards.a.Abundance.class));
cards.add(new SetCardInfo("Academy Researchers", 63, Rarity.UNCOMMON, mage.cards.a.AcademyResearchers.class));
cards.add(new SetCardInfo("Adarkar Wastes", 347, Rarity.RARE, mage.cards.a.AdarkarWastes.class));
cards.add(new SetCardInfo("Afflict", 125, Rarity.COMMON, mage.cards.a.Afflict.class));
cards.add(new SetCardInfo("Aggressive Urge", 250, Rarity.COMMON, mage.cards.a.AggressiveUrge.class));
cards.add(new SetCardInfo("Agonizing Memories", 126, Rarity.UNCOMMON, mage.cards.a.AgonizingMemories.class));
cards.add(new SetCardInfo("Air Elemental", 64, Rarity.UNCOMMON, mage.cards.a.AirElemental.class));
cards.add(new SetCardInfo("Ambassador Laquatus", 65, Rarity.RARE, mage.cards.a.AmbassadorLaquatus.class));
cards.add(new SetCardInfo("Anaba Bodyguard", 187, Rarity.COMMON, mage.cards.a.AnabaBodyguard.class));
cards.add(new SetCardInfo("Ancestor's Chosen", 1, Rarity.UNCOMMON, mage.cards.a.AncestorsChosen.class));
cards.add(new SetCardInfo("Angelic Blessing", 3, Rarity.COMMON, mage.cards.a.AngelicBlessing.class));
cards.add(new SetCardInfo("Angelic Chorus", 4, Rarity.RARE, mage.cards.a.AngelicChorus.class));
cards.add(new SetCardInfo("Angelic Wall", 5, Rarity.COMMON, mage.cards.a.AngelicWall.class));
cards.add(new SetCardInfo("Angel of Mercy", 2, Rarity.UNCOMMON, mage.cards.a.AngelOfMercy.class));
cards.add(new SetCardInfo("Angel's Feather", 311, Rarity.UNCOMMON, mage.cards.a.AngelsFeather.class));
cards.add(new SetCardInfo("Arcane Teachings", 188, Rarity.UNCOMMON, mage.cards.a.ArcaneTeachings.class));
cards.add(new SetCardInfo("Arcanis the Omnipotent", 66, Rarity.RARE, mage.cards.a.ArcanisTheOmnipotent.class));
cards.add(new SetCardInfo("Ascendant Evincar", 127, Rarity.RARE, mage.cards.a.AscendantEvincar.class));
cards.add(new SetCardInfo("Assassinate", 128, Rarity.COMMON, mage.cards.a.Assassinate.class));
cards.add(new SetCardInfo("Aura Graft", 67, Rarity.UNCOMMON, mage.cards.a.AuraGraft.class));
cards.add(new SetCardInfo("Aura of Silence", 6, Rarity.UNCOMMON, mage.cards.a.AuraOfSilence.class));
cards.add(new SetCardInfo("Avatar of Might", 251, Rarity.RARE, mage.cards.a.AvatarOfMight.class));
cards.add(new SetCardInfo("Aven Cloudchaser", 7, Rarity.COMMON, mage.cards.a.AvenCloudchaser.class));
cards.add(new SetCardInfo("Aven Fisher", 68, Rarity.COMMON, mage.cards.a.AvenFisher.class));
cards.add(new SetCardInfo("Aven Windreader", 69, Rarity.COMMON, mage.cards.a.AvenWindreader.class));
cards.add(new SetCardInfo("Ballista Squad", 8, Rarity.UNCOMMON, mage.cards.b.BallistaSquad.class));
cards.add(new SetCardInfo("Bandage", 9, Rarity.COMMON, mage.cards.b.Bandage.class));
cards.add(new SetCardInfo("Battlefield Forge", 348, Rarity.RARE, mage.cards.b.BattlefieldForge.class));
cards.add(new SetCardInfo("Beacon of Destruction", 189, Rarity.RARE, mage.cards.b.BeaconOfDestruction.class));
cards.add(new SetCardInfo("Beacon of Immortality", 10, Rarity.RARE, mage.cards.b.BeaconOfImmortality.class));
cards.add(new SetCardInfo("Beacon of Unrest", 129, Rarity.RARE, mage.cards.b.BeaconOfUnrest.class));
cards.add(new SetCardInfo("Benalish Knight", 11, Rarity.COMMON, mage.cards.b.BenalishKnight.class));
cards.add(new SetCardInfo("Birds of Paradise", 252, Rarity.RARE, mage.cards.b.BirdsOfParadise.class));
cards.add(new SetCardInfo("Blanchwood Armor", 253, Rarity.UNCOMMON, mage.cards.b.BlanchwoodArmor.class));
cards.add(new SetCardInfo("Blaze", 190, Rarity.UNCOMMON, mage.cards.b.Blaze.class));
cards.add(new SetCardInfo("Bloodfire Colossus", 191, Rarity.RARE, mage.cards.b.BloodfireColossus.class));
cards.add(new SetCardInfo("Bloodrock Cyclops", 192, Rarity.COMMON, mage.cards.b.BloodrockCyclops.class));
cards.add(new SetCardInfo("Bogardan Firefiend", 193, Rarity.COMMON, mage.cards.b.BogardanFirefiend.class));
cards.add(new SetCardInfo("Bog Wraith", 130, Rarity.UNCOMMON, mage.cards.b.BogWraith.class));
cards.add(new SetCardInfo("Boomerang", 70, Rarity.COMMON, mage.cards.b.Boomerang.class));
cards.add(new SetCardInfo("Bottle Gnomes", 312, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class));
cards.add(new SetCardInfo("Brushland", 349, Rarity.RARE, mage.cards.b.Brushland.class));
cards.add(new SetCardInfo("Cancel", 71, Rarity.COMMON, mage.cards.c.Cancel.class));
cards.add(new SetCardInfo("Canopy Spider", 254, Rarity.COMMON, mage.cards.c.CanopySpider.class));
cards.add(new SetCardInfo("Caves of Koilos", 350, Rarity.RARE, mage.cards.c.CavesOfKoilos.class));
cards.add(new SetCardInfo("Cephalid Constable", 72, Rarity.RARE, mage.cards.c.CephalidConstable.class));
cards.add(new SetCardInfo("Chimeric Staff", 313, Rarity.RARE, mage.cards.c.ChimericStaff.class));
cards.add(new SetCardInfo("Cho-Manno, Revolutionary", 12, Rarity.RARE, mage.cards.c.ChoMannoRevolutionary.class));
cards.add(new SetCardInfo("Chromatic Star", 314, Rarity.UNCOMMON, mage.cards.c.ChromaticStar.class));
cards.add(new SetCardInfo("Citanul Flute", 315, Rarity.RARE, mage.cards.c.CitanulFlute.class));
cards.add(new SetCardInfo("Civic Wayfinder", 255, Rarity.COMMON, mage.cards.c.CivicWayfinder.class));
cards.add(new SetCardInfo("Clone", 73, Rarity.RARE, mage.cards.c.Clone.class));
cards.add(new SetCardInfo("Cloud Elemental", 74, Rarity.COMMON, mage.cards.c.CloudElemental.class));
cards.add(new SetCardInfo("Cloud Sprite", 75, Rarity.COMMON, mage.cards.c.CloudSprite.class));
cards.add(new SetCardInfo("Coat of Arms", 316, Rarity.RARE, mage.cards.c.CoatOfArms.class));
cards.add(new SetCardInfo("Colossus of Sardia", 317, Rarity.RARE, mage.cards.c.ColossusOfSardia.class));
cards.add(new SetCardInfo("Commune with Nature", 256, Rarity.COMMON, mage.cards.c.CommuneWithNature.class));
cards.add(new SetCardInfo("Composite Golem", 318, Rarity.UNCOMMON, mage.cards.c.CompositeGolem.class));
cards.add(new SetCardInfo("Condemn", 13, Rarity.UNCOMMON, mage.cards.c.Condemn.class));
cards.add(new SetCardInfo("Cone of Flame", 194, Rarity.UNCOMMON, mage.cards.c.ConeOfFlame.class));
cards.add(new SetCardInfo("Consume Spirit", 131, Rarity.UNCOMMON, mage.cards.c.ConsumeSpirit.class));
cards.add(new SetCardInfo("Contaminated Bond", 132, Rarity.COMMON, mage.cards.c.ContaminatedBond.class));
cards.add(new SetCardInfo("Counsel of the Soratami", 76, Rarity.COMMON, mage.cards.c.CounselOfTheSoratami.class));
cards.add(new SetCardInfo("Crafty Pathmage", 77, Rarity.COMMON, mage.cards.c.CraftyPathmage.class));
cards.add(new SetCardInfo("Craw Wurm", 257, Rarity.COMMON, mage.cards.c.CrawWurm.class));
cards.add(new SetCardInfo("Creeping Mold", 258, Rarity.UNCOMMON, mage.cards.c.CreepingMold.class));
cards.add(new SetCardInfo("Crucible of Worlds", 319, Rarity.RARE, mage.cards.c.CrucibleOfWorlds.class));
cards.add(new SetCardInfo("Cruel Edict", 133, Rarity.UNCOMMON, mage.cards.c.CruelEdict.class));
cards.add(new SetCardInfo("Cryoclasm", 195, Rarity.UNCOMMON, mage.cards.c.Cryoclasm.class));
cards.add(new SetCardInfo("Deathmark", 134, Rarity.UNCOMMON, mage.cards.d.Deathmark.class));
cards.add(new SetCardInfo("Dehydration", 78, Rarity.COMMON, mage.cards.d.Dehydration.class));
cards.add(new SetCardInfo("Deluge", 79, Rarity.UNCOMMON, mage.cards.d.Deluge.class));
cards.add(new SetCardInfo("Demolish", 196, Rarity.COMMON, mage.cards.d.Demolish.class));
cards.add(new SetCardInfo("Demon's Horn", 320, Rarity.UNCOMMON, mage.cards.d.DemonsHorn.class));
cards.add(new SetCardInfo("Demystify", 14, Rarity.COMMON, mage.cards.d.Demystify.class));
cards.add(new SetCardInfo("Denizen of the Deep", 80, Rarity.RARE, mage.cards.d.DenizenOfTheDeep.class));
cards.add(new SetCardInfo("Diabolic Tutor", 135, Rarity.UNCOMMON, mage.cards.d.DiabolicTutor.class));
cards.add(new SetCardInfo("Discombobulate", 81, Rarity.UNCOMMON, mage.cards.d.Discombobulate.class));
cards.add(new SetCardInfo("Distress", 136, Rarity.COMMON, mage.cards.d.Distress.class));
cards.add(new SetCardInfo("Doomed Necromancer", 137, Rarity.RARE, mage.cards.d.DoomedNecromancer.class));
cards.add(new SetCardInfo("Doubling Cube", 321, Rarity.RARE, mage.cards.d.DoublingCube.class));
cards.add(new SetCardInfo("Dragon Roost", 197, Rarity.RARE, mage.cards.d.DragonRoost.class));
cards.add(new SetCardInfo("Dragon's Claw", 322, Rarity.UNCOMMON, mage.cards.d.DragonsClaw.class));
cards.add(new SetCardInfo("Dreamborn Muse", 82, Rarity.RARE, mage.cards.d.DreambornMuse.class));
cards.add(new SetCardInfo("Dross Crocodile", 138, Rarity.COMMON, mage.cards.d.DrossCrocodile.class));
cards.add(new SetCardInfo("Drudge Skeletons", 139, Rarity.UNCOMMON, mage.cards.d.DrudgeSkeletons.class));
cards.add(new SetCardInfo("Duct Crawler", 198, Rarity.COMMON, mage.cards.d.DuctCrawler.class));
cards.add(new SetCardInfo("Dusk Imp", 140, Rarity.COMMON, mage.cards.d.DuskImp.class));
cards.add(new SetCardInfo("Earth Elemental", 199, Rarity.UNCOMMON, mage.cards.e.EarthElemental.class));
cards.add(new SetCardInfo("Elven Riders", 259, Rarity.UNCOMMON, mage.cards.e.ElvenRiders.class));
cards.add(new SetCardInfo("Elvish Berserker", 260, Rarity.COMMON, mage.cards.e.ElvishBerserker.class));
cards.add(new SetCardInfo("Elvish Champion", 261, Rarity.RARE, mage.cards.e.ElvishChampion.class));
cards.add(new SetCardInfo("Elvish Piper", 262, Rarity.RARE, mage.cards.e.ElvishPiper.class));
cards.add(new SetCardInfo("Enormous Baloth", 263, Rarity.UNCOMMON, mage.cards.e.EnormousBaloth.class));
cards.add(new SetCardInfo("Essence Drain", 141, Rarity.COMMON, mage.cards.e.EssenceDrain.class));
cards.add(new SetCardInfo("Evacuation", 83, Rarity.RARE, mage.cards.e.Evacuation.class));
cards.add(new SetCardInfo("Faerie Conclave", 351, Rarity.UNCOMMON, mage.cards.f.FaerieConclave.class));
cards.add(new SetCardInfo("Fear", 142, Rarity.COMMON, mage.cards.f.Fear.class));
cards.add(new SetCardInfo("Femeref Archers", 264, Rarity.UNCOMMON, mage.cards.f.FemerefArchers.class));
cards.add(new SetCardInfo("Festering Goblin", 143, Rarity.COMMON, mage.cards.f.FesteringGoblin.class));
cards.add(new SetCardInfo("Field Marshal", 15, Rarity.RARE, mage.cards.f.FieldMarshal.class));
cards.add(new SetCardInfo("Firebreathing", 200, Rarity.COMMON, mage.cards.f.Firebreathing.class));
cards.add(new SetCardInfo("Fists of the Anvil", 201, Rarity.COMMON, mage.cards.f.FistsOfTheAnvil.class));
cards.add(new SetCardInfo("Flamewave Invoker", 202, Rarity.UNCOMMON, mage.cards.f.FlamewaveInvoker.class));
cards.add(new SetCardInfo("Flashfreeze", 84, Rarity.UNCOMMON, mage.cards.f.Flashfreeze.class));
cards.add(new SetCardInfo("Flowstone Slide", 203, Rarity.RARE, mage.cards.f.FlowstoneSlide.class));
cards.add(new SetCardInfo("Fog Elemental", 85, Rarity.UNCOMMON, mage.cards.f.FogElemental.class));
cards.add(new SetCardInfo("Forbidding Watchtower", 352, Rarity.UNCOMMON, mage.cards.f.ForbiddingWatchtower.class));
cards.add(new SetCardInfo("Forest", 380, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 381, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 382, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 383, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Fountain of Youth", 323, Rarity.UNCOMMON, mage.cards.f.FountainOfYouth.class));
cards.add(new SetCardInfo("Fugitive Wizard", 86, Rarity.COMMON, mage.cards.f.FugitiveWizard.class));
cards.add(new SetCardInfo("Furnace of Rath", 204, Rarity.RARE, mage.cards.f.FurnaceOfRath.class));
cards.add(new SetCardInfo("Furnace Whelp", 205, Rarity.UNCOMMON, mage.cards.f.FurnaceWhelp.class));
cards.add(new SetCardInfo("Gaea's Herald", 265, Rarity.RARE, mage.cards.g.GaeasHerald.class));
cards.add(new SetCardInfo("Ghitu Encampment", 353, Rarity.UNCOMMON, mage.cards.g.GhituEncampment.class));
cards.add(new SetCardInfo("Ghost Warden", 16, Rarity.COMMON, mage.cards.g.GhostWarden.class));
cards.add(new SetCardInfo("Giant Growth", 266, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
cards.add(new SetCardInfo("Giant Spider", 267, Rarity.COMMON, mage.cards.g.GiantSpider.class));
cards.add(new SetCardInfo("Glorious Anthem", 17, Rarity.RARE, mage.cards.g.GloriousAnthem.class));
cards.add(new SetCardInfo("Goblin Elite Infantry", 206, Rarity.COMMON, mage.cards.g.GoblinEliteInfantry.class));
cards.add(new SetCardInfo("Goblin King", 207, Rarity.RARE, mage.cards.g.GoblinKing.class));
cards.add(new SetCardInfo("Goblin Lore", 208, Rarity.UNCOMMON, mage.cards.g.GoblinLore.class));
cards.add(new SetCardInfo("Goblin Piker", 209, Rarity.COMMON, mage.cards.g.GoblinPiker.class));
cards.add(new SetCardInfo("Goblin Sky Raider", 210, Rarity.COMMON, mage.cards.g.GoblinSkyRaider.class));
cards.add(new SetCardInfo("Graveborn Muse", 145, Rarity.RARE, mage.cards.g.GravebornMuse.class));
cards.add(new SetCardInfo("Gravedigger", 146, Rarity.COMMON, mage.cards.g.Gravedigger.class));
cards.add(new SetCardInfo("Grave Pact", 144, Rarity.RARE, mage.cards.g.GravePact.class));
cards.add(new SetCardInfo("Grizzly Bears", 268, Rarity.COMMON, mage.cards.g.GrizzlyBears.class));
cards.add(new SetCardInfo("Guerrilla Tactics", 211, Rarity.UNCOMMON, mage.cards.g.GuerrillaTactics.class));
cards.add(new SetCardInfo("Hail of Arrows", 18, Rarity.UNCOMMON, mage.cards.h.HailOfArrows.class));
cards.add(new SetCardInfo("Hate Weaver", 147, Rarity.UNCOMMON, mage.cards.h.HateWeaver.class));
cards.add(new SetCardInfo("Head Games", 148, Rarity.RARE, mage.cards.h.HeadGames.class));
cards.add(new SetCardInfo("Heart of Light", 19, Rarity.COMMON, mage.cards.h.HeartOfLight.class));
cards.add(new SetCardInfo("Hidden Horror", 149, Rarity.UNCOMMON, mage.cards.h.HiddenHorror.class));
cards.add(new SetCardInfo("High Ground", 20, Rarity.UNCOMMON, mage.cards.h.HighGround.class));
cards.add(new SetCardInfo("Highway Robber", 150, Rarity.COMMON, mage.cards.h.HighwayRobber.class));
cards.add(new SetCardInfo("Hill Giant", 212, Rarity.COMMON, mage.cards.h.HillGiant.class));
cards.add(new SetCardInfo("Holy Day", 21, Rarity.COMMON, mage.cards.h.HolyDay.class));
cards.add(new SetCardInfo("Holy Strength", 22, Rarity.COMMON, mage.cards.h.HolyStrength.class));
cards.add(new SetCardInfo("Honor Guard", 23, Rarity.COMMON, mage.cards.h.HonorGuard.class));
cards.add(new SetCardInfo("Horseshoe Crab", 87, Rarity.COMMON, mage.cards.h.HorseshoeCrab.class));
cards.add(new SetCardInfo("Howling Mine", 325, Rarity.RARE, mage.cards.h.HowlingMine.class));
cards.add(new SetCardInfo("Hunted Wumpus", 269, Rarity.UNCOMMON, mage.cards.h.HuntedWumpus.class));
cards.add(new SetCardInfo("Hurkyl's Recall", 88, Rarity.RARE, mage.cards.h.HurkylsRecall.class));
cards.add(new SetCardInfo("Hurricane", 270, Rarity.RARE, mage.cards.h.Hurricane.class));
cards.add(new SetCardInfo("Hypnotic Specter", 151, Rarity.RARE, mage.cards.h.HypnoticSpecter.class));
cards.add(new SetCardInfo("Icatian Priest", 24, Rarity.UNCOMMON, mage.cards.i.IcatianPriest.class));
cards.add(new SetCardInfo("Icy Manipulator", 326, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class));
cards.add(new SetCardInfo("Incinerate", 213, Rarity.COMMON, mage.cards.i.Incinerate.class));
cards.add(new SetCardInfo("Island", 368, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 369, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 370, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 371, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Jayemdae Tome", 327, Rarity.RARE, mage.cards.j.JayemdaeTome.class));
cards.add(new SetCardInfo("Joiner Adept", 271, Rarity.RARE, mage.cards.j.JoinerAdept.class));
cards.add(new SetCardInfo("Juggernaut", 328, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class));
cards.add(new SetCardInfo("Kamahl, Pit Fighter", 214, Rarity.RARE, mage.cards.k.KamahlPitFighter.class));
cards.add(new SetCardInfo("Karplusan Forest", 354, Rarity.RARE, mage.cards.k.KarplusanForest.class));
cards.add(new SetCardInfo("Karplusan Strider", 272, Rarity.UNCOMMON, mage.cards.k.KarplusanStrider.class));
cards.add(new SetCardInfo("Kavu Climber", 273, Rarity.COMMON, mage.cards.k.KavuClimber.class));
cards.add(new SetCardInfo("Kjeldoran Royal Guard", 25, Rarity.RARE, mage.cards.k.KjeldoranRoyalGuard.class));
cards.add(new SetCardInfo("Knight of Dusk", 152, Rarity.UNCOMMON, mage.cards.k.KnightOfDusk.class));
cards.add(new SetCardInfo("Kraken's Eye", 329, Rarity.UNCOMMON, mage.cards.k.KrakensEye.class));
cards.add(new SetCardInfo("Lava Axe", 215, Rarity.COMMON, mage.cards.l.LavaAxe.class));
cards.add(new SetCardInfo("Lavaborn Muse", 216, Rarity.RARE, mage.cards.l.LavabornMuse.class));
cards.add(new SetCardInfo("Legacy Weapon", 330, Rarity.RARE, mage.cards.l.LegacyWeapon.class));
cards.add(new SetCardInfo("Leonin Scimitar", 331, Rarity.UNCOMMON, mage.cards.l.LeoninScimitar.class));
cards.add(new SetCardInfo("Lightning Elemental", 217, Rarity.COMMON, mage.cards.l.LightningElemental.class));
cards.add(new SetCardInfo("Llanowar Elves", 274, Rarity.COMMON, mage.cards.l.LlanowarElves.class));
cards.add(new SetCardInfo("Llanowar Sentinel", 275, Rarity.COMMON, mage.cards.l.LlanowarSentinel.class));
cards.add(new SetCardInfo("Llanowar Wastes", 355, Rarity.RARE, mage.cards.l.LlanowarWastes.class));
cards.add(new SetCardInfo("Looming Shade", 153, Rarity.COMMON, mage.cards.l.LoomingShade.class));
cards.add(new SetCardInfo("Lord of the Pit", 154, Rarity.RARE, mage.cards.l.LordOfThePit.class));
cards.add(new SetCardInfo("Lord of the Undead", 155, Rarity.RARE, mage.cards.l.LordOfTheUndead.class));
cards.add(new SetCardInfo("Loxodon Mystic", 26, Rarity.COMMON, mage.cards.l.LoxodonMystic.class));
cards.add(new SetCardInfo("Loxodon Warhammer", 332, Rarity.RARE, mage.cards.l.LoxodonWarhammer.class));
cards.add(new SetCardInfo("Loyal Sentry", 27, Rarity.RARE, mage.cards.l.LoyalSentry.class));
cards.add(new SetCardInfo("Lumengrid Warden", 89, Rarity.COMMON, mage.cards.l.LumengridWarden.class));
cards.add(new SetCardInfo("Lure", 276, Rarity.UNCOMMON, mage.cards.l.Lure.class));
cards.add(new SetCardInfo("Mahamoti Djinn", 90, Rarity.RARE, mage.cards.m.MahamotiDjinn.class));
cards.add(new SetCardInfo("Manabarbs", 218, Rarity.RARE, mage.cards.m.Manabarbs.class));
cards.add(new SetCardInfo("Mantis Engine", 333, Rarity.UNCOMMON, mage.cards.m.MantisEngine.class));
cards.add(new SetCardInfo("March of the Machines", 91, Rarity.RARE, mage.cards.m.MarchOfTheMachines.class));
cards.add(new SetCardInfo("Mass of Ghouls", 156, Rarity.COMMON, mage.cards.m.MassOfGhouls.class));
cards.add(new SetCardInfo("Megrim", 157, Rarity.UNCOMMON, mage.cards.m.Megrim.class));
cards.add(new SetCardInfo("Merfolk Looter", 92, Rarity.COMMON, mage.cards.m.MerfolkLooter.class));
cards.add(new SetCardInfo("Midnight Ritual", 158, Rarity.RARE, mage.cards.m.MidnightRitual.class));
cards.add(new SetCardInfo("Might of Oaks", 277, Rarity.RARE, mage.cards.m.MightOfOaks.class));
cards.add(new SetCardInfo("Might Weaver", 278, Rarity.UNCOMMON, mage.cards.m.MightWeaver.class));
cards.add(new SetCardInfo("Millstone", 334, Rarity.RARE, mage.cards.m.Millstone.class));
cards.add(new SetCardInfo("Mind Rot", 159, Rarity.COMMON, mage.cards.m.MindRot.class));
cards.add(new SetCardInfo("Mind Stone", 335, Rarity.UNCOMMON, mage.cards.m.MindStone.class));
cards.add(new SetCardInfo("Mirri, Cat Warrior", 279, Rarity.RARE, mage.cards.m.MirriCatWarrior.class));
cards.add(new SetCardInfo("Mobilization", 29, Rarity.RARE, mage.cards.m.Mobilization.class));
cards.add(new SetCardInfo("Mogg Fanatic", 219, Rarity.UNCOMMON, mage.cards.m.MoggFanatic.class));
cards.add(new SetCardInfo("Molimo, Maro-Sorcerer", 280, Rarity.RARE, mage.cards.m.MolimoMaroSorcerer.class));
cards.add(new SetCardInfo("Mortal Combat", 160, Rarity.RARE, mage.cards.m.MortalCombat.class));
cards.add(new SetCardInfo("Mortivore", 161, Rarity.RARE, mage.cards.m.Mortivore.class));
cards.add(new SetCardInfo("Mountain", 376, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 377, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 378, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 379, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Nantuko Husk", 162, Rarity.UNCOMMON, mage.cards.n.NantukoHusk.class));
cards.add(new SetCardInfo("Naturalize", 282, Rarity.COMMON, mage.cards.n.Naturalize.class));
cards.add(new SetCardInfo("Natural Spring", 281, Rarity.COMMON, mage.cards.n.NaturalSpring.class));
cards.add(new SetCardInfo("Nekrataal", 163, Rarity.UNCOMMON, mage.cards.n.Nekrataal.class));
cards.add(new SetCardInfo("Nightmare", 164, Rarity.RARE, mage.cards.n.Nightmare.class));
cards.add(new SetCardInfo("Nomad Mythmaker", 30, Rarity.RARE, mage.cards.n.NomadMythmaker.class));
cards.add(new SetCardInfo("No Rest for the Wicked", 165, Rarity.UNCOMMON, mage.cards.n.NoRestForTheWicked.class));
cards.add(new SetCardInfo("Orcish Artillery", 220, Rarity.UNCOMMON, mage.cards.o.OrcishArtillery.class));
cards.add(new SetCardInfo("Ornithopter", 336, Rarity.UNCOMMON, mage.cards.o.Ornithopter.class));
cards.add(new SetCardInfo("Overgrowth", 283, Rarity.COMMON, mage.cards.o.Overgrowth.class));
cards.add(new SetCardInfo("Overrun", 284, Rarity.UNCOMMON, mage.cards.o.Overrun.class));
cards.add(new SetCardInfo("Pacifism", 31, Rarity.COMMON, mage.cards.p.Pacifism.class));
cards.add(new SetCardInfo("Paladin en-Vec", 32, Rarity.RARE, mage.cards.p.PaladinEnVec.class));
cards.add(new SetCardInfo("Pariah", 33, Rarity.RARE, mage.cards.p.Pariah.class));
cards.add(new SetCardInfo("Peek", 94, Rarity.COMMON, mage.cards.p.Peek.class));
cards.add(new SetCardInfo("Persuasion", 95, Rarity.UNCOMMON, mage.cards.p.Persuasion.class));
cards.add(new SetCardInfo("Phage the Untouchable", 166, Rarity.RARE, mage.cards.p.PhageTheUntouchable.class));
cards.add(new SetCardInfo("Phantom Warrior", 96, Rarity.UNCOMMON, mage.cards.p.PhantomWarrior.class));
cards.add(new SetCardInfo("Phyrexian Rager", 167, Rarity.COMMON, mage.cards.p.PhyrexianRager.class));
cards.add(new SetCardInfo("Phyrexian Vault", 337, Rarity.UNCOMMON, mage.cards.p.PhyrexianVault.class));
cards.add(new SetCardInfo("Pincher Beetles", 285, Rarity.COMMON, mage.cards.p.PincherBeetles.class));
cards.add(new SetCardInfo("Pithing Needle", 338, Rarity.RARE, mage.cards.p.PithingNeedle.class));
cards.add(new SetCardInfo("Plagiarize", 97, Rarity.RARE, mage.cards.p.Plagiarize.class));
cards.add(new SetCardInfo("Plague Beetle", 168, Rarity.COMMON, mage.cards.p.PlagueBeetle.class));
cards.add(new SetCardInfo("Plague Wind", 169, Rarity.RARE, mage.cards.p.PlagueWind.class));
cards.add(new SetCardInfo("Plains", 364, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 365, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 366, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 367, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Platinum Angel", 339, Rarity.RARE, mage.cards.p.PlatinumAngel.class));
cards.add(new SetCardInfo("Primal Rage", 286, Rarity.UNCOMMON, mage.cards.p.PrimalRage.class));
cards.add(new SetCardInfo("Prodigal Pyromancer", 221, Rarity.COMMON, mage.cards.p.ProdigalPyromancer.class));
cards.add(new SetCardInfo("Puppeteer", 98, Rarity.UNCOMMON, mage.cards.p.Puppeteer.class));
cards.add(new SetCardInfo("Pyroclasm", 222, Rarity.UNCOMMON, mage.cards.p.Pyroclasm.class));
cards.add(new SetCardInfo("Quicksand", 356, Rarity.UNCOMMON, mage.cards.q.Quicksand.class));
cards.add(new SetCardInfo("Quirion Dryad", 287, Rarity.RARE, mage.cards.q.QuirionDryad.class));
cards.add(new SetCardInfo("Rage Weaver", 223, Rarity.UNCOMMON, mage.cards.r.RageWeaver.class));
cards.add(new SetCardInfo("Raging Goblin", 224, Rarity.COMMON, mage.cards.r.RagingGoblin.class));
cards.add(new SetCardInfo("Rain of Tears", 170, Rarity.UNCOMMON, mage.cards.r.RainOfTears.class));
cards.add(new SetCardInfo("Rampant Growth", 288, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
cards.add(new SetCardInfo("Ravenous Rats", 171, Rarity.COMMON, mage.cards.r.RavenousRats.class));
cards.add(new SetCardInfo("Razormane Masticore", 340, Rarity.RARE, mage.cards.r.RazormaneMasticore.class));
cards.add(new SetCardInfo("Recollect", 289, Rarity.UNCOMMON, mage.cards.r.Recollect.class));
cards.add(new SetCardInfo("Recover", 172, Rarity.COMMON, mage.cards.r.Recover.class));
cards.add(new SetCardInfo("Regeneration", 290, Rarity.UNCOMMON, mage.cards.r.Regeneration.class));
cards.add(new SetCardInfo("Relentless Assault", 225, Rarity.RARE, mage.cards.r.RelentlessAssault.class));
cards.add(new SetCardInfo("Relentless Rats", 173, Rarity.UNCOMMON, mage.cards.r.RelentlessRats.class));
cards.add(new SetCardInfo("Reminisce", 99, Rarity.UNCOMMON, mage.cards.r.Reminisce.class));
cards.add(new SetCardInfo("Remove Soul", 100, Rarity.COMMON, mage.cards.r.RemoveSoul.class));
cards.add(new SetCardInfo("Reviving Dose", 34, Rarity.COMMON, mage.cards.r.RevivingDose.class));
cards.add(new SetCardInfo("Reya Dawnbringer", 35, Rarity.RARE, mage.cards.r.ReyaDawnbringer.class));
cards.add(new SetCardInfo("Rhox", 291, Rarity.RARE, mage.cards.r.Rhox.class));
cards.add(new SetCardInfo("Righteousness", 36, Rarity.RARE, mage.cards.r.Righteousness.class));
cards.add(new SetCardInfo("Robe of Mirrors", 101, Rarity.COMMON, mage.cards.r.RobeOfMirrors.class));
cards.add(new SetCardInfo("Rock Badger", 226, Rarity.COMMON, mage.cards.r.RockBadger.class));
cards.add(new SetCardInfo("Rod of Ruin", 341, Rarity.UNCOMMON, mage.cards.r.RodOfRuin.class));
cards.add(new SetCardInfo("Root Maze", 292, Rarity.RARE, mage.cards.r.RootMaze.class));
cards.add(new SetCardInfo("Rootwalla", 293, Rarity.COMMON, mage.cards.r.Rootwalla.class));
cards.add(new SetCardInfo("Rootwater Commando", 102, Rarity.COMMON, mage.cards.r.RootwaterCommando.class));
cards.add(new SetCardInfo("Rootwater Matriarch", 103, Rarity.RARE, mage.cards.r.RootwaterMatriarch.class));
cards.add(new SetCardInfo("Royal Assassin", 174, Rarity.RARE, mage.cards.r.RoyalAssassin.class));
cards.add(new SetCardInfo("Rule of Law", 37, Rarity.UNCOMMON, mage.cards.r.RuleOfLaw.class));
cards.add(new SetCardInfo("Rushwood Dryad", 294, Rarity.COMMON, mage.cards.r.RushwoodDryad.class));
cards.add(new SetCardInfo("Sage Owl", 104, Rarity.COMMON, mage.cards.s.SageOwl.class));
cards.add(new SetCardInfo("Samite Healer", 38, Rarity.COMMON, mage.cards.s.SamiteHealer.class));
cards.add(new SetCardInfo("Scalpelexis", 105, Rarity.RARE, mage.cards.s.Scalpelexis.class));
cards.add(new SetCardInfo("Scathe Zombies", 175, Rarity.COMMON, mage.cards.s.ScatheZombies.class));
cards.add(new SetCardInfo("Scion of the Wild", 295, Rarity.RARE, mage.cards.s.ScionOfTheWild.class));
cards.add(new SetCardInfo("Scoria Wurm", 227, Rarity.RARE, mage.cards.s.ScoriaWurm.class));
cards.add(new SetCardInfo("Sculpting Steel", 342, Rarity.RARE, mage.cards.s.SculptingSteel.class));
cards.add(new SetCardInfo("Sea Monster", 106, Rarity.COMMON, mage.cards.s.SeaMonster.class));
cards.add(new SetCardInfo("Seedborn Muse", 296, Rarity.RARE, mage.cards.s.SeedbornMuse.class));
cards.add(new SetCardInfo("Seismic Assault", 228, Rarity.RARE, mage.cards.s.SeismicAssault.class));
cards.add(new SetCardInfo("Sengir Vampire", 176, Rarity.RARE, mage.cards.s.SengirVampire.class));
cards.add(new SetCardInfo("Serra Angel", 39, Rarity.RARE, mage.cards.s.SerraAngel.class));
cards.add(new SetCardInfo("Serra's Embrace", 40, Rarity.UNCOMMON, mage.cards.s.SerrasEmbrace.class));
cards.add(new SetCardInfo("Severed Legion", 177, Rarity.COMMON, mage.cards.s.SeveredLegion.class));
cards.add(new SetCardInfo("Shatterstorm", 229, Rarity.UNCOMMON, mage.cards.s.Shatterstorm.class));
cards.add(new SetCardInfo("Shimmering Wings", 107, Rarity.COMMON, mage.cards.s.ShimmeringWings.class));
cards.add(new SetCardInfo("Shivan Dragon", 230, Rarity.RARE, mage.cards.s.ShivanDragon.class));
cards.add(new SetCardInfo("Shivan Hellkite", 231, Rarity.RARE, mage.cards.s.ShivanHellkite.class));
cards.add(new SetCardInfo("Shivan Reef", 357, Rarity.RARE, mage.cards.s.ShivanReef.class));
cards.add(new SetCardInfo("Shock", 232, Rarity.COMMON, mage.cards.s.Shock.class));
cards.add(new SetCardInfo("Shunt", 233, Rarity.RARE, mage.cards.s.Shunt.class));
cards.add(new SetCardInfo("Siege-Gang Commander", 234, Rarity.RARE, mage.cards.s.SiegeGangCommander.class));
cards.add(new SetCardInfo("Sift", 108, Rarity.COMMON, mage.cards.s.Sift.class));
cards.add(new SetCardInfo("Skyhunter Patrol", 41, Rarity.COMMON, mage.cards.s.SkyhunterPatrol.class));
cards.add(new SetCardInfo("Skyhunter Prowler", 42, Rarity.COMMON, mage.cards.s.SkyhunterProwler.class));
cards.add(new SetCardInfo("Skyhunter Skirmisher", 43, Rarity.UNCOMMON, mage.cards.s.SkyhunterSkirmisher.class));
cards.add(new SetCardInfo("Skyshroud Ranger", 297, Rarity.COMMON, mage.cards.s.SkyshroudRanger.class));
cards.add(new SetCardInfo("Sky Weaver", 109, Rarity.UNCOMMON, mage.cards.s.SkyWeaver.class));
cards.add(new SetCardInfo("Sleeper Agent", 178, Rarity.RARE, mage.cards.s.SleeperAgent.class));
cards.add(new SetCardInfo("Smash", 235, Rarity.COMMON, mage.cards.s.Smash.class));
cards.add(new SetCardInfo("Snapping Drake", 110, Rarity.COMMON, mage.cards.s.SnappingDrake.class));
cards.add(new SetCardInfo("Soulblast", 236, Rarity.RARE, mage.cards.s.Soulblast.class));
cards.add(new SetCardInfo("Soul Feast", 179, Rarity.UNCOMMON, mage.cards.s.SoulFeast.class));
cards.add(new SetCardInfo("Soul Warden", 44, Rarity.UNCOMMON, mage.cards.s.SoulWarden.class));
cards.add(new SetCardInfo("Spark Elemental", 237, Rarity.UNCOMMON, mage.cards.s.SparkElemental.class));
cards.add(new SetCardInfo("Spawning Pool", 358, Rarity.UNCOMMON, mage.cards.s.SpawningPool.class));
cards.add(new SetCardInfo("Spellbook", 343, Rarity.UNCOMMON, mage.cards.s.Spellbook.class));
cards.add(new SetCardInfo("Spiketail Hatchling", 111, Rarity.UNCOMMON, mage.cards.s.SpiketailHatchling.class));
cards.add(new SetCardInfo("Spined Wurm", 298, Rarity.COMMON, mage.cards.s.SpinedWurm.class));
cards.add(new SetCardInfo("Spineless Thug", 180, Rarity.COMMON, mage.cards.s.SpinelessThug.class));
cards.add(new SetCardInfo("Spirit Link", 45, Rarity.UNCOMMON, mage.cards.s.SpiritLink.class));
cards.add(new SetCardInfo("Spirit Weaver", 46, Rarity.UNCOMMON, mage.cards.s.SpiritWeaver.class));
cards.add(new SetCardInfo("Spitting Earth", 238, Rarity.COMMON, mage.cards.s.SpittingEarth.class));
cards.add(new SetCardInfo("Squee, Goblin Nabob", 239, Rarity.RARE, mage.cards.s.SqueeGoblinNabob.class));
cards.add(new SetCardInfo("Stalking Tiger", 299, Rarity.COMMON, mage.cards.s.StalkingTiger.class));
cards.add(new SetCardInfo("Stampeding Wildebeests", 300, Rarity.UNCOMMON, mage.cards.s.StampedingWildebeests.class));
cards.add(new SetCardInfo("Starlight Invoker", 47, Rarity.UNCOMMON, mage.cards.s.StarlightInvoker.class));
cards.add(new SetCardInfo("Steadfast Guard", 48, Rarity.COMMON, mage.cards.s.SteadfastGuard.class));
cards.add(new SetCardInfo("Steel Golem", 344, Rarity.UNCOMMON, mage.cards.s.SteelGolem.class));
cards.add(new SetCardInfo("Story Circle", 49, Rarity.RARE, mage.cards.s.StoryCircle.class));
cards.add(new SetCardInfo("Stronghold Discipline", 181, Rarity.UNCOMMON, mage.cards.s.StrongholdDiscipline.class));
cards.add(new SetCardInfo("Stun", 240, Rarity.COMMON, mage.cards.s.Stun.class));
cards.add(new SetCardInfo("Sudden Impact", 241, Rarity.UNCOMMON, mage.cards.s.SuddenImpact.class));
cards.add(new SetCardInfo("Sulfurous Springs", 359, Rarity.RARE, mage.cards.s.SulfurousSprings.class));
cards.add(new SetCardInfo("Sunken Hope", 112, Rarity.RARE, mage.cards.s.SunkenHope.class));
cards.add(new SetCardInfo("Suntail Hawk", 50, Rarity.COMMON, mage.cards.s.SuntailHawk.class));
cards.add(new SetCardInfo("Swamp", 372, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 373, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 374, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 375, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Sylvan Basilisk", 301, Rarity.UNCOMMON, mage.cards.s.SylvanBasilisk.class));
cards.add(new SetCardInfo("Sylvan Scrying", 302, Rarity.UNCOMMON, mage.cards.s.SylvanScrying.class));
cards.add(new SetCardInfo("Tangle Spider", 303, Rarity.UNCOMMON, mage.cards.t.TangleSpider.class));
cards.add(new SetCardInfo("Telepathy", 113, Rarity.UNCOMMON, mage.cards.t.Telepathy.class));
cards.add(new SetCardInfo("Telling Time", 114, Rarity.UNCOMMON, mage.cards.t.TellingTime.class));
cards.add(new SetCardInfo("Tempest of Light", 51, Rarity.UNCOMMON, mage.cards.t.TempestOfLight.class));
cards.add(new SetCardInfo("Terramorphic Expanse", 360, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class));
cards.add(new SetCardInfo("Terror", 182, Rarity.COMMON, mage.cards.t.Terror.class));
cards.add(new SetCardInfo("The Hive", 324, Rarity.RARE, mage.cards.t.TheHive.class));
cards.add(new SetCardInfo("Thieving Magpie", 115, Rarity.UNCOMMON, mage.cards.t.ThievingMagpie.class));
cards.add(new SetCardInfo("Threaten", 242, Rarity.UNCOMMON, mage.cards.t.Threaten.class));
cards.add(new SetCardInfo("Thrull Surgeon", 183, Rarity.UNCOMMON, mage.cards.t.ThrullSurgeon.class));
cards.add(new SetCardInfo("Thundering Giant", 243, Rarity.UNCOMMON, mage.cards.t.ThunderingGiant.class));
cards.add(new SetCardInfo("Tidings", 116, Rarity.UNCOMMON, mage.cards.t.Tidings.class));
cards.add(new SetCardInfo("Time Stop", 117, Rarity.RARE, mage.cards.t.TimeStop.class));
cards.add(new SetCardInfo("Time Stretch", 118, Rarity.RARE, mage.cards.t.TimeStretch.class));
cards.add(new SetCardInfo("Traumatize", 119, Rarity.RARE, mage.cards.t.Traumatize.class));
cards.add(new SetCardInfo("Treasure Hunter", 52, Rarity.UNCOMMON, mage.cards.t.TreasureHunter.class));
cards.add(new SetCardInfo("Treetop Bracers", 304, Rarity.COMMON, mage.cards.t.TreetopBracers.class));
cards.add(new SetCardInfo("Treetop Village", 361, Rarity.UNCOMMON, mage.cards.t.TreetopVillage.class));
cards.add(new SetCardInfo("Troll Ascetic", 305, Rarity.RARE, mage.cards.t.TrollAscetic.class));
cards.add(new SetCardInfo("True Believer", 53, Rarity.RARE, mage.cards.t.TrueBeliever.class));
cards.add(new SetCardInfo("Tundra Wolves", 54, Rarity.COMMON, mage.cards.t.TundraWolves.class));
cards.add(new SetCardInfo("Twincast", 120, Rarity.RARE, mage.cards.t.Twincast.class));
cards.add(new SetCardInfo("Twitch", 121, Rarity.COMMON, mage.cards.t.Twitch.class));
cards.add(new SetCardInfo("Uncontrollable Anger", 244, Rarity.COMMON, mage.cards.u.UncontrollableAnger.class));
cards.add(new SetCardInfo("Underground River", 362, Rarity.RARE, mage.cards.u.UndergroundRiver.class));
cards.add(new SetCardInfo("Underworld Dreams", 184, Rarity.RARE, mage.cards.u.UnderworldDreams.class));
cards.add(new SetCardInfo("Unholy Strength", 185, Rarity.COMMON, mage.cards.u.UnholyStrength.class));
cards.add(new SetCardInfo("Unsummon", 122, Rarity.COMMON, mage.cards.u.Unsummon.class));
cards.add(new SetCardInfo("Upwelling", 306, Rarity.RARE, mage.cards.u.Upwelling.class));
cards.add(new SetCardInfo("Vampire Bats", 186, Rarity.COMMON, mage.cards.v.VampireBats.class));
cards.add(new SetCardInfo("Vedalken Mastermind", 123, Rarity.UNCOMMON, mage.cards.v.VedalkenMastermind.class));
cards.add(new SetCardInfo("Venerable Monk", 55, Rarity.COMMON, mage.cards.v.VenerableMonk.class));
cards.add(new SetCardInfo("Verdant Force", 307, Rarity.RARE, mage.cards.v.VerdantForce.class));
cards.add(new SetCardInfo("Viashino Runner", 245, Rarity.COMMON, mage.cards.v.ViashinoRunner.class));
cards.add(new SetCardInfo("Viashino Sandscout", 246, Rarity.COMMON, mage.cards.v.ViashinoSandscout.class));
cards.add(new SetCardInfo("Viridian Shaman", 308, Rarity.UNCOMMON, mage.cards.v.ViridianShaman.class));
cards.add(new SetCardInfo("Voice of All", 56, Rarity.RARE, mage.cards.v.VoiceOfAll.class));
cards.add(new SetCardInfo("Wall of Air", 124, Rarity.UNCOMMON, mage.cards.w.WallOfAir.class));
cards.add(new SetCardInfo("Wall of Fire", 247, Rarity.UNCOMMON, mage.cards.w.WallOfFire.class));
cards.add(new SetCardInfo("Wall of Swords", 57, Rarity.UNCOMMON, mage.cards.w.WallOfSwords.class));
cards.add(new SetCardInfo("Wall of Wood", 309, Rarity.COMMON, mage.cards.w.WallOfWood.class));
cards.add(new SetCardInfo("Warp World", 248, Rarity.RARE, mage.cards.w.WarpWorld.class));
cards.add(new SetCardInfo("Warrior's Honor", 58, Rarity.COMMON, mage.cards.w.WarriorsHonor.class));
cards.add(new SetCardInfo("Whispersilk Cloak", 345, Rarity.UNCOMMON, mage.cards.w.WhispersilkCloak.class));
cards.add(new SetCardInfo("Wild Griffin", 59, Rarity.COMMON, mage.cards.w.WildGriffin.class));
cards.add(new SetCardInfo("Windborn Muse", 60, Rarity.RARE, mage.cards.w.WindbornMuse.class));
cards.add(new SetCardInfo("Wrath of God", 61, Rarity.RARE, mage.cards.w.WrathOfGod.class));
cards.add(new SetCardInfo("Wurm's Tooth", 346, Rarity.UNCOMMON, mage.cards.w.WurmsTooth.class));
cards.add(new SetCardInfo("Yavimaya Coast", 363, Rarity.RARE, mage.cards.y.YavimayaCoast.class));
cards.add(new SetCardInfo("Yavimaya Enchantress", 310, Rarity.UNCOMMON, mage.cards.y.YavimayaEnchantress.class));
cards.add(new SetCardInfo("Youthful Knight", 62, Rarity.COMMON, mage.cards.y.YouthfulKnight.class));
}
}
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets;
import mage.constants.SetType;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.cards.CardGraphicInfo;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class TenthEdition extends ExpansionSet {
private static final TenthEdition fINSTANCE = new TenthEdition();
public static TenthEdition getInstance() {
return fINSTANCE;
}
private TenthEdition() {
super("Tenth Edition", "10E", ExpansionSet.buildDate(2007, 6, 14), SetType.CORE);
this.hasBoosters = true;
this.numBoosterLands = 1;
this.numBoosterCommon = 10;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 0;
cards.add(new SetCardInfo("Abundance", 249, Rarity.RARE, mage.cards.a.Abundance.class));
cards.add(new SetCardInfo("Academy Researchers", 63, Rarity.UNCOMMON, mage.cards.a.AcademyResearchers.class));
cards.add(new SetCardInfo("Adarkar Wastes", 347, Rarity.RARE, mage.cards.a.AdarkarWastes.class));
cards.add(new SetCardInfo("Afflict", 125, Rarity.COMMON, mage.cards.a.Afflict.class));
cards.add(new SetCardInfo("Aggressive Urge", 250, Rarity.COMMON, mage.cards.a.AggressiveUrge.class));
cards.add(new SetCardInfo("Agonizing Memories", 126, Rarity.UNCOMMON, mage.cards.a.AgonizingMemories.class));
cards.add(new SetCardInfo("Air Elemental", 64, Rarity.UNCOMMON, mage.cards.a.AirElemental.class));
cards.add(new SetCardInfo("Ambassador Laquatus", 65, Rarity.RARE, mage.cards.a.AmbassadorLaquatus.class));
cards.add(new SetCardInfo("Anaba Bodyguard", 187, Rarity.COMMON, mage.cards.a.AnabaBodyguard.class));
cards.add(new SetCardInfo("Ancestor's Chosen", 1, Rarity.UNCOMMON, mage.cards.a.AncestorsChosen.class));
cards.add(new SetCardInfo("Angelic Blessing", 3, Rarity.COMMON, mage.cards.a.AngelicBlessing.class));
cards.add(new SetCardInfo("Angelic Chorus", 4, Rarity.RARE, mage.cards.a.AngelicChorus.class));
cards.add(new SetCardInfo("Angelic Wall", 5, Rarity.COMMON, mage.cards.a.AngelicWall.class));
cards.add(new SetCardInfo("Angel of Mercy", 2, Rarity.UNCOMMON, mage.cards.a.AngelOfMercy.class));
cards.add(new SetCardInfo("Angel's Feather", 311, Rarity.UNCOMMON, mage.cards.a.AngelsFeather.class));
cards.add(new SetCardInfo("Arcane Teachings", 188, Rarity.UNCOMMON, mage.cards.a.ArcaneTeachings.class));
cards.add(new SetCardInfo("Arcanis the Omnipotent", 66, Rarity.RARE, mage.cards.a.ArcanisTheOmnipotent.class));
cards.add(new SetCardInfo("Ascendant Evincar", 127, Rarity.RARE, mage.cards.a.AscendantEvincar.class));
cards.add(new SetCardInfo("Assassinate", 128, Rarity.COMMON, mage.cards.a.Assassinate.class));
cards.add(new SetCardInfo("Aura Graft", 67, Rarity.UNCOMMON, mage.cards.a.AuraGraft.class));
cards.add(new SetCardInfo("Aura of Silence", 6, Rarity.UNCOMMON, mage.cards.a.AuraOfSilence.class));
cards.add(new SetCardInfo("Avatar of Might", 251, Rarity.RARE, mage.cards.a.AvatarOfMight.class));
cards.add(new SetCardInfo("Aven Cloudchaser", 7, Rarity.COMMON, mage.cards.a.AvenCloudchaser.class));
cards.add(new SetCardInfo("Aven Fisher", 68, Rarity.COMMON, mage.cards.a.AvenFisher.class));
cards.add(new SetCardInfo("Aven Windreader", 69, Rarity.COMMON, mage.cards.a.AvenWindreader.class));
cards.add(new SetCardInfo("Ballista Squad", 8, Rarity.UNCOMMON, mage.cards.b.BallistaSquad.class));
cards.add(new SetCardInfo("Bandage", 9, Rarity.COMMON, mage.cards.b.Bandage.class));
cards.add(new SetCardInfo("Battlefield Forge", 348, Rarity.RARE, mage.cards.b.BattlefieldForge.class));
cards.add(new SetCardInfo("Beacon of Destruction", 189, Rarity.RARE, mage.cards.b.BeaconOfDestruction.class));
cards.add(new SetCardInfo("Beacon of Immortality", 10, Rarity.RARE, mage.cards.b.BeaconOfImmortality.class));
cards.add(new SetCardInfo("Beacon of Unrest", 129, Rarity.RARE, mage.cards.b.BeaconOfUnrest.class));
cards.add(new SetCardInfo("Benalish Knight", 11, Rarity.COMMON, mage.cards.b.BenalishKnight.class));
cards.add(new SetCardInfo("Birds of Paradise", 252, Rarity.RARE, mage.cards.b.BirdsOfParadise.class));
cards.add(new SetCardInfo("Blanchwood Armor", 253, Rarity.UNCOMMON, mage.cards.b.BlanchwoodArmor.class));
cards.add(new SetCardInfo("Blaze", 190, Rarity.UNCOMMON, mage.cards.b.Blaze.class));
cards.add(new SetCardInfo("Bloodfire Colossus", 191, Rarity.RARE, mage.cards.b.BloodfireColossus.class));
cards.add(new SetCardInfo("Bloodrock Cyclops", 192, Rarity.COMMON, mage.cards.b.BloodrockCyclops.class));
cards.add(new SetCardInfo("Bogardan Firefiend", 193, Rarity.COMMON, mage.cards.b.BogardanFirefiend.class));
cards.add(new SetCardInfo("Bog Wraith", 130, Rarity.UNCOMMON, mage.cards.b.BogWraith.class));
cards.add(new SetCardInfo("Boomerang", 70, Rarity.COMMON, mage.cards.b.Boomerang.class));
cards.add(new SetCardInfo("Bottle Gnomes", 312, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class));
cards.add(new SetCardInfo("Brushland", 349, Rarity.RARE, mage.cards.b.Brushland.class));
cards.add(new SetCardInfo("Cancel", 71, Rarity.COMMON, mage.cards.c.Cancel.class));
cards.add(new SetCardInfo("Canopy Spider", 254, Rarity.COMMON, mage.cards.c.CanopySpider.class));
cards.add(new SetCardInfo("Caves of Koilos", 350, Rarity.RARE, mage.cards.c.CavesOfKoilos.class));
cards.add(new SetCardInfo("Cephalid Constable", 72, Rarity.RARE, mage.cards.c.CephalidConstable.class));
cards.add(new SetCardInfo("Chimeric Staff", 313, Rarity.RARE, mage.cards.c.ChimericStaff.class));
cards.add(new SetCardInfo("Cho-Manno, Revolutionary", 12, Rarity.RARE, mage.cards.c.ChoMannoRevolutionary.class));
cards.add(new SetCardInfo("Chromatic Star", 314, Rarity.UNCOMMON, mage.cards.c.ChromaticStar.class));
cards.add(new SetCardInfo("Citanul Flute", 315, Rarity.RARE, mage.cards.c.CitanulFlute.class));
cards.add(new SetCardInfo("Civic Wayfinder", 255, Rarity.COMMON, mage.cards.c.CivicWayfinder.class));
cards.add(new SetCardInfo("Clone", 73, Rarity.RARE, mage.cards.c.Clone.class));
cards.add(new SetCardInfo("Cloud Elemental", 74, Rarity.COMMON, mage.cards.c.CloudElemental.class));
cards.add(new SetCardInfo("Cloud Sprite", 75, Rarity.COMMON, mage.cards.c.CloudSprite.class));
cards.add(new SetCardInfo("Coat of Arms", 316, Rarity.RARE, mage.cards.c.CoatOfArms.class));
cards.add(new SetCardInfo("Colossus of Sardia", 317, Rarity.RARE, mage.cards.c.ColossusOfSardia.class));
cards.add(new SetCardInfo("Commune with Nature", 256, Rarity.COMMON, mage.cards.c.CommuneWithNature.class));
cards.add(new SetCardInfo("Composite Golem", 318, Rarity.UNCOMMON, mage.cards.c.CompositeGolem.class));
cards.add(new SetCardInfo("Condemn", 13, Rarity.UNCOMMON, mage.cards.c.Condemn.class));
cards.add(new SetCardInfo("Cone of Flame", 194, Rarity.UNCOMMON, mage.cards.c.ConeOfFlame.class));
cards.add(new SetCardInfo("Consume Spirit", 131, Rarity.UNCOMMON, mage.cards.c.ConsumeSpirit.class));
cards.add(new SetCardInfo("Contaminated Bond", 132, Rarity.COMMON, mage.cards.c.ContaminatedBond.class));
cards.add(new SetCardInfo("Counsel of the Soratami", 76, Rarity.COMMON, mage.cards.c.CounselOfTheSoratami.class));
cards.add(new SetCardInfo("Crafty Pathmage", 77, Rarity.COMMON, mage.cards.c.CraftyPathmage.class));
cards.add(new SetCardInfo("Craw Wurm", 257, Rarity.COMMON, mage.cards.c.CrawWurm.class));
cards.add(new SetCardInfo("Creeping Mold", 258, Rarity.UNCOMMON, mage.cards.c.CreepingMold.class));
cards.add(new SetCardInfo("Crucible of Worlds", 319, Rarity.RARE, mage.cards.c.CrucibleOfWorlds.class));
cards.add(new SetCardInfo("Cruel Edict", 133, Rarity.UNCOMMON, mage.cards.c.CruelEdict.class));
cards.add(new SetCardInfo("Cryoclasm", 195, Rarity.UNCOMMON, mage.cards.c.Cryoclasm.class));
cards.add(new SetCardInfo("Deathmark", 134, Rarity.UNCOMMON, mage.cards.d.Deathmark.class));
cards.add(new SetCardInfo("Dehydration", 78, Rarity.COMMON, mage.cards.d.Dehydration.class));
cards.add(new SetCardInfo("Deluge", 79, Rarity.UNCOMMON, mage.cards.d.Deluge.class));
cards.add(new SetCardInfo("Demolish", 196, Rarity.COMMON, mage.cards.d.Demolish.class));
cards.add(new SetCardInfo("Demon's Horn", 320, Rarity.UNCOMMON, mage.cards.d.DemonsHorn.class));
cards.add(new SetCardInfo("Demystify", 14, Rarity.COMMON, mage.cards.d.Demystify.class));
cards.add(new SetCardInfo("Denizen of the Deep", 80, Rarity.RARE, mage.cards.d.DenizenOfTheDeep.class));
cards.add(new SetCardInfo("Diabolic Tutor", 135, Rarity.UNCOMMON, mage.cards.d.DiabolicTutor.class));
cards.add(new SetCardInfo("Discombobulate", 81, Rarity.UNCOMMON, mage.cards.d.Discombobulate.class));
cards.add(new SetCardInfo("Distress", 136, Rarity.COMMON, mage.cards.d.Distress.class));
cards.add(new SetCardInfo("Doomed Necromancer", 137, Rarity.RARE, mage.cards.d.DoomedNecromancer.class));
cards.add(new SetCardInfo("Doubling Cube", 321, Rarity.RARE, mage.cards.d.DoublingCube.class));
cards.add(new SetCardInfo("Dragon Roost", 197, Rarity.RARE, mage.cards.d.DragonRoost.class));
cards.add(new SetCardInfo("Dragon's Claw", 322, Rarity.UNCOMMON, mage.cards.d.DragonsClaw.class));
cards.add(new SetCardInfo("Dreamborn Muse", 82, Rarity.RARE, mage.cards.d.DreambornMuse.class));
cards.add(new SetCardInfo("Dross Crocodile", 138, Rarity.COMMON, mage.cards.d.DrossCrocodile.class));
cards.add(new SetCardInfo("Drudge Skeletons", 139, Rarity.UNCOMMON, mage.cards.d.DrudgeSkeletons.class));
cards.add(new SetCardInfo("Duct Crawler", 198, Rarity.COMMON, mage.cards.d.DuctCrawler.class));
cards.add(new SetCardInfo("Dusk Imp", 140, Rarity.COMMON, mage.cards.d.DuskImp.class));
cards.add(new SetCardInfo("Earth Elemental", 199, Rarity.UNCOMMON, mage.cards.e.EarthElemental.class));
cards.add(new SetCardInfo("Elven Riders", 259, Rarity.UNCOMMON, mage.cards.e.ElvenRiders.class));
cards.add(new SetCardInfo("Elvish Berserker", 260, Rarity.COMMON, mage.cards.e.ElvishBerserker.class));
cards.add(new SetCardInfo("Elvish Champion", 261, Rarity.RARE, mage.cards.e.ElvishChampion.class));
cards.add(new SetCardInfo("Elvish Piper", 262, Rarity.RARE, mage.cards.e.ElvishPiper.class));
cards.add(new SetCardInfo("Enormous Baloth", 263, Rarity.UNCOMMON, mage.cards.e.EnormousBaloth.class));
cards.add(new SetCardInfo("Essence Drain", 141, Rarity.COMMON, mage.cards.e.EssenceDrain.class));
cards.add(new SetCardInfo("Evacuation", 83, Rarity.RARE, mage.cards.e.Evacuation.class));
cards.add(new SetCardInfo("Faerie Conclave", 351, Rarity.UNCOMMON, mage.cards.f.FaerieConclave.class));
cards.add(new SetCardInfo("Fear", 142, Rarity.COMMON, mage.cards.f.Fear.class));
cards.add(new SetCardInfo("Femeref Archers", 264, Rarity.UNCOMMON, mage.cards.f.FemerefArchers.class));
cards.add(new SetCardInfo("Festering Goblin", 143, Rarity.COMMON, mage.cards.f.FesteringGoblin.class));
cards.add(new SetCardInfo("Field Marshal", 15, Rarity.RARE, mage.cards.f.FieldMarshal.class));
cards.add(new SetCardInfo("Firebreathing", 200, Rarity.COMMON, mage.cards.f.Firebreathing.class));
cards.add(new SetCardInfo("Fists of the Anvil", 201, Rarity.COMMON, mage.cards.f.FistsOfTheAnvil.class));
cards.add(new SetCardInfo("Flamewave Invoker", 202, Rarity.UNCOMMON, mage.cards.f.FlamewaveInvoker.class));
cards.add(new SetCardInfo("Flashfreeze", 84, Rarity.UNCOMMON, mage.cards.f.Flashfreeze.class));
cards.add(new SetCardInfo("Flowstone Slide", 203, Rarity.RARE, mage.cards.f.FlowstoneSlide.class));
cards.add(new SetCardInfo("Fog Elemental", 85, Rarity.UNCOMMON, mage.cards.f.FogElemental.class));
cards.add(new SetCardInfo("Forbidding Watchtower", 352, Rarity.UNCOMMON, mage.cards.f.ForbiddingWatchtower.class));
cards.add(new SetCardInfo("Forest", 380, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 381, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 382, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 383, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Fountain of Youth", 323, Rarity.UNCOMMON, mage.cards.f.FountainOfYouth.class));
cards.add(new SetCardInfo("Fugitive Wizard", 86, Rarity.COMMON, mage.cards.f.FugitiveWizard.class));
cards.add(new SetCardInfo("Furnace of Rath", 204, Rarity.RARE, mage.cards.f.FurnaceOfRath.class));
cards.add(new SetCardInfo("Furnace Whelp", 205, Rarity.UNCOMMON, mage.cards.f.FurnaceWhelp.class));
cards.add(new SetCardInfo("Gaea's Herald", 265, Rarity.RARE, mage.cards.g.GaeasHerald.class));
cards.add(new SetCardInfo("Ghitu Encampment", 353, Rarity.UNCOMMON, mage.cards.g.GhituEncampment.class));
cards.add(new SetCardInfo("Ghost Warden", 16, Rarity.COMMON, mage.cards.g.GhostWarden.class));
cards.add(new SetCardInfo("Giant Growth", 266, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
cards.add(new SetCardInfo("Giant Spider", 267, Rarity.COMMON, mage.cards.g.GiantSpider.class));
cards.add(new SetCardInfo("Glorious Anthem", 17, Rarity.RARE, mage.cards.g.GloriousAnthem.class));
cards.add(new SetCardInfo("Goblin Elite Infantry", 206, Rarity.COMMON, mage.cards.g.GoblinEliteInfantry.class));
cards.add(new SetCardInfo("Goblin King", 207, Rarity.RARE, mage.cards.g.GoblinKing.class));
cards.add(new SetCardInfo("Goblin Lore", 208, Rarity.UNCOMMON, mage.cards.g.GoblinLore.class));
cards.add(new SetCardInfo("Goblin Piker", 209, Rarity.COMMON, mage.cards.g.GoblinPiker.class));
cards.add(new SetCardInfo("Goblin Sky Raider", 210, Rarity.COMMON, mage.cards.g.GoblinSkyRaider.class));
cards.add(new SetCardInfo("Graveborn Muse", 145, Rarity.RARE, mage.cards.g.GravebornMuse.class));
cards.add(new SetCardInfo("Gravedigger", 146, Rarity.COMMON, mage.cards.g.Gravedigger.class));
cards.add(new SetCardInfo("Grave Pact", 144, Rarity.RARE, mage.cards.g.GravePact.class));
cards.add(new SetCardInfo("Grizzly Bears", 268, Rarity.COMMON, mage.cards.g.GrizzlyBears.class));
cards.add(new SetCardInfo("Guerrilla Tactics", 211, Rarity.UNCOMMON, mage.cards.g.GuerrillaTactics.class));
cards.add(new SetCardInfo("Hail of Arrows", 18, Rarity.UNCOMMON, mage.cards.h.HailOfArrows.class));
cards.add(new SetCardInfo("Hate Weaver", 147, Rarity.UNCOMMON, mage.cards.h.HateWeaver.class));
cards.add(new SetCardInfo("Head Games", 148, Rarity.RARE, mage.cards.h.HeadGames.class));
cards.add(new SetCardInfo("Heart of Light", 19, Rarity.COMMON, mage.cards.h.HeartOfLight.class));
cards.add(new SetCardInfo("Hidden Horror", 149, Rarity.UNCOMMON, mage.cards.h.HiddenHorror.class));
cards.add(new SetCardInfo("High Ground", 20, Rarity.UNCOMMON, mage.cards.h.HighGround.class));
cards.add(new SetCardInfo("Highway Robber", 150, Rarity.COMMON, mage.cards.h.HighwayRobber.class));
cards.add(new SetCardInfo("Hill Giant", 212, Rarity.COMMON, mage.cards.h.HillGiant.class));
cards.add(new SetCardInfo("Holy Day", 21, Rarity.COMMON, mage.cards.h.HolyDay.class));
cards.add(new SetCardInfo("Holy Strength", 22, Rarity.COMMON, mage.cards.h.HolyStrength.class));
cards.add(new SetCardInfo("Honor Guard", 23, Rarity.COMMON, mage.cards.h.HonorGuard.class));
cards.add(new SetCardInfo("Horseshoe Crab", 87, Rarity.COMMON, mage.cards.h.HorseshoeCrab.class));
cards.add(new SetCardInfo("Howling Mine", 325, Rarity.RARE, mage.cards.h.HowlingMine.class));
cards.add(new SetCardInfo("Hunted Wumpus", 269, Rarity.UNCOMMON, mage.cards.h.HuntedWumpus.class));
cards.add(new SetCardInfo("Hurkyl's Recall", 88, Rarity.RARE, mage.cards.h.HurkylsRecall.class));
cards.add(new SetCardInfo("Hurricane", 270, Rarity.RARE, mage.cards.h.Hurricane.class));
cards.add(new SetCardInfo("Hypnotic Specter", 151, Rarity.RARE, mage.cards.h.HypnoticSpecter.class));
cards.add(new SetCardInfo("Icatian Priest", 24, Rarity.UNCOMMON, mage.cards.i.IcatianPriest.class));
cards.add(new SetCardInfo("Icy Manipulator", 326, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class));
cards.add(new SetCardInfo("Incinerate", 213, Rarity.COMMON, mage.cards.i.Incinerate.class));
cards.add(new SetCardInfo("Island", 368, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 369, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 370, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 371, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Jayemdae Tome", 327, Rarity.RARE, mage.cards.j.JayemdaeTome.class));
cards.add(new SetCardInfo("Joiner Adept", 271, Rarity.RARE, mage.cards.j.JoinerAdept.class));
cards.add(new SetCardInfo("Juggernaut", 328, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class));
cards.add(new SetCardInfo("Kamahl, Pit Fighter", 214, Rarity.RARE, mage.cards.k.KamahlPitFighter.class));
cards.add(new SetCardInfo("Karplusan Forest", 354, Rarity.RARE, mage.cards.k.KarplusanForest.class));
cards.add(new SetCardInfo("Karplusan Strider", 272, Rarity.UNCOMMON, mage.cards.k.KarplusanStrider.class));
cards.add(new SetCardInfo("Kavu Climber", 273, Rarity.COMMON, mage.cards.k.KavuClimber.class));
cards.add(new SetCardInfo("Kjeldoran Royal Guard", 25, Rarity.RARE, mage.cards.k.KjeldoranRoyalGuard.class));
cards.add(new SetCardInfo("Knight of Dusk", 152, Rarity.UNCOMMON, mage.cards.k.KnightOfDusk.class));
cards.add(new SetCardInfo("Kraken's Eye", 329, Rarity.UNCOMMON, mage.cards.k.KrakensEye.class));
cards.add(new SetCardInfo("Lava Axe", 215, Rarity.COMMON, mage.cards.l.LavaAxe.class));
cards.add(new SetCardInfo("Lavaborn Muse", 216, Rarity.RARE, mage.cards.l.LavabornMuse.class));
cards.add(new SetCardInfo("Legacy Weapon", 330, Rarity.RARE, mage.cards.l.LegacyWeapon.class));
cards.add(new SetCardInfo("Leonin Scimitar", 331, Rarity.UNCOMMON, mage.cards.l.LeoninScimitar.class));
cards.add(new SetCardInfo("Lightning Elemental", 217, Rarity.COMMON, mage.cards.l.LightningElemental.class));
cards.add(new SetCardInfo("Llanowar Elves", 274, Rarity.COMMON, mage.cards.l.LlanowarElves.class));
cards.add(new SetCardInfo("Llanowar Sentinel", 275, Rarity.COMMON, mage.cards.l.LlanowarSentinel.class));
cards.add(new SetCardInfo("Llanowar Wastes", 355, Rarity.RARE, mage.cards.l.LlanowarWastes.class));
cards.add(new SetCardInfo("Looming Shade", 153, Rarity.COMMON, mage.cards.l.LoomingShade.class));
cards.add(new SetCardInfo("Lord of the Pit", 154, Rarity.RARE, mage.cards.l.LordOfThePit.class));
cards.add(new SetCardInfo("Lord of the Undead", 155, Rarity.RARE, mage.cards.l.LordOfTheUndead.class));
cards.add(new SetCardInfo("Loxodon Mystic", 26, Rarity.COMMON, mage.cards.l.LoxodonMystic.class));
cards.add(new SetCardInfo("Loxodon Warhammer", 332, Rarity.RARE, mage.cards.l.LoxodonWarhammer.class));
cards.add(new SetCardInfo("Loyal Sentry", 27, Rarity.RARE, mage.cards.l.LoyalSentry.class));
cards.add(new SetCardInfo("Lumengrid Warden", 89, Rarity.COMMON, mage.cards.l.LumengridWarden.class));
cards.add(new SetCardInfo("Luminesce", 28, Rarity.UNCOMMON, mage.cards.l.Luminesce.class));
cards.add(new SetCardInfo("Lure", 276, Rarity.UNCOMMON, mage.cards.l.Lure.class));
cards.add(new SetCardInfo("Mahamoti Djinn", 90, Rarity.RARE, mage.cards.m.MahamotiDjinn.class));
cards.add(new SetCardInfo("Manabarbs", 218, Rarity.RARE, mage.cards.m.Manabarbs.class));
cards.add(new SetCardInfo("Mantis Engine", 333, Rarity.UNCOMMON, mage.cards.m.MantisEngine.class));
cards.add(new SetCardInfo("March of the Machines", 91, Rarity.RARE, mage.cards.m.MarchOfTheMachines.class));
cards.add(new SetCardInfo("Mass of Ghouls", 156, Rarity.COMMON, mage.cards.m.MassOfGhouls.class));
cards.add(new SetCardInfo("Megrim", 157, Rarity.UNCOMMON, mage.cards.m.Megrim.class));
cards.add(new SetCardInfo("Merfolk Looter", 92, Rarity.COMMON, mage.cards.m.MerfolkLooter.class));
cards.add(new SetCardInfo("Midnight Ritual", 158, Rarity.RARE, mage.cards.m.MidnightRitual.class));
cards.add(new SetCardInfo("Might of Oaks", 277, Rarity.RARE, mage.cards.m.MightOfOaks.class));
cards.add(new SetCardInfo("Might Weaver", 278, Rarity.UNCOMMON, mage.cards.m.MightWeaver.class));
cards.add(new SetCardInfo("Millstone", 334, Rarity.RARE, mage.cards.m.Millstone.class));
cards.add(new SetCardInfo("Mind Rot", 159, Rarity.COMMON, mage.cards.m.MindRot.class));
cards.add(new SetCardInfo("Mind Stone", 335, Rarity.UNCOMMON, mage.cards.m.MindStone.class));
cards.add(new SetCardInfo("Mirri, Cat Warrior", 279, Rarity.RARE, mage.cards.m.MirriCatWarrior.class));
cards.add(new SetCardInfo("Mobilization", 29, Rarity.RARE, mage.cards.m.Mobilization.class));
cards.add(new SetCardInfo("Mogg Fanatic", 219, Rarity.UNCOMMON, mage.cards.m.MoggFanatic.class));
cards.add(new SetCardInfo("Molimo, Maro-Sorcerer", 280, Rarity.RARE, mage.cards.m.MolimoMaroSorcerer.class));
cards.add(new SetCardInfo("Mortal Combat", 160, Rarity.RARE, mage.cards.m.MortalCombat.class));
cards.add(new SetCardInfo("Mortivore", 161, Rarity.RARE, mage.cards.m.Mortivore.class));
cards.add(new SetCardInfo("Mountain", 376, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 377, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 378, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 379, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Nantuko Husk", 162, Rarity.UNCOMMON, mage.cards.n.NantukoHusk.class));
cards.add(new SetCardInfo("Naturalize", 282, Rarity.COMMON, mage.cards.n.Naturalize.class));
cards.add(new SetCardInfo("Natural Spring", 281, Rarity.COMMON, mage.cards.n.NaturalSpring.class));
cards.add(new SetCardInfo("Nekrataal", 163, Rarity.UNCOMMON, mage.cards.n.Nekrataal.class));
cards.add(new SetCardInfo("Nightmare", 164, Rarity.RARE, mage.cards.n.Nightmare.class));
cards.add(new SetCardInfo("Nomad Mythmaker", 30, Rarity.RARE, mage.cards.n.NomadMythmaker.class));
cards.add(new SetCardInfo("No Rest for the Wicked", 165, Rarity.UNCOMMON, mage.cards.n.NoRestForTheWicked.class));
cards.add(new SetCardInfo("Orcish Artillery", 220, Rarity.UNCOMMON, mage.cards.o.OrcishArtillery.class));
cards.add(new SetCardInfo("Ornithopter", 336, Rarity.UNCOMMON, mage.cards.o.Ornithopter.class));
cards.add(new SetCardInfo("Overgrowth", 283, Rarity.COMMON, mage.cards.o.Overgrowth.class));
cards.add(new SetCardInfo("Overrun", 284, Rarity.UNCOMMON, mage.cards.o.Overrun.class));
cards.add(new SetCardInfo("Pacifism", 31, Rarity.COMMON, mage.cards.p.Pacifism.class));
cards.add(new SetCardInfo("Paladin en-Vec", 32, Rarity.RARE, mage.cards.p.PaladinEnVec.class));
cards.add(new SetCardInfo("Pariah", 33, Rarity.RARE, mage.cards.p.Pariah.class));
cards.add(new SetCardInfo("Peek", 94, Rarity.COMMON, mage.cards.p.Peek.class));
cards.add(new SetCardInfo("Persuasion", 95, Rarity.UNCOMMON, mage.cards.p.Persuasion.class));
cards.add(new SetCardInfo("Phage the Untouchable", 166, Rarity.RARE, mage.cards.p.PhageTheUntouchable.class));
cards.add(new SetCardInfo("Phantom Warrior", 96, Rarity.UNCOMMON, mage.cards.p.PhantomWarrior.class));
cards.add(new SetCardInfo("Phyrexian Rager", 167, Rarity.COMMON, mage.cards.p.PhyrexianRager.class));
cards.add(new SetCardInfo("Phyrexian Vault", 337, Rarity.UNCOMMON, mage.cards.p.PhyrexianVault.class));
cards.add(new SetCardInfo("Pincher Beetles", 285, Rarity.COMMON, mage.cards.p.PincherBeetles.class));
cards.add(new SetCardInfo("Pithing Needle", 338, Rarity.RARE, mage.cards.p.PithingNeedle.class));
cards.add(new SetCardInfo("Plagiarize", 97, Rarity.RARE, mage.cards.p.Plagiarize.class));
cards.add(new SetCardInfo("Plague Beetle", 168, Rarity.COMMON, mage.cards.p.PlagueBeetle.class));
cards.add(new SetCardInfo("Plague Wind", 169, Rarity.RARE, mage.cards.p.PlagueWind.class));
cards.add(new SetCardInfo("Plains", 364, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 365, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 366, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 367, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Platinum Angel", 339, Rarity.RARE, mage.cards.p.PlatinumAngel.class));
cards.add(new SetCardInfo("Primal Rage", 286, Rarity.UNCOMMON, mage.cards.p.PrimalRage.class));
cards.add(new SetCardInfo("Prodigal Pyromancer", 221, Rarity.COMMON, mage.cards.p.ProdigalPyromancer.class));
cards.add(new SetCardInfo("Puppeteer", 98, Rarity.UNCOMMON, mage.cards.p.Puppeteer.class));
cards.add(new SetCardInfo("Pyroclasm", 222, Rarity.UNCOMMON, mage.cards.p.Pyroclasm.class));
cards.add(new SetCardInfo("Quicksand", 356, Rarity.UNCOMMON, mage.cards.q.Quicksand.class));
cards.add(new SetCardInfo("Quirion Dryad", 287, Rarity.RARE, mage.cards.q.QuirionDryad.class));
cards.add(new SetCardInfo("Rage Weaver", 223, Rarity.UNCOMMON, mage.cards.r.RageWeaver.class));
cards.add(new SetCardInfo("Raging Goblin", 224, Rarity.COMMON, mage.cards.r.RagingGoblin.class));
cards.add(new SetCardInfo("Rain of Tears", 170, Rarity.UNCOMMON, mage.cards.r.RainOfTears.class));
cards.add(new SetCardInfo("Rampant Growth", 288, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
cards.add(new SetCardInfo("Ravenous Rats", 171, Rarity.COMMON, mage.cards.r.RavenousRats.class));
cards.add(new SetCardInfo("Razormane Masticore", 340, Rarity.RARE, mage.cards.r.RazormaneMasticore.class));
cards.add(new SetCardInfo("Recollect", 289, Rarity.UNCOMMON, mage.cards.r.Recollect.class));
cards.add(new SetCardInfo("Recover", 172, Rarity.COMMON, mage.cards.r.Recover.class));
cards.add(new SetCardInfo("Regeneration", 290, Rarity.UNCOMMON, mage.cards.r.Regeneration.class));
cards.add(new SetCardInfo("Relentless Assault", 225, Rarity.RARE, mage.cards.r.RelentlessAssault.class));
cards.add(new SetCardInfo("Relentless Rats", 173, Rarity.UNCOMMON, mage.cards.r.RelentlessRats.class));
cards.add(new SetCardInfo("Reminisce", 99, Rarity.UNCOMMON, mage.cards.r.Reminisce.class));
cards.add(new SetCardInfo("Remove Soul", 100, Rarity.COMMON, mage.cards.r.RemoveSoul.class));
cards.add(new SetCardInfo("Reviving Dose", 34, Rarity.COMMON, mage.cards.r.RevivingDose.class));
cards.add(new SetCardInfo("Reya Dawnbringer", 35, Rarity.RARE, mage.cards.r.ReyaDawnbringer.class));
cards.add(new SetCardInfo("Rhox", 291, Rarity.RARE, mage.cards.r.Rhox.class));
cards.add(new SetCardInfo("Righteousness", 36, Rarity.RARE, mage.cards.r.Righteousness.class));
cards.add(new SetCardInfo("Robe of Mirrors", 101, Rarity.COMMON, mage.cards.r.RobeOfMirrors.class));
cards.add(new SetCardInfo("Rock Badger", 226, Rarity.COMMON, mage.cards.r.RockBadger.class));
cards.add(new SetCardInfo("Rod of Ruin", 341, Rarity.UNCOMMON, mage.cards.r.RodOfRuin.class));
cards.add(new SetCardInfo("Root Maze", 292, Rarity.RARE, mage.cards.r.RootMaze.class));
cards.add(new SetCardInfo("Rootwalla", 293, Rarity.COMMON, mage.cards.r.Rootwalla.class));
cards.add(new SetCardInfo("Rootwater Commando", 102, Rarity.COMMON, mage.cards.r.RootwaterCommando.class));
cards.add(new SetCardInfo("Rootwater Matriarch", 103, Rarity.RARE, mage.cards.r.RootwaterMatriarch.class));
cards.add(new SetCardInfo("Royal Assassin", 174, Rarity.RARE, mage.cards.r.RoyalAssassin.class));
cards.add(new SetCardInfo("Rule of Law", 37, Rarity.UNCOMMON, mage.cards.r.RuleOfLaw.class));
cards.add(new SetCardInfo("Rushwood Dryad", 294, Rarity.COMMON, mage.cards.r.RushwoodDryad.class));
cards.add(new SetCardInfo("Sage Owl", 104, Rarity.COMMON, mage.cards.s.SageOwl.class));
cards.add(new SetCardInfo("Samite Healer", 38, Rarity.COMMON, mage.cards.s.SamiteHealer.class));
cards.add(new SetCardInfo("Scalpelexis", 105, Rarity.RARE, mage.cards.s.Scalpelexis.class));
cards.add(new SetCardInfo("Scathe Zombies", 175, Rarity.COMMON, mage.cards.s.ScatheZombies.class));
cards.add(new SetCardInfo("Scion of the Wild", 295, Rarity.RARE, mage.cards.s.ScionOfTheWild.class));
cards.add(new SetCardInfo("Scoria Wurm", 227, Rarity.RARE, mage.cards.s.ScoriaWurm.class));
cards.add(new SetCardInfo("Sculpting Steel", 342, Rarity.RARE, mage.cards.s.SculptingSteel.class));
cards.add(new SetCardInfo("Sea Monster", 106, Rarity.COMMON, mage.cards.s.SeaMonster.class));
cards.add(new SetCardInfo("Seedborn Muse", 296, Rarity.RARE, mage.cards.s.SeedbornMuse.class));
cards.add(new SetCardInfo("Seismic Assault", 228, Rarity.RARE, mage.cards.s.SeismicAssault.class));
cards.add(new SetCardInfo("Sengir Vampire", 176, Rarity.RARE, mage.cards.s.SengirVampire.class));
cards.add(new SetCardInfo("Serra Angel", 39, Rarity.RARE, mage.cards.s.SerraAngel.class));
cards.add(new SetCardInfo("Serra's Embrace", 40, Rarity.UNCOMMON, mage.cards.s.SerrasEmbrace.class));
cards.add(new SetCardInfo("Severed Legion", 177, Rarity.COMMON, mage.cards.s.SeveredLegion.class));
cards.add(new SetCardInfo("Shatterstorm", 229, Rarity.UNCOMMON, mage.cards.s.Shatterstorm.class));
cards.add(new SetCardInfo("Shimmering Wings", 107, Rarity.COMMON, mage.cards.s.ShimmeringWings.class));
cards.add(new SetCardInfo("Shivan Dragon", 230, Rarity.RARE, mage.cards.s.ShivanDragon.class));
cards.add(new SetCardInfo("Shivan Hellkite", 231, Rarity.RARE, mage.cards.s.ShivanHellkite.class));
cards.add(new SetCardInfo("Shivan Reef", 357, Rarity.RARE, mage.cards.s.ShivanReef.class));
cards.add(new SetCardInfo("Shock", 232, Rarity.COMMON, mage.cards.s.Shock.class));
cards.add(new SetCardInfo("Shunt", 233, Rarity.RARE, mage.cards.s.Shunt.class));
cards.add(new SetCardInfo("Siege-Gang Commander", 234, Rarity.RARE, mage.cards.s.SiegeGangCommander.class));
cards.add(new SetCardInfo("Sift", 108, Rarity.COMMON, mage.cards.s.Sift.class));
cards.add(new SetCardInfo("Skyhunter Patrol", 41, Rarity.COMMON, mage.cards.s.SkyhunterPatrol.class));
cards.add(new SetCardInfo("Skyhunter Prowler", 42, Rarity.COMMON, mage.cards.s.SkyhunterProwler.class));
cards.add(new SetCardInfo("Skyhunter Skirmisher", 43, Rarity.UNCOMMON, mage.cards.s.SkyhunterSkirmisher.class));
cards.add(new SetCardInfo("Skyshroud Ranger", 297, Rarity.COMMON, mage.cards.s.SkyshroudRanger.class));
cards.add(new SetCardInfo("Sky Weaver", 109, Rarity.UNCOMMON, mage.cards.s.SkyWeaver.class));
cards.add(new SetCardInfo("Sleeper Agent", 178, Rarity.RARE, mage.cards.s.SleeperAgent.class));
cards.add(new SetCardInfo("Smash", 235, Rarity.COMMON, mage.cards.s.Smash.class));
cards.add(new SetCardInfo("Snapping Drake", 110, Rarity.COMMON, mage.cards.s.SnappingDrake.class));
cards.add(new SetCardInfo("Soulblast", 236, Rarity.RARE, mage.cards.s.Soulblast.class));
cards.add(new SetCardInfo("Soul Feast", 179, Rarity.UNCOMMON, mage.cards.s.SoulFeast.class));
cards.add(new SetCardInfo("Soul Warden", 44, Rarity.UNCOMMON, mage.cards.s.SoulWarden.class));
cards.add(new SetCardInfo("Spark Elemental", 237, Rarity.UNCOMMON, mage.cards.s.SparkElemental.class));
cards.add(new SetCardInfo("Spawning Pool", 358, Rarity.UNCOMMON, mage.cards.s.SpawningPool.class));
cards.add(new SetCardInfo("Spellbook", 343, Rarity.UNCOMMON, mage.cards.s.Spellbook.class));
cards.add(new SetCardInfo("Spiketail Hatchling", 111, Rarity.UNCOMMON, mage.cards.s.SpiketailHatchling.class));
cards.add(new SetCardInfo("Spined Wurm", 298, Rarity.COMMON, mage.cards.s.SpinedWurm.class));
cards.add(new SetCardInfo("Spineless Thug", 180, Rarity.COMMON, mage.cards.s.SpinelessThug.class));
cards.add(new SetCardInfo("Spirit Link", 45, Rarity.UNCOMMON, mage.cards.s.SpiritLink.class));
cards.add(new SetCardInfo("Spirit Weaver", 46, Rarity.UNCOMMON, mage.cards.s.SpiritWeaver.class));
cards.add(new SetCardInfo("Spitting Earth", 238, Rarity.COMMON, mage.cards.s.SpittingEarth.class));
cards.add(new SetCardInfo("Squee, Goblin Nabob", 239, Rarity.RARE, mage.cards.s.SqueeGoblinNabob.class));
cards.add(new SetCardInfo("Stalking Tiger", 299, Rarity.COMMON, mage.cards.s.StalkingTiger.class));
cards.add(new SetCardInfo("Stampeding Wildebeests", 300, Rarity.UNCOMMON, mage.cards.s.StampedingWildebeests.class));
cards.add(new SetCardInfo("Starlight Invoker", 47, Rarity.UNCOMMON, mage.cards.s.StarlightInvoker.class));
cards.add(new SetCardInfo("Steadfast Guard", 48, Rarity.COMMON, mage.cards.s.SteadfastGuard.class));
cards.add(new SetCardInfo("Steel Golem", 344, Rarity.UNCOMMON, mage.cards.s.SteelGolem.class));
cards.add(new SetCardInfo("Story Circle", 49, Rarity.RARE, mage.cards.s.StoryCircle.class));
cards.add(new SetCardInfo("Stronghold Discipline", 181, Rarity.UNCOMMON, mage.cards.s.StrongholdDiscipline.class));
cards.add(new SetCardInfo("Stun", 240, Rarity.COMMON, mage.cards.s.Stun.class));
cards.add(new SetCardInfo("Sudden Impact", 241, Rarity.UNCOMMON, mage.cards.s.SuddenImpact.class));
cards.add(new SetCardInfo("Sulfurous Springs", 359, Rarity.RARE, mage.cards.s.SulfurousSprings.class));
cards.add(new SetCardInfo("Sunken Hope", 112, Rarity.RARE, mage.cards.s.SunkenHope.class));
cards.add(new SetCardInfo("Suntail Hawk", 50, Rarity.COMMON, mage.cards.s.SuntailHawk.class));
cards.add(new SetCardInfo("Swamp", 372, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 373, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 374, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 375, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Sylvan Basilisk", 301, Rarity.UNCOMMON, mage.cards.s.SylvanBasilisk.class));
cards.add(new SetCardInfo("Sylvan Scrying", 302, Rarity.UNCOMMON, mage.cards.s.SylvanScrying.class));
cards.add(new SetCardInfo("Tangle Spider", 303, Rarity.UNCOMMON, mage.cards.t.TangleSpider.class));
cards.add(new SetCardInfo("Telepathy", 113, Rarity.UNCOMMON, mage.cards.t.Telepathy.class));
cards.add(new SetCardInfo("Telling Time", 114, Rarity.UNCOMMON, mage.cards.t.TellingTime.class));
cards.add(new SetCardInfo("Tempest of Light", 51, Rarity.UNCOMMON, mage.cards.t.TempestOfLight.class));
cards.add(new SetCardInfo("Terramorphic Expanse", 360, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class));
cards.add(new SetCardInfo("Terror", 182, Rarity.COMMON, mage.cards.t.Terror.class));
cards.add(new SetCardInfo("The Hive", 324, Rarity.RARE, mage.cards.t.TheHive.class));
cards.add(new SetCardInfo("Thieving Magpie", 115, Rarity.UNCOMMON, mage.cards.t.ThievingMagpie.class));
cards.add(new SetCardInfo("Threaten", 242, Rarity.UNCOMMON, mage.cards.t.Threaten.class));
cards.add(new SetCardInfo("Thrull Surgeon", 183, Rarity.UNCOMMON, mage.cards.t.ThrullSurgeon.class));
cards.add(new SetCardInfo("Thundering Giant", 243, Rarity.UNCOMMON, mage.cards.t.ThunderingGiant.class));
cards.add(new SetCardInfo("Tidings", 116, Rarity.UNCOMMON, mage.cards.t.Tidings.class));
cards.add(new SetCardInfo("Time Stop", 117, Rarity.RARE, mage.cards.t.TimeStop.class));
cards.add(new SetCardInfo("Time Stretch", 118, Rarity.RARE, mage.cards.t.TimeStretch.class));
cards.add(new SetCardInfo("Traumatize", 119, Rarity.RARE, mage.cards.t.Traumatize.class));
cards.add(new SetCardInfo("Treasure Hunter", 52, Rarity.UNCOMMON, mage.cards.t.TreasureHunter.class));
cards.add(new SetCardInfo("Treetop Bracers", 304, Rarity.COMMON, mage.cards.t.TreetopBracers.class));
cards.add(new SetCardInfo("Treetop Village", 361, Rarity.UNCOMMON, mage.cards.t.TreetopVillage.class));
cards.add(new SetCardInfo("Troll Ascetic", 305, Rarity.RARE, mage.cards.t.TrollAscetic.class));
cards.add(new SetCardInfo("True Believer", 53, Rarity.RARE, mage.cards.t.TrueBeliever.class));
cards.add(new SetCardInfo("Tundra Wolves", 54, Rarity.COMMON, mage.cards.t.TundraWolves.class));
cards.add(new SetCardInfo("Twincast", 120, Rarity.RARE, mage.cards.t.Twincast.class));
cards.add(new SetCardInfo("Twitch", 121, Rarity.COMMON, mage.cards.t.Twitch.class));
cards.add(new SetCardInfo("Uncontrollable Anger", 244, Rarity.COMMON, mage.cards.u.UncontrollableAnger.class));
cards.add(new SetCardInfo("Underground River", 362, Rarity.RARE, mage.cards.u.UndergroundRiver.class));
cards.add(new SetCardInfo("Underworld Dreams", 184, Rarity.RARE, mage.cards.u.UnderworldDreams.class));
cards.add(new SetCardInfo("Unholy Strength", 185, Rarity.COMMON, mage.cards.u.UnholyStrength.class));
cards.add(new SetCardInfo("Unsummon", 122, Rarity.COMMON, mage.cards.u.Unsummon.class));
cards.add(new SetCardInfo("Upwelling", 306, Rarity.RARE, mage.cards.u.Upwelling.class));
cards.add(new SetCardInfo("Vampire Bats", 186, Rarity.COMMON, mage.cards.v.VampireBats.class));
cards.add(new SetCardInfo("Vedalken Mastermind", 123, Rarity.UNCOMMON, mage.cards.v.VedalkenMastermind.class));
cards.add(new SetCardInfo("Venerable Monk", 55, Rarity.COMMON, mage.cards.v.VenerableMonk.class));
cards.add(new SetCardInfo("Verdant Force", 307, Rarity.RARE, mage.cards.v.VerdantForce.class));
cards.add(new SetCardInfo("Viashino Runner", 245, Rarity.COMMON, mage.cards.v.ViashinoRunner.class));
cards.add(new SetCardInfo("Viashino Sandscout", 246, Rarity.COMMON, mage.cards.v.ViashinoSandscout.class));
cards.add(new SetCardInfo("Viridian Shaman", 308, Rarity.UNCOMMON, mage.cards.v.ViridianShaman.class));
cards.add(new SetCardInfo("Voice of All", 56, Rarity.RARE, mage.cards.v.VoiceOfAll.class));
cards.add(new SetCardInfo("Wall of Air", 124, Rarity.UNCOMMON, mage.cards.w.WallOfAir.class));
cards.add(new SetCardInfo("Wall of Fire", 247, Rarity.UNCOMMON, mage.cards.w.WallOfFire.class));
cards.add(new SetCardInfo("Wall of Swords", 57, Rarity.UNCOMMON, mage.cards.w.WallOfSwords.class));
cards.add(new SetCardInfo("Wall of Wood", 309, Rarity.COMMON, mage.cards.w.WallOfWood.class));
cards.add(new SetCardInfo("Warp World", 248, Rarity.RARE, mage.cards.w.WarpWorld.class));
cards.add(new SetCardInfo("Warrior's Honor", 58, Rarity.COMMON, mage.cards.w.WarriorsHonor.class));
cards.add(new SetCardInfo("Whispersilk Cloak", 345, Rarity.UNCOMMON, mage.cards.w.WhispersilkCloak.class));
cards.add(new SetCardInfo("Wild Griffin", 59, Rarity.COMMON, mage.cards.w.WildGriffin.class));
cards.add(new SetCardInfo("Windborn Muse", 60, Rarity.RARE, mage.cards.w.WindbornMuse.class));
cards.add(new SetCardInfo("Wrath of God", 61, Rarity.RARE, mage.cards.w.WrathOfGod.class));
cards.add(new SetCardInfo("Wurm's Tooth", 346, Rarity.UNCOMMON, mage.cards.w.WurmsTooth.class));
cards.add(new SetCardInfo("Yavimaya Coast", 363, Rarity.RARE, mage.cards.y.YavimayaCoast.class));
cards.add(new SetCardInfo("Yavimaya Enchantress", 310, Rarity.UNCOMMON, mage.cards.y.YavimayaEnchantress.class));
cards.add(new SetCardInfo("Youthful Knight", 62, Rarity.COMMON, mage.cards.y.YouthfulKnight.class));
}
}

View file

@ -87,6 +87,7 @@ public class TimeSpiralTimeshifted extends ExpansionSet {
cards.add(new SetCardInfo("Flying Men", 20, Rarity.COMMON, mage.cards.f.FlyingMen.class));
cards.add(new SetCardInfo("Funeral Charm", 44, Rarity.COMMON, mage.cards.f.FuneralCharm.class));
cards.add(new SetCardInfo("Gaea's Blessing", 77, Rarity.SPECIAL, mage.cards.g.GaeasBlessing.class));
cards.add(new SetCardInfo("Gaea's Liege", 78, Rarity.SPECIAL, mage.cards.g.GaeasLiege.class));
cards.add(new SetCardInfo("Gemstone Mine", 119, Rarity.RARE, mage.cards.g.GemstoneMine.class));
cards.add(new SetCardInfo("Ghost Ship", 21, Rarity.SPECIAL, mage.cards.g.GhostShip.class));
cards.add(new SetCardInfo("Goblin Snowman", 64, Rarity.UNCOMMON, mage.cards.g.GoblinSnowman.class));

View file

@ -109,6 +109,7 @@ public class UnlimitedEdition extends ExpansionSet {
cards.add(new SetCardInfo("Fork", 153, Rarity.RARE, mage.cards.f.Fork.class));
cards.add(new SetCardInfo("Frozen Shade", 18, Rarity.COMMON, mage.cards.f.FrozenShade.class));
cards.add(new SetCardInfo("Fungusaur", 104, Rarity.RARE, mage.cards.f.Fungusaur.class));
cards.add(new SetCardInfo("Gaea's Liege", 105, Rarity.RARE, mage.cards.g.GaeasLiege.class));
cards.add(new SetCardInfo("Gauntlet of Might", 245, Rarity.RARE, mage.cards.g.GauntletOfMight.class));
cards.add(new SetCardInfo("Giant Growth", 106, Rarity.COMMON, mage.cards.g.GiantGrowth.class));
cards.add(new SetCardInfo("Giant Spider", 107, Rarity.COMMON, mage.cards.g.GiantSpider.class));
@ -142,6 +143,7 @@ public class UnlimitedEdition extends ExpansionSet {
cards.add(new SetCardInfo("Island Sanctuary", 210, Rarity.RARE, mage.cards.i.IslandSanctuary.class));
cards.add(new SetCardInfo("Ivory Cup", 252, Rarity.UNCOMMON, mage.cards.i.IvoryCup.class));
cards.add(new SetCardInfo("Jade Monolith", 253, Rarity.RARE, mage.cards.j.JadeMonolith.class));
cards.add(new SetCardInfo("Jade Statue", 254, Rarity.UNCOMMON, mage.cards.j.JadeStatue.class));
cards.add(new SetCardInfo("Jayemdae Tome", 255, Rarity.RARE, mage.cards.j.JayemdaeTome.class));
cards.add(new SetCardInfo("Juggernaut", 256, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class));
cards.add(new SetCardInfo("Jump", 61, Rarity.COMMON, mage.cards.j.Jump.class));
@ -214,6 +216,7 @@ public class UnlimitedEdition extends ExpansionSet {
cards.add(new SetCardInfo("Reverse Damage", 220, Rarity.RARE, mage.cards.r.ReverseDamage.class));
cards.add(new SetCardInfo("Righteousness", 221, Rarity.RARE, mage.cards.r.Righteousness.class));
cards.add(new SetCardInfo("Roc of Kher Ridges", 171, Rarity.RARE, mage.cards.r.RocOfKherRidges.class));
cards.add(new SetCardInfo("Rock Hydra", 172, Rarity.RARE, mage.cards.r.RockHydra.class));
cards.add(new SetCardInfo("Rod of Ruin", 269, Rarity.UNCOMMON, mage.cards.r.RodOfRuin.class));
cards.add(new SetCardInfo("Royal Assassin", 32, Rarity.RARE, mage.cards.r.RoyalAssassin.class));
cards.add(new SetCardInfo("Sacrifice", 33, Rarity.UNCOMMON, mage.cards.s.Sacrifice.class));

View file

@ -199,6 +199,7 @@ public class UrzasSaga extends ExpansionSet {
cards.add(new SetCardInfo("Karn, Silver Golem", 298, Rarity.RARE, mage.cards.k.KarnSilverGolem.class));
cards.add(new SetCardInfo("Launch", 82, Rarity.COMMON, mage.cards.l.Launch.class));
cards.add(new SetCardInfo("Lay Waste", 201, Rarity.COMMON, mage.cards.l.LayWaste.class));
cards.add(new SetCardInfo("Lifeline", 299, Rarity.RARE, mage.cards.l.Lifeline.class));
cards.add(new SetCardInfo("Lightning Dragon", 202, Rarity.RARE, mage.cards.l.LightningDragon.class));
cards.add(new SetCardInfo("Lilting Refrain", 83, Rarity.UNCOMMON, mage.cards.l.LiltingRefrain.class));
cards.add(new SetCardInfo("Lingering Mirage", 84, Rarity.UNCOMMON, mage.cards.l.LingeringMirage.class));

View file

@ -77,6 +77,7 @@ public class Visions extends ExpansionSet {
cards.add(new SetCardInfo("Emerald Charm", 56, Rarity.COMMON, mage.cards.e.EmeraldCharm.class));
cards.add(new SetCardInfo("Equipoise", 103, Rarity.RARE, mage.cards.e.Equipoise.class));
cards.add(new SetCardInfo("Everglades", 162, Rarity.UNCOMMON, mage.cards.e.Everglades.class));
cards.add(new SetCardInfo("Eye of Singularity", 104, Rarity.RARE, mage.cards.e.EyeOfSingularity.class));
cards.add(new SetCardInfo("Fallen Askari", 9, Rarity.COMMON, mage.cards.f.FallenAskari.class));
cards.add(new SetCardInfo("Femeref Enchantress", 129, Rarity.RARE, mage.cards.f.FemerefEnchantress.class));
cards.add(new SetCardInfo("Feral Instinct", 57, Rarity.COMMON, mage.cards.f.FeralInstinct.class));

View file

@ -59,6 +59,7 @@ public class Weatherlight extends ExpansionSet {
cards.add(new SetCardInfo("Abduction", 30, Rarity.UNCOMMON, mage.cards.a.Abduction.class));
cards.add(new SetCardInfo("Abeyance", 117, Rarity.RARE, mage.cards.a.Abeyance.class));
cards.add(new SetCardInfo("Abjure", 31, Rarity.COMMON, mage.cards.a.Abjure.class));
cards.add(new SetCardInfo("Aboroth", 59, Rarity.RARE, mage.cards.a.Aboroth.class));
cards.add(new SetCardInfo("Abyssal Gatekeeper", 1, Rarity.COMMON, mage.cards.a.AbyssalGatekeeper.class));
cards.add(new SetCardInfo("Aether Flash", 88, Rarity.UNCOMMON, mage.cards.a.AetherFlash.class));
cards.add(new SetCardInfo("Agonizing Memories", 2, Rarity.UNCOMMON, mage.cards.a.AgonizingMemories.class));
@ -71,6 +72,7 @@ public class Weatherlight extends ExpansionSet {
cards.add(new SetCardInfo("Argivian Find", 122, Rarity.UNCOMMON, mage.cards.a.ArgivianFind.class));
cards.add(new SetCardInfo("Argivian Restoration", 34, Rarity.UNCOMMON, mage.cards.a.ArgivianRestoration.class));
cards.add(new SetCardInfo("Aura of Silence", 123, Rarity.UNCOMMON, mage.cards.a.AuraOfSilence.class));
cards.add(new SetCardInfo("Avizoa", 35, Rarity.RARE, mage.cards.a.Avizoa.class));
cards.add(new SetCardInfo("Barrow Ghoul", 3, Rarity.COMMON, mage.cards.b.BarrowGhoul.class));
cards.add(new SetCardInfo("Benalish Knight", 125, Rarity.COMMON, mage.cards.b.BenalishKnight.class));
cards.add(new SetCardInfo("Benalish Missionary", 126, Rarity.COMMON, mage.cards.b.BenalishMissionary.class));
@ -122,6 +124,7 @@ public class Weatherlight extends ExpansionSet {
cards.add(new SetCardInfo("Heavy Ballista", 133, Rarity.COMMON, mage.cards.h.HeavyBallista.class));
cards.add(new SetCardInfo("Hidden Horror", 14, Rarity.UNCOMMON, mage.cards.h.HiddenHorror.class));
cards.add(new SetCardInfo("Hurloon Shaman", 108, Rarity.UNCOMMON, mage.cards.h.HurloonShaman.class));
cards.add(new SetCardInfo("Infernal Tribute", 15, Rarity.RARE, mage.cards.i.InfernalTribute.class));
cards.add(new SetCardInfo("Jabari's Banner", 150, Rarity.UNCOMMON, mage.cards.j.JabarisBanner.class));
cards.add(new SetCardInfo("Lava Hounds", 109, Rarity.UNCOMMON, mage.cards.l.LavaHounds.class));
cards.add(new SetCardInfo("Llanowar Behemoth", 74, Rarity.UNCOMMON, mage.cards.l.LlanowarBehemoth.class));

View file

@ -0,0 +1,72 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package org.mage.test.cards.abilities.enters;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
*
* @author LevelX2
*/
public class WarpWorldTest extends CardTestPlayerBase {
/**
* Hello. I was playing a 4 player EDH game, and after quite a ways into it
* I casted Warp World. The game said that Prime Speaker Zegana's ability
* triggered for hitting the battlefield, however on all of our screens
* nothing was on the battlefield (not even other things that should have
* hit from Warp World). I tried to upload the log but it gave me an error
* about it possibly being an attack vector. Sorry. Below is at least the
* end of the log with hopefully some useful information:
*/
@Test
public void testWarpWorld() {
// Each player shuffles all permanents he or she owns into his or her library, then reveals that many cards from the top of his or her library.
// Each player puts all artifact, creature, and land cards revealed this way onto the battlefield, then does the same for enchantment cards,
// then puts all cards revealed this way that weren't put onto the battlefield on the bottom of his or her library.
addCard(Zone.HAND, playerA, "Warp World"); // Sorcery {5}{R}{R}{R}
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 8);
playerA.getLibrary().clear();
addCard(Zone.LIBRARY, playerA, "Silvercoat Lion", 8);
skipInitShuffling();
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Warp World");
setStopAt(1, PhaseStep.BEGIN_COMBAT);
execute();
assertHandCount(playerA, "Warp World", 0);
assertPermanentCount(playerA, 8);
}
}

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